[code-saturne] 57/70: Imported Upstream version 2.0.0.rc1

Gilles Filippini pini at debian.org
Sun Jan 18 22:33:13 UTC 2015


This is an automated email from the git hooks/post-receive script.

pini pushed a commit to branch master
in repository code-saturne.

commit 5d4e781b7fc91e847a6b3fb23b213d5c35dfc99a
Author: Gilles Filippini <pini at debian.org>
Date:   Sun Jan 18 22:52:42 2015 +0100

    Imported Upstream version 2.0.0.rc1
---
 AUTHORS                                            |   114 +-
 COMPATIBILITY                                      |    44 +-
 ChangeLog                                          |  1639 ++
 Makefile.am                                        |    76 +-
 Makefile.in                                        |   722 +-
 aclocal.m4                                         |   416 +-
 bin/SaturneGUI.in                                  |     2 +-
 bin/{cs.in => code_saturne.in}                     |    26 +-
 bin/cs_case.py                                     |  1391 ++
 bin/cs_case_domain.py                              |  1375 ++
 bin/cs_check_consistency.py                        |     6 +-
 bin/cs_check_mesh.py                               |    16 +-
 bin/cs_compile.py                                  |   118 +-
 bin/cs_config.py.in                                |    85 +-
 bin/cs_config_build.py.in                          |   117 +
 bin/cs_create.py                                   |   184 +-
 bin/cs_exec_environment.py                         |   875 +
 bin/cs_info.py                                     |    16 +-
 bin/cs_plot_probes.py                              |    20 +-
 bin/runcase.help                                   |     2 +-
 bin/runcase.in                                     |    40 +-
 bin/runcase.py.in                                  |   307 +
 bin/runcase_coupling.in                            |  1029 --
 bin/runcase_syrthes                                |     2 +-
 config/config.guess                                |   243 +-
 config/config.sub                                  |    91 +-
 config/cs_auto_flags.sh                            |    43 +-
 config/cs_bft.m4                                   |    59 +-
 config/cs_blas.m4                                  |   218 +-
 config/cs_fortran.m4                               |   118 +
 config/cs_fvm.m4                                   |   102 +-
 config/cs_libxml2.m4                               |    77 +-
 config/cs_mei.m4                                   |    78 +-
 config/cs_mpi.m4                                   |   119 +-
 config/cs_syrthes.m4                               |    23 +-
 config/depcomp                                     |    87 +-
 config/install-sh                                  |     5 +-
 config/ltmain.sh                                   |    16 +-
 config/ltversion.m4                                |    10 +-
 config/missing                                     |    49 +-
 config/py-compile                                  |    36 +-
 configure                                          | 15948 +++++++------------
 configure.ac                                       |    91 +-
 cs_config.h.in                                     |     3 +
 data/thch/dp_ELE                                   |   435 +-
 data/thch/meteo                                    |    55 +
 doc/Makefile.am                                    |     3 +-
 doc/Makefile.in                                    |   160 +-
 doc/{theory => developper}/Makefile.am             |    35 +-
 doc/{refcard => developper}/Makefile.in            |   158 +-
 doc/developper/developper.tex                      |    87 +
 doc/{user => developper}/graphics/Makefile.am      |    14 +-
 doc/{howto => developper}/graphics/Makefile.in     |    64 +-
 doc/howto/Makefile.in                              |   154 +-
 doc/howto/graphics/Makefile.in                     |    62 +-
 doc/{theory => install}/Makefile.am                |    39 +-
 doc/{user/graphics => install}/Makefile.in         |   126 +-
 doc/install/install.tex                            |    86 +
 doc/manpages/code_saturne.1                        |   103 +
 doc/manpages/cs_check_consistency.1                |    58 -
 doc/manpages/cs_check_mesh.1                       |   149 -
 doc/manpages/cs_compile.1                          |    56 -
 doc/manpages/cs_create.1                           |    70 -
 doc/manpages/cs_info.1                             |    58 -
 doc/manpages/cs_plot_probes.1                      |    50 -
 doc/refcard/Makefile.in                            |   154 +-
 doc/refcard/graphics/Makefile.in                   |    62 +-
 doc/refcard/refcard.tex                            |    18 +-
 doc/style/csindex.sty                              |     4 +-
 doc/style/csmacros.sty                             |     6 +-
 doc/theory/Makefile.am                             |     6 +-
 doc/theory/Makefile.in                             |   160 +-
 doc/theory/combbase.tex                            |   208 +
 doc/theory/combcharb.tex                           |   289 +
 doc/theory/combfuel.tex                            |   263 +
 doc/theory/combgaz.tex                             |   514 +
 doc/theory/combustion.tex                          |   196 -
 doc/theory/graphics/Makefile.in                    |    62 +-
 doc/theory/theory.tex                              |     6 +-
 doc/theory/thermo.tex                              |    29 +
 doc/tutorial/Makefile.in                           |   154 +-
 doc/tutorial/graphics/Makefile.in                  |    62 +-
 doc/user/Makefile.in                               |   154 +-
 doc/user/graphics/Makefile.am                      |     2 +
 doc/user/graphics/Makefile.in                      |    64 +-
 doc/user/graphics/join_periodic.fig                |    97 +
 doc/user/graphics/join_tolerance.fig               |   129 +
 doc/user/saturne1.tex                              |  4053 +++--
 doc/user/saturne2.tex                              |  2718 ++--
 extras/bash_completion/code_saturne                |   283 +
 extras/installer/README.txt                        |   285 +
 extras/installer/install_saturne.py                |  1159 ++
 extras/installer/setup                             |   152 +
 gui/Base/BrowserView.py                            |    26 +-
 gui/Base/CommandLine.py                            |   209 -
 gui/Base/Common.py                                 |    16 +-
 gui/Base/IdView.py                                 |     2 +-
 gui/Base/MainView.py                               |    18 +-
 gui/Base/Makefile.am                               |    58 +-
 gui/Base/Makefile.in                               |   163 +-
 gui/Base/QtPage.py                                 |    20 +-
 gui/Base/Toolbox.py                                |    44 +-
 gui/Base/XMLengine.py                              |    14 +-
 gui/Base/XMLinitialize.py                          |    27 +-
 gui/Base/XMLvariables.py                           |    40 +-
 gui/Base/__init__.py                               |     2 +-
 gui/Makefile.am                                    |     3 +-
 gui/Makefile.in                                    |   236 +-
 gui/Pages/AnalysisFeaturesView.py                  |     5 +-
 gui/Pages/AtmosphericFlowsModel.py                 |    29 +-
 gui/Pages/AtmosphericFlowsView.py                  |     7 +-
 gui/Pages/BatchRunningAdvancedOptionsDialogForm.ui |   627 +-
 gui/Pages/BatchRunningModel.py                     |    36 +-
 gui/Pages/BatchRunningView.py                      |    60 +-
 gui/Pages/BodyForcesModel.py                       |     2 +-
 gui/Pages/BodyForcesView.py                        |     4 +-
 gui/Pages/Boundary.py                              |   404 +-
 gui/Pages/BoundaryConditionsCoalInletView.py       |    10 +-
 gui/Pages/BoundaryConditionsMobileMeshView.py      |     6 +-
 gui/Pages/BoundaryConditionsParticlesModel.py      |    54 +-
 gui/Pages/BoundaryConditionsParticlesView.py       |   114 +-
 gui/Pages/BoundaryConditionsScalarsView.py         |     8 +-
 gui/Pages/BoundaryConditionsTurbulenceInletView.py |     4 +-
 gui/Pages/BoundaryConditionsVelocityInletView.py   |     8 +-
 gui/Pages/BoundaryConditionsView.py                |     2 +-
 .../BoundaryConditionsWallRadiativeTransferView.py |    22 +-
 gui/Pages/CoalCombustionModel.py                   |   120 +-
 gui/Pages/CoalCombustionView.py                    |     2 +-
 gui/Pages/CoalThermoChemistry.py                   |   244 +-
 gui/Pages/CommonCombustion.py                      |    10 +-
 gui/Pages/ConjugateHeatTransferForm.ui             |   106 +
 gui/Pages/ConjugateHeatTransferModel.py            |   344 +
 gui/Pages/ConjugateHeatTransferView.py             |   349 +
 gui/Pages/CurrentSpeciesView.py                    |    10 +-
 gui/Pages/DefineUserScalarsModel.py                |    10 +-
 gui/Pages/DefineUserScalarsView.py                 |    10 +-
 gui/Pages/ElectricalModelsModel.py                 |     2 +-
 gui/Pages/FacesSelectionView.py                    |    22 +-
 gui/Pages/FluidCharacteristicsModel.py             |    36 +-
 gui/Pages/FluidCharacteristicsView.py              |    67 +-
 gui/Pages/FluidStructureInteractionForm.ui         |    20 +-
 gui/Pages/FluidStructureInteractionModel.py        |    84 +-
 gui/Pages/FluidStructureInteractionView.py         |   240 +-
 gui/Pages/GasCombustionModel.py                    |     2 +-
 gui/Pages/HeadLossesForm.ui                        |   873 +-
 gui/Pages/HeadLossesModel.py                       |    95 +-
 gui/Pages/HeadLossesView.py                        |   425 +-
 gui/Pages/IdentityAndPathesView.py                 |    20 +-
 gui/Pages/InitializationModel.py                   |    34 +-
 gui/Pages/InitializationView.py                    |    32 +-
 gui/Pages/LagrangianBoundariesModel.py             |    69 +-
 gui/Pages/LagrangianBoundariesView.py              |   124 +-
 gui/Pages/LagrangianModel.py                       |     4 +-
 gui/Pages/LagrangianOutputModel.py                 |    40 +-
 gui/Pages/LagrangianOutputView.py                  |    32 +-
 gui/Pages/LagrangianStatisticsModel.py             |    48 +-
 gui/Pages/LagrangianStatisticsView.py              |    82 +-
 gui/Pages/LagrangianView.py                        |    18 +-
 gui/Pages/LocalizationModel.py                     |   104 +-
 gui/Pages/LocalizationView.py                      |    16 +-
 gui/Pages/Makefile.am                              |   192 +-
 gui/Pages/Makefile.in                              |   297 +-
 gui/Pages/MatisseCustomView.py                     |   140 +-
 gui/Pages/MatisseGeomModel.py                      |     8 +-
 gui/Pages/MatisseGeomView.py                       |    48 +-
 gui/Pages/MatisseHydrauModel.py                    |    14 +-
 gui/Pages/MatisseHydrauView.py                     |    32 +-
 gui/Pages/MatisseModel.py                          |    29 +-
 gui/Pages/MatisseNetworkModel.py                   |    14 +-
 gui/Pages/MatisseNetworkView.py                    |    18 +-
 gui/Pages/MatisseRangeDescriptionModel.py          |    12 +-
 gui/Pages/MatisseRangeDescriptionView.py           |     8 +-
 gui/Pages/MatisseThermicModel.py                   |    32 +-
 gui/Pages/MatisseThermicView.py                    |    30 +-
 gui/Pages/MatisseTypeModel.py                      |     4 +-
 gui/Pages/MatisseTypeView.py                       |     8 +-
 gui/Pages/MemoryAllocationModel.py                 |    36 +-
 gui/Pages/MemoryAllocationView.py                  |     2 +-
 gui/Pages/MobileMeshModel.py                       |    40 +-
 gui/Pages/MobileMeshView.py                        |    66 +-
 gui/Pages/NumericalParamEquationModel.py           |    65 +-
 gui/Pages/NumericalParamEquationView.py            |     8 +-
 gui/Pages/NumericalParamGlobalModel.py             |    20 +-
 gui/Pages/NumericalParamGlobalView.py              |     2 +-
 gui/Pages/OutputControlModel.py                    |   251 +-
 gui/Pages/OutputControlView.py                     |    70 +-
 gui/Pages/OutputSurfacicVariablesModel.py          |     8 +-
 gui/Pages/OutputVolumicVariablesModel.py           |    18 +-
 gui/Pages/OutputVolumicVariablesView.py            |    25 +-
 gui/Pages/PreProcessingInformationsView.py         |    20 +-
 gui/Pages/ProfilesForm.ui                          |    73 +-
 gui/Pages/ProfilesModel.py                         |   122 +-
 gui/Pages/ProfilesView.py                          |    99 +-
 gui/Pages/QMeiEditorView.py                        |   132 +-
 gui/Pages/ReferenceValuesModel.py                  |    37 +-
 gui/Pages/ReferenceValuesView.py                   |    19 +-
 gui/Pages/SalomeHandler.py                         |    51 +-
 gui/Pages/SolutionDomainModel.py                   |   402 +-
 gui/Pages/SolutionDomainView.py                    |    88 +-
 gui/Pages/SolutionVerifView.py                     |    57 +-
 gui/Pages/StartRestartAdvancedDialogForm.ui        |     2 +-
 gui/Pages/StartRestartModel.py                     |    72 +-
 gui/Pages/StartRestartView.py                      |    21 +-
 gui/Pages/SteadyManagementModel.py                 |    37 +-
 gui/Pages/SteadyManagementView.py                  |     4 +-
 gui/Pages/SyrthesForm.ui                           |   241 -
 gui/Pages/SyrthesView.py                           |   195 -
 gui/Pages/ThermalRadiationModel.py                 |    60 +-
 gui/Pages/ThermalRadiationView.py                  |     2 +-
 gui/Pages/ThermalScalarModel.py                    |     6 +-
 gui/Pages/ThermalScalarView.py                     |     4 +-
 gui/Pages/TimeAveragesForm.ui                      |    57 +-
 gui/Pages/TimeAveragesModel.py                     |   236 +-
 gui/Pages/TimeAveragesView.py                      |   146 +-
 gui/Pages/TimeStepForm.ui                          |     8 +-
 gui/Pages/TimeStepModel.py                         |    85 +-
 gui/Pages/TimeStepView.py                          |    50 +-
 gui/Pages/TurbulenceModel.py                       |    18 +-
 gui/Pages/UserArraysModel.py                       |    34 +-
 gui/Pages/UserArraysView.py                        |     2 +-
 gui/Pages/UserScalarPropertiesView.py              |    20 +-
 gui/Pages/VerifyExistenceLabelDialogView.py        |     8 +-
 gui/Pages/WelcomeView.py                           |     2 +-
 gui/Pages/__init__.py                              |     2 +-
 gui/VERSION                                        |     1 -
 gui/cs_gui.py                                      |    77 +-
 gui/sbin/mkpyqt.py                                 |   270 -
 gui/sbin/unittests.py                              |     2 +-
 gui/setup.py                                       |   115 -
 include/atmo/atincl.h                              |     2 +-
 include/base/alaste.h                              |     2 +-
 include/base/albase.h                              |     2 +-
 include/base/alstru.h                              |     2 +-
 include/base/cplsat.h                              |     8 +-
 include/base/cs_ale.h                              |     2 +-
 include/base/cs_ast_coupling.h                     |     2 +-
 include/base/cs_base.h                             |    36 +-
 include/base/cs_benchmark.h                        |     2 +-
 include/base/cs_blas.h                             |     2 +-
 include/base/cs_calcium.h                          |     2 +-
 include/base/cs_coupling.h                         |     2 +-
 include/base/cs_ext_neighborhood.h                 |     2 +-
 include/base/cs_gradient.h                         |     2 +-
 include/base/cs_gui.h                              |    49 +-
 .../{tremai.h => cs_gui_conjugate_heat_transfer.h} |    38 +-
 include/base/cs_io.h                               |    49 +-
 include/base/cs_join.h                             |   127 +-
 include/base/cs_join_intersect.h                   |     4 +-
 include/base/cs_join_mesh.h                        |    55 +
 include/base/cs_join_util.h                        |   118 +-
 include/base/cs_matrix.h                           |     2 +-
 include/base/cs_mesh_coherency.h                   |     2 +-
 include/base/cs_mesh_connect.h                     |     2 +-
 include/base/cs_mesh_halo.h                        |     2 +-
 include/base/cs_mesh_quality.h                     |     2 +-
 include/base/cs_mesh_quantities.h                  |    12 +
 include/base/cs_mesh_warping.h                     |     2 +-
 include/base/cs_multigrid.h                        |     2 +-
 include/base/cs_opts.h                             |     7 +
 include/base/cs_parall.h                           |    17 +-
 include/base/cs_perio.h                            |     2 +-
 include/base/cs_preprocessor_data.h                |    67 +-
 include/base/cs_proxy_comm.h                       |     4 +-
 include/base/cs_renumber.h                         |     2 +-
 include/base/cs_sat_coupling.h                     |   134 +-
 include/base/cs_selector.h                         |     2 +-
 include/base/cs_sles.h                             |     4 +-
 include/base/cs_syr3_comm.h                        |     2 +-
 include/base/cs_syr3_coupling.h                    |     2 +-
 include/base/cs_syr3_messages.h                    |     2 +-
 include/base/cs_syr4_coupling.h                    |     2 +-
 include/base/cs_syr_coupling.h                     |     2 +-
 include/base/cs_tpar1d.h                           |     2 +-
 include/base/cs_ventil.h                           |     2 +-
 include/base/cstnum.h                              |     2 +-
 include/base/cstphy.h                              |     9 +-
 include/base/dimens.h                              |     2 +-
 include/base/dimfbr.h                              |     2 +-
 include/base/entsor.h                              |     2 +-
 include/base/ihmpre.h                              |     2 +-
 include/base/mltgrd.h                              |     4 +-
 include/base/numvar.h                              |     2 +-
 include/base/optcal.h                              |     2 +-
 include/base/paramx.h                              |     4 +-
 include/base/period.h                              |     2 +-
 include/base/pointe.h                              |     2 +-
 include/base/tcpumx.h                              |     2 +-
 include/base/tremai.h                              |     2 +-
 include/base/vector.h                              |     2 +-
 include/base/vortex.h                              |     2 +-
 include/cfbl/cfpoin.h                              |     2 +-
 include/cogz/coincl.h                              |     2 +-
 include/cplv/cpincl.h                              |     2 +-
 include/ctwr/cs_ctwr.h                             |     2 +-
 include/ctwr/cs_ctwr_air_props.h                   |     2 +-
 include/ctwr/cs_ctwr_halo.h                        |     2 +-
 include/ctwr/cs_ctwr_mesh.h                        |     2 +-
 include/ctwr/ctincl.h                              |     2 +-
 include/elec/elincl.h                              |     6 +-
 include/fuel/fuincl.h                              |     2 +-
 include/lagr/cs_lagr.h                             |     2 +-
 include/lagr/cs_lagr_perio.h                       |     2 +-
 include/lagr/lagdim.h                              |     2 +-
 include/lagr/lagpar.h                              |     2 +-
 include/lagr/lagran.h                              |     4 +-
 include/mati/matiss.h                              |     2 +-
 include/pprt/ppcpfu.h                              |     2 +-
 include/pprt/ppincl.h                              |     2 +-
 include/pprt/ppppar.h                              |     2 +-
 include/pprt/ppthch.h                              |     2 +-
 include/rayt/radiat.h                              |     2 +-
 libsyrcs/Makefile.in                               |   134 +-
 libsyrcs/syr_comm.c                                |     2 +-
 libsyrcs/syr_cs.c                                  |     1 +
 po/fr.po                                           |  1530 +-
 sbin/backup                                        |     2 +-
 sbin/rmb                                           |     9 +-
 src/Makefile.in                                    |   156 +-
 src/apps/Makefile.am                               |     6 +-
 src/apps/Makefile.in                               |   199 +-
 src/apps/cs_solver.c                               |    56 +-
 src/atmo/Makefile.in                               |   166 +-
 src/atmo/atini1.f90                                |    42 +-
 src/atmo/atiniv.f90                                |   145 +-
 src/atmo/atlecm.f90                                |   140 +-
 src/atmo/atmcls.f90                                |   147 +-
 src/atmo/atphyv.f90                                |   129 +-
 src/atmo/atprke.f90                                |   123 +-
 src/atmo/atprop.f90                                |     6 +-
 src/atmo/attycl.f90                                |   149 +-
 src/atmo/atvarp.f90                                |    10 +-
 src/atmo/intprf.f90                                |    10 +-
 src/atmo/mematm.f90                                |    36 +-
 src/base/Makefile.am                               |     6 +-
 src/base/Makefile.in                               |   351 +-
 src/base/alelap.f90                                |   133 +-
 src/base/alemaj.f90                                |   121 +-
 src/base/altycl.f90                                |   134 +-
 src/base/armtps.f90                                |    10 +-
 src/base/autmgr.f90                                |    10 +-
 src/base/bilsc2.f90                                |   137 +-
 src/base/calgeo.f90                                |   102 +-
 src/base/calhyd.f90                                |   127 +-
 src/base/calmom.f90                                |    37 +-
 src/base/caltri.f90                                |    94 +-
 src/base/catsma.f90                                |    14 +-
 src/base/causta.f90                                |    10 +-
 src/base/clca66.f90                                |    10 +-
 src/base/cldijp.f90                                |    12 +-
 src/base/cldipo.f90                                |    10 +-
 src/base/clipke.f90                                |    18 +-
 src/base/clprij.f90                                |    16 +-
 src/base/clpsca.f90                                |    23 +-
 src/base/clptrg.f90                                |   143 +-
 src/base/clptur.f90                                |   144 +-
 src/base/clpv2f.f90                                |    18 +-
 src/base/clsurn.f90                                |     8 +-
 src/base/clsyvt.f90                                |   141 +-
 src/base/clvolc.f90                                |    12 +-
 src/base/codits.f90                                |   118 +-
 src/base/condli.f90                                |   175 +-
 src/base/cou1di.f90                                |    62 +-
 src/base/cou1do.f90                                |    45 +-
 src/base/coupbi.f90                                |    43 +-
 src/base/coupbo.f90                                |    45 +-
 src/base/covofi.f90                                |   141 +-
 src/base/cregeo.f90                                |    90 +-
 src/base/crstgr.f90                                |     7 +-
 src/base/cs_ale.c                                  |     2 +-
 src/base/cs_ast_coupling.c                         |    12 +-
 src/base/cs_base.c                                 |   188 +-
 src/base/cs_benchmark.c                            |    13 +-
 src/base/cs_blas.c                                 |     2 +-
 src/base/cs_coupling.c                             |     6 +-
 src/base/cs_ext_neighborhood.c                     |     7 +-
 src/base/cs_gradient.c                             |     2 +-
 src/base/cs_gui.c                                  |   788 +-
 src/base/cs_gui_boundary_conditions.c              |   101 +-
 ...coupling.c => cs_gui_conjugate_heat_transfer.c} |   209 +-
 src/base/cs_gui_matisse.c                          |     2 +-
 src/base/cs_gui_mobile_mesh.c                      |   535 +-
 src/base/cs_gui_particles.c                        |    84 +-
 src/base/cs_gui_radiative_transfer.c               |    23 +-
 src/base/cs_gui_util.c                             |     4 +-
 src/base/cs_io.c                                   |    89 +-
 src/base/cs_join.c                                 |   711 +-
 src/base/cs_join_f2c.f90                           |    28 +-
 src/base/cs_join_intersect.c                       |  1530 +-
 src/base/cs_join_merge.c                           |  1485 +-
 src/base/cs_join_mesh.c                            |   423 +-
 src/base/cs_join_post.c                            |     6 +-
 src/base/cs_join_set.c                             |    18 +-
 src/base/cs_join_split.c                           |    74 +-
 src/base/cs_join_update.c                          |   205 +-
 src/base/cs_join_util.c                            |  1113 +-
 src/base/cs_matrix.c                               |    43 +-
 src/base/cs_mesh.c                                 |   310 +-
 src/base/cs_mesh_coherency.c                       |     2 +-
 src/base/cs_mesh_connect.c                         |     2 +-
 src/base/cs_mesh_halo.c                            |    28 +-
 src/base/cs_mesh_quality.c                         |     9 +-
 src/base/cs_mesh_quantities.c                      |    61 +-
 src/base/cs_multigrid.c                            |     8 +-
 src/base/cs_opts.c                                 |    27 +-
 src/base/cs_parall.c                               |    35 +-
 src/base/cs_perio.c                                |     2 +-
 src/base/cs_post.c                                 |   147 +-
 src/base/cs_post_f2c.f90                           |    34 +-
 src/base/cs_preprocessor_data.c                    |   127 +-
 src/base/cs_proxy_comm.c                           |     2 +-
 src/base/cs_restart.c                              |    81 +-
 src/base/cs_sat_coupling.c                         |  1078 +-
 src/base/{cs_syr_f2c.f90 => cs_sat_f2c.f90}        |    50 +-
 src/base/cs_selector.c                             |     2 +-
 src/base/cs_selector_f2c.f90                       |    26 +-
 src/base/cs_sles.c                                 |    27 +-
 src/base/cs_syr3_comm.c                            |     2 +-
 src/base/cs_syr3_messages.c                        |     2 +-
 src/base/cs_syr4_coupling.c                        |     3 +-
 src/base/cs_syr_coupling.c                         |     6 +-
 src/base/cs_syr_f2c.f90                            |     8 +-
 src/base/cs_tpar1d.c                               |     7 +-
 src/base/cs_ventil.c                               |     2 +-
 src/base/csc2cl.f90                                |   366 +-
 src/base/csc2ts.f90                                |   135 +-
 src/base/csccel.f90                                |   133 +-
 src/base/cscfbr.f90                                |   131 +-
 src/base/cscini.f90                                |    31 +-
 src/base/csclli.f90                                |    10 +-
 src/base/cscloc.f90                                |   120 +-
 src/base/cscpce.f90                                |    27 +-
 src/base/cscpfb.f90                                |   374 +-
 src/base/csflsh.f90                                |    34 +-
 src/base/csinit.f90                                |    18 +-
 src/base/csprnt.f90                                |     6 +-
 src/base/distpr.f90                                |   115 +-
 src/base/distyp.f90                                |   120 +-
 src/base/divmas.f90                                |    18 +-
 src/base/divrij.f90                                |   129 +-
 src/base/dttvar.f90                                |   139 +-
 src/base/dvvpst.f90                                |   250 +-
 src/base/ecrava.f90                                |    80 +-
 src/base/ecrhis.f90                                |    36 +-
 src/base/ecrlis.f90                                |    42 +-
 src/base/findpt.f90                                |    12 +-
 src/base/gradmc.f90                                |    21 +-
 src/base/gradrc.f90                                |    26 +-
 src/base/grdcel.f90                                |   112 +-
 src/base/haltyp.f90                                |     8 +-
 src/base/hturbp.f90                                |     8 +-
 src/base/idrbla.f90                                |    12 +-
 src/base/impini.f90                                |    12 +-
 src/base/iniini.f90                                |    15 +-
 src/base/inimas.f90                                |   116 +-
 src/base/inipst.f90                                |    12 +-
 src/base/initi1.f90                                |    19 +-
 src/base/initi2.f90                                |    17 +-
 src/base/iniusi.f90                                |    39 +-
 src/base/iniva0.f90                                |   135 +-
 src/base/inivar.f90                                |   137 +-
 src/base/invers.f90                                |   110 +-
 src/base/iprbla.f90                                |    12 +-
 src/base/itrgrp.f90                                |    53 +-
 src/base/itrmas.f90                                |    53 +-
 src/base/lecamo.f90                                |    44 +-
 src/base/lecamp.f90                                |    40 +-
 src/base/lecamx.f90                                |    52 +-
 src/base/ledgeo.f90                                |    10 +-
 src/base/letgeo.f90                                |    31 +-
 src/base/majgeo.f90                                |    10 +-
 src/base/matrdt.f90                                |   108 +-
 src/base/matrix.f90                                |    18 +-
 src/base/memale.f90                                |    53 +-
 src/base/memcbr.f90                                |    20 +-
 src/base/memclg.f90                                |    44 +-
 src/base/memcli.f90                                |    47 +-
 src/base/memcs1.f90                                |    12 +-
 src/base/memcs2.f90                                |    12 +-
 src/base/memdis.f90                                |    51 +-
 src/base/memdtv.f90                                |    47 +-
 src/base/memdyp.f90                                |    51 +-
 src/base/memini.f90                                |    14 +-
 src/base/memkep.f90                                |    51 +-
 src/base/memkom.f90                                |    51 +-
 src/base/memnav.f90                                |    51 +-
 src/base/mempdc.f90                                |    20 +-
 src/base/memphy.f90                                |    24 +-
 src/base/memrij.f90                                |    51 +-
 src/base/memsca.f90                                |    51 +-
 src/base/memt1d.f90                                |    20 +-
 src/base/memtri.f90                                |    75 +-
 src/base/memtsm.f90                                |    20 +-
 src/base/memv2f.f90                                |    53 +-
 src/base/memvor.f90                                |    22 +-
 src/base/mmtycl.f90                                |   286 +
 src/base/modini.f90                                |   126 +-
 src/base/modpar.f90                                |    10 +-
 src/base/navsto.f90                                |   206 +-
 src/base/newmrk.f90                                |    10 +-
 src/base/numvec.f90                                |    13 +-
 src/base/ordita.f90                                |     8 +-
 src/base/pergra.f90                                |    12 +-
 src/base/perinr.f90                                |   133 +-
 src/base/perinu.f90                                |   135 +-
 src/base/phyvar.f90                                |   172 +-
 src/base/precli.f90                                |   137 +-
 src/base/preduv.f90                                |   139 +-
 src/base/prmoy0.f90                                |    42 +-
 src/base/prods2.f90                                |    16 +-
 src/base/prods3.f90                                |    16 +-
 src/base/prodsc.f90                                |    14 +-
 src/base/projts.f90                                |   114 +-
 src/base/promav.f90                                |    16 +-
 src/base/proxav.f90                                |    14 +-
 src/base/recvmc.f90                                |   114 +-
 src/base/reseps.f90                                |   143 +-
 src/base/resolp.f90                                |   155 +-
 src/base/resrij.f90                                |   143 +-
 src/base/resssg.f90                                |   143 +-
 src/base/resv2f.f90                                |   178 +-
 src/base/rijech.f90                                |   135 +-
 src/base/rijthe.f90                                |   135 +-
 src/base/scalai.f90                                |   133 +-
 src/base/schtmp.f90                                |   125 +-
 src/base/stdtcl.f90                                |   149 +-
 src/base/strdep.f90                                |   119 +-
 src/base/strhis.f90                                |    32 +-
 src/base/strini.f90                                |   110 +-
 src/base/strpre.f90                                |   119 +-
 src/base/tcpumx.c                                  |     2 +-
 src/base/tdesi1.f90                                |    10 +-
 src/base/testel.f90                                |   124 +-
 src/base/tremai.c                                  |     2 +-
 src/base/tridim.f90                                |   192 +-
 src/base/tsepdc.f90                                |   131 +-
 src/base/tstvec.f90                                |    13 +-
 src/base/turbke.f90                                |   139 +-
 src/base/turbkw.f90                                |   139 +-
 src/base/turent.f90                                |    18 +-
 src/base/turrij.f90                                |   191 +-
 src/base/typecl.f90                                |   305 +-
 src/base/undscr.f90                                |     8 +-
 src/base/vandri.f90                                |    58 +-
 src/base/varpos.f90                                |    18 +-
 src/base/vectds.f90                                |    20 +-
 src/base/vericl.f90                                |   135 +-
 src/base/verini.f90                                |    50 +-
 src/base/verlon.f90                                |     8 +-
 src/base/vert1d.f90                                |    58 +-
 src/base/viscfa.f90                                |   108 +-
 src/base/visdyn.f90                                |   139 +-
 src/base/vislmg.f90                                |   139 +-
 src/base/visort.f90                                |   108 +-
 src/base/vissec.f90                                |   133 +-
 src/base/vissma.f90                                |   139 +-
 src/base/vissst.f90                                |   139 +-
 src/base/viswal.f90                                |   174 +-
 src/base/vor2cl.f90                                |   151 +-
 src/base/vordep.f90                                |    10 +-
 src/base/vorimp.f90                                |    10 +-
 src/base/vorin0.f90                                |    14 +-
 src/base/vorini.f90                                |    10 +-
 src/base/vorlgv.f90                                |     8 +-
 src/base/vorpre.f90                                |   135 +-
 src/base/vortex.f90                                |     8 +-
 src/base/vorver.f90                                |    12 +-
 src/base/vorvit.f90                                |    10 +-
 src/base/zufall.f90                                |    16 +-
 src/cfbl/Makefile.in                               |   172 +-
 src/cfbl/cfbsc2.f90                                |   116 +-
 src/cfbl/cfbsc3.f90                                |   116 +-
 src/cfbl/cfcdts.f90                                |   116 +-
 src/cfbl/cfdivs.f90                                |   133 +-
 src/cfbl/cfdttv.f90                                |   139 +-
 src/cfbl/cfener.f90                                |   139 +-
 src/cfbl/cfini1.f90                                |    12 +-
 src/cfbl/cfiniv.f90                                |   127 +-
 src/cfbl/cfmsfl.f90                                |   135 +-
 src/cfbl/cfmsgs.f90                                |   135 +-
 src/cfbl/cfmsvl.f90                                |   139 +-
 src/cfbl/cfmsvs.f90                                |   135 +-
 src/cfbl/cfphyv.f90                                |   133 +-
 src/cfbl/cfprop.f90                                |    14 +-
 src/cfbl/cfqdmv.f90                                |   139 +-
 src/cfbl/cfrusb.f90                                |   125 +-
 src/cfbl/cfvarp.f90                                |    12 +-
 src/cfbl/cfxtcl.f90                                |   149 +-
 src/cfbl/memcfe.f90                                |    42 +-
 src/cfbl/memcfm.f90                                |    53 +-
 src/cfbl/memcft.f90                                |    49 +-
 src/cfbl/memcfv.f90                                |    42 +-
 src/cogz/Makefile.in                               |   178 +-
 src/cogz/coini1.f90                                |    14 +-
 src/cogz/colecd.f90                                |    12 +-
 src/cogz/coprop.f90                                |    10 +-
 src/cogz/cothht.f90                                |    10 +-
 src/cogz/covarp.f90                                |    12 +-
 src/cogz/d3phst.f90                                |    16 +-
 src/cogz/d3pini.f90                                |   129 +-
 src/cogz/d3pint.f90                                |    16 +-
 src/cogz/d3pphy.f90                                |   135 +-
 src/cogz/d3ptcl.f90                                |   151 +-
 src/cogz/d3pver.f90                                |    12 +-
 src/cogz/ebuini.f90                                |   127 +-
 src/cogz/ebuphy.f90                                |   133 +-
 src/cogz/ebutcl.f90                                |   149 +-
 src/cogz/ebutss.f90                                |   139 +-
 src/cogz/ebuver.f90                                |    10 +-
 src/cogz/lwcgfu.f90                                |     8 +-
 src/cogz/lwcini.f90                                |   127 +-
 src/cogz/lwcphy.f90                                |   133 +-
 src/cogz/lwctcl.f90                                |   149 +-
 src/cogz/lwctss.f90                                |   139 +-
 src/cogz/lwcurl.f90                                |    10 +-
 src/cogz/lwcver.f90                                |    10 +-
 src/cogz/pdflwc.f90                                |    17 +-
 src/cogz/pdfpp3.f90                                |    19 +-
 src/cogz/pdfpp4.f90                                |    17 +-
 src/cplv/Makefile.in                               |   170 +-
 src/cplv/cpcym2.f90                                |    16 +-
 src/cplv/cpflux.f90                                |    26 +-
 src/cplv/cpini1.f90                                |    10 +-
 src/cplv/cpiniv.f90                                |   127 +-
 src/cplv/cplecd.f90                                |    20 +-
 src/cplv/cplin1.f90                                |    10 +-
 src/cplv/cplini.f90                                |   111 +-
 src/cplv/cplph1.f90                                |    23 +-
 src/cplv/cplphy.f90                                |   117 +-
 src/cplv/cplpro.f90                                |    10 +-
 src/cplv/cpltcl.f90                                |   133 +-
 src/cplv/cpltss.f90                                |   119 +-
 src/cplv/cpltsv.f90                                |   123 +-
 src/cplv/cplvar.f90                                |    10 +-
 src/cplv/cplver.f90                                |    10 +-
 src/cplv/cplym1.f90                                |    16 +-
 src/cplv/cppdf4.f90                                |    14 +-
 src/cplv/cppdfr.f90                                |    14 +-
 src/cplv/cpphy1.f90                                |    23 +-
 src/cplv/cpphy2.f90                                |    19 +-
 src/cplv/cpphyv.f90                                |   133 +-
 src/cplv/cpprop.f90                                |    10 +-
 src/cplv/cpptcl.f90                                |   159 +-
 src/cplv/cprays.f90                                |    17 +-
 src/cplv/cpteh1.f90                                |    16 +-
 src/cplv/cpteh2.f90                                |    19 +-
 src/cplv/cptehm.f90                                |    14 +-
 src/cplv/cpthp1.f90                                |    12 +-
 src/cplv/cpthp2.f90                                |    12 +-
 src/cplv/cptssc.f90                                |   135 +-
 src/cplv/cptsvc.f90                                |   139 +-
 src/cplv/cptsvi.f90                                |    20 +-
 src/cplv/cpvarp.f90                                |    10 +-
 src/cplv/cpveri.f90                                |    10 +-
 src/cplv/memcp1.f90                                |    26 +-
 src/ctwr/Makefile.am                               |     2 +-
 src/ctwr/Makefile.in                               |   177 +-
 src/ctwr/cs_ctwr.c                                 |   391 +-
 src/ctwr/cs_ctwr_air_props.c                       |     8 +-
 src/ctwr/cs_ctwr_f2c.f90                           |     4 +-
 src/ctwr/cs_ctwr_halo.c                            |     2 +-
 src/ctwr/cs_ctwr_mesh.c                            |  1046 +-
 src/ctwr/ctini1.f90                                |    12 +-
 src/ctwr/ctiniv.f90                                |   127 +-
 src/ctwr/ctphyv.f90                                |   133 +-
 src/ctwr/cttssc.f90                                |   135 +-
 src/ctwr/ctvarp.f90                                |    12 +-
 src/elec/Makefile.in                               |   174 +-
 src/elec/elflux.f90                                |   135 +-
 src/elec/elini1.f90                                |    14 +-
 src/elec/eliniv.f90                                |   127 +-
 src/elec/ellecd.f90                                |    12 +-
 src/elec/elphyv.f90                                |   133 +-
 src/elec/elprop.f90                                |    10 +-
 src/elec/elthht.f90                                |    10 +-
 src/elec/eltssc.f90                                |   135 +-
 src/elec/elvarp.f90                                |    12 +-
 src/elec/elveri.f90                                |    10 +-
 src/fuel/Makefile.in                               |   166 +-
 src/fuel/fucym1.f90                                |    16 +-
 src/fuel/fucyno.f90                                |    14 +-
 src/fuel/fuflux.f90                                |    26 +-
 src/fuel/fuini1.f90                                |    10 +-
 src/fuel/fuiniv.f90                                |   127 +-
 src/fuel/fulecd.f90                                |    12 +-
 src/fuel/fupdfr.f90                                |    14 +-
 src/fuel/fuphy1.f90                                |    23 +-
 src/fuel/fuphy2.f90                                |    19 +-
 src/fuel/fuphyv.f90                                |   133 +-
 src/fuel/fuprop.f90                                |    10 +-
 src/fuel/fuptcl.f90                                |   149 +-
 src/fuel/furays.f90                                |    24 +-
 src/fuel/futeh1.f90                                |    16 +-
 src/fuel/futeh2.f90                                |    19 +-
 src/fuel/futhp1.f90                                |    12 +-
 src/fuel/futhp2.f90                                |    12 +-
 src/fuel/futssc.f90                                |   135 +-
 src/fuel/futsvc.f90                                |   139 +-
 src/fuel/futsvi.f90                                |    20 +-
 src/fuel/fuvarp.f90                                |    10 +-
 src/fuel/fuveri.f90                                |    10 +-
 src/fuel/memfu1.f90                                |    26 +-
 src/lagr/Makefile.am                               |     2 +-
 src/lagr/Makefile.in                               |   195 +-
 src/lagr/cs_lagr.c                                 |     2 +-
 src/lagr/cs_lagr_perio.c                           |     2 +-
 src/lagr/diverv.f90                                |    93 +-
 src/lagr/enslag.f90                                |    14 +-
 src/lagr/enswaf.f90                                |    32 +-
 src/lagr/lagaff.f90                                |   114 +-
 src/lagr/lagcar.f90                                |    91 +-
 src/lagr/lagcel.f90                                |   110 +-
 src/lagr/lagcou.f90                                |    53 +-
 src/lagr/lagdeb.f90                                |    65 +-
 src/lagr/lageli.f90                                |    24 +-
 src/lagr/lagent.f90                                |   112 +-
 src/lagr/lageqp.f90                                |    98 +-
 src/lagr/lagerr.f90                                |    10 +-
 src/lagr/lages1.f90                                |    92 +-
 src/lagr/lages2.f90                                |    92 +-
 src/lagr/lagesp.f90                                |    94 +-
 src/lagr/lagfch.f90                                |    94 +-
 src/lagr/laggra.f90                                |    94 +-
 src/lagr/laghis.f90                                |    72 +-
 src/lagr/lagich.f90                                |    69 +-
 src/lagr/lagidp.f90                                |    69 +-
 src/lagr/lagimp.f90                                |    69 +-
 src/lagr/lagini.f90                                |    30 +-
 src/lagr/lagipn.f90                                |    34 +-
 src/lagr/lagitf.f90                                |    69 +-
 src/lagr/lagitg.f90                                |    10 +-
 src/lagr/lagitp.f90                                |    65 +-
 src/lagr/laglec.f90                                |    31 +-
 src/lagr/laglis.f90                                |   135 +-
 src/lagr/lagnew.f90                                |    89 +-
 src/lagr/lagnpr.f90                                |    89 +-
 src/lagr/lagnwc.f90                                |    83 +-
 src/lagr/lagopt.f90                                |     8 +-
 src/lagr/lagout.f90                                |   112 +-
 src/lagr/lagphy.f90                                |    81 +-
 src/lagr/lagpoi.f90                                |   110 +-
 src/lagr/lagrus.f90                                |    34 +-
 src/lagr/lagsta.f90                                |    94 +-
 src/lagr/lagstf.f90                                |    12 +-
 src/lagr/lagtri.f90                                |    12 +-
 src/lagr/lagune.f90                                |   106 +-
 src/lagr/memla1.f90                                |    26 +-
 src/lagr/memla2.f90                                |    17 +-
 src/lagr/ouestu.f90                                |    10 +-
 src/mati/Makefile.in                               |   138 +-
 src/mati/memmat.f90                                |    53 +-
 src/mati/mtimpi.f90                                |    29 +-
 src/mati/mtini1.f90                                |    12 +-
 src/mati/mtkpdc.f90                                |   137 +-
 src/mati/mtphyv.f90                                |   133 +-
 src/mati/mtproj.f90                                |   121 +-
 src/mati/mttsns.f90                                |   137 +-
 src/mati/mttssc.f90                                |   139 +-
 src/mati/mttycl.f90                                |   141 +-
 src/pprt/Makefile.in                               |   162 +-
 src/pprt/memppt.f90                                |    36 +-
 src/pprt/ppcabs.f90                                |   154 +-
 src/pprt/ppclim.f90                                |   149 +-
 src/pprt/ppcsca.f90                                |    10 +-
 src/pprt/ppini1.f90                                |    10 +-
 src/pprt/ppinii.f90                                |    12 +-
 src/pprt/ppiniv.f90                                |   127 +-
 src/pprt/ppinv2.f90                                |   129 +-
 src/pprt/pplecd.f90                                |    12 +-
 src/pprt/pppdfr.f90                                |    14 +-
 src/pprt/ppphyv.f90                                |   133 +-
 src/pprt/ppprcl.f90                                |   137 +-
 src/pprt/ppprop.f90                                |     8 +-
 src/pprt/ppray4.f90                                |   135 +-
 src/pprt/pptbht.f90                                |     8 +-
 src/pprt/pptssc.f90                                |   139 +-
 src/pprt/pptycl.f90                                |   149 +-
 src/pprt/ppvarp.f90                                |    10 +-
 src/rayt/Makefile.in                               |   170 +-
 src/rayt/memra1.f90                                |    36 +-
 src/rayt/memra2.f90                                |    55 +-
 src/rayt/memra3.f90                                |    51 +-
 src/rayt/raycli.f90                                |   145 +-
 src/rayt/raydak.f90                                |    14 +-
 src/rayt/raydir.f90                                |    10 +-
 src/rayt/raydom.f90                                |   152 +-
 src/rayt/raylec.f90                                |    46 +-
 src/rayt/rayopt.f90                                |    10 +-
 src/rayt/rayout.f90                                |   133 +-
 src/rayt/raypar.f90                                |   137 +-
 src/rayt/raypun.f90                                |   141 +-
 src/rayt/raysca.f90                                |    57 +-
 src/rayt/raysol.f90                                |   139 +-
 src/rayt/rmodak.f90                                |    70 +-
 users/atmo/usatcl.f90                              |   519 +-
 users/atmo/usati1.f90                              |    17 +-
 users/atmo/usativ.f90                              |   163 +-
 users/base/usalcl.f90                              |   748 +-
 users/base/usalin.f90                              |    98 +-
 users/base/usaste.f90                              |   208 +-
 users/base/usclim.f90                              |   317 +-
 users/base/usdpst.f90                              |   437 +-
 users/base/ushist.f90                              |   293 +-
 users/base/usini1.f90                              |   220 +-
 users/base/usiniv.f90                              |   280 +-
 users/base/usjoin.f90                              |   172 +-
 users/base/uskpdc.f90                              |   190 +-
 users/base/usmodg.f90                              |    65 +-
 users/base/usmpst.f90                              |   274 +-
 users/base/usnpst.f90                              |   201 +-
 users/base/usphyv.f90                              |   147 +-
 users/base/usproj.f90                              |  2115 ++-
 users/base/uspt1d.f90                              |   361 +-
 users/base/ussatc.f90                              |   166 +-
 users/base/ussmag.f90                              |   152 +-
 users/base/usstru.f90                              |   550 +-
 users/base/ussyrc.f90                              |    91 +-
 users/base/usthht.f90                              |    17 +-
 users/base/ustmgr.f90                              |    19 +-
 users/base/ustske.f90                              |   368 +-
 users/base/ustskw.f90                              |   387 +-
 users/base/ustsma.f90                              |   530 +-
 users/base/ustsns.f90                              |   358 +-
 users/base/ustsri.f90                              |   383 +-
 users/base/ustssc.f90                              |   475 +-
 users/base/ustsv2.f90                              |   408 +-
 users/base/usvima.f90                              |   208 +-
 users/base/usvist.f90                              |   246 +-
 users/base/usvort.f90                              |   201 +-
 users/base/usvpst.f90                              |  1127 +-
 users/cfbl/uscfcl.f90                              |   234 +-
 users/cfbl/uscfpv.f90                              |   846 +-
 users/cfbl/uscfth.f90                              |  1434 +-
 users/cfbl/uscfx1.f90                              |    71 +-
 users/cfbl/uscfx2.f90                              |   111 +-
 users/cfbl/uscfxi.f90                              |   302 +-
 users/cogz/usd3p1.f90                              |   126 +-
 users/cogz/usd3pc.f90                              |  1103 +-
 users/cogz/usd3pi.f90                              |   352 +-
 users/cogz/usebu1.f90                              |   136 +-
 users/cogz/usebuc.f90                              |  1079 +-
 users/cogz/usebui.f90                              |   360 +-
 users/cogz/uslwc1.f90                              |   149 +-
 users/cogz/uslwcc.f90                              |  1083 +-
 users/cogz/uslwci.f90                              |   376 +-
 users/cplv/uscpcl.f90                              |   980 +-
 users/cplv/uscpi1.f90                              |   177 +-
 users/cplv/uscpiv.f90                              |   345 +-
 users/cplv/uscpl1.f90                              |     6 +-
 users/cplv/uscplc.f90                              |     4 +-
 users/ctwr/usctcl.f90                              |   535 +-
 users/ctwr/usctdz.f90                              |    90 +-
 users/ctwr/uscti1.f90                              |    13 +-
 users/ctwr/usctiv.f90                              |   163 +-
 users/elec/uselcl.f90                              |   961 +-
 users/elec/uselen.f90                              |   140 +-
 users/elec/useli1.f90                              |   151 +-
 users/elec/useliv.f90                              |   130 +-
 users/elec/uselph.f90                              |   174 +-
 users/elec/uselrc.f90                              |   139 +-
 users/elec/usetcl.f90                              |   615 +-
 users/fuel/usfucl.f90                              |  1123 +-
 users/fuel/usfui1.f90                              |   148 +-
 users/fuel/usfuiv.f90                              |   343 +-
 users/lagr/uslabo.f90                              |   598 +-
 users/lagr/usladp.f90                              |   208 +-
 users/lagr/uslaed.f90                              |   245 +-
 users/lagr/uslaen.f90                              |   256 +-
 users/lagr/uslafe.f90                              |   211 +-
 users/lagr/uslag1.f90                              |   901 +-
 users/lagr/uslag2.f90                              |   545 +-
 users/lagr/uslain.f90                              |   315 +-
 users/lagr/uslapr.f90                              |   240 +-
 users/lagr/uslaru.f90                              |   231 +-
 users/lagr/uslast.f90                              |   303 +-
 users/lagr/uslatc.f90                              |   225 +-
 users/lagr/uslatp.f90                              |   211 +-
 users/pprt/usppmo.f90                              |   304 +-
 users/rayt/usray1.f90                              |   125 +-
 users/rayt/usray2.f90                              |   747 +-
 users/rayt/usray3.f90                              |   143 +-
 users/rayt/usray4.f90                              |   217 +-
 users/rayt/usray5.f90                              |   411 +-
 882 files changed, 67119 insertions(+), 60019 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index 04e19c3..fadcfcf 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -4,50 +4,53 @@ refers to the time when that contributor was active in the project,
 and does not necessarily correspond to his or her present affiliation.
 
 
-Code_Saturne is copyright (C) 1998-2007 EDF S.A., France
+Code_Saturne is copyright (C) 1998-2010 EDF S.A., France
 
 
 Major contributions to the Code_Saturne Kernel have been provided by
-Archambeau Fr�d�ric   (EDF, Chatou, France)
-B�chaud C�line        (EDF, Chatou, France)
-Benhamadouche Sofiane (EDF, Chatou, France)
-Bonelle J�r�me        (EDF, Chatou, France)
-Bosse Sophie          (EDF, Chatou, France)
-Boucker Marc          (EDF, Chatou, France)
-Douce Alexandre       (EDF, Chatou, France)
-Escaich Alain         (EDF, Chatou, France)
-Fournier Yvan         (EDF, Chatou, France)
-Guimet Val�rie        (CS-SI, Le Plessis Robinson, France)
-Lavieville J�r�me     (EDF, Chatou, France)
-Mechitoua Namane      (EDF, Chatou, France)
-Monfort David         (EDF, Chatou, France)
-Ouraou Mehdi          (INCKA, Boulogne-Billancourt, France)
-Pasutto Thomas        (EDF, Chatou, France)
-Picard Nicole         (EDF, Chatou, France)
-Plion Pierre          (EDF, Chatou, France)
-Quemerais Eric        (INCKA, Boulogne-Billancourt, France)
-Rousset Jean-Luc      (EDF, Chatou, France)
-Sakiz Marc            (EDF, Chatou, France)
-Vit Carole            (INCKA, Boulogne-Billancourt, France)
+
+Alain Escaich         (EDF, Chatou, France)
+Alexandre Douce       (EDF, Chatou, France)
+Carole Vit            (INCKA, Boulogne-Billancourt, France)
+C�line B�chaud        (EDF, Chatou, France)
+David Monfort         (EDF, Chatou, France)
+�ric Quemerais        (INCKA, Boulogne-Billancourt, France)
+Fr�d�ric Archambeau   (EDF, Chatou, France)
+Jean-Luc Rousset      (EDF, Chatou, France)
+J�r�me Bonelle        (EDF, Chatou, France)
+J�r�me Lavieville     (EDF, Chatou, France)
+Marc Boucker          (EDF, Chatou, France)
+Marc Sakiz            (EDF, Chatou, France)
+Mehdi Ouraou          (INCKA, Boulogne-Billancourt, France)
+Namane Mechitoua      (EDF, Chatou, France)
+Nicole Picard         (EDF, Chatou, France)
+Pierre Plion          (EDF, Chatou, France)
+Sofiane Benhamadouche (EDF, Chatou, France)
+Sophie Bosse          (EDF, Chatou, France)
+Thomas Pasutto        (EDF, Chatou, France)
+Val�rie Guimet        (CS-SI, Le Plessis Robinson, France)
+Yvan Fournier         (EDF, Chatou, France)
 
 
 Other contributors to the Code_Saturne Kernel include
-Baudry Cyril          (ENSIL, Limoges, France)
-Carissimo Bertrand    (EDF, Chatou, France)
-Davroux Alexandre     (EDF, Chatou, France)
-Delalondre Clarisse   (EDF, Chatou, France)
-Gest Brigitte         (EDF, Chatou, France)
-Howard Richard        (EDF, Chatou, France)
-Huvelin Fabien        (EDF, Chatou, France)
-Jusserand Fran�ois    (EDF, Chatou, France)
-Lemoine Emmanuel      (INCKA, Boulogne-Billancourt, France)
-Lucas J�r�me          (INCKA, Boulogne-Billancourt, France)
-Milliez Maya          (EDF, Chatou, France)
-Robin Vincent         (ENSMA, Poitiers, France)
-Rupp Isabelle         (EDF, Chatou, France)
-Schuck Ugo            (EDF, Chatou, France)
-Tartar Michael        (INCKA, Boulogne-Billancourt, France)
-Uribe Juan            (University of Manchester, United Kingdom)
+
+Alexandre Davroux     (EDF, Chatou, France)
+Bertrand Carissimo    (EDF, Chatou, France)
+Brigitte Gest         (EDF, Chatou, France)
+Clarisse Delalondre   (EDF, Chatou, France)
+Cyril Baudry          (ENSIL, Limoges, France)
+Emmanuel Lemoine      (INCKA, Boulogne-Billancourt, France)
+Fabien Huvelin        (EDF, Chatou, France)
+Fran�ois Jusserand    (EDF, Chatou, France)
+Isabelle Rupp         (EDF, Chatou, France)
+J�r�me Lucas          (INCKA, Boulogne-Billancourt, France)
+Juan Uribe            (University of Manchester, United Kingdom)
+Maya Milliez          (EDF, Chatou, France)
+Micha�l Tartar        (INCKA, Boulogne-Billancourt, France)
+Richard Howard        (EDF, Chatou, France)
+Sylvestre Ledru       (INRIA, Rocquencourt, France)
+Ugo Schuck            (EDF, Chatou, France)
+Vincent Robin         (ENSMA, Poitiers, France)
 
 
 The Code_Saturne Kernel may contain code by Olivier Devillers
@@ -63,23 +66,24 @@ The following people should also be thanked for cooperating
 with the Code_Saturne development team by providing fresh
 ideas on theoretical or programming topics or major feedback on
 the code.
-Balestre Loic         (Xanth Informatique, Issy les Moulineaux, France)
-Bournaud Sophie       (EDF, Chatou, France)
-Dal Secco Sandro      (EDF, Chatou, France)
-Decossin Etienne      (EDF, Chatou, France)
-Guillaud Matthieu     (INCKA, Boulogne-Billancourt, France)
-H�rard Jean-Marc      (EDF, Chatou, France)
-Jamet Nicolas         (INCKA, Boulogne-Billancourt, France)
-Jarrin Nicolas        (University of Manchester, United Kingdom)
-Laurence Dominique    (EDF, Chatou, France)
-Leclair Matthieu      (EDF, Chatou, France)
-Longatte Lacazedieu Elisabeth (EDF, Chatou, France)
-Maas Ludovic          (INCKA, Boulogne-Billancourt, France)
-Mattei Jean-Daniel    (EDF, Chatou, France)
-Minier Jean-Pierre    (EDF, Chatou, France)
-Ritz Jean-Benoit      (EDF, Chatou, France)
-Thai-Van Dominique    (EDF, Chatou, France)
-Vurpillot Christelle  (EDF, Chatou, France)
+
+Christelle Vurpillot  (EDF, Chatou, France)
+Dominique Laurence    (EDF, Chatou, France)
+Dominique Thai-Van    (EDF, Chatou, France)
+�lisabeth Longatte Lacazedieu (EDF, Chatou, France)
+�tienne Decossin      (EDF, Chatou, France)
+Jean-Beno�t Ritz      (EDF, Chatou, France)
+Jean-Daniel Mattei    (EDF, Chatou, France)
+Jean-Marc H�rard      (EDF, Chatou, France)
+Jean-Pierre Minier    (EDF, Chatou, France)
+Lo�c Balestre         (Xanth Informatique, Issy les Moulineaux, France)
+Ludovis Maas          (INCKA, Boulogne-Billancourt, France)
+Matthieu Guillaud     (INCKA, Boulogne-Billancourt, France)
+Matthieu Leclair      (EDF, Chatou, France)
+Nicolas Jamet         (INCKA, Boulogne-Billancourt, France)
+Nicolas Jarrin        (University of Manchester, United Kingdom)
+Sandro Dal Secco      (EDF, Chatou, France)
+Sophie Bournaud       (EDF, Chatou, France)
 
 
 To the best of our knowledge, this list reflects the exact level of
diff --git a/COMPATIBILITY b/COMPATIBILITY
index d928a38..485a0b2 100644
--- a/COMPATIBILITY
+++ b/COMPATIBILITY
@@ -1,50 +1,54 @@
-CODE_SATURNE VERSION 1.4
+CODE_SATURNE VERSION 2.0
 ========================
 
-This is version 1.4.0 of the Code_Saturne CFD tool. It is composed of
-the following elements :
-* Code_Saturne Kernel version 1.4.0
-* Code_Saturne Preprocessor version 1.4.0
-* Code_Saturne Graphical User Interface version 1.4.0
+This is version 2.0-beta2 of the Code_Saturne CFD tool.
+It is composed of the following elements:
+* Code_Saturne Kernel version 2.0-beta2 (including Graphical User Interface)
+* Code_Saturne Preprocessor version 2.0-beta2
 Other versions of these elements might not be compatible.
 
 
 Compulsory libraries
 --------------------
 The BFT (Base Functions and Types) and FVM (Finite Volume Mesh) libraries
-are compulsory. They are distributed under the LGPL licence
-(copyright EDF S.A., France). Code_Saturne version 1.4.0 is compliant with
-the following versions:
-* BFT 1.0.8 or newer
-* FVM 0.13.0 or newer
+are compulsory. The MEI (Mathematical Expressions Interpreter) is optional.
+They are distributed under the LGPL licence (copyright EDF S.A., France).
+Code_Saturne version 2.0-beta2 is compliant with the following versions:
+* BFT 1.1.1 or newer
+* FVM 0.14.0 or newer
+* MEI 1.0.0 or newer
 Older versions might yet be compatible, possibly with limited features.
 
 
 Optionnal libraries
 -------------------
-Here is given the list of optionnal libraries that can be linked to
+Here is given the list of optional libraries that can be linked to
 Code_Saturne. The version number is the one used for developping and
-testing version 1.4.0 of Code_Saturne. Other versions (newer or older)
+testing version 2.0-beta2 of Code_Saturne. Other versions (newer or older)
 might still be compatible.
-* python: > 2.3     - (necessary for the Code_Saturne GUI)
+* python: > 2.4     - (necessary for the Code_Saturne GUI)
 * pyqt: > 4.3       - (necessary for the Code_Saturne GUI)
 * qt: > 4.3         - (necessary for the Code_Saturne GUI)
 * libxml2: > 2.6.19 - (necessary for the Code_Saturne GUI)
+* swig: > 1.3.30    - (necessary for the MEI library)
 * Metis: 4.0        - (for optimised domain decomposition)
 * CGNS: > 2.5
 * MED_fichier:  > 2.3
 * hdf5: > 1.6.4     - (necessary for MED_fichier library)
 * Zlib: 1.2.3
 
+
 MPI libraries
 -------------
 In case of parallel computing, it is necessary to use a MPI library.
-The following libraries have been used with success, but no specific
-command is used in the code so any other MPI library should work.
-* LAM/MPI: 7.1.3
-* MPICH: 1.2.8
-* MPICH2: 1.0.6
-* Open-MPI: 1.2.5
+The following libraries have been used with success (latest version
+number at the time of writing is given), but no specific command is
+used in the code so any other MPI library should work.
+* LAM/MPI: 7.1.4
+* MPICH: 1.2.7p1
+* MPICH2: 1.1.1p1
+* Open-MPI: 1.3.3
+
 
 Specificities of the Matisse module of Code_Saturne
 ---------------------------------------------------
diff --git a/ChangeLog b/ChangeLog
index 7712ab8..054ea8c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1642 @@
+* 18/02/2010 - David Monfort <david.monfort at edf.fr>
+  Release of Code_Saturne 2.0-rc1.
+
+* 18/02/2010 - Pierre Plion <pierre.plion at edf.fr>
+  Improve combustion documentation in the theory manual.
+  added files:
+    doc/theory/combbase.tex
+    doc/theory/combcharb.tex
+    doc/theory/combfuel.tex
+    doc/theory/combgaz.tex
+    doc/theory/thermo.tex
+  removed files:
+    doc/theory/combustion.tex
+  modified files:
+    doc/theory/Makefile.am
+    doc/theory/theory.tex
+
+* 18/02/2010 - David Monfort <david.monfort at edf.fr>
+  Third pass for English translation: translation of most of users
+  subroutines.
+  Thanks to many of Code_Saturne developpers for their input!
+
+* 18/02/2010 - Marc Sakiz <marc.sakiz at edf.fr>
+  Remove unused arguments in source term subroutines in Rij and v2-f models.
+  modified routines:
+    src/base/reseps.f90
+    src/base/resrij.f90
+    src/base/resssg.f90
+    src/base/resv2f.f90
+    users/base/ustsri.f90
+    users/base/ustsv2.f90
+
+* 18/02/2010 - David Monfort <david.monfort at edf.fr>
+  Improve MEI detection (for mei_prefix variable) in case --with-mei is not
+  provided.
+  modified script:
+    config/cs_mei.m4
+
+* 17/02/2010 - David Monfort <david.monfort at edf.fr>
+  Second pass for English translation of some Fortran subroutines headers.
+
+* 15/02/2010 - David Monfort <david.monfort at edf.fr>
+  First pass for English translation of some Fortran subroutines headers.
+
+* 15/02/2010 - David Monfort <david.monfort at edf.fr>
+  Remove some documentation directories for the release (work in progress).
+  modified routine:
+    doc/Mafile.am
+
+* 15/02/2010 - David Monfort <david.monfort at edf.fr>
+  Minor fixes for the treatment of periodicity with code/code coupling.
+  modified routines:
+    src/base/cscpce.f90
+    src/base/cscpfb.f90
+
+* 12/02/2010 - David Monfort <david.monfort at edf.fr>
+  Fix issues in the filename handling for profiles generation with the GUI.
+  modified routine:
+    src/base/cs_gui.c
+
+* 12/02/2010 - Yvan Fournier <yvan.fournier at edf.fr>
+  Change the error file name according to the new behaviour of the listing.
+  modified routine:
+    src/base/cs_base.c
+
+* 10/02/2010 - Yvan Fournier <yvan.fournier at edf.fr>
+  Improve MPI launcher management in the Python runcase scripts.
+  modified scripts:
+    bin/cs_case.py
+    bin/cs_exec_environment.py
+    bin/runcase.py.in
+
+* 09/02/2010 - David Monfort <david.monfort at edf.fr>
+  Temporarily by-pass the official web-site for Code_Saturne packages
+  download (waiting for being granted access to www.code-saturne.org).
+  modified files:
+    extras/installer/install_saturne.py
+
+* 09/02/2010 - David Monfort <david.monfort at edf.fr>
+  Update the Python installer for the 2.0-rc1 release.
+  modified files:
+    extras/installer/install_saturne.py
+    extras/installer/README.txt
+    extras/installer/setup
+
+* 09/02/2010 - David Monfort <david.monfort at edf.fr>
+  Rewrite the AUTHORS file with a firstname/lastname ordering.
+  modified file:
+    AUTHORS
+
+* 09/02/2010 - David Monfort <david.monfort at edf.fr>
+  Improve the preprocessor and SYRTHES detection (especially, exit with
+  failure if the preprocessor is not found, and handle Debian packaging
+  system).
+  modified scripts:
+    bin/cs_config.py.in
+    bin/runcase.in
+    config/cs_syrthes.m4
+    configure.ac
+    Makefile.am
+
+* 08/02/2010 - David Monfort <david.monfort at edf.fr>
+  Add a framework for an installation guide under the documentation directory.
+  modified scripts:
+    doc/Makefile.am
+    configure.ac
+
+* 05/02/2010 - David Monfort <david.monfort at edf.fr>
+  Only emit a warning for missing partitioner when the number of processor is
+  strictly greater than 1.
+  modified scripts:
+    bin/cs_case_domain.py
+    bin/runcase.in
+
+* 04/02/2010 - David Monfort <david.monfort at edf.fr>
+  As suggested by Charles Moulinec from Daresbury laboratories, increase the
+  listing name to 7 numbers instead of 4 when the number of processors is
+  higher than 10000.
+  modified routine:
+    src/base/csinit.f90
+
+* 03/02/2010 - David Monfort <david.monfort at edf.fr>
+  Add specific post-processing variables for rotor/stator interaction.
+  modified routines:
+    src/base/dvvpst.f90
+    users/base/usini1.f90
+
+* 03/02/2010 - Yvan Fournier <yvan.fournier at edf.fr>
+  Remove a spurious assert from the SYRTHES 4 coupling.
+  modified routine:
+    src/base/cs_syr4_coupling.c
+
+* 03/02/2010 - Yvan Fournier <yvan.fournier at edf.fr>
+  Fix a rare error that could arise with time-independant writers (in
+  post-processing).
+  modified routine:
+    src/base/cs_post.c
+
+* 03/02/2010 - David Monfort <david.monfort at edf.fr>
+  Change the default label of boundary zones in the GUI from Wall to BC.
+  modified routine:
+    gui/Pages/LocalizationModel.py
+
+* 02/02/2010 - David Monfort <david.monfort at edf.fr>
+  Always request the MEI library to be available (but keep the availability of
+  disabling it).
+  modified script:
+    config/cs_mei.m4
+
+* 02/02/2010 - David Monfort <david.monfort at edf.fr>
+  Correct the centrifugal potential definition in the rotor/stator coupling.
+  modified routine:
+    src/base/cscpfb.f90
+
+* 01/02/2010 - Alexandre Douce <alexandre.douce at edf.fr>
+  Add/improve the formula examples for fluid/structure interaction.
+  modified routines:
+    gui/Pages/FluidStructureInteractionView.py
+    gui/Pages/MobileMeshModel.py
+    gui/Pages/MobileMeshView.py
+
+* 01/02/2010 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix a missing header in the Xml file produced by the GUI and concerning the
+  scalars initialization.
+  modified routine:
+    gui/Pages/DefineUserScalarsModel.py
+
+* 01/02/2010 - Alexandre Douce <alexandre.douce at edf.fr>
+  Move upwards the definition of additional scalars in the GUI because the
+  physical properties can depend on them.
+  modified routine:
+    gui/Base/BrowserView.py
+
+* 28/01/2010 - David Monfort <david.monfort at edf.fr>
+  Fix unfortunate errors in code/code coupling in relative reference frame.
+  modified routine:
+    src/base/cscpfb.f90
+
+* 28/01/2010 - David Monfort <david.monfort at edf.fr>
+  Fix a spurious _CS_HAVE_MPI used instead of the standard HAVE_MPI.
+  modified routine:
+    src/base/cs_sat_coupling.c
+
+* 28/01/2010 - Maya Milliez <maya.milliez at edf.fr>
+  Fix a wrong index when adding a user scalar in addition to specific physics
+  scalars with the GUI.
+  modified routine:
+    src/base/cs_gui.c
+
+* 26/01/2010 - David Monfort <david.monfort at edf.fr>
+  Add a test on the number of couplings to avoid a possible unnecessary loop.
+  modified routine:
+    src/base/resolp.f90
+
+* 26/01/2010 - David Monfort <david.monfort at edf.fr>
+  Fix two issues in the fluid interaction setup in the GUI (the mesh viscosity
+  initialization and the definition of fluid forces for an internal coupling).
+  modified routines:
+    gui/Pages/Boundary.py
+    gui/Pages/MobileMeshModel.py
+
+* 26/01/2010 - David Monfort <david.monfort at edf.fr>
+  Change the name of the mass/damping/stiffness matrix coefficients in case of
+  fluid structure interaction with internal coupling (changed to resp. mij,
+  cij and kij), for more consistency with the usual naming convention.
+  modified routines:
+    gui/Pages/Boundary.py
+    gui/Pages/FluidStructureInteractionForm.ui
+    gui/Pages/FluidStructureInteractionView.py
+    src/base/cs_gui_mobile_mesh.c
+
+* 26/01/2010 - Mehdi Ouraou <mehdi.ouraou at edf.fr>
+  Fix a bug when printing Lagrangian statistics.
+  modified routine:
+    src/lagr/laglis.f90
+
+* 26/01/2010 - David Monfort <david.monfort at edf.fr>
+  Set the verbosity level to the global one for GUI debugging.
+  modified routines:
+    gui/Pages/AtmosphericFlowsView.py
+    gui/Pages/LocalizationView.py
+    gui/Pages/MatisseCustomView.py
+    gui/Pages/QMeiEditorView.py
+    gui/Pages/SalomeHandler.py
+    gui/Pages/SolutionDomainView.py
+
+* 26/01/2010 - David Monfort <david.monfort at edf.fr>
+  Fix a potential incoherency between the definition of the mesh viscosity in
+  the graphical interface compared to its definition with usvima.
+  Consequently, from now we only define the mesh viscosity at the first
+  timestep (as it is usually done on the initial geometry).
+  modified routines:
+    src/base/phyvar.f90
+    users/base/usvima.f90
+
+* 25/01/2010 - David Monfort <david.monfort at edf.fr>
+  Increase the maximum number of structures to 200 for both internal and
+  external coupling.
+  modified routine:
+    include/base/paramx.h
+
+* 25/01/2010 - Yvan Fournier <yvan.fournier at edf.fr>
+  Fix a minor bug in the printing of an error message.
+  modified script:
+    bin/cs_case_domain.py
+
+* 25/01/2010 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix a missing initialization for a pointer only defined in some ALE
+  configurations.
+  modified routine:
+    src/base/tridim.f90
+
+* 25/01/2010 - Yvan Fournier <yvan.fournier at edf.fr>
+  Fix the test to exit a "do-while" loop in the aborting process where we wait
+  a couple of seconds before aborting.
+  modified routine:
+    src/base/cs_base.c
+
+* 22/01/2010 - David Monfort <david.monfort at edf.fr>
+  Trigger an error instead of a warning when configure cannot find PyQt
+  support.
+  modified script:
+    configure.ac
+
+* 22/01/2010 - David Monfort <david.monfort at edf.fr>
+  Replace the mkpyqt.py script by our own build process (through autotools)
+  for building PyQt files (user interface and resource files).
+  Add configury checks for PyQt support (and version checking) as well as PyQt
+  developper tools (pyuic4 and pyrcc4).
+  Remove unused setup.py script.
+  removed scripts:
+    gui/sbin/mkpyqt.py
+  modified scripts:
+    configure.ac
+    gui/Base/Makefile.am
+    gui/Pages/Makefile.am
+
+* 19/01/2010 - Yvan Fournier <yvan.fournier at edf.fr>
+  Use Fortran 90 pointers to avoid access to unallocated arrays.
+  modified routine:
+    src/base/turrij.f90
+
+* 19/01/2010 - David Monfort <david.monfort at edf.fr>
+  Update the french dictionnary file.
+  modified file:
+    po/fr.po
+
+* 19/01/2010 - David Monfort <david.monfort at edf.fr>
+  Increase the xml file version number because of non compatible xml headers.
+  modified routines:
+    gui/Base/Common.py
+    gui/Base/XMLengine.py
+    gui/Base/XMLvariables.py
+    src/base/cs_gui_util.c
+
+* 19/01/2010 - David Monfort <david.monfort at edf.fr>
+  Change the behaviour of the xml file relatively to the time step min/max
+  factor so that it corrresponds to what is given by the user in the gui.
+  modified routines:
+    gui/Pages/TimeStepForm.ui
+    gui/Pages/TimeStepModel.py
+    gui/Pages/TimeStepView.py
+    src/base/cs_gui.c
+
+* 19/01/2010 - David Monfort <david.monfort at edf.fr>
+               Bruno Audebert <bruno.audebert at edf.fr>
+  Add rotor/stator interaction (specific interpolation) for relative frame
+  calculation.
+  modified routine:
+    src/base/cscpfb.f90
+
+* 19/01/2010 - David Monfort <david.monfort at edf.fr>
+  Fix a mispelling-word bug in mass-flux update stage (vitboy instead of
+  vitboz).
+  modified routines:
+    src/base/condli.f90
+    src/base/navsto.f90
+
+* 18/01/2010 - David Monfort <david.monfort at edf.fr>
+               Bruno Audebert <bruno.audebert at edf.fr>
+  Add first implementation for rotating machinery modelling.
+  This is basically rotating mesh handling.
+  Rotor/stator interaction (specific interpolation) is still missing.
+  added routine:
+    src/base/mmtycl.f90
+  modified script:
+    src/base/Makefile.am
+  modified routines:
+    include/base/cplsat.h
+    include/base/optcal.h
+    src/base/clptur.f90
+    src/base/condli.f90
+    src/base/cscini.f90
+    src/base/gradrc.f90
+    src/base/iniva0.f90
+    src/base/memtri.f90
+    src/base/modini.f90
+    src/base/navsto.f90
+    src/base/resolp.f90
+    src/base/tridim.f90
+
+* 18/01/2010 - Mehdi Ouraou <mehdi.ouraou at edf.fr>
+  Fix a wrong array (propce instead of rtpa) in the calculation
+  of source term for radiative transfer i heavy fuel oil combustion.
+  modified routine:
+    src/base/covofi.f90
+    src/fuel/furays.f90
+
+* 13/01/2010 - David Monfort <david.monfort at edf.fr>
+  Fix a bug in libxml2 detection (small annoying typo...).
+  modified script:
+    config/cs_libxml2.m4
+
+* 12/01/2010 - David Monfort <david.monfort at edf.fr>
+  Fix a bug in BLAS detection (warn instead of fail).
+  modified script:
+    config/cs_blas.m4
+
+* 12/01/2010 - David Monfort <david.monfort at edf.fr>
+  Upgrade version number to 2.0.0-rc1
+  modified script:
+    configure.ac
+
+* 11/01/2010 - David Monfort <david.monfort at edf.fr>
+  Add rotation matrices for pumps modelling.
+  modified routines:
+    include/base/cstphy.h
+    include/base/optcal.h
+    src/base/cscini.f90
+    src/base/modini.f90
+
+* 11/01/2010 - David Monfort <david.monfort at edf.fr>
+  Update gettext file for French translation.
+  modified file:
+    po/fr.po
+
+* 11/01/2010 - Bruno Audebert <bruno.audebert at edf.fr>
+  Add new interpolation schemes to code/code coupling for
+  rotor/stator interaction modelling.
+  modified routines:
+    include/base/cplsat.h
+    src/base/bilsc2.f90
+    src/base/csc2cl.f90
+    src/base/cscpfb.f90
+    src/base/iniini.f90
+    src/base/resolp.f90
+
+* 11/01/2010 - David Monfort <david.monfort at edf.fr>
+  Minor fixes to account for the cs to code_saturne renaming.
+  renamed file:
+   doc/manpages/cs.1
+  modified script:
+   extras/installer/install_saturne.py
+   Makefile.am
+
+* 11/01/2010 - David Monfort <david.monfort at edf.fr>
+  Update Code_Saturne prerequisites in the installer script.
+  modified script:
+   extras/installer/install_saturne.py
+
+* 08/01/2010 - Maya Milliez <maya.milliez at edf.fr>
+  Improve robustness for wall boundary conditions for atmospheric modelling.
+  modified routine:
+    src/atmo/atmcls.f90
+
+* 06/01/2010 - David Monfort <david.monfort at edf.fr>
+  Fix a an issue when returning the number of code/code couplings.
+  Code cleaning to remove some compiler warnings.
+  modified routine:
+    src/base/cs_sat_coupling.c
+
+* 21/12/2009 - David Monfort <david.monfort at edf.fr>
+  Make code/code coupling compliant with the new discovering
+  mechanism for coupling applications.
+  modified script:
+    src/base/Makefile.am
+  added routine:
+    src/base/cs_sat_f2c.f90
+  modified routines:
+    include/base/cs_sat_coupling.h
+    src/apps/cs_solver.c
+    src/base/cscloc.f90
+    src/base/cs_sat_coupling.c
+    src/base/initi1.f90
+    src/base/tridim.f90
+    users/base/ussatc.f90
+
+* 21/12/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Add real-life examples for fluid properties variation laws.
+  modidied routine:
+    gui/Pages/FluidCharacteristicsView.py
+
+* 21/12/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Add syntax highlighting for mathematical expression in the interface.
+  modified routine:
+    gui/Pages/QMeiEditorView.py
+
+* 21/12/2009 - Maya Milliez <maya.milliez at edf.fr>
+  Fix an issue in the inlet boundary conditions setup for
+  the atmospheric modelling via the graphical interface.
+  modified routine:
+    src/base/cs_gui.c
+
+* 17/12/2009 - Frank Hulsemann <frank.hulsemann at edf.fr>
+  Fix a bug when copying the matrix coefficient in native format.
+  No impact in current simulations as the code was never used.
+  modified routine:
+    src/base/cs_matrix.c
+
+* 17/12/2009 - David Monfort <david.monfort at edf.fr>
+  Update the "remove trailing blanks and tabs" script, so that it
+  handles the Python interface files and the different runcase scripts.
+  Run it once for every file.
+  modified script:
+    sbin/rmb
+
+* 17/12/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Minor modifications for GUI integration in the SALOME platform.
+  modified routines:
+    gui/Pages/OutputControlModel.py
+    gui/Pages/SolutionVerifView.py
+
+* 16/12/2009 - David Monfort <david.monfort at edf.fr>
+  Fix a bug in BLAS detection, introduced with latest improvement.
+  modified script:
+    config/cs_blas.m4
+
+* 16/12/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+  Add a counter for the numbering of the joinings.
+  modified routines:
+    include/base/cs_join.h
+    include/base/cs_join_util.h
+    src/base/cs_join.c
+    src/base/cs_join_f2c.f90
+    src/base/cs_join_util.c
+    users/base/usjoin.f90
+
+* 16/12/2009 - David Monfort <david.monfort at edf.fr>
+  Change some regular expressions for syntax checking in the
+  interface according to what is done in MEI.
+  modified routines:
+    gui/Pages/DefineUserScalarsView.py
+    gui/Pages/FacesSelectionView.py
+    gui/Pages/OutputVolumicVariablesView.py
+
+* 15/12/2009 - David Monfort <david.monfort at edf.fr>
+  Remove hyphens and dots from variable names.
+  modified routines:
+    gui/Base/Toolbox.py
+    gui/Base/XMLinitialize.py
+    gui/Pages/Boundary.py
+    gui/Pages/DefineUserScalarsModel.py
+    gui/Pages/FluidCharacteristicsModel.py
+    gui/Pages/InitializationModel.py
+    gui/Pages/NumericalParamEquationModel.py
+    gui/Pages/OutputVolumicVariablesModel.py
+    gui/Pages/ThermalScalarModel.py
+    gui/Pages/TurbulenceModel.py
+
+* 14/12/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+               David Monfort <david.monfort at edf.fr>
+  Translation of most of the variables names.
+  modified routines:
+    src/cfbl/cfprop.f90
+    src/cogz/coini1.f90
+    users/base/usini1.f90
+    users/cogz/uslwc1.f90
+
+* 14/12/2009 - Benoit de Laage de Meux <benoit.de-laage-de-meux at edf.fr>
+  Fix a wrong list of arguments for the cfiltr subroutine.
+  modified routine:
+    users/base/ussmag.f90
+
+* 14/12/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Improve the Python runcase script for BG runs.
+  modified scripts:
+    bin/cs_case.py
+    bin/runcase.py.in
+
+* 14/12/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+  Improve the parallel joining algorithm.
+  modified routines:
+    include/base/cs_join.h
+    include/base/cs_join_intersect.h
+    include/base/cs_join_mesh.h
+    include/base/cs_join_util.h
+    src/base/cs_join.c
+    src/base/cs_join_f2c.f90
+    src/base/cs_join_intersect.c
+    src/base/cs_join_merge.c
+    src/base/cs_join_mesh.c
+    src/base/cs_join_post.c
+    src/base/cs_join_set.c
+    src/base/cs_join_split.c
+    src/base/cs_join_update.c
+    src/base/cs_join_util.c
+    users/base/usjoin.f90
+
+* 09/12/2009 - David Monfort <david.monfort at edf.fr>
+  Rename the main script in code_saturne to avoid a conflict
+  with the cs executable of csound package.
+  modified files:
+    doc/refcard/refcard.tex
+  modified scripts:
+    extras/bash_completion/code_saturne
+    bin/code_saturne.in
+    bin/runcase_syrthes
+    bin/SaturneGUI.in
+    bin/runcase.in
+    bin/cs.in
+    Makefile.am
+
+* 08/12/2009 - David Monfort <david.monfort at edf.fr>
+  Change the behaviour of the pre-requisites detection by adding
+  a check option. When a package is requested, exit with an error
+  if the package is not found.
+  Thanks for Sylvestre Ledru for advice.
+  modified scripts:
+    config/cs_bft.m4
+    config/cs_blas.m4
+    config/cs_fvm.m4
+    config/cs_libxml2.m4
+    config/cs_mei.m4
+    config/cs_mpi.m4
+
+* 03/12/2009 - David Monfort <david.monfort at edf.fr>
+  Add a meteo data file example.
+  added file:
+    data/thch/meteo
+  modified scripts:
+    bin/runcase.in
+    Makefile.am
+
+* 09/25/2009 - David Monfort <david.monfort at edf.fr>
+  Update Code_Saturne installer according to the previous commit.
+  modified scripts:
+    extras/installer/install_saturne.py
+
+* 09/25/2009 - David Monfort <david.monfort at edf.fr>
+  Improve package detection handling during configure stage.
+  modified scripts:
+    config/cs_bft.m4
+    config/cs_blas.m4
+    config/cs_fvm.m4
+    config/cs_libxml2.m4
+    config/cs_mei.m4
+    config/cs_mpi.m4
+
+* 09/25/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Fix a wrong size allocation in SYRTHES 4 coupling.
+  modified routine:
+    src/base/cs_syr4_coupling.c
+
+* 09/24/2009 - David Monfort <david.monfort at edf.fr>
+  Fix a bug in BLAS detection when both C and Fortran symbols are present
+  in the legacy BLAS library.
+  modified script:
+    config/cs_blas.m4
+
+* 09/18/2009 - David Monfort <david.monfort at edf.fr>
+  Fix several issues with the WALE model.
+  modified routines:
+    include/base/cstphy.h
+    src/base/viswal.f90
+
+* 09/18/2009 - David Monfort <david.monfort at edf.fr>
+  Small correction when displaying I-deas file format.
+  modified routine:
+    gui/Pages/SolutionDomainModel.py
+
+* 09/18/2009 - David Monfort <david.monfort at edf.fr>
+  Fix issues in the check_mesh tool (GUI) with CGNS and MED format.
+  modified routines:
+    gui/Pages/SolutionVerifView.py
+    users/base/usini1.f90
+
+* 09/18/2009 - Clarisse Delalondre <clarisse.delalondre at edf.fr>
+  Update the dp_ELE file (Argon properties) to account for radiative transfer.
+  modified file:
+    data/thch/dp_ELE
+
+* 09/18/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix the statistical weight parameter issue in GUI for Lagrangian setup.
+  modified routines:
+    gui/Pages/LagrangianBoundariesModel.py
+    gui/Pages/LagrangianBoundariesView.py
+
+* 09/18/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix a bug when reading/writing dp_FCP thermochemistry file in GUI.
+  modified routine:
+   gui/Pages/CoalThermoChemistry.py
+
+* 09/18/2009 - Mehdi Ouraou <mehdi.ouraou at edf.fr>
+  Fix the velocity computation when setting up a mass flow rate.
+  modified routine:
+    src/base/cs_gui_boundary_conditions.c
+
+* 09/17/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Minor modifications.
+  modified routines:
+    gui/Pages/FluidStructureInteractionModel.py
+    gui/Pages/InitializationModel.py
+
+* 09/17/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Don't automatically set the number of processors to 1 in runcase anymore.
+  Enable again the post-processing of SYRTHES coupling faces.
+  modified routines:
+    gui/Pages/BatchRunningModel.py
+    gui/Pages/ConjugateHeatTransferModel.py
+    gui/Pages/OutputControlView.py
+
+* 09/17/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix some potential issues in the check_mesh feature and SALOME porting.
+  modified routines:
+    gui/Base/BrowserView.py
+    gui/Base/MainView.py
+    gui/Pages/BatchRunningView.py
+    gui/Pages/SalomeHandler.py
+    gui/Pages/SolutionDomainView.py
+    gui/Pages/SolutionVerifView.py
+
+* 09/17/2009 - David Monfort <david.monfort at edf.fr>
+  Add LTLIBINTL to cs_solver dependency for linking with libintl library
+  needed for gettext support on systems with a libc different from the glibc.
+  modified script:
+    src/apps/Makefile.am
+
+* 09/11/2009 - David Monfort <david.monfort at edf.fr>
+  Change the order of some libraries to link with on BG/P systems.
+  modified script:
+    config/cs_auto_flags.sh
+
+* 04/11/2009 - David Monfort <david.monfort at edf.fr>
+  Merge the user scripts manpages into a single one for the cs script.
+  added file:
+    doc/manpages/cs.1
+  removed files:
+    doc/manpages/cs_check_consistency.1
+    doc/manpages/cs_check_mesh.1
+    doc/manpages/cs_compile.1
+    doc/manpages/cs_create.1
+    doc/manpages/cs_info.1
+    doc/manpages/cs_plot_probes.1
+  modified script:
+    Makefile.am
+
+* 04/11/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Small fixes related to user scripts (lib64 rpath detection and
+  distutils module not present).
+  modified scripts:
+    bin/cs_compile.py
+    bin/cs.in
+
+* 04/11/2009 - David Monfort <david.monfort at edf.fr>
+  Fix some issues in BLAS detection (Intel MKL especially).
+  modified script:
+    config/cs_blas.m4
+
+* 04/11/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Different fixes for PGI compilers support.
+  modified script:
+    config/cs_auto_flags.sh
+
+* 03/11/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Add head loss setup in the graphical user interface.
+  modified routines:
+    gui/Base/BrowserView.py
+    gui/Base/Toolbox.py
+    gui/Base/XMLinitialize.py
+    gui/Pages/HeadLossesForm.ui
+    gui/Pages/HeadLossesModel.py
+    gui/Pages/HeadLossesView.py
+    gui/Pages/LocalizationModel.py
+    gui/Pages/LocalizationView.py
+    include/base/cs_gui.h
+    src/base/caltri.f90
+    src/base/cs_gui.c
+    src/base/tridim.f90
+
+* 03/11/2009 - David Monfort <david.monfort at edf.fr>
+  Force 'bash' shell as 'sh' can be more minimalist one (like on Ubuntu
+  systems where it is 'dash') and we are using bashism.
+  modified script:
+    bin/runcase.in
+
+* 03/11/2009 - David Monfort <david.monfort at edf.fr>
+  Finalize the implementation of SYRTHES coupling setup via the GUI.
+  modified script:
+    bin/runcase.in
+  modified routines:
+    gui/Base/Toolbox.py
+    gui/Pages/BatchRunningModel.py
+    gui/Pages/FacesSelectionView.py
+    gui/Pages/Makefile.am
+    gui/Pages/OutputControlView.py
+    gui/Pages/SolutionDomainModel.py
+    src/base/cs_gui_conjugate_heat_transfer.c
+  removed routines:
+    gui/Pages/SyrthesForm.ui
+    gui/Pages/SyrthesView.py
+
+* 30/10/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  First implementation of the SYRTHES coupling with a GUI setup.
+  This functionality is not complete yet, the script has to be adapted
+  and the XML reader corrected.
+  modified routines:
+    gui/Base/BrowserView.py
+    gui/Base/Toolbox.py
+    gui/Pages/CoalCombustionModel.py
+    gui/Pages/ConjugateHeatTransferForm.ui
+    gui/Pages/ConjugateHeatTransferModel.py
+    gui/Pages/ConjugateHeatTransferView.py
+    gui/Pages/Makefile.am
+    gui/Pages/ThermalScalarModel.py
+    include/base/cs_gui_conjugate_heat_transfer.h
+    src/base/cs_gui_conjugate_heat_transfer.c
+    src/base/initi1.f90
+    src/base/Makefile.am
+
+* 30/10/2009 - David Monfort <david.monfort at edf.fr>
+  Add return statement so that the user subroutine are not executed.
+  modified routines:
+    users/base/uskpdc.f90
+    users/base/ustsma.f90
+    users/base/usvort.f90
+
+* 30/10/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Minor correction in the GUI launcher module.
+  modified routine:
+    gui/cs_gui.py
+
+* 30/10/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Improve the support for atmospheric flow modelling in the GUI.
+  modified routines:
+    gui/Pages/AtmosphericFlowsModel.py
+    gui/Pages/ReferenceValuesModel.py
+    gui/Pages/ReferenceValuesView.py
+    gui/Pages/SolutionDomainView.py
+
+* 30/10/2009 - Maya Milliez <maya.milliez at edf.fr>
+  Improvement in the atmospheric module initialization.
+  modified routines:
+    src/atmo/atini1.f90
+    src/atmo/atiniv.f90
+
+* 30/10/2009 - David Monfort <david.monfort at edf.fr>
+  Fix a bug introduced in a previous commit.
+  modified routine:
+    src/base/cs_gui_boundary_conditions.c
+
+* 30/10/2009 - David Monfort <david.monfort at edf.fr>
+  Fix a wrong array indirection where ra was used instead of ia.
+  modified routine:
+    src/base/strdep.f90
+
+* 26/10/2009 - Maya Milliez <maya.milliez at edf.fr>
+               Bertrand Carissimo <bertrand.carissimo at edf.fr>
+  Fix some bugs in the atmospheric flows module. Change the setup of the
+  thermal roughness, now defined in rcodcl(ifac,iv(iphas,3).
+  modified routines:
+    src/atmo/atini1.f90
+    src/atmo/atlecm.f90
+    src/atmo/atmcls.f90
+    src/atmo/atprke.f90
+    src/base/clptrg.f90
+    src/base/cs_gui_boundary_conditions.c
+    src/base/vericl.f90
+    users/atmo/usatcl.f90
+
+* 26/10/2009 - David Monfort <david.monfort at edf.fr>
+  Fix a minor issue in MED installation parameters.
+  modified file:
+    extras/installer/install_saturne.py
+
+* 26/10/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix some issues as regards the Lagrangian setup in the GUI.
+  modified routines:
+    gui/Pages/LagrangianBoundariesModel.py
+    gui/Pages/LagrangianBoundariesView.py
+
+* 21/10/2009 - Namane M�chitoua <namane.mechitoua at edf.fr>
+  Set the relaxation factor between P0/P1 interpolations to 0.95 in multigrid
+  algorithm in order to stabilize the algorithm in some calculations.
+  Remove a useless line in addition.
+  modified routines:
+    src/base/crstgr.f90
+    src/base/iniini.f90
+
+* 21/10/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix a bug introduce previously (time-step page no more available).
+  modified routine:
+    gui/Base/BrowserView.py
+
+* 20/10/2009 - Mehdi Ouraou <mehdi.ouraou at edf.fr>
+  Fix a missing sum over the processor for an error indicator.
+  modified routine:
+    src/pprt/ppcabs.f90
+
+* 20/10/2009 - Mehdi Ouraou <mehdi.ouraou at edf.fr>
+  Fix a shift in the definition of post-processing pointer for luminance
+  resulting in having the time-step instead of the luminance.
+  modified routine:
+    src/base/varpos.f90
+
+* 19/10/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Move explicit source correction in raysca for a correct post-processing.
+  This is allowed since combustion modelling always uses enthalpy.
+  Correction in the GUI part in addition.
+  modified routines:
+    gui/Pages/ThermalRadiationModel.py
+    src/rayt/raydom.f90
+    src/rayt/raysca.f90
+
+* 19/10/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Minor modification on a test when not enough data are available.
+  modified routine:
+    src/base/cs_mesh_quantities.c
+
+* 19/10/2009 - David Monfort <david.monfort at edf.fr>
+               Yvan Fournier <yvan.fournier at edf.fr>
+  Cosmetic modifications.
+  modified routines:
+    include/base/cs_preprocessor_data.h
+    src/base/cs_post.c
+    src/base/ecrhis.f90
+    users/base/usclim.f90
+    users/base/usjoin.f90
+    users/base/usproj.f90
+
+* 19/10/2009 - Namane M�chitoua <namane.mechitoua at edf.fr>
+  Set the agglomeration limit to 3 instead of 8.
+  modified routine:
+    src/base/iniini.f90
+
+* 19/10/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Disable FPE handling also on BlueGene systems.
+  modified routine:
+    src/apps/cs_solver.c
+
+* 19/10/2009 - David Monfort <david.monfort at edf.fr>
+  Add Code_Saturne installer in the extras directory.
+  added files:
+    extras/installer
+    extras/installer/install_saturne.py
+    extras/installer/README.txt
+    extras/installer/setup
+
+* 19/10/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Have a consistent behaviour of post-processing option depending on
+  the time-step scheme.
+  modified routines:
+    gui/Base/BrowserView.py
+    gui/Pages/OutputVolumicVariablesView.py
+    gui/Pages/SteadyManagementModel.py
+    gui/Pages/TimeStepModel.py
+    include/base/cs_gui.h
+    src/base/cs_gui.c
+    src/base/iniusi.f90
+    src/base/inivar.f90
+
+* 19/10/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+  Add a coherency check for interior faces -> cells connectivity.
+  modified routine:
+    src/base/cs_mesh_halo.c
+
+* 19/10/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+  Fix a freeze that could happen in the joining algorithm when
+  no face is present after the slice redistribution.
+  modified routines:
+    src/base/cs_join_intersect.c
+    src/base/cs_join_merge.c
+    src/base/cs_join_mesh.c
+    src/base/cs_join_split.c
+    src/base/cs_join_update.c
+
+* 19/10/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+  Fix an issue with the joining algorithm where not all the single
+  vertices are detected during the selection step.
+  modified routines:
+    include/base/cs_join_util.h
+    src/base/cs_join_util.c
+
+* 16/10/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+               Yvan Fournier <yvan.fournier at edf.fr>
+  Add a verification for negative volume.
+  modified routines:
+    include/base/cs_mesh_quantities.h
+    src/apps/cs_solver.c
+    src/base/cs_mesh_quantities.c
+
+* 16/10/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+  Fix a wrong initialization in mesh quality display when the array
+  is empty.
+  modified routine:
+    src/base/cs_mesh_quality.c
+
+* 16/10/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+  Fix a bug in the joining algorithm when the number of faces is
+  lower than the number of ranks.
+  modified routine:
+    src/base/cs_join_merge.c
+
+* 16/10/2009 - David Monfort <david.monfort at edf.fr>
+  Replace fake variable by a fake array for consistency.
+  modified routine:
+    src/atmo/mematm.f90
+
+* 16/10/2009 - David Monfort <david.monfort at edf.fr>
+  Disable multigrid algorithm for P1 model (radiative transfer).
+  modified routine:
+    src/rayt/raypun.f90
+
+* 08/10/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Improve GUI behaviour for a RESTART directory is already present.
+  modified routine:
+    gui/Pages/StartRestartView.py
+
+* 07/10/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix a bug in the scalar initialization if the user adds a new
+  scalar during a restarting calculation.
+  modified routines:
+    gui/Pages/InitializationView.py
+    gui/Pages/LocalizationView.py
+    include/base/cs_gui.h
+    src/base/cs_gui.c
+    src/base/inivar.f90
+
+* 07/10/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Improvement in the profiles management in GUI.
+  modified routine:
+    gui/Pages/ProfilesView.py
+
+* 06/10/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Upgrade to FVM 0.15.0
+  modified script:
+    configure.ac
+  modified routines:
+    src/base/cs_io.c
+    src/base/cs_preprocessor_data.c
+    src/base/cs_restart.c
+
+* 01/10/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix a numbering issue for time averages in GUI.
+  Add the choice for a different average number in case of restart.
+  modified routines:
+    gui/Base/QtPage.py
+    gui/Pages/OutputVolumicVariablesModel.py
+    gui/Pages/ProfilesModel.py
+    gui/Pages/StartRestartModel.py
+    gui/Pages/TimeAveragesForm.ui
+    gui/Pages/TimeAveragesModel.py
+    gui/Pages/TimeAveragesView.py
+    src/base/cs_gui.c
+
+* 01/10/2009 - David Monfort <david.monfort at edf.fr>
+  Update Copyrights, clean subroutine and function keywords.
+
+* 01/10/2009 - David Monfort <david.monfort at edf.fr>
+  Change remaining keywords in lowercase.
+  modified files:
+    doc/user/saturne1.tex
+
+* 30/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Change all Code_Saturne keywords in lowercase.
+  modified files:
+    doc/style/csindex.sty
+    doc/style/csmacros.sty
+    doc/user/saturne1.tex
+    doc/user/saturne2.tex
+
+* 30/09/2009 - David Monfort <david.monfort at edf.fr>
+  Split two tests that could end in a SIGSEGV when checking array bounds.
+  modified routine:
+    src/lagr/laghis.f90
+
+* 30/09/2009 - Matthieu Guillaud <matthieu-externe.guillaud at edf.fr>
+  Increase the size of work array to the maximum number of particles.
+  modified routines:
+    src/lagr/lagent.f90
+    src/lagr/lagnew.f90
+    src/lagr/lagnpr.f90
+    src/lagr/lagnwc.f90
+    users/lagr/uslain.f90
+
+* 30/09/2009 - Matthieu Guillaud <matthieu-externe.guillaud at edf.fr>
+  Add a missing memory-pointer initialization and a missing indirection.
+  modified routines:
+    src/lagr/lagout.f90
+    src/lagr/memla2.f90
+
+* 30/09/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Read the checkpoint frequency parameter in the XML file.
+  modified routines:
+    gui/Pages/StartRestartAdvancedDialogForm.ui
+    include/base/cs_gui.h
+    src/base/cs_gui.c
+    src/base/iniusi.f90
+
+* 30/09/2009 - Maya Milliez <maya.milliez at edf.fr>
+  Disable humid atmosphere modelling and enable steady/unsteady choice for
+  specific physics in GUI (coherent with input verification as well).
+  modified routine:
+    gui/Pages/AnalysisFeaturesView.py
+    
+
+* 30/09/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Correctly handle the blending factor with SOLU convective scheme in GUI.
+  modified routine:
+    gui/Pages/NumericalParamEquationModel.py
+
+* 30/09/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix a crash when specifying an inlet with oxydant and coal through the GUI.
+  modified routine:
+    src/base/cs_gui_boundary_conditions.c
+
+* 29/09/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Add a box for the automatic/prescribed choice of CS_TMP_PREFIX.
+  modified routines:
+    gui/Pages/BatchRunningAdvancedOptionsDialogForm.ui
+    gui/Pages/BatchRunningView.py
+
+* 29/09/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix a problem related to monitoring points numbering (when the number
+  of probes is greater than 10).
+  modified routines:
+    gui/Pages/OutputControlModel.py
+    gui/Pages/OutputControlView.py
+    src/base/cs_gui.c
+
+* 29/09/2009 - David Monfort <david.monfort at edf.fr>
+  Fix a wrong indirection for temperature/enthalpy conversion
+  in case of coupling with SYRTHES or the 1D-wall thermal module.
+  modified routines:
+    src/base/cou1di.f90
+    src/base/coupbi.f90
+
+* 29/09/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Fix an issue for scalar profiles (label not found in XML files).
+  modified routine:
+    src/base/cs_gui.c
+
+* 29/09/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Improve the behaviour of the profiles management in GUI (add a title
+  box and automatically set the extension to .dat).
+  modified routines:
+    gui/Pages/BatchRunningModel.py
+    gui/Pages/ProfilesForm.ui
+    gui/Pages/ProfilesModel.py
+    gui/Pages/ProfilesView.py
+    src/base/cs_gui.c
+
+* 29/09/2009 - Mehdi Ouraou <mehdi.ouraou at edf.fr>
+  Fix an issue with restart calculations in pulverized coal.
+  Improve the initialization of boundary conditions for some variables.
+  modified routines:
+    src/base/ecrava.f90
+    src/base/lecamo.f90
+    src/cplv/cpptcl.f90
+
+* 28/09/2009 - Marc Sakiz <marc.sakiz at edf.fr>
+  Correctly handle non-uniform/variable time-step post-processing.
+  modified routine:
+    src/base/modini.f90
+    src/base/memtri.f90
+    src/base/varpos.f90
+
+* 28/09/2009 - Alexandre Douce <alexandre.douce at edf.fr>
+  Make the copy of JANAF depend on the presence of a thermochemistry file.
+  modified scripts:
+    bin/runcase.in
+    bin/runcase.py.in
+
+* 28/09/2009 - Marc Sakiz <marc.sakiz at edf.fr>
+  Abort calculation if SST model is used in conjonction with Lagrangian
+  two-way coupling modelling.
+  modified routine:
+    src/base/verini.f90
+
+* 24/09/2009 - David Monfort <david.monfort at edf.fr>
+  Fix an issue when averaging variables with the steady algorithm.
+  modified routine:
+    src/base/varpos.f90
+
+* 24/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+               David Monfort <david.monfort at edf.fr>
+  Update related to French translation.
+  modified routines:
+    src/ctwr/cs_ctwr.c
+    src/base/cs_matrix.c
+    src/base/cs_mesh.c
+  modified file:
+    po/fr.po
+
+* 24/09/2009 - Marc Sakiz <marc.sakiz at edf.fr>
+  Improve restart files writing information in the listing.
+  modified routines:
+    src/base/caltri.f90
+    src/base/ecrava.f90
+
+* 23/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+               David Monfort <david.monfort at edf.fr>
+  Merge two tests for a more clearer code.
+  modified routine:
+    src/base/cs_restart.c
+
+* 23/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Correct error message.
+  modified routine:
+    src/base/cs_restart.c
+
+* 22/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Add more thorough information on load balancing (mesh-related information).
+  modified routine:
+    src/base/cs_mesh.c
+
+* 22/09/2009 - David Monfort <david.monfort at edf.fr>
+  Avoid a warning on a potential truncature of a header related to particles
+  tracking restart file (no impact on current code as variable names are
+  shorter than the new maximum length).
+  modified routine:
+    include/lagr/lagran.h
+
+* 22/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Add warning and error messages when reading restart files.
+  modified routine:
+    src/base/cs_restart.c
+
+* 22/09/2009 - David Monfort <david.monfort at edf.fr>
+  Fix a (very) long-standing bug related to the extrapolation of some physical
+  variables (specific heat and laminar viscosity of scalars). Fortunately,
+  the defaut value for the theta-scheme has been first order since the
+  the beginning (even with a second order scheme in time).
+  modified routine:
+    src/base/schtmp.f90
+
+* 22/09/2009 - David Monfort <david.monfort at edf.fr>
+  Add a residue calculation to avoid uninitialized value (Bi-CGStab).
+  modified routine:
+    src/base/cs_sles.c
+
+* 22/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  English translation for variables and boundary conditions output.
+  modified routines:
+    src/base/inivar.f90
+    src/base/typecl.f90
+
+* 22/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Always use the IBM compiler optimized form for the dot product.
+  modified routine:
+    src/base/cs_sles.c
+
+* 22/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Merge two MPI_Bcast into a single one for optimization.
+  modified routine:
+    src/base/cs_parall.c
+
+* 22/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Force the preconditioner to be diagonal on coarse levels for the
+  multigrid algorithm (otherwise the algorithm fails because the
+  coarse matrices structure is not complete).
+  modified routine:
+    src/base/cs_mutigrid.c
+
+* 22/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Add an optimized matrix.vector product in CSR format based on MKL.
+  modified routine:
+    src/base/cs_matrix.c
+
+* 22/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+               David Monfort <david.monfort at edf.fr>
+  Fix a wrong number of inflowing outlet in parallel runs.
+  modified routine:
+    src/base/condli.f90
+
+* 22/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Add a flush statement test (Fortran 2003) in autoconf pass.
+  modified scripts:
+    config/cs_fortran.m4
+    configure.ac
+  modified routine:
+    src/base/csflsh.f90
+
+* 22/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Add an optional argument for the partitioner.
+  modified script:
+    bin/cs_case_domain.py
+
+* 18/09/2009 - David Monfort <david.monfort at edf.fr>
+  Add different options to the case creation commmand.
+  modified scripts:
+    bin/cs_create.py
+    extras/bash_completion/code_saturne
+
+* 16/09/2009 - David Monfort <david.monfort at edf.fr>
+  Remove redundant information on boundary face conditions
+  and elements selectionn based on a given criterion.
+  modified routines:
+    users/atmo/usatcl.f90
+    users/atmo/usativ.f90
+    users/base/usalcl.f90
+    users/base/usclim.f90
+    users/base/usiniv.f90
+    users/base/uskpdc.f90
+    users/base/usphyv.f90
+    users/base/usproj.f90
+    users/base/uspt1d.f90
+    users/base/ussatc.f90
+    users/base/usstru.f90
+    users/base/ustske.f90
+    users/base/ustskw.f90
+    users/base/ustsma.f90
+    users/base/ustsns.f90
+    users/base/ustsri.f90
+    users/base/ustssc.f90
+    users/base/ustsv2.f90
+    users/base/usvima.f90
+    users/base/usvort.f90
+    users/cfbl/uscfcl.f90
+    users/cfbl/uscfpv.f90
+    users/cfbl/uscfxi.f90
+    users/cogz/usd3pc.f90
+    users/cogz/usd3pi.f90
+    users/cogz/usebuc.f90
+    users/cogz/usebui.f90
+    users/cogz/uslwcc.f90
+    users/cogz/uslwci.f90
+    users/cplv/uscpcl.f90
+    users/cplv/uscpiv.f90
+    users/cplv/uscplc.f90
+    users/ctwr/usctcl.f90
+    users/ctwr/usctiv.f90
+    users/elec/uselcl.f90
+    users/elec/useliv.f90
+    users/elec/uselph.f90
+    users/elec/usetcl.f90
+    users/fuel/usfucl.f90
+    users/fuel/usfuiv.f90
+    users/lagr/uslag2.f90
+    users/rayt/usray2.f90
+
+* 16/09/2009 - David Monfort <david.monfort at edf.fr>
+  Improve the bash completion script.
+  modified script:
+    extras/bash_completion/code_saturne
+
+* 15/09/2009 - David Monfort <david.monfort at edf.fr>
+  Make use of the cs_exec_environment module in cs_plot_probes.
+  modified script:
+    bin/cs_plot_probes.py
+
+* 15/09/2009 - David Monfort <david.monfort at edf.fr>
+  Remove unused MPE code (for MPI instrumentation).
+  modified routines:
+    include/base/cs_base.h
+    src/base/cs_base.c
+
+* 15/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Fix the precision of the bi-CgStab linear solver (revert to
+  the old behaviour of version 1.2 as it improves the solver
+  converges).
+  modified routine:
+    src/base/cs_sles.c
+
+* 15/09/2009 - David Monfort <david.monfort at edf.fr>
+  Update the COMPATIBILITY file
+  modified file:
+    COMPATIBILITY
+
+* 15/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Minor modifications related to C89 compilation, code cleaning and
+  compilation warnings.
+  modified routines:
+    include/base/cs_base.h
+    include/base/cs_preprocessor_data.h
+    include/base/cs_proxy_comm.h
+    include/base/cs_sles.h
+    libsyrcs/syr_comm.c
+    libsyrcs/syr_cs.c
+    src/apps/cs_solver.c
+    src/base/cs_ast_coupling.c
+    src/base/cs_base.c
+    src/base/cs_benchmark.c
+    src/base/cs_coupling.c
+    src/base/cs_ext_neighborhood.c
+    src/base/cs_gui_boundary_conditions.c
+    src/base/cs_gui_mobile_mesh.c
+    src/base/cs_gui_particles.c
+    src/base/cs_gui_radiative_transfer.c
+    src/base/cs_io.c
+    src/base/cs_matrix.c
+    src/base/cs_mesh.c
+    src/base/cs_mesh_halo.c
+    src/base/cs_post.c
+    src/base/cs_preprocessor_data.c
+    src/base/cs_restart.c
+    src/base/cs_sles.c
+    src/base/cs_tpar1d.c
+    src/base/initi1.f90
+    src/base/inivar.f90
+    src/base/typecl.f90
+    src/ctwr/cs_ctwr_air_props.c
+    src/ctwr/cs_ctwr.c
+    src/ctwr/cs_ctwr_mesh.c
+    src/mati/mtimpi.f90
+    users/base/usclim.f90
+    users/base/usini1.f90
+
+* 15/09/2009 - David Monfort <david.monfort at edf.fr>
+  Improve the bash completion script so that it removes redundant
+  or mutually exclusive options.
+  modified script:
+    extras/bash_completion/code_saturne
+
+* 14/09/2009 - David Monfort <david.monfort at edf.fr>
+  Move from getopt to optparse module for command line parsing.
+  removed routine:
+    gui/Base/CommandLine.py
+  modified routines:
+    gui/Base/Makefile.am
+    gui/cs_gui.py
+
+* 14/09/2009 - David Monfort <david.monfort at edf.fr>
+  Add a template for the developper documentation.
+  added files:
+    doc/developper
+    doc/developper/developper.tex
+    doc/developper/graphics
+    doc/developper/graphics/Makefile.am
+    doc/developper/input
+    doc/developper/Makefile.am
+  modified scripts:
+    configure.ac
+    doc/Makefile.am
+
+* 14/09/2009 - Marc Sakiz <marc.sakiz at edf.fr>
+  Add an option to xmgrace for the window size.
+  modified script:
+    bin/cs_plot_probes.py
+
+* 14/09/2009 - David Monfort <david.monfort at edf.fr>
+  Make use of the cs_exec_environment instead of subprocess module.
+  modified script:
+    bin/cs_check_mesh.py
+
+* 14/09/2009 - David Monfort <david.monfort at edf.fr>
+  Remove "have" function as it may not be found.
+  modified script:
+    extras/bash_completion/code_saturne
+
+* 14/09/2009 - David Monfort <david.monfort at edf.fr>
+  Add a bash completion script for cs and cs_solver.
+  added script:
+    extras/bash_completion/code_saturne
+  modified script:
+    Makefile.am
+
+* 13/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Adapt the code that waits for a MPI_Abort in case of errors. There
+  should not be now any spurious error file.
+  modified routine:
+    src/base/cs_base.c
+
+* 13/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Add a Fortran wrapper for MPI_Barrier (mainly for debugging purpose).
+  modified routines:
+    include/base/cs_parall.h
+    src/base/cs_parall.h
+
+* 13/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  The space-filling-curve algorithm for domain splitting is activated
+  by default. A Fortran subroutine is available to change this choice.
+  modified routines:
+    include/base/cs_preprocessor_data.h
+    src/base/cs_preprocessor_data.c
+
+* 13/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Add a mpi_io option to the command line so that one can use FVM
+  compiled with MPI/IO support and decide at runtime which type of I/O
+  to use.
+  modified routines:
+    include/base/cs_io.h
+    include/base/cs_opts.h
+    src/apps/cs_solver.c
+    src/base/cs_io.c
+    src/base/cs_opts.c
+    src/base/cs_preprocessor_data.c
+
+* 11/09/2009 - David Monfort <david.monfort at edf.fr>
+  Change FVM and BFT CPPFLAGS order so that one can find FVM headers,
+  before BFT ones (and same trick for MEI).
+  modified scripts:
+    src/apps/Makefile.am
+    src/base/Makefile.am
+    src/ctwr/Makefile.am
+    src/lagr/Makefile.am
+
+* 11/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Add a Fortran m4 file for module detection and further tests (e.g.
+  flush subroutine detection).
+  added script:
+    config/cs_fortran.m4
+  modified script:
+    Makefile.am
+
+* 11/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Merge the preprocessor user guide into Code_Saturne user guide.
+  added files:
+    doc/user/graphics/join_tolerance.fig
+    doc/user/graphics/join_periodic.fig
+  modified files:
+    doc/style/csmacros.sty
+    doc/user/graphics/Makefile.am
+    doc/user/saturne1.tex
+
+* 11/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+               David Monfort <david.monfort at edf.fr>
+  Add a new Python runcase script with more code coupling capabilities
+  and more aware of MPI and batch environments.
+  Add an option to the create command to use this script and relax the
+  constraint on the upppercase name of the study.
+  Some other modifications relative to scripts.
+  added scripts:
+    bin/cs_case_domain.py
+    bin/cs_case.py
+    bin/cs_exec_environment.py
+    bin/runcase.py.in
+  removed script:
+    bin/runcase_coupling.in
+  modified scripts:
+    bin/cs_compile.py
+    bin/cs_create.py
+    configure.ac
+    Makefile.am
+
+* 11/09/2009 - David Monfort <david.monfort at edf.fr>
+  Disable by default the multigrid algorithm for the potential vector
+  in MHD as it does not seem to work correctly.
+  modified routine:
+    src/elec/elini1.f90
+
+* 10/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+               David Monfort <david.monfort at edf.fr>
+  Modifications to how the config info are handled to avoid potential
+  issues (split configuration info into build/install info).
+  added scripts:
+    bin/cs_config_build.py.in
+  modified scripts:
+    bin/cs_compile.py
+    bin/cs_config.py.in
+    bin/cs.in
+    configure.ac
+    Makefile.am
+
+* 10/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Updating Itanium compiler options for hot optimizations.
+  modified scripts:
+    config/cs_auto_flags.sh
+
+* 10/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Minor adaptations in the joining algorithm code, relative to
+  porting to MPI1 and code cleaning.
+  modified routine:
+    include/base/cs_join_util.h
+    src/base/cs_join.c
+    src/base/cs_join_intersect.c
+    src/base/cs_join_merge.c
+    src/base/cs_join_mesh.c
+    src/base/cs_join_split.c
+    src/base/cs_join_update.c
+    src/base/cs_join_util.c
+
+* 09/09/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+  Fix an issue in the mesh cleaning stage of the joining algorithm.
+  modified routine:
+    src/base/cs_join_mesh.c
+
+* 09/09/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+  Fix a memory leak in case of conforming joining.
+  modified routine:
+    src/base/cs_join.c
+
+* 09/09/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+  Fix a bug in "single element" building.
+  modified routine:
+    src/base/cs_join_util.c
+
+* 09/09/2009 - J�r�me Bonelle <jerome.bonelle at edf.fr>
+  Fix a blocking problem when compiling without MPI support.
+  modified routine:
+    src/base/cs_join_util.c
+
+* 03/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Build improvement in autotools (compiler flags, FVM detection).
+  modified scripts:
+    bin/cs_config.py.in
+    bin/runcase_coupling.in
+    bin/runcase.in
+    config/cs_auto_flags.sh
+    config/cs_fvm.m4
+    config/cs_mpi.m4
+    config/cs_syrthes.m4
+
+* 03/09/2009 - David Monfort <david.monfort at edf.fr>
+  Update the gui version number, accordingly with the cs_config
+  information.
+  modified scripts:
+    bin/cs_config.py.in
+    bin/cs_info.py
+    gui/cs_gui.py
+    gui/Makefile.am
+    gui/setup.py
+  modified routines:
+    gui/Base/Common.py
+    gui/Base/MainView.py
+    gui/Pages/BatchRunningModel.py
+  removed file:
+    gui/VERSION
+
+* 03/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Admin scripts improvement.
+  modified scripts:
+    sbin/backup
+    sbin/rmb
+
+* 03/09/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+               David Monfort <david.monfort at edf.fr>
+  Fix a potential issue when replacing "@strings@" with autoconf,
+  it is preferred to use Makefile for this purpose. Also, fix the
+  installation path for MEI (mimicking automake process).
+  modified scripts:
+    bin/cs.in
+    config/cs_mei.m4
+    configure.ac
+    Makefile.am
+
+* 02/09/2009 - David Monfort <david.monfort at edf.fr>
+  Fix a wrong indirection for variables name array (with multigrid
+  algorithm for purely diffusive scalars).
+  modified routine:
+    include/base/codits.h
+
+* 02/09/2009 - David Monfort <david.monfort at edf.fr>
+  Fix two blocks of commons whose names were identical.
+  modified routine:
+    include/base/mltgrd.h
+
+* 02/09/2009 - David Monfort <david.monfort at edf.fr>
+  Fix a missing test on electric arc modelling that lead in the use
+  of an undefined pointer (on imaginary potential).
+  modified routines:
+    src/elec/elflux.f90
+
+* 02/09/2009 - Clarisse Delalondre <clarisse.delalondre at edf.fr>
+  Add a new common so that "elcou" variable can be used ni several
+  routines (see uselrc.f90 for the meaning). Change some incorrect
+  comments.
+  modified routines:
+    include/elec/elincl.h
+    users/elec/uselen.f90
+    users/elec/uselrc.f90
+
+* 31/08/2009 - Boris Arcen <boris-externe.arcen at edf.fr>
+  Fix EnSight format output for Lagrangian post-processing.
+  Wildcard "stars" symbols were changed in "=" signs by the scripts
+  that convert subroutines from fixed to free Fortran form.
+  modified routine:
+    src/lagr/enswaf.f90
+
+* 31/08/2009 - Mickael Hassanaly <mickael.hassanaly at edf.fr>
+  Move the second call to varpos just after the first pass in usray1,
+  so that the code is aware of the activation of the radiative transfer
+  module while reading thermochemistry files.
+  modified routine:
+    src/base/iniusi.f90
+
+* 28/08/2009 - David Monfort <david.monfort at edf.fr>
+  Fix JANAF file location in user directory. It is now searched in
+  installation directory. Do not install it anymore in user data dir.
+  modified scripts:
+    bin/cs_create.py
+    bin/runcase.in
+
+* 28/08/2009 - Yvan Fournier <yvan.fournier at edf.fr>
+  Fix a bug when raising false floating-point exceptions on Itanium
+  systems due to speculative tests in optimized builds.
+  modified routine:
+    src/apps/cs_solver.c
+
+* 28/08/2009 - David Monfort <david.monfort at edf.fr>
+  Fix a missing call of usray1 in initialization part.
+  modified routine:
+    src/base/iniusi.f90
+
+* 27/08/2009 - Mickael Hassanaly <mickael.hassanaly at edf.fr>
+  Fix a wrong indirection to access radiative fluxes in cell
+  properties array.
+  modified routine:
+    src/base/condli.f90
+
 * 29/07/2009 - Yvan Fournier <yvan.fournier at edf.fr>
   Fix BLAS ESSL link on BlueGene systems.
   modified scripts:
diff --git a/Makefile.am b/Makefile.am
index 4a1d2a1..799eefa 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -50,10 +50,13 @@ sbin/rmb \
 $(ac_aux_dir)/cs_auto_flags.sh \
 $(ac_aux_dir)/cs_bft.m4 \
 $(ac_aux_dir)/cs_blas.m4 \
+$(ac_aux_dir)/cs_config_info.m4 \
+$(ac_aux_dir)/cs_fortran.m4 \
 $(ac_aux_dir)/cs_fvm.m4 \
 $(ac_aux_dir)/cs_libxml2.m4 \
+$(ac_aux_dir)/cs_mei.m4 \
 $(ac_aux_dir)/cs_mpi.m4 \
-$(ac_aux_dir)/cs_tools.m4
+$(ac_aux_dir)/cs_syrthes.m4
 
 # One adds two whole sub-directories and get rid of the .svn
 # directories with a dist-hook. The reason for this trick is that
@@ -66,19 +69,68 @@ DISTCLEANFILES = cs_config.h
 
 ACLOCAL_AMFLAGS = -I config
 
+# Replace paths in Python scripts.
+# The following command and targets are adapted from an example in
+# autoconf. The autoconf documentation recommends changing scripts
+# through Makefile targets rather than through configure, and
+# cites its own automate and autoheader as examples.
+
+edit = sed \
+	-e 's|@prefix[@]|$(prefix)|g' \
+	-e 's|@exec_prefix[@]|$(exec_prefix)|g' \
+	-e 's|@bindir[@]|$(bindir)|g' \
+	-e 's|@includedir[@]|$(includedir)|g' \
+	-e 's|@libdir[@]|$(libdir)|g' \
+	-e 's|@datarootdir[@]|$(datarootdir)|g' \
+	-e 's|@datadir[@]|$(datadir)|g' \
+	-e 's|@pkgdatadir[@]|$(pkgdatadir)|g' \
+	-e 's|@docdir[@]|$(docdir)|g' \
+	-e 's|@pdfdir[@]|$(pdfdir)|g' \
+	-e 's|@cs_python[@]|$(cs_python)|g' \
+	-e 's|@pythondir[@]|$(pythondir)|g' \
+	-e 's|@pkgpythondir[@]|$(pkgpythondir)|g' \
+	-e 's|@mei_prefix[@]|$(mei_prefix)|g' \
+	-e 's|@ecs_bindir[@]|$(ecs_bindir)|g' \
+	-e 's|@syrthes_prefix[@]|$(syrthes_prefix)|g' \
+	-e 's|@mpi_type[@]|$(mpi_type)|g' \
+	-e 's|@mpi_bindir[@]|$(mpi_bindir)|g' \
+	-e 's|@mpi_libdir[@]|$(mpi_libdir)|g' \
+	-e 's|@PYTHON_VERSION[@]|$(PYTHON_VERSION)|g' \
+	-e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \
+	-e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g'
+
+edit_scripts = bin/code_saturne bin/cs_config.py bin/runcase.py 
+
+$(edit_scripts): Makefile
+	rm -f $@ $@.tmp
+	srcdir=''; \
+	test -f ./$@.in || srcdir=$(srcdir)/; \
+	$(edit) $${srcdir}$@.in >$@.tmp
+	mv $@.tmp $@
+
+bin/code_saturne: $(srcdir)/bin/code_saturne.in 
+bin/cs_config.py: bin/cs_config.py.in 
+bin/runcase.py: $(srcdir)/bin/runcase.py.in 
+
 # Install binary scripts
 
 nodist_bin_SCRIPTS = \
-bin/cs
+bin/code_saturne
 
 # Install Python library
 
+nodist_pkgpython_PYTHON = \
+bin/cs_config.py \
+bin/cs_config_build.py
+
 dist_pkgpython_PYTHON = \
+bin/cs_case.py \
+bin/cs_case_domain.py \
 bin/cs_check_consistency.py \
 bin/cs_check_mesh.py \
 bin/cs_compile.py \
-bin/cs_config.py \
 bin/cs_create.py \
+bin/cs_exec_environment.py \
 bin/cs_info.py \
 bin/cs_plot_probes.py
 
@@ -86,7 +138,7 @@ bin/cs_plot_probes.py
 
 nodist_pkgdata_DATA = \
 bin/runcase \
-bin/runcase_coupling \
+bin/runcase.py \
 bin/SaturneGUI
 
 dist_pkgdata_DATA = \
@@ -111,19 +163,21 @@ data/thch/dp_ELE \
 data/thch/dp_FCP \
 data/thch/dp_FUE \
 data/thch/dp_transfo \
-data/thch/JANAF
+data/thch/JANAF \
+data/thch/meteo
 
 # Install man pages
 
 dist_man_MANS = \
-doc/manpages/cs_check_consistency.1 \
-doc/manpages/cs_check_mesh.1 \
-doc/manpages/cs_compile.1 \
-doc/manpages/cs_create.1 \
-doc/manpages/cs_info.1 \
-doc/manpages/cs_plot_probes.1 \
+doc/manpages/code_saturne.1 \
 doc/manpages/cs_solver.1
 
+# Install bash completion script
+
+bashcompletiondir = ${sysconfdir}/bash_completion.d
+bashcompletion_DATA = \
+extras/bash_completion/code_saturne
+
 # Finish user files installation
 # - tag with the package version number
 # - remove the test preventing from using a source file
diff --git a/Makefile.in b/Makefile.in
index 5c69ca6..6d7e857 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -40,8 +41,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -63,9 +65,8 @@ DIST_COMMON = README $(am__configure_deps) $(dist_man_MANS) \
 	$(dist_pkgpython_PYTHON) $(nobase_dist_pkgdata_DATA) \
 	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 	$(srcdir)/cs_config.h.in $(top_srcdir)/bin/SaturneGUI.in \
-	$(top_srcdir)/bin/cs.in $(top_srcdir)/bin/cs_config.py.in \
-	$(top_srcdir)/bin/runcase.in \
-	$(top_srcdir)/bin/runcase_coupling.in $(top_srcdir)/configure \
+	$(top_srcdir)/bin/cs_config_build.py.in \
+	$(top_srcdir)/bin/runcase.in $(top_srcdir)/configure \
 	$(top_srcdir)/doc/style/csvers.tex.in ABOUT-NLS AUTHORS \
 	COPYING ChangeLog INSTALL NEWS TODO config/config.guess \
 	config/config.rpath config/config.sub config/depcomp \
@@ -75,6 +76,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -91,14 +93,35 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = cs_config.h
-CONFIG_CLEAN_FILES = doc/style/csvers.tex bin/cs bin/cs_config.py \
-	bin/runcase bin/runcase_coupling bin/SaturneGUI
+CONFIG_CLEAN_FILES = doc/style/csvers.tex bin/cs_config_build.py \
+	bin/runcase bin/SaturneGUI
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(bindir)" \
-	"$(DESTDIR)$(pkgpythondir)" "$(DESTDIR)$(man1dir)" \
+	"$(DESTDIR)$(pkgpythondir)" "$(DESTDIR)$(pkgpythondir)" \
+	"$(DESTDIR)$(man1dir)" "$(DESTDIR)$(bashcompletiondir)" \
 	"$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" \
 	"$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(includedir)"
-dist_pkgdataSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-nodist_binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(dist_pkgdata_SCRIPTS) $(nodist_bin_SCRIPTS)
 SOURCES =
 DIST_SOURCES =
@@ -109,26 +132,18 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-dist_pkgpythonPYTHON_INSTALL = $(INSTALL_DATA)
 py_compile = $(top_srcdir)/config/py-compile
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(dist_man_MANS)
-dist_pkgdataDATA_INSTALL = $(INSTALL_DATA)
-nobase_dist_pkgdataDATA_INSTALL = $(install_sh_DATA)
-nodist_pkgdataDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(dist_pkgdata_DATA) $(nobase_dist_pkgdata_DATA) \
-	$(nodist_pkgdata_DATA)
-nodist_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+DATA = $(bashcompletion_DATA) $(dist_pkgdata_DATA) \
+	$(nobase_dist_pkgdata_DATA) $(nodist_pkgdata_DATA)
 HEADERS = $(nodist_include_HEADERS)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir dist dist-all distcheck
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = src libsyrcs po doc gui
@@ -136,9 +151,34 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
 am__remove_distdir = \
-  { test ! -d $(distdir) \
-    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr $(distdir); }; }
+  { test ! -d "$(distdir)" \
+    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr "$(distdir)"; }; }
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
 distuninstallcheck_listfiles = find . -type f -print
@@ -185,6 +225,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -221,11 +263,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -240,15 +280,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -293,7 +336,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -310,8 +354,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -357,25 +404,64 @@ $(ac_aux_dir)/py-compile
 EXTRA_DIST = COMPATIBILITY QUALITY_ASSURANCE sbin/backup \
 	sbin/bootstrap sbin/clean sbin/rmb \
 	$(ac_aux_dir)/cs_auto_flags.sh $(ac_aux_dir)/cs_bft.m4 \
-	$(ac_aux_dir)/cs_blas.m4 $(ac_aux_dir)/cs_fvm.m4 \
-	$(ac_aux_dir)/cs_libxml2.m4 $(ac_aux_dir)/cs_mpi.m4 \
-	$(ac_aux_dir)/cs_tools.m4 examples extras patches
+	$(ac_aux_dir)/cs_blas.m4 $(ac_aux_dir)/cs_config_info.m4 \
+	$(ac_aux_dir)/cs_fortran.m4 $(ac_aux_dir)/cs_fvm.m4 \
+	$(ac_aux_dir)/cs_libxml2.m4 $(ac_aux_dir)/cs_mei.m4 \
+	$(ac_aux_dir)/cs_mpi.m4 $(ac_aux_dir)/cs_syrthes.m4 examples \
+	extras patches
 nodist_include_HEADERS = cs_config.h
 DISTCLEANFILES = cs_config.h
 ACLOCAL_AMFLAGS = -I config
 
+# Replace paths in Python scripts.
+# The following command and targets are adapted from an example in
+# autoconf. The autoconf documentation recommends changing scripts
+# through Makefile targets rather than through configure, and
+# cites its own automate and autoheader as examples.
+edit = sed \
+	-e 's|@prefix[@]|$(prefix)|g' \
+	-e 's|@exec_prefix[@]|$(exec_prefix)|g' \
+	-e 's|@bindir[@]|$(bindir)|g' \
+	-e 's|@includedir[@]|$(includedir)|g' \
+	-e 's|@libdir[@]|$(libdir)|g' \
+	-e 's|@datarootdir[@]|$(datarootdir)|g' \
+	-e 's|@datadir[@]|$(datadir)|g' \
+	-e 's|@pkgdatadir[@]|$(pkgdatadir)|g' \
+	-e 's|@docdir[@]|$(docdir)|g' \
+	-e 's|@pdfdir[@]|$(pdfdir)|g' \
+	-e 's|@cs_python[@]|$(cs_python)|g' \
+	-e 's|@pythondir[@]|$(pythondir)|g' \
+	-e 's|@pkgpythondir[@]|$(pkgpythondir)|g' \
+	-e 's|@mei_prefix[@]|$(mei_prefix)|g' \
+	-e 's|@ecs_bindir[@]|$(ecs_bindir)|g' \
+	-e 's|@syrthes_prefix[@]|$(syrthes_prefix)|g' \
+	-e 's|@mpi_type[@]|$(mpi_type)|g' \
+	-e 's|@mpi_bindir[@]|$(mpi_bindir)|g' \
+	-e 's|@mpi_libdir[@]|$(mpi_libdir)|g' \
+	-e 's|@PYTHON_VERSION[@]|$(PYTHON_VERSION)|g' \
+	-e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \
+	-e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g'
+
+edit_scripts = bin/code_saturne bin/cs_config.py bin/runcase.py 
+
 # Install binary scripts
 nodist_bin_SCRIPTS = \
-bin/cs
+bin/code_saturne
 
 
 # Install Python library
+nodist_pkgpython_PYTHON = \
+bin/cs_config.py \
+bin/cs_config_build.py
+
 dist_pkgpython_PYTHON = \
+bin/cs_case.py \
+bin/cs_case_domain.py \
 bin/cs_check_consistency.py \
 bin/cs_check_mesh.py \
 bin/cs_compile.py \
-bin/cs_config.py \
 bin/cs_create.py \
+bin/cs_exec_environment.py \
 bin/cs_info.py \
 bin/cs_plot_probes.py
 
@@ -383,7 +469,7 @@ bin/cs_plot_probes.py
 # Install user scripts
 nodist_pkgdata_DATA = \
 bin/runcase \
-bin/runcase_coupling \
+bin/runcase.py \
 bin/SaturneGUI
 
 dist_pkgdata_DATA = \
@@ -408,19 +494,21 @@ data/thch/dp_ELE \
 data/thch/dp_FCP \
 data/thch/dp_FUE \
 data/thch/dp_transfo \
-data/thch/JANAF
+data/thch/JANAF \
+data/thch/meteo
 
 
 # Install man pages
 dist_man_MANS = \
-doc/manpages/cs_check_consistency.1 \
-doc/manpages/cs_check_mesh.1 \
-doc/manpages/cs_compile.1 \
-doc/manpages/cs_create.1 \
-doc/manpages/cs_info.1 \
-doc/manpages/cs_plot_probes.1 \
+doc/manpages/code_saturne.1 \
 doc/manpages/cs_solver.1
 
+
+# Install bash completion script
+bashcompletiondir = ${sysconfdir}/bash_completion.d
+bashcompletion_DATA = \
+extras/bash_completion/code_saturne
+
 all: cs_config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
@@ -431,15 +519,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
-	      cd $(srcdir) && $(AUTOMAKE) --gnu  \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
 		&& exit 0; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -455,9 +543,10 @@ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENC
 	$(SHELL) ./config.status --recheck
 
 $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(srcdir) && $(AUTOCONF)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
 
 cs_config.h: stamp-h1
 	@if test ! -f $@; then \
@@ -469,7 +558,7 @@ stamp-h1: $(srcdir)/cs_config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
 	cd $(top_builddir) && $(SHELL) ./config.status cs_config.h
 $(srcdir)/cs_config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
-	cd $(top_srcdir) && $(AUTOHEADER)
+	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
 	rm -f stamp-h1
 	touch $@
 
@@ -477,54 +566,80 @@ distclean-hdr:
 	-rm -f cs_config.h stamp-h1
 doc/style/csvers.tex: $(top_builddir)/config.status $(top_srcdir)/doc/style/csvers.tex.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
-bin/cs: $(top_builddir)/config.status $(top_srcdir)/bin/cs.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-bin/cs_config.py: $(top_builddir)/config.status $(top_srcdir)/bin/cs_config.py.in
+bin/cs_config_build.py: $(top_builddir)/config.status $(top_srcdir)/bin/cs_config_build.py.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 bin/runcase: $(top_builddir)/config.status $(top_srcdir)/bin/runcase.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
-bin/runcase_coupling: $(top_builddir)/config.status $(top_srcdir)/bin/runcase_coupling.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
 bin/SaturneGUI: $(top_builddir)/config.status $(top_srcdir)/bin/SaturneGUI.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)"
-	@list='$(dist_pkgdata_SCRIPTS)'; for p in $$list; do \
+	@list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(dist_pkgdataSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \
-	    $(dist_pkgdataSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-dist_pkgdataSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(dist_pkgdata_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
-	done
+	@list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files
 install-nodist_binSCRIPTS: $(nodist_bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
 	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(nodist_bin_SCRIPTS)'; for p in $$list; do \
+	@list='$(nodist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f $$d$$p; then \
-	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	    echo " $(nodist_binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	    $(nodist_binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
-	  else :; fi; \
-	done
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
 
 uninstall-nodist_binSCRIPTS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_bin_SCRIPTS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
+	@list='$(nodist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -533,19 +648,24 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 distclean-libtool:
-	-rm -f libtool
+	-rm -f libtool config.lt
 install-dist_pkgpythonPYTHON: $(dist_pkgpython_PYTHON)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgpythondir)" || $(MKDIR_P) "$(DESTDIR)$(pkgpythondir)"
-	@list='$(dist_pkgpython_PYTHON)'; dlist=''; for p in $$list; do\
+	@list='$(dist_pkgpython_PYTHON)'; dlist=; list2=; test -n "$(pkgpythondir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
 	  if test -f $$b$$p; then \
-	    f=$(am__strip_dir) \
+	    $(am__strip_dir) \
 	    dlist="$$dlist $$f"; \
-	    echo " $(dist_pkgpythonPYTHON_INSTALL) '$$b$$p' '$(DESTDIR)$(pkgpythondir)/$$f'"; \
-	    $(dist_pkgpythonPYTHON_INSTALL) "$$b$$p" "$(DESTDIR)$(pkgpythondir)/$$f"; \
+	    list2="$$list2 $$b$$p"; \
 	  else :; fi; \
 	done; \
+	for file in $$list2; do echo $$file; done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgpythondir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgpythondir)" || exit $$?; \
+	done || exit $$?; \
 	if test -n "$$dlist"; then \
 	  if test -z "$(DESTDIR)"; then \
 	    PYTHON=$(PYTHON) $(py_compile) --basedir "$(pkgpythondir)" $$dlist; \
@@ -556,127 +676,196 @@ install-dist_pkgpythonPYTHON: $(dist_pkgpython_PYTHON)
 
 uninstall-dist_pkgpythonPYTHON:
 	@$(NORMAL_UNINSTALL)
-	@list='$(dist_pkgpython_PYTHON)'; dlist=''; for p in $$list; do\
-	  f=$(am__strip_dir) \
-	  rm -f "$(DESTDIR)$(pkgpythondir)/$$f"; \
-	  rm -f "$(DESTDIR)$(pkgpythondir)/$${f}c"; \
-	  rm -f "$(DESTDIR)$(pkgpythondir)/$${f}o"; \
-	done
-install-man1: $(man1_MANS) $(man_MANS)
+	@list='$(dist_pkgpython_PYTHON)'; test -n "$(pkgpythondir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	filesc=`echo "$$files" | sed 's|$$|c|'`; \
+	fileso=`echo "$$files" | sed 's|$$|o|'`; \
+	echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$files || exit $$?; \
+	echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$filesc ")"; \
+	cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$filesc || exit $$?; \
+	echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$fileso ")"; \
+	cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$fileso
+install-nodist_pkgpythonPYTHON: $(nodist_pkgpython_PYTHON)
+	@$(NORMAL_INSTALL)
+	test -z "$(pkgpythondir)" || $(MKDIR_P) "$(DESTDIR)$(pkgpythondir)"
+	@list='$(nodist_pkgpython_PYTHON)'; dlist=; list2=; test -n "$(pkgpythondir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
+	  if test -f $$b$$p; then \
+	    $(am__strip_dir) \
+	    dlist="$$dlist $$f"; \
+	    list2="$$list2 $$b$$p"; \
+	  else :; fi; \
+	done; \
+	for file in $$list2; do echo $$file; done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgpythondir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgpythondir)" || exit $$?; \
+	done || exit $$?; \
+	if test -n "$$dlist"; then \
+	  if test -z "$(DESTDIR)"; then \
+	    PYTHON=$(PYTHON) $(py_compile) --basedir "$(pkgpythondir)" $$dlist; \
+	  else \
+	    PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(pkgpythondir)" $$dlist; \
+	  fi; \
+	else :; fi
+
+uninstall-nodist_pkgpythonPYTHON:
+	@$(NORMAL_UNINSTALL)
+	@list='$(nodist_pkgpython_PYTHON)'; test -n "$(pkgpythondir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	filesc=`echo "$$files" | sed 's|$$|c|'`; \
+	fileso=`echo "$$files" | sed 's|$$|o|'`; \
+	echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$files || exit $$?; \
+	echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$filesc ")"; \
+	cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$filesc || exit $$?; \
+	echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$fileso ")"; \
+	cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$fileso
+install-man1: $(dist_man_MANS)
 	@$(NORMAL_INSTALL)
 	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	{ for i in $$list; do echo "$$i"; done; \
+	l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+	  fi; \
 	done; \
-	for i in $$list; do \
-	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-	  else file=$$i; fi; \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+	done; }
+
 uninstall-man1:
 	@$(NORMAL_UNINSTALL)
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
-	done; \
-	for i in $$list; do \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	test -z "$$files" || { \
+	  echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+	  cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+install-bashcompletionDATA: $(bashcompletion_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(bashcompletiondir)" || $(MKDIR_P) "$(DESTDIR)$(bashcompletiondir)"
+	@list='$(bashcompletion_DATA)'; test -n "$(bashcompletiondir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(bashcompletiondir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(bashcompletiondir)" || exit $$?; \
 	done
+
+uninstall-bashcompletionDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bashcompletion_DATA)'; test -n "$(bashcompletiondir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bashcompletiondir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bashcompletiondir)" && rm -f $$files
 install-dist_pkgdataDATA: $(dist_pkgdata_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)"
-	@list='$(dist_pkgdata_DATA)'; for p in $$list; do \
+	@list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \
-	  $(dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \
 	done
 
 uninstall-dist_pkgdataDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(dist_pkgdata_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
-	done
+	@list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files
 install-nobase_dist_pkgdataDATA: $(nobase_dist_pkgdata_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)"
-	@$(am__vpath_adj_setup) \
-	list='$(nobase_dist_pkgdata_DATA)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  $(am__vpath_adj) \
-	  echo " $(nobase_dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \
-	  $(nobase_dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
+	@list='$(nobase_dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
+	$(am__nobase_list) | while read dir files; do \
+	  xfiles=; for file in $$files; do \
+	    if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+	    else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+	  test -z "$$xfiles" || { \
+	    test "x$$dir" = x. || { \
+	      echo "$(MKDIR_P) '$(DESTDIR)$(pkgdatadir)/$$dir'"; \
+	      $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)/$$dir"; }; \
+	    echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(pkgdatadir)/$$dir'"; \
+	    $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(pkgdatadir)/$$dir" || exit $$?; }; \
 	done
 
 uninstall-nobase_dist_pkgdataDATA:
 	@$(NORMAL_UNINSTALL)
-	@$(am__vpath_adj_setup) \
-	list='$(nobase_dist_pkgdata_DATA)'; for p in $$list; do \
-	  $(am__vpath_adj) \
-	  echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
-	done
+	@list='$(nobase_dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
+	$(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files
 install-nodist_pkgdataDATA: $(nodist_pkgdata_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)"
-	@list='$(nodist_pkgdata_DATA)'; for p in $$list; do \
+	@list='$(nodist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(nodist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \
-	  $(nodist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \
 	done
 
 uninstall-nodist_pkgdataDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_pkgdata_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
-	done
+	@list='$(nodist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files
 install-nodist_includeHEADERS: $(nodist_include_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(nodist_include_HEADERS)'; for p in $$list; do \
+	@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(nodist_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
-	  $(nodist_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
 	done
 
 uninstall-nodist_includeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_include_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(includedir)/$$f"; \
-	done
+	@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(includedir)" && rm -f $$files
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -685,7 +874,7 @@ uninstall-nodist_includeHEADERS:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -702,7 +891,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -710,7 +899,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -736,16 +925,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -753,14 +942,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES) cs_config.h.in $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -772,7 +961,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) cs_config.h.in $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS) cs_config.h.in $(LISP) $(TAGS_FILES)'; \
@@ -781,36 +970,54 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) cs_config.h.in $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES) cs_config.h.in $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS) cs_config.h.in $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
+	@list='$(MANS)'; if test -n "$$list"; then \
+	  list=`for p in $$list; do \
+	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+	  if test -n "$$list" && \
+	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+	    exit 1; \
+	  else :; fi; \
+	else :; fi
 	$(am__remove_distdir)
-	test -d $(distdir) || mkdir $(distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -826,29 +1033,44 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
 	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -856,11 +1078,13 @@ distdir: $(DISTFILES)
 	$(MAKE) $(AM_MAKEFLAGS) \
 	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
 	  dist-hook
-	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
 	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
 	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
 	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-	|| chmod -R a+r $(distdir)
+	|| chmod -R a+r "$(distdir)"
 dist-gzip: distdir
 	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
 	$(am__remove_distdir)
@@ -873,6 +1097,10 @@ dist-lzma: distdir
 	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
 	$(am__remove_distdir)
 
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+	$(am__remove_distdir)
+
 dist-tarZ: distdir
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
 	$(am__remove_distdir)
@@ -896,15 +1124,17 @@ dist dist-all: distdir
 distcheck: dist
 	case '$(DIST_ARCHIVES)' in \
 	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
 	*.tar.bz2*) \
-	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
 	*.tar.lzma*) \
-	  unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
 	*.tar.Z*) \
 	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
 	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
 	*.zip*) \
 	  unzip $(distdir).zip ;;\
 	esac
@@ -912,9 +1142,11 @@ distcheck: dist
 	mkdir $(distdir)/_build
 	mkdir $(distdir)/_inst
 	chmod a-w $(distdir)
+	test -d $(distdir)/_build || exit 0; \
 	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
 	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-	  && cd $(distdir)/_build \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build \
 	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
@@ -936,13 +1168,15 @@ distcheck: dist
 	  && rm -rf "$$dc_destdir" \
 	  && $(MAKE) $(AM_MAKEFLAGS) dist \
 	  && rm -rf $(DIST_ARCHIVES) \
-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
 	$(am__remove_distdir)
 	@(echo "$(distdir) archives ready for distribution: "; \
 	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
 	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-	@cd $(distuninstallcheck_dir) \
+	@$(am__cd) '$(distuninstallcheck_dir)' \
 	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
 	   || { echo "ERROR: files left after uninstall:" ; \
 	        if test -n "$(DESTDIR)"; then \
@@ -964,7 +1198,7 @@ check: check-recursive
 all-am: Makefile $(SCRIPTS) $(MANS) $(DATA) $(HEADERS) cs_config.h
 installdirs: installdirs-recursive
 installdirs-am:
-	for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgpythondir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(includedir)"; do \
+	for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgpythondir)" "$(DESTDIR)$(pkgpythondir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(bashcompletiondir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(includedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-recursive
@@ -987,6 +1221,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -1009,31 +1244,43 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
 
-install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS \
-	install-dist_pkgpythonPYTHON install-man \
-	install-nobase_dist_pkgdataDATA install-nodist_includeHEADERS \
-	install-nodist_pkgdataDATA
+install-data-am: install-bashcompletionDATA install-dist_pkgdataDATA \
+	install-dist_pkgdataSCRIPTS install-dist_pkgpythonPYTHON \
+	install-man install-nobase_dist_pkgdataDATA \
+	install-nodist_includeHEADERS install-nodist_pkgdataDATA \
+	install-nodist_pkgpythonPYTHON
 	@$(NORMAL_INSTALL)
 	$(MAKE) $(AM_MAKEFLAGS) install-data-hook
-
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am: install-nodist_binSCRIPTS
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man: install-man1
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -1054,41 +1301,55 @@ ps: ps-recursive
 
 ps-am:
 
-uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS \
-	uninstall-dist_pkgpythonPYTHON uninstall-man \
-	uninstall-nobase_dist_pkgdataDATA uninstall-nodist_binSCRIPTS \
-	uninstall-nodist_includeHEADERS uninstall-nodist_pkgdataDATA
+uninstall-am: uninstall-bashcompletionDATA uninstall-dist_pkgdataDATA \
+	uninstall-dist_pkgdataSCRIPTS uninstall-dist_pkgpythonPYTHON \
+	uninstall-man uninstall-nobase_dist_pkgdataDATA \
+	uninstall-nodist_binSCRIPTS uninstall-nodist_includeHEADERS \
+	uninstall-nodist_pkgdataDATA uninstall-nodist_pkgpythonPYTHON
 
 uninstall-man: uninstall-man1
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-data-am install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+	ctags-recursive install-am install-data-am install-strip \
+	tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am am--refresh check check-am clean clean-generic \
 	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
-	dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-zip \
-	distcheck distclean distclean-generic distclean-hdr \
+	dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-xz \
+	dist-zip distcheck distclean distclean-generic distclean-hdr \
 	distclean-libtool distclean-tags distcleancheck distdir \
 	distuninstallcheck dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-data-hook install-dist_pkgdataDATA \
+	install install-am install-bashcompletionDATA install-data \
+	install-data-am install-data-hook install-dist_pkgdataDATA \
 	install-dist_pkgdataSCRIPTS install-dist_pkgpythonPYTHON \
 	install-dvi install-dvi-am install-exec install-exec-am \
 	install-html install-html-am install-info install-info-am \
 	install-man install-man1 install-nobase_dist_pkgdataDATA \
 	install-nodist_binSCRIPTS install-nodist_includeHEADERS \
-	install-nodist_pkgdataDATA install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am uninstall-dist_pkgdataDATA \
+	install-nodist_pkgdataDATA install-nodist_pkgpythonPYTHON \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-recursive uninstall uninstall-am \
+	uninstall-bashcompletionDATA uninstall-dist_pkgdataDATA \
 	uninstall-dist_pkgdataSCRIPTS uninstall-dist_pkgpythonPYTHON \
 	uninstall-man uninstall-man1 uninstall-nobase_dist_pkgdataDATA \
 	uninstall-nodist_binSCRIPTS uninstall-nodist_includeHEADERS \
-	uninstall-nodist_pkgdataDATA
+	uninstall-nodist_pkgdataDATA uninstall-nodist_pkgpythonPYTHON
+
 
+$(edit_scripts): Makefile
+	rm -f $@ $@.tmp
+	srcdir=''; \
+	test -f ./$@.in || srcdir=$(srcdir)/; \
+	$(edit) $${srcdir}$@.in >$@.tmp
+	mv $@.tmp $@
+
+bin/code_saturne: $(srcdir)/bin/code_saturne.in 
+bin/cs_config.py: bin/cs_config.py.in 
+bin/runcase.py: $(srcdir)/bin/runcase.py.in 
 
 # Finish user files installation
 # - tag with the package version number
@@ -1113,6 +1374,7 @@ dist-hook:
 	-rm -rf `find $(distdir)/examples  -name .svn`
 	-rm -rf `find $(distdir)/extras  -name .svn`
 	-rm -rf `find $(distdir)/patches -name .svn`
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/aclocal.m4 b/aclocal.m4
index 3b11ae5..863ea98 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -13,8 +13,8 @@
 
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(AC_AUTOCONF_VERSION, [2.63],,
-[m4_warning([this file was generated for autoconf 2.63.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
+[m4_warning([this file was generated for autoconf 2.65.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically `autoreconf'.])])
@@ -7911,15 +7911,15 @@ m4_define([lt_dict_filter],
 
 # Generated from ltversion.in.
 
-# serial 3012 ltversion.m4
+# serial 3017 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.2.6])
-m4_define([LT_PACKAGE_REVISION], [1.3012])
+m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+m4_define([LT_PACKAGE_REVISION], [1.3017])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6'
-macro_revision='1.3012'
+[macro_version='2.2.6b'
+macro_revision='1.3017'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
@@ -8017,7 +8017,7 @@ m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
 m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
 m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -8029,10 +8029,10 @@ m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.10'
+[am__api_version='1.11'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.10.1], [],
+m4_if([$1], [1.11.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -8046,12 +8046,12 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # AM_SET_CURRENT_AUTOMAKE_VERSION
 # -------------------------------
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.10.1])dnl
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
@@ -8108,14 +8108,14 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 8
+# serial 9
 
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
@@ -8128,6 +8128,7 @@ AC_SUBST([$1_TRUE])dnl
 AC_SUBST([$1_FALSE])dnl
 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
 _AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
 if $2; then
   $1_TRUE=
   $1_FALSE='#'
@@ -8141,14 +8142,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 9
+# serial 10
 
 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
@@ -8205,6 +8206,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
   fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -8222,7 +8233,17 @@ AC_CACHE_CHECK([dependency style of $depcc],
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
       # after this tag, mechanisms are not by side-effect, so they'll
       # only be used when explicitly requested
@@ -8232,19 +8253,23 @@ AC_CACHE_CHECK([dependency style of $depcc],
 	break
       fi
       ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
     if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
        grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -8301,57 +8326,68 @@ _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-#serial 3
+#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[for mf in $CONFIG_FILES; do
-  # Strip MF so we end up with the name of the file.
-  mf=`echo "$mf" | sed -e 's/:.*$//'`
-  # Check whether this is an Automake generated Makefile or not.
-  # We used to match only the files named `Makefile.in', but
-  # some people rename them; so instead we look at the file content.
-  # Grep'ing the first line is not enough: some people post-process
-  # each Makefile.in and add a new line on top of each file to say so.
-  # Grep'ing the whole file is not good either: AIX grep has a line
-  # limit of 2048, but all sed's we know have understand at least 4000.
-  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-    dirpart=`AS_DIRNAME("$mf")`
-  else
-    continue
-  fi
-  # Extract the definition of DEPDIR, am__include, and am__quote
-  # from the Makefile without running `make'.
-  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-  test -z "$DEPDIR" && continue
-  am__include=`sed -n 's/^am__include = //p' < "$mf"`
-  test -z "am__include" && continue
-  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-  # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n 's/^U = //p' < "$mf"`
-  # Find all dependency output files, they are included files with
-  # $(DEPDIR) in their names.  We invoke sed twice because it is the
-  # simplest approach to changing $(DEPDIR) to its actual value in the
-  # expansion.
-  for file in `sed -n "
-    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-    # Make sure the directory exists.
-    test -f "$dirpart/$file" && continue
-    fdir=`AS_DIRNAME(["$file"])`
-    AS_MKDIR_P([$dirpart/$fdir])
-    # echo "creating $dirpart/$file"
-    echo '# dummy' > "$dirpart/$file"
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
   done
-done
+}
 ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
 
 
@@ -8371,13 +8407,13 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # Do all the work for Automake.                             -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008 Free Software Foundation, Inc.
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 13
+# serial 16
 
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
@@ -8394,7 +8430,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.60])dnl
+[AC_PREREQ([2.62])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -8445,8 +8481,8 @@ AM_MISSING_PROG(AUTOCONF, autoconf)
 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
 AM_MISSING_PROG(AUTOHEADER, autoheader)
 AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
 AC_REQUIRE([AM_PROG_MKDIR_P])dnl
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
@@ -8454,24 +8490,37 @@ AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
 _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-	      		     [_AM_PROG_TAR([v7])])])
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
-                  [_AM_DEPENDENCIES(CC)],
-                  [define([AC_PROG_CC],
-                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+		  [_AM_DEPENDENCIES(CC)],
+		  [define([AC_PROG_CC],
+			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                  [_AM_DEPENDENCIES(CXX)],
-                  [define([AC_PROG_CXX],
-                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+		  [_AM_DEPENDENCIES(CXX)],
+		  [define([AC_PROG_CXX],
+			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                  [_AM_DEPENDENCIES(OBJC)],
-                  [define([AC_PROG_OBJC],
-                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+		  [_AM_DEPENDENCIES(OBJC)],
+		  [define([AC_PROG_OBJC],
+			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
 ])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 ])
 
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
 
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
@@ -8494,7 +8543,7 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -8505,7 +8554,14 @@ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_co
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
 AC_SUBST(install_sh)])
 
 # Copyright (C) 2003, 2005  Free Software Foundation, Inc.
@@ -8532,27 +8588,38 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
+# serial 5
 
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
 AC_DEFUN([AM_MAINTAINER_MODE],
-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
-  dnl maintainer-mode is disabled by default
-  AC_ARG_ENABLE(maintainer-mode,
-[  --enable-maintainer-mode  enable make rules and dependencies not useful
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
 			  (and sometimes confusing) to the casual installer],
-      USE_MAINTAINER_MODE=$enableval,
-      USE_MAINTAINER_MODE=no)
+      [USE_MAINTAINER_MODE=$enableval],
+      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
   AC_MSG_RESULT([$USE_MAINTAINER_MODE])
-  AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
   MAINT=$MAINTAINER_MODE_TRUE
-  AC_SUBST(MAINT)dnl
+  AC_SUBST([MAINT])dnl
 ]
 )
 
@@ -8560,13 +8627,13 @@ AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
 
 # Check to see how 'make' treats includes.	            -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 3
+# serial 4
 
 # AM_MAKE_INCLUDE()
 # -----------------
@@ -8575,7 +8642,7 @@ AC_DEFUN([AM_MAKE_INCLUDE],
 [am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-	@echo done
+	@echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
@@ -8585,24 +8652,24 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
-fi
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # Now try BSD make style include.
 if test "$am__include" = "#"; then
    echo '.include "confinc"' > confmf
-   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-      am__include=.include
-      am__quote="\""
-      _am_result=BSD
-   fi
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 AC_SUBST([am__include])
 AC_SUBST([am__quote])
@@ -8612,14 +8679,14 @@ rm -f confinc confmf
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
+# serial 6
 
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
@@ -8636,7 +8703,14 @@ AC_SUBST($1)])
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
 if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
@@ -8674,13 +8748,13 @@ esac
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 3
+# serial 4
 
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
@@ -8697,7 +8771,7 @@ AC_DEFUN([_AM_SET_OPTION],
 # ----------------------------------
 # OPTIONS is a space-separated list of Automake options.
 AC_DEFUN([_AM_SET_OPTIONS],
-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
 
 # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
 # -------------------------------------------
@@ -8705,7 +8779,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
@@ -8736,13 +8810,11 @@ AC_DEFUN([_AM_IF_OPTION],
 # numbers and dots only.
 AC_DEFUN([AM_PATH_PYTHON],
  [
-  dnl Find a Python interpreter.  Python versions prior to 1.5 are not
-  dnl supported because the default installation locations changed from
-  dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages
-  dnl in 1.5.
+  dnl Find a Python interpreter.  Python versions prior to 2.0 are not
+  dnl supported. (2.0 was released on October 16, 2000).
   m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-                    [python python2 python2.5 python2.4 python2.3 python2.2 dnl
-python2.1 python2.0 python1.6 python1.5])
+                    [python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 dnl
+python2.1 python2.0])
 
   m4_if([$1],[],[
     dnl No version check is needed.
@@ -8789,7 +8861,7 @@ python2.1 python2.0 python1.6 python1.5])
   dnl library.
 
   AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
-    [am_cv_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`])
+    [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
   AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
 
   dnl Use the values of $prefix and $exec_prefix for the corresponding
@@ -8804,7 +8876,7 @@ python2.1 python2.0 python1.6 python1.5])
   dnl to know which OS platform Python thinks this is.
 
   AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
-    [am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`])
+    [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
   AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
 
 
@@ -8819,8 +8891,29 @@ python2.1 python2.0 python1.6 python1.5])
   dnl doesn't work.
   AC_CACHE_CHECK([for $am_display_PYTHON script directory],
     [am_cv_python_pythondir],
-    [am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null ||
-     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`])
+    [if test "x$prefix" = xNONE
+     then
+       am_py_prefix=$ac_default_prefix
+     else
+       am_py_prefix=$prefix
+     fi
+     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null ||
+     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
+     case $am_cv_python_pythondir in
+     $am_py_prefix*)
+       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
+       ;;
+     *)
+       case $am_py_prefix in
+         /usr|/System*) ;;
+         *)
+	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	  ;;
+       esac
+       ;;
+     esac
+    ])
   AC_SUBST([pythondir], [$am_cv_python_pythondir])
 
   dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
@@ -8836,8 +8929,29 @@ python2.1 python2.0 python1.6 python1.5])
   dnl doesn't work.
   AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
     [am_cv_python_pyexecdir],
-    [am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null ||
-     echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`])
+    [if test "x$exec_prefix" = xNONE
+     then
+       am_py_exec_prefix=$am_py_prefix
+     else
+       am_py_exec_prefix=$exec_prefix
+     fi
+     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null ||
+     echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
+     case $am_cv_python_pyexecdir in
+     $am_py_exec_prefix*)
+       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
+       ;;
+     *)
+       case $am_py_exec_prefix in
+         /usr|/System*) ;;
+         *)
+	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	   ;;
+       esac
+       ;;
+     esac
+    ])
   AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
 
   dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
@@ -8857,15 +8971,16 @@ python2.1 python2.0 python1.6 python1.5])
 # Run ACTION-IF-FALSE otherwise.
 # This test uses sys.hexversion instead of the string equivalent (first
 # word of sys.version), in order to cope with versions such as 2.2c1.
-# hexversion has been introduced in Python 1.5.2; it's probably not
-# worth to support older versions (1.5.1 was released on October 31, 1998).
+# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
 AC_DEFUN([AM_PYTHON_CHECK_VERSION],
- [prog="import sys, string
+ [prog="import sys
 # split strings by '.' and convert to numeric.  Append some zeros
 # because we need at least 4 digits for the hex conversion.
-minver = map(int, string.split('$2', '.')) + [[0, 0, 0]]
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
 minverhex = 0
-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]]
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
 sys.exit(sys.hexversion < minverhex)"
   AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
 
@@ -8888,14 +9003,14 @@ AC_DEFUN([AM_RUN_LOG],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
+# serial 5
 
 # AM_SANITY_CHECK
 # ---------------
@@ -8904,16 +9019,29 @@ AC_DEFUN([AM_SANITY_CHECK],
 # Just in case
 sleep 1
 echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
 # Do `set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
    if test "$[*]" = "X"; then
       # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
+      set X `ls -t "$srcdir/configure" conftest.file`
    fi
    rm -f conftest.file
    if test "$[*]" != "X $srcdir/configure conftest.file" \
@@ -8966,18 +9094,25 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006  Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 2
+
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
 # This macro is traced by Automake.
 AC_DEFUN([_AM_SUBST_NOTMAKE])
 
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
 # Check how to create a tarball.                            -*- Autoconf -*-
 
 # Copyright (C) 2004, 2005  Free Software Foundation, Inc.
@@ -9077,6 +9212,7 @@ AC_SUBST([am__untar])
 m4_include([config/cs_bft.m4])
 m4_include([config/cs_blas.m4])
 m4_include([config/cs_config_info.m4])
+m4_include([config/cs_fortran.m4])
 m4_include([config/cs_fvm.m4])
 m4_include([config/cs_libxml2.m4])
 m4_include([config/cs_mei.m4])
diff --git a/bin/SaturneGUI.in b/bin/SaturneGUI.in
index 1602de7..5aeac0a 100644
--- a/bin/SaturneGUI.in
+++ b/bin/SaturneGUI.in
@@ -32,7 +32,7 @@ prefix=@prefix@
 exec_prefix=@exec_prefix@
 bindir=@bindir@
 #
-${bindir}/cs gui $*
+${bindir}/code_saturne gui $*
 
 exit
 
diff --git a/bin/cs.in b/bin/code_saturne.in
similarity index 83%
rename from bin/cs.in
rename to bin/code_saturne.in
index f1d4da3..827d055 100644
--- a/bin/cs.in
+++ b/bin/code_saturne.in
@@ -25,19 +25,20 @@ import os
 import sys
 
 # Trick so that one doesn't have to set the PYTHONPATH variable
-prefix = "@prefix@"
-pythondir = os.path.join(prefix, "lib", "python at PYTHON_VERSION@", "site-packages")
-pkgpythondir = os.path.join(pythondir, "@PACKAGE@")
-sys.path.insert(0, pkgpythondir)
+cspath = '@pkgpythondir@'
 
-# Same trick for the MEI library (supposed to be installed in site-packages/mei)
-meilibdir = "@mei_libdir@"
-pythondir = os.path.join(meilibdir, "python at PYTHON_VERSION@", "site-packages")
-meipythondir = os.path.join(pythondir, "mei")
-if os.path.isdir(meipythondir):
-   sys.path.insert(0, meipythondir)
+# Similar trick for the MEI library
+# (consistent with autoconf/automake behavior for MEI)
+try:
+   from distutils import sysconfig
+   meipath = os.path.join(sysconfig.get_python_lib(0, 0, prefix='@mei_prefix@'),
+                          'mei')
+except Exception:
+   meipath = ''
 
-import cs_config
+for p in [meipath, cspath]:
+   if os.path.isdir(p) and not p in sys.path:
+      sys.path.insert(0, p)
 
 #-------------------------------------------------------------------------------
 
@@ -49,6 +50,7 @@ Topics:
   help
   check_consistency
   check_mesh
+  compile
   config
   create
   gui
@@ -56,7 +58,7 @@ Topics:
   plot_probes
 
 Options:
-  -h, --help  show this help message and exit""" 
+  -h, --help  show this help message and exit"""
 
     print usage % {'prog':sys.argv[0]}
 
diff --git a/bin/cs_case.py b/bin/cs_case.py
new file mode 100644
index 0000000..0dc0a2d
--- /dev/null
+++ b/bin/cs_case.py
@@ -0,0 +1,1391 @@
+#!/usr/bin/env python
+#
+#-------------------------------------------------------------------------------
+#   This file is part of the Code_Saturne Solver.
+#
+#   Copyright (C) 2009-2010  EDF
+#
+#   Code_Saturne is free software; you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation; either version 2 of the License,
+#   or (at your option) any later version.
+#
+#   Code_Saturne is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty
+#   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public Licence
+#   along with the Code_Saturne Preprocessor; if not, write to the
+#   Free Software Foundation, Inc.,
+#   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#-------------------------------------------------------------------------------
+
+import datetime
+import os
+import os.path
+import sys
+import stat
+
+import cs_config
+import cs_config_build
+import cs_exec_environment
+
+from cs_case_domain import *
+
+homard_prefix = None
+
+#===============================================================================
+# Utility functions
+#===============================================================================
+
+def adaptation(adaptation, saturne_script, case_dir):
+
+    """
+    Call HOMARD adaptation.
+    """
+
+    cmd = os.path.join(homard_prefix, 'saturne_homard')
+
+    if adaptation == '-help':
+        cmd += ' -help'
+        run_command(cmd)
+        sys.exit(0)
+    else:
+        homard_options=' -v'
+        cmd += ' -Saturne_Script ' + saturne_script + ' ' + case_dir
+        cmd += ' -Pilotage_Adaptation ' + adaptation + homard_options
+
+    if run_command(cmd) != 0:
+        sys.exit(0)
+
+#===============================================================================
+# Main class
+#===============================================================================
+
+class case:
+    """Base class from which classes handling running case should inherit."""
+
+    #---------------------------------------------------------------------------
+
+    def __init__(self,
+                 case_dir,
+                 domains,
+                 syr_domains = None,
+                 results_by_suffix = True,
+                 exec_preprocess = True,
+                 exec_partition = True,
+                 exec_solver = True):
+
+        # Names, directories, and files in case structure
+
+        (self.study_dir, self.name) = os.path.split(case_dir)
+
+        self.case_dir = case_dir
+
+        self.data_dir = os.path.join(self.case_dir, 'DATA')
+        self.result_dir = os.path.join(self.case_dir, 'RESU')
+        self.src_dir = os.path.join(self.case_dir, 'SRC')
+        self.script_dir = os.path.join(self.case_dir, 'SCRIPTS')
+
+        self.results_by_suffix = results_by_suffix
+        self.results_suffix = None
+
+        self.mesh_dir = os.path.join(self.study_dir, 'MESH')
+
+        # Associate case domains and set case directory
+
+        if type(domains) == tuple or  type(domains) == list:
+            self.domains = domains
+        else:
+            self.domains = (domains,)
+
+        if len(self.domains) == 1:
+            self.domains[0].set_case_dir(self.case_dir)
+        else:
+            d_tag = 0
+            for d in self.domains:
+                d_tag += 1
+                d.set_tag(d_tag)
+                d.set_case_dir(self.case_dir)
+
+        if syr_domains == None:
+            self.syr_domains = ()
+        elif type(syr_domains) == tuple or  type(syr_domains) == list:
+                self.syr_domains = syr_domains
+        else:
+            self.syr_domains = (syr_domains,)
+
+        if len(self.syr_domains) == 1:
+            self.syr_domains[0].set_case_dir(self.case_dir)
+        else:
+            d_tag = 0
+            for sd in self.syr_domains:
+                d_tag += 1
+                sd.set_tag(d_tag)
+                sd.set_case_dir(self.case_dir)
+
+        # Working directory
+
+        self.exec_dir = None
+
+        # Execution and debugging options
+
+        self.exec_preprocess = exec_preprocess
+        self.exec_partition = exec_partition
+        self.exec_solver = exec_solver
+
+        self.exec_prefix = None
+
+        # Date or other name
+
+        self.date = None
+        self.suffix = None
+
+        # Error reporting
+        self.error = ''
+
+    #---------------------------------------------------------------------------
+
+    def print_procs_distribution(self):
+
+        """
+        Print info on the processor distribution.
+        """
+
+        # Print process info
+
+        if len(self.domains) == 1:
+            if self.domains[0].n_procs > 1:
+                msg = ' Parallel Code_Saturne on ' \
+                    + str(self.domains[0].n_procs) + ' processes.\n'
+            else:
+                msg = ' Single processor Code_Saturne simulation.\n'
+            sys.stdout.write(msg)
+        else:
+            for d in self.domains:
+                msg = ' Code_Saturne domain ' + str(d.tag) + ' on ' \
+                    + str(d.n_procs) + ' process(es).\n'
+                sys.stdout.write(msg)
+
+        if len(self.syr_domains) == 1:
+            if self.syr_domains[0].n_procs > 1:
+                msg = ' Parallel SYRTHES on ' \
+                    + str(self.syr_domains[0].n_procs) + ' processes.\n'
+            else:
+                msg = ' Single processor SYRTHES simulation.\n'
+            sys.stdout.write(msg)
+        else:
+            for d in self.syr_domains:
+                msg = ' SYRTHES domain ' + str(d.tag) + ' on ' \
+                    + str(d.n_procs) + ' processes.\n'
+                sys.stdout.write(msg)
+
+        sys.stdout.write('\n')
+
+    #---------------------------------------------------------------------------
+
+    def distribute_procs(self, n_procs=None):
+
+        """
+        Distribute number of processors to domains,
+        and returns the total number of associated processes.
+        """
+
+        # Initial count
+
+        np_list = []
+
+        for d in self.domains:
+            np_list.append(d.get_n_procs())
+
+        for d in self.syr_domains:
+            if d.coupling_mode == 'MPI':
+                np_list.append(d.get_n_procs())
+
+        n_procs_tot = 0
+        n_procs_min = 0
+        for np in np_list:
+            n_procs_tot += np[0]
+            n_procs_min += np[1]
+
+        # If no process count is given or everything fits:
+
+        if n_procs == None or n_procs == n_procs_tot:
+            return n_procs_tot
+
+        # If process count is given and not sufficient, abort.
+
+        elif n_procs < n_procs_min:
+            ' Error:\n' \
+                '   The current calculation scheme requires at least ' \
+                + str(n_procs_min) + 'processes,\n' \
+                + '   while the execution environment provides only ' \
+                + str(n_procs) + '.\n' \
+                + '   You may either allocate more processes or try to\n' \
+                + '   oversubscribe by forcing the number of processes\n' \
+                + '   in the toplevel script.'
+            raise RunCaseError, err_str
+
+        # Otherwise, rebalance process counts.
+
+        n_passes = 0
+        n_fixed_procs = 0
+        n_fixed_apps = 0
+
+        while (    n_procs_tot != n_procs and n_fixed_apps != len(np_list)
+               and n_passes < 5):
+
+            mult = (n_procs - n_fixed_procs) *1.0 \
+                / (n_procs_tot - n_fixed_procs)
+
+            n_procs_tot = 0
+
+            for np in np_list:
+                if np[2] == None:
+                    np[2] = n_procs
+                if np[2] != 0: # marked as fixed here
+                    np[0] = int(np[0]*mult)
+                    if np[0] < np[1]:
+                        np[0] = np[1]
+                        np[2] = 0 # used as marker here
+                        n_fixed_procs += np[0]
+                        n_fixed_apps += 1
+                    elif np[0] > np[2]:
+                        np[0] = np[2]
+                        np[2] = 0 # used as marker here
+                        n_fixed_procs += np[0]
+                        n_fixed_apps += 1
+                n_procs_tot += np[0]
+
+            n_passes += 1
+
+        # Minor adjustments may help in case of rounding
+
+        n_passes = 0
+
+        while (    n_procs_tot != n_procs and n_fixed_apps != len(np_list)
+               and n_passes < 5):
+
+            delta = int(round(  (n_procs_tot - n_procs)*1.0
+                              / (len(np_list) - n_fixed_apps)))
+
+            if delta == 0:
+                if n_procs_tot < n_procs:
+                    delta = 1
+                else:
+                    delta = -1
+
+            for np in np_list:
+                if np[2] != 0: # marked as fixed here
+                    n_procs_prev = np[0]
+                    np[0] -= delta
+                    if np[0] < np[1]:
+                        np[0] = np[1]
+                        np[2] = 0 # used as marker here
+                        n_fixed_procs += np[0]
+                        n_fixed_apps += 1
+                    elif np[0] > np[2]:
+                        np[0] = np[2]
+                        np[2] = 0 # used as marker here
+                        n_fixed_procs += np[0]
+                        n_fixed_apps += 1
+                    n_procs_tot += (np[0] - n_procs_prev)
+                if n_procs_tot == n_procs:
+                    break
+
+            n_passes += 1
+
+        # We are now are ready to set return values
+
+        app_id = 0
+
+        for d in self.domains:
+            d.set_n_procs(np_list[app_id][0])
+            app_id += 1
+
+        for d in self.syr_domains:
+            if d.coupling_mode == 'MPI':
+                d.set_n_procs(np_list[app_id][0])
+                app_id += 1
+
+        # Warn in case of over or under-subscription
+
+        if n_procs_tot != n_procs:
+            msg =  \
+                'Warning:\n' \
+                + '  total number of processes used (' + str(n_procs_tot) \
+                + ') is different from the\n' \
+                + '  number provided by the environment. (' + str(n_procs) \
+                + ').\n\n'
+            sys.stderr.write(msg)
+
+        return n_procs_tot
+
+    #---------------------------------------------------------------------------
+
+    def define_exec_dir(self, exec_basename):
+        """
+        Create execution directory.
+        """
+
+        if self.exec_prefix != None:
+            names = os.path.split(self.case_dir)
+            exec_dir_name = os.path.split(names[0])[1] + '.' + names[1]
+            exec_dir_name += '.' + exec_basename
+            self.exec_dir = os.path.join(self.exec_prefix, exec_dir_name)
+        else:
+            self.exec_dir = os.path.join(self.case_dir, 'RESU', exec_basename)
+
+    #---------------------------------------------------------------------------
+
+    def set_exec_dir(self, path):
+        """
+        Set execution directory.
+        """
+
+        # Set execution directory
+
+        self.exec_dir = path
+
+        for d in self.domains:
+            d.set_exec_dir(self.exec_dir)
+        for d in self.syr_domains:
+            d.set_exec_dir(self.exec_dir)
+
+    #---------------------------------------------------------------------------
+
+    def mk_exec_dir(self, exec_basename):
+        """
+        Create execution directory.
+        """
+
+        # Define execution directory name
+
+        self.define_exec_dir(exec_basename)
+
+        # Check that directory does not exist (unless it is also
+        # the results directory, which may already have been created,
+        # but should be empty at this stage.
+
+        if self.result_dir != self.exec_dir:
+
+            if os.path.isdir(self.exec_dir):
+                err_str = \
+                    '\nWorking directory: ' + self.exec_dir \
+                    + ' already exists.\n' \
+                    + 'Calculation will not be run.\n'
+                raise RunCaseError, err_str
+
+            else:
+                os.makedirs(self.exec_dir)
+
+        elif (  len(os.listdir(self.exec_dir))
+              > len(self.domains) + len(self.syr_domains)):
+            err_str = \
+                '\nWorking/results directory: ' + self.exec_dir \
+                + ' not empty.\n' \
+                + 'Calculation will not be run.\n'
+            raise RunCaseError, err_str
+
+        # Set execution directory
+
+        self.set_exec_dir(self.exec_dir)
+
+    #---------------------------------------------------------------------------
+
+    def set_result_dir(self, name):
+        """
+        If suffix = true, add suffix to all names in result dir.
+        Otherwise, create subdirectory
+        """
+
+        if self.results_by_suffix == True:
+            self.results_suffix = name
+
+        else:
+            self.result_dir = os.path.join(self.case_dir, 'RESU', name)
+
+        if not os.path.isdir(self.result_dir):
+            os.mkdir(self.result_dir)
+
+        for d in self.domains:
+            d.set_result_dir(name, self.results_by_suffix)
+
+        for d in self.syr_domains:
+            d.set_result_dir(name, self.results_by_suffix)
+
+    #---------------------------------------------------------------------------
+
+    def summary_init(self, exec_env):
+
+        """
+        Build summary start.
+        """
+
+        s_path = os.path.join(self.exec_dir, 'summary')
+        s = open(s_path, 'w')
+
+        preprocessor = os.path.join(cs_config.dirs.ecs_bindir, 'cs_preprocess')
+        partitioner = os.path.join(cs_config.dirs.ecs_bindir, 'cs_partition')
+        if not os.path.isfile(partitioner):
+            partitioner = ''
+        solver = os.path.join(self.exec_dir, 'cs_solver')
+        if not os.path.isfile(solver):
+            solver = os.path.join(cs_config.dirs.bindir, 'cs_solver')
+
+        r = exec_env.resources
+
+        date = (datetime.datetime.now()).strftime("%A %B %d %H:%M:%S CEST %Y")
+        t_uname = os.uname()
+        s_uname = ''
+        for t in t_uname:
+            s_uname = s_uname + t + ' '
+        n_procs = r.n_procs
+        if n_procs == None:
+            n_procs = 1
+
+        dhline = '========================================================\n'
+        hline =  '  ----------------------------------------------------\n'
+
+        s.write(dhline)
+        s.write('  Start time       : ' + date + '\n')
+        s.write(hline)
+        s.write('    Solver          : ' + cs_config.dirs.exec_prefix + '\n')
+        s.write('    Preprocessor    : ' + preprocessor + '\n')
+        s.write('    Partitioner     : ' + partitioner + '\n')
+        s.write(hline)
+        s.write('    SYRTHES         : ' + cs_config.dirs.syrthes_prefix + '\n')
+        if homard_prefix != None:
+            s.write('    HOMARD          : ' + homard_prefix + '\n')
+        s.write(hline)
+        s.write('    MPI path        : ' + cs_config.mpi_lib.bindir + '\n')
+        if len(cs_config.mpi_lib.type) > 0:
+            s.write('    MPI type        : ' + cs_config.mpi_lib.type + '\n')
+        s.write(hline)
+        s.write('    User            : ' + exec_env.user  + '\n')
+        s.write(dhline)
+        s.write('    Machine         : ' + s_uname  + '\n')
+        s.write('    N Procs         : ' + str(n_procs)  + '\n')
+        if r.manager == None and r.hosts_list != None:
+            s.write('    Processors      :')
+            for p in r.hosts_list:
+                s.write(' ' + p)
+            s.write('\n')
+        s.write(dhline)
+        s.write('    Case dir.       : ' + self.name + '\n')
+        s.write('    Exec. dir.      : ' + self.exec_dir + '\n')
+        if self.exec_solver:
+            s.write('    Executable      : ' + solver + '\n')
+            s.write(hline)
+
+        s.close()
+
+    #---------------------------------------------------------------------------
+
+    def summary_finalize(self):
+
+        """
+        Output summary body.
+        """
+
+        date = (datetime.datetime.now()).strftime("%A %B %d %H:%M:%S CEST %Y")
+
+        if self.exec_preprocess:
+            preprocess = "yes"
+            if self.error == 'preprocess':
+                preprocess = "failed"
+        else:
+            preprocess = "no"
+
+        if self.exec_partition:
+            partition = "yes"
+            if self.error == 'partition':
+                partition = "failed"
+        else:
+            partition = "no"
+
+        if self.exec_solver:
+            solver = "yes"
+            if self.error == 'solver':
+                solver = "failed"
+        else:
+            solver = "no"
+
+        dhline = '========================================================\n'
+        hline =  '  ----------------------------------------------------\n'
+
+        s_path = os.path.join(self.exec_dir, 'summary')
+        s = open(s_path, 'a')
+
+        s.write('    Preprocessing   : ' + preprocess + '\n')
+        s.write('    Partitioning    : ' + partition + '\n')
+        s.write('    Calculation     : ' + solver + '\n')
+
+        s.write(hline)
+        s.write('  Finish time      : ' + date + '\n')
+        s.write(dhline)
+
+        s.close()
+
+    #---------------------------------------------------------------------------
+
+    def copy_result(self, name):
+        """
+        Retrieve result from the execution directory
+        """
+
+        if os.path.isabs(name):
+            src = name
+        else:
+            src = os.path.join(self.exec_dir, name)
+
+        dest = os.path.join(self.result_dir, os.path.basename(name))
+
+        if (self.results_suffix != None):
+            dest += '.' + self.results_suffix
+
+        # Copy single file
+
+        if os.path.isfile(src) and src != dest:
+            shutil.copy2(src, dest)
+
+    #---------------------------------------------------------------------------
+
+    def solver_script_path(self):
+        """
+        Determine name of solver script file.
+        """
+        return os.path.join(self.exec_dir, 'run_solver.sh')
+
+    #---------------------------------------------------------------------------
+
+    def generate_solver_mpmd_mpiexec(self, n_procs, mpi_env):
+        """
+        Generate MPMD mpiexec command.
+        """
+
+        cmd = ''
+
+        app_id = 0
+
+        for d in self.syr_domains:
+            if d.coupling_mode == 'MPI':
+                s_args = d.solver_args(app_id=app_id)
+                if len(cmd) > 0:
+                    cmd += ' : '
+                cmd += '-n ' + str(d.n_procs) + ' -cwd ' + s_args[0] \
+                    + ' ' + s_args[1] + s_args[2]
+                app_id += 1
+
+        for d in self.domains:
+            s_args = d.solver_args(app_id=app_id)
+            if len(cmd) > 0:
+                cmd += ' : '
+            cmd += '-n ' + str(d.n_procs) + ' -cwd ' + s_args[0] \
+                + ' ' + s_args[1] + s_args[2]
+            app_id += 1
+
+        return cmd
+
+    #---------------------------------------------------------------------------
+
+    def generate_solver_mpmd_configfile(self, n_procs, mpi_env):
+        """
+        Generate MPMD mpiexec config file.
+        """
+
+        e_path = os.path.join(self.exec_dir, 'mpmd_configfile')
+        e = open(e_path, 'w')
+
+        e.write('# MPMD configuration file for mpiexec\n')
+
+        app_id = 0
+
+        for d in self.syr_domains:
+            if d.coupling_mode == 'MPI':
+                s_args = d.solver_args(app_id=app_id)
+                cmd = '-n ' + str(d.n_procs) + ' -cwd ' + s_args[0] \
+                    + ' ' + s_args[1] + s_args[2] + '\n'
+                e.write(cmd)
+                app_id += 1
+
+        for d in self.domains:
+            s_args = d.solver_args(app_id=app_id)
+            cmd = '-n ' + str(d.n_procs) + ' -cwd ' + s_args[0] \
+                + ' ' + s_args[1] + s_args[2] + '\n'
+            e.write(cmd)
+            app_id += 1
+
+        e.close()
+
+        return e_path
+
+    #---------------------------------------------------------------------------
+
+    def generate_solver_mpmd_script(self, n_procs, mpi_env):
+        """
+        Generate MPMD dispatch file.
+        """
+
+        e_path = os.path.join(self.exec_dir, 'mpmd_exec.sh')
+        e = open(e_path, 'w')
+
+        e.write('#!/bin/sh\n\n')
+        e.write('# Make sure to transmit possible additional '
+                + 'arguments assigned by mpirun to\n'
+                + '# the executable with some MPI-1 implementations:\n'
+                + '# we use $@ to forward arguments passed to this script'
+                + ' to the executable files.\n\n')
+
+        e.write('MPI_RANK=`'
+                + cs_config.dirs.pkgdatadir
+                + '/runcase_mpi_rank $@`\n')
+
+        app_id = 0
+        nr = 0
+        test_pf = 'if [ $MPI_RANK -lt '
+        test_sf = ' ] ; then\n'
+
+        for d in self.syr_domains:
+            nr += d.n_procs
+            e.write(test_pf + str(nr) + test_sf)
+            s_args = d.solver_args(app_id=app_id)
+            e.write('  cd ' + s_args[0] + '\n')
+            e.write('  ' + s_args[1] + s_args[2] + ' $@ > listsyr 2>&1\n')
+            if app_id == 0:
+                test_pf = 'el' + test_pf
+            app_id += 1
+
+        for d in self.domains:
+            nr += d.n_procs
+            e.write(test_pf + str(nr) + test_sf)
+            s_args = d.solver_args(app_id=app_id)
+            e.write('  cd ' + s_args[0] + '\n')
+            e.write('  ' + s_args[1] + s_args[2] + ' $@\n')
+            if app_id == 0:
+                test_pf = 'el' + test_pf
+            app_id += 1
+
+        e.write('fi\n'
+                + 'CS_RET=$?\n'
+                + 'exit $CS_RET\n')
+
+        e.close()
+
+        oldmode = (os.stat(e_path)).st_mode
+        newmode = oldmode | (stat.S_IXUSR)
+        os.chmod(e_path, newmode)
+
+        return e_path
+
+    #---------------------------------------------------------------------------
+
+    def generate_solver_execve_launcher(self, n_procs, mpi_env):
+        """
+        Generate execve-based launcher (for machines such as Blue Gene/L).
+        """
+
+        e_path = os.path.join(self.exec_dir, 'mpmd_exec.c')
+        o_path = os.path.join(self.exec_dir, 'mpmd_exec')
+        e = open(e_path, 'w')
+
+        e.write('#include <stdio.h>\n'
+                '#include <stdlib.h>\n'
+                '#include <unistd.h>\n\n'
+                'int\n'
+                'main(const int argc, char *const argv[], char *const envp[])\n'
+                '{\n')
+
+        e.write('  /* Get MPI rank before MPI_Init() is called (as MPI_Init\n'
+                '     may be called only once, by the called program). */\n\n'
+                '  int rank = -1;\n\n')
+
+        e.write('#if defined(__blrts__)  /* IBM Blue Gene/L, pid() = rank */\n'
+                '  rank = (int)getpid();\n'
+                '#endif\n\n')
+
+        e.write('  if (getenv("OMPI_MCA_ns_nds_vpid") != NULL) /* OpenMPI */\n'
+                '    rank = atoi(getenv("OMPI_MCA_ns_nds_vpid"));\n'
+                '  else if (getenv("OMPI_COMM_WORLD_RANK") != NULL)\n'
+                '    rank = atoi(getenv("OMPI_COMM_WORLD_RANK"));\n'
+                '  else if (getenv("SLURM_PROCID") != NULL) /* under SLURM */\n'
+                '    rank = atoi(getenv("SLURM_PROCID"));\n'
+                '  else if (getenv("PMI_RANK") != NULL) /* MPICH 2 */\n'
+                '    rank = atoi(getenv("PMI_RANK"));\n'
+                '  else if (getenv("LAMRANK") != NULL) /* LAM-MPI */\n'
+                '    rank = atoi(getenv("LAMRANK"));\n'
+                '  else if (getenv("GMPI_ID") != NULL) /* MPICH-GM */\n'
+                '    rank = atoi(getenv("GMPI_ID"));\n\n')
+
+        e.write('  if (rank == -1)\n'
+                '    return EXIT_FAILURE;\n\n')
+
+        e.write('  /* Launch appropriate executable */\n\n')
+
+        app_id = 0
+        nr = 0
+
+        for d in self.syr_domains:
+            if d.coupling_mode == 'MPI':
+
+                nr += d.n_procs
+                s_args = self.domains[0].solver_args()
+                arg0 = os.path.split(s_args[1])[1]
+
+                e.write('  else if (rank < ' + str(nr) + ') {\n')
+                e.write('    const char *filename = "' + s_args[0] + '";\n')
+
+                a_s = '    char *const argv[] = {"' + arg0 + '"'
+                for arg in s_args[2].split(' ')[1:]:
+                    a_s += ', "' + arg + '"'
+                a_s += ', (char *)NULL};\n'
+                e.write(a_s)
+                e.write('    FILE *fp;\n')
+                e.write('    chdir("' + s_args[0] + '");\n')
+                e.write('    freopen("listsyr", "w", stdout);\n'
+                        '    dup2(fileno(fp), fileno(stderr));\n')
+                e.write('    execve(filename, argv, envp);\n'
+                        '  }\n')
+
+                app_id += 1
+
+        for d in self.domains:
+
+            nr += d.n_procs
+            s_args = self.domains[0].solver_args()
+            arg0 = os.path.split(s_args[1])[1]
+
+            e.write('  else if (rank < ' + str(nr) + ') {\n')
+            e.write('    const char *filename = "' + s_args[0] + '";\n')
+
+            a_s = '    char *const argv[] = {"' + arg0 + '"'
+            for arg in s_args[2].split(' ')[1:]:
+                a_s += ', "' + arg + '"'
+            a_s += ', (char *)NULL};\n'
+            e.write(a_s)
+            e.write('    chdir("' + s_args[0] + '");\n')
+            e.write('    execve(filename, argv, envp);\n'
+                    '  }\n')
+
+            app_id += 1
+
+        e.write('\n'
+                '  /* We should not arrive here. */\n'
+                '  return EXIT_FAILURE;\n'
+                '}\n')
+
+        e.close()
+
+        cmd = cs_config_build.build.cc + ' -o ' + o_path + ' -g ' + e_path
+
+        sys.stdout.write('\n'
+                         'Generating MPMD launcher:\n\n')
+
+        retcode = cs_exec_environment.run_command(cmd, echo = True)
+
+        sys.stdout.write('\n')
+
+        if retcode != 0:
+            raise RunCaseError, ' Error generating MPMD launcher.\n'
+
+        return o_path
+
+    #---------------------------------------------------------------------------
+
+    def generate_solver_script(self, exec_env):
+        """
+        Generate localexec file.
+        """
+
+        # If n_procs not already given by environment, determine it
+
+        n_procs = exec_env.resources.n_procs
+        mpi_env = exec_env.mpi_env
+
+        if n_procs == None:
+            n_procs = 0
+            for d in self.syr_domains:
+                if d.coupling_mode == 'MPI':
+                    n_procs += d.n_procs
+
+        n_mpi_syr = 0
+        for d in self.syr_domains:
+            if d.coupling_mode == 'MPI':
+                n_mpi_syr += 1
+
+        # Determine if an MPMD syntax (mpiexec variant) will be used
+
+        mpiexec_mpmd = False
+        if len(self.domains) > 1:
+            if mpi_env.mpmd & cs_exec_environment.MPI_MPMD_mpiexec:
+                mpiexec_mpmd = True
+            elif mpi_env.mpmd & cs_exec_environment.MPI_MPMD_configfile:
+                mpiexec_mpmd = True
+
+        # Avoid mpiexec variant with SYRTHES as stdout must be redirected;
+
+        if n_mpi_syr > 0:
+            mpiexec_mpmd = False
+            mpi_env.unset_mpmd_mode(cs_exec_environment.MPI_MPMD_mpiexec)
+            mpi_env.unset_mpmd_mode(cs_exec_environment.MPI_MPMD_configfile)
+
+        # Initialize simple solver command script
+
+        s_path = self.solver_script_path()
+        s = open(s_path, 'w')
+
+        s.write('#!/bin/sh\n\n')
+
+        # Add MPI directories to PATH if in nonstandard path
+
+        s.write('# Export paths here if necessary or recommended.\n')
+        if len(cs_config.mpi_lib.bindir) > 0:
+            s.write('export PATH='+ cs_config.mpi_lib.bindir + ':$PATH\n')
+        if len(cs_config.mpi_lib.libdir) > 0:
+            s.write('export LD_LIBRARY_PATH='+ cs_config.mpi_lib.libdir \
+                        + ':$LD_LIBRARY_PATH\n')
+        s.write('\n')
+
+        # Boot MPI daemons if necessary
+
+        if mpi_env.gen_hostsfile != None:
+            s.write('# Generate hostsfile.\n')
+            s.write(mpi_env.gen_hostsfile + '|| exit $?\n\n')
+
+        if n_procs > 1 and mpi_env.mpiboot != None:
+            s.write('# Boot MPI daemons.\n')
+            s.write(mpi_env.mpiboot + '|| exit $?\n\n')
+
+        # Start assembling command
+
+        mpi_cmd = ''
+        mpi_cmd_exe = ''
+        mpi_cmd_args = ''
+        if n_procs > 1 and mpi_env.mpiexec != None:
+            mpi_cmd = mpi_env.mpiexec
+            if mpiexec_mpmd == False:
+                if mpi_env.mpiexec_n != None:
+                    mpi_cmd += mpi_env.mpiexec_n + str(n_procs)
+                mpi_cmd += ' '
+                if mpi_env.mpiexec_exe != None:
+                    mpi_cmd += mpi_env.mpiexec_exe + ' '
+                if mpi_env.mpiexec_args != None:
+                    mpi_cmd_args = mpi_env.mpiexec_args + ' '
+            else:
+                mpi_cmd += ' '
+
+        # Case with only one cs_solver instance possibly under MPI
+
+        if len(self.domains) == 1 and n_mpi_syr == 0:
+
+            if len(self.syr_domains) == 0:
+
+                s_args = self.domains[0].solver_args()
+                s.write('cd ' + s_args[0] + '\n\n')
+
+                s.write('# Run solver.\n')
+
+                s.write(mpi_cmd + s_args[1] + mpi_cmd_args + s_args[2] + ' $@\n')
+
+            else: # coupling through sockets
+
+                s.write('CS_PORT=35623\n')
+
+                syr_id = 0
+                for d in self.syr_domains:
+                    s_args = d.solver_args(host_port='localhost:$CS_PORT')
+                    s.write('cd ' + s_args[0] + '\n')
+                    s.write(s_args[1] + s_args[2] + ' $@ > '
+                            + s_args[0] + '/listsyr 2>&1 &\n')
+                    s.write('SYR_PID' + str(syr_id) + '=$!\n')
+                    syr_id += 1
+
+                s_args = self.domains[0].solver_args(syr_port='$CS_PORT')
+                s.write('cd ' + s_args[0] + '\n')
+                s.write(mpi_cmd + s_args[1] + mpi_cmd_args + s_args[2] + ' $@\n')
+                s.write('CS_PID=$!\n')
+
+                s.write('wait $CS_PID ; CS_RET=$?\n')
+
+                syr_id = 0
+                for d in self.syr_domains:
+                    s.write('wait SYR_PID' + str(syr_id)
+                            + 'SYR_RET=$? ; ((CS_RET=CS_RET+SYR_RET))\n')
+                    syr_id += 1
+
+        # General case
+
+        else:
+
+            if mpi_env.mpmd & cs_exec_environment.MPI_MPMD_mpiexec:
+
+                e_path = self.generate_solver_mpmd_mpiexec(n_procs,
+                                                           mpi_env)
+
+            elif mpi_env.mpmd & cs_exec_environment.MPI_MPMD_configfile:
+
+                e_path = self.generate_solver_mpmd_configfile(n_procs,
+                                                              mpi_env)
+                e_path = '-configfile ' + e_path
+
+            elif mpi_env.mpmd & cs_exec_environment.MPI_MPMD_script:
+                e_path = self.generate_solver_mpmd_script(n_procs, mpi_env)
+
+            elif mpi_env.mpmd & cs_exec_environment.MPI_MPMD_execve:
+                e_path = self.generate_solver_execve_launcher(n_procs, mpi_env)
+
+            else:
+                raise RunCaseError, ' No allowed MPI MPMD mode defined.\n'
+
+            s.write(mpi_cmd + e_path + '\n')
+
+        # Obtain return value (or sum thereof)
+
+        s.write('\nCS_RET=$?\n')
+
+        # Halt MPI daemons if necessary
+
+        if n_procs > 1 and mpi_env.mpihalt != None:
+            s.write('\n# Halt MPI daemons.\n')
+            s.write(mpi_env.mpihalt + '\n')
+
+        if mpi_env.del_hostsfile != None:
+            s.write('# Remove hostsfile.\n')
+            s.write(mpi_env.del_hostsfile + '\n\n')
+
+        s.write('\nexit $CS_RET\n\n')
+        s.close()
+
+        oldmode = (os.stat(s_path)).st_mode
+        newmode = oldmode | (stat.S_IXUSR)
+        os.chmod(s_path, newmode)
+
+        return s_path
+
+    #---------------------------------------------------------------------------
+
+    def update_scripts_tmp(self, src, dest):
+
+        """
+        Create a stamp file in the scripts directory, rename it, or destroy it.
+        """
+
+        # Create a temporary file for SALOME (equivalent to "ficstp")
+
+        src_tmp_name = None
+        dest_tmp_name = None
+
+        if src != None:
+            if type(src) == tuple:
+                for s in src:
+                    p = os.path.join(self.script_dir, s + '.' + self.suffix)
+                    if os.path.isfile(p):
+                        src_tmp_name = p
+
+            else:
+                p = os.path.join(self.script_dir, src + '.' + self.suffix)
+                if os.path.isfile(p):
+                    src_tmp_name = p
+
+        try:
+            if dest != None:
+                dest_tmp_name = os.path.join(self.script_dir,
+                                             dest + '.' + self.suffix)
+                if src_tmp_name == None:
+                    scripts_tmp = open(dest_tmp_name, 'w')
+                    scripts_tmp.write(self.exec_dir + '\n')
+                    scripts_tmp.close()
+                else:
+                    os.rename(src_tmp_name, dest_tmp_name)
+
+            else:
+                os.remove(src_tmp_name)
+
+        except Exception:
+            pass
+
+    #---------------------------------------------------------------------------
+
+    def prepare_data(self,
+                     n_procs = None,
+                     hosts_list = None,
+                     mpi_environment = None,
+                     suffix = None):
+
+        """
+        Prepare data for calculation.
+        """
+
+        # General values
+
+        now = datetime.datetime.now()
+
+        self.date = now.strftime('%m%d%H%M')
+
+        if suffix == None:
+            self.suffix = self.date
+        else:
+            self.suffix = suffix
+
+        for d in self.domains:
+
+            d.exec_preprocess = self.exec_preprocess
+            d.exec_partition = self.exec_partition
+            d.exec_solver = self.exec_solver
+
+            if d.adaptation:
+                adaptation(d.adaptation, saturne_script, self.case_dir)
+
+        if len(self.syr_domains) > 0:
+            coupling_mode = self.syr_domains[0].coupling_mode
+            for d in self.syr_domains:
+                if d.coupling_mode != coupling_mode:
+                    err_str = 'This script can only handle SYRTHES couplings ' \
+                        + 'using the same coupling mode.\n'
+                    raise RunCaseError, err_str
+            for d in self.domains:
+                if d.solcom != False:
+                    err_str = 'SYRTHES coupling is not compatible ' \
+                        + 'with SOLCOM-type meshes.'
+                    raise RunCaseError, err_str
+
+        # Now that all domains are defined, set result copy mode
+
+        self.set_result_dir(self.suffix)
+
+        # Before creating or generating file, create stage 'marker' file.
+
+        self.update_scripts_tmp(None, 'preparing')
+
+        # Create working directory (reachable by all the processors)
+
+        self.mk_exec_dir(self.suffix)
+
+        # Copy script before changing to the working directory
+        # (as after that, the relative path will not be up to date).
+
+        self.copy_result(sys.argv[0])
+
+        os.chdir(self.exec_dir)
+
+        # Determine execution environment.
+
+        exec_env = cs_exec_environment.exec_environment(self.exec_dir,
+                                                        n_procs,
+                                                        hosts_list)
+
+        # Set user MPI environment if required.
+
+        if mpi_environment != None:
+            exec_env.mpi_env = mpi_environment
+
+        # Compute number of procesors
+
+        n_procs_tot = self.distribute_procs(exec_env.resources.n_procs)
+
+        if n_procs_tot > 1:
+            exec_env.resources.n_procs = n_procs_tot
+
+        # Greeting message.
+
+        msg = \
+            '\n' \
+            + '                      Code_Saturne is running\n' \
+            + '                      ***********************\n' \
+            + '\n' \
+            + ' Working directory (to be periodically cleaned):\n' \
+            + '   ' +  str(self.exec_dir) + '\n\n' \
+            + ' Kernel version:  ' + cs_config.package.version + '\n' \
+            + ' Preprocessor:    ' + os.path.join(cs_config.dirs.ecs_bindir,
+                                                  'cs_preprocess') + '\n\n'
+        sys.stdout.write(msg)
+
+        self.print_procs_distribution()
+
+        # Compile user subroutines if necessary.
+
+        if self.exec_solver == True:
+
+            need_compile = False
+
+            for d in self.domains:
+                if d.check_model_consistency() != 0:
+                    raise RunCaseError, 'Incompatible model options.'
+                if d.needs_compile() == True:
+                    need_compile = True
+
+            if need_compile == True or len(self.syr_domains) > 0:
+
+                msg = \
+                    " ****************************************\n" \
+                    "  Compiling user subroutines and linking\n" \
+                    " ****************************************\n\n"
+                sys.stdout.write(msg)
+
+                for d in self.domains:
+                    d.compile_and_link()
+
+                for d in self.syr_domains:
+                    d.compile_and_link()
+
+        # Setup data
+        #===========
+
+        sys.stdout.write('\n'
+                         ' ****************************\n'
+                         '  Preparing calculation data\n'
+                         ' ****************************\n\n')
+
+        if self.exec_preprocess:
+            for d in self.domains:
+                d.copy_preprocessor_data()
+        else:
+            for d in self.domains:
+                d.copy_preprocessor_output_data()
+
+        if self.exec_solver:
+
+            for d in self.domains:
+                d.copy_solver_data()
+
+            for d in self.syr_domains:
+                d.copy_data()
+
+        sys.stdout.write('\n'
+                         ' ***************************\n'
+                         '  Preprocessing calculation\n'
+                         ' ***************************\n\n')
+
+        self.summary_init(exec_env)
+
+        if self.exec_preprocess:
+            for d in self.domains:
+                d.run_preprocessor()
+                if len(d.error) > 0:
+                    self.error = d.error
+
+        if self.exec_partition:
+            for d in self.domains:
+                d.run_partitioner()
+                if len(d.error) > 0:
+                    self.error = d.error
+
+        s_path = self.generate_solver_script(exec_env)
+
+        # Rename temporary file to indicate new status
+
+        if len(self.error) == 0:
+            status = 'ready'
+        else:
+            status = 'failed'
+
+        self.update_scripts_tmp('preparing', status)
+
+        # Standard or error exit
+
+        if len(self.error) > 0:
+            stage = {'preprocess':'preprocessing',
+                     'partition':'partitioning'}
+            if self.error in stage:
+                error_stage = stage[self.error]
+            else:
+                error_stage = self.error
+            err_str = ' Error in ' + error_stage + ' stage.\n\n'
+            sys.stderr.write(err_str)
+            return 1
+        else:
+            return 0
+
+    #---------------------------------------------------------------------------
+
+    def run_solver(self,
+                   suffix = None):
+
+        """
+        Run solver proper.
+        """
+
+        if suffix != None:
+            self.suffix = suffix
+
+        if self.exec_dir == None:
+            self.define_exec_dir(self.suffix)
+            self.set_exec_dir(self.exec_dir)
+
+        os.chdir(self.exec_dir)
+
+        # Indicate status using temporary file for SALOME.
+
+        if self.domains[0].logging_args == '--log 0':
+            self.update_scripts_tmp('ready', 'runningstd')
+        else:
+            self.update_scripts_tmp('ready', 'runningext')
+
+        sys.stdout.write('\n'
+                         ' **********************\n'
+                         '  Starting calculation\n'
+                         ' **********************\n\n')
+
+        # Maximum remaining time for PBS or similar batch system.
+
+        if self.exec_solver:
+
+            b = cs_exec_environment.batch_info()
+            max_time = b.get_remaining_time()
+            if max_time != None:
+                os.putenv('CS_MAXTIME', max_time)
+
+        # Now run the calculation
+
+        s_path = self.solver_script_path()
+
+        retcode = cs_exec_environment.run_command(s_path)
+
+        # Update error codes
+
+        if retcode != 0:
+            self.error = 'solver'
+            err_str = \
+                'Code_Saturne solver script exited with status ' \
+                + str(retcode) + '.\n\n'
+            sys.stderr.write(err_str)
+
+        if self.error == 'solver':
+            if len(self.syr_domains) > 0:
+                err_str = \
+                    'Error running the coupled calculation.\n\n' \
+                    'Either Code_Saturne or SYRTHES may have failed.\n\n' \
+                    'Check Code_Saturne log (listing) and SYRTHES log (listsyr)\n' \
+                    'for details, as well as error* files.\n\n'
+            else:
+                err_str = \
+                    'Error running the calculation.\n\n' \
+                    'Check Code_Saturne log (listing) and error* files for details.\n\n'
+            sys.stderr.write(err_str)
+
+        # Indicate status using temporary file for SALOME.
+
+        if retcode == 0:
+            status = 'finished'
+        else:
+            status = 'failed'
+
+        self.update_scripts_tmp(('runningstd', 'runningext'), status)
+
+        return retcode
+
+    #---------------------------------------------------------------------------
+
+    def save_results(self,
+                     suffix = None):
+
+        """
+        Save calcultation results from execution directory to result
+        directory.
+        """
+
+        if suffix != None:
+            self.suffix = suffix
+
+        if self.exec_dir == None:
+            self.define_exec_dir(self.suffix)
+            self.set_exec_dir(self.exec_dir)
+
+        self.set_result_dir(self.suffix)
+
+        os.chdir(self.exec_dir)
+
+        self.update_scripts_tmp(('failed', 'finished'), 'saving')
+
+        # Now save results
+
+        sys.stdout.write('\n'
+                         ' ****************************\n'
+                         '  Saving calculation results\n'
+                         ' ****************************\n\n')
+
+        if self.exec_preprocess:
+            for d in self.domains:
+                d.copy_preprocessor_results()
+
+        if self.exec_partition:
+            for d in self.domains:
+                d.copy_partition_results()
+
+        if self.exec_solver:
+            for d in self.domains:
+                d.copy_solver_results(self.date)
+
+            for d in self.syr_domains:
+                d.copy_results()
+
+        self.summary_finalize()
+
+        self.copy_result('summary')
+
+        # Remove the Salome temporary file
+
+        self.update_scripts_tmp('saving', None)
+
+    #---------------------------------------------------------------------------
+
+    def run(self,
+            n_procs = None,
+            hosts_list = None,
+            mpi_environment = None,
+            exec_prefix = None,
+            suffix = None,
+            prepare_data = True,
+            run_solver = True,
+            save_results = True):
+
+        """
+        Main script.
+        """
+
+        if exec_prefix != None:
+            self.exec_prefix = exec_prefix
+
+        if suffix != None:
+            self.suffix = suffix
+
+        try:
+            retcode = 0
+            if prepare_data == True:
+                retcode = self.prepare_data(n_procs,
+                                            hosts_list,
+                                            mpi_environment)
+            if run_solver == True and run_solver == True:
+                self.run_solver()
+
+            if save_results == True:
+                self.save_results()
+
+        finally:
+            if self.suffix != None:
+                self.update_scripts_tmp(('preparing',
+                                         'ready',
+                                         'runningstd',
+                                         'runningext',
+                                         'finished',
+                                         'failed'), None)
+
+        # Standard or error exit
+
+        if len(self.error) > 0:
+            stage = {'preprocess':'preprocessing',
+                     'partition':'partitioning',
+                     'solver':'calculation'}
+            if self.error in stage:
+                error_stage = stage[self.error]
+            else:
+                error_stage = self.error
+            err_str = ' Error in ' + error_stage + ' stage.\n\n'
+            sys.stderr.write(err_str)
+            return 1
+        else:
+            return 0
+
+    #---------------------------------------------------------------------------
+
diff --git a/bin/cs_case_domain.py b/bin/cs_case_domain.py
new file mode 100644
index 0000000..327d1a4
--- /dev/null
+++ b/bin/cs_case_domain.py
@@ -0,0 +1,1375 @@
+#!/usr/bin/env python
+#
+#-------------------------------------------------------------------------------
+#   This file is part of the Code_Saturne Solver.
+#
+#   Copyright (C) 2009  EDF
+#
+#   Code_Saturne is free software; you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation; either version 2 of the License,
+#   or (at your option) any later version.
+#
+#   Code_Saturne is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty
+#   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   The Code_Saturne Preprocessor is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+#   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public Licence
+#   along with the Code_Saturne Preprocessor; if not, write to the
+#   Free Software Foundation, Inc.,
+#   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#-------------------------------------------------------------------------------
+
+import datetime
+import fnmatch
+import os
+import os.path
+import sys
+import shutil
+import stat
+
+import cs_config
+import cs_compile
+
+from cs_exec_environment import run_command
+
+#===============================================================================
+# Constants
+#===============================================================================
+
+solver_base_name = 'cs_solver'
+
+#===============================================================================
+# Utility functions
+#===============================================================================
+
+def any_to_str(arg):
+    """Transform single values or lists to a whitespace-separated string"""
+
+    s = ''
+
+    if type(arg) == tuple or type(arg) == list:
+        for e in arg:
+            s += ' ' + str(e)
+        return s[1:]
+
+    else:
+        return str(arg)
+
+#-------------------------------------------------------------------------------
+
+class RunCaseError(Exception):
+    """Base class for exception handling."""
+
+    def __init__(self, *args):
+        self.args = args
+
+    def __str__(self):
+        if len(self.args) == 1:
+            return str(self.args[0])
+        else:
+            return str(self.args)
+
+#   def __repr__(self):
+#       return "%s(*%s)" % (self.__class__.__name__, repr(self.args))
+
+#===============================================================================
+# Classes
+#===============================================================================
+
+class base_domain:
+    """
+    Base class from which classes handling running case should inherit.
+    """
+
+    #---------------------------------------------------------------------------
+
+    def __init__(self,
+                 n_procs = None,          # recommended number of processes
+                 n_procs_min = 1,         # min. number of processes
+                 n_procs_max = None):     # max. number of processes
+
+        # Names, directories, and files in case structure
+
+        self.case_dir = None
+
+        self.tag = None # used for multiple domains only
+
+        self.data_dir = None
+        self.result_dir = None
+        self.src_dir = None
+
+        self.result_suffix = None
+
+        self.mesh_dir = None
+
+        # Working directory and executable
+
+        self.exec_dir = None
+        self.solver_path = None
+
+        # Execution and debugging options
+
+        self.n_procs = n_procs
+        self.n_procs_min = max(1, n_procs_min)
+        self.n_procs_max = n_procs_max
+
+        if self.n_procs == None:
+            self.n_procs = 1
+        self.n_procs = max(self.n_procs, self.n_procs_min)
+        if self.n_procs_max != None:
+            self.n_procs = min(self.n_procs, self.n_procs_max)
+
+        self.valgrind = None
+
+        # Error reporting
+        self.error = ''
+
+    #---------------------------------------------------------------------------
+
+    def set_tag(self, tag):
+
+        # Subdirectory or suffix in case of multiple domains
+        # (must be called before set_case_dir)
+
+        self.tag = str(tag)
+
+    #---------------------------------------------------------------------------
+
+    def set_case_dir(self, case_dir):
+
+        # Names, directories, and files in case structure
+
+        study_dir = os.path.split(case_dir)[0]
+
+        self.case_dir = case_dir
+
+        self.data_dir = os.path.join(self.case_dir, 'DATA')
+        self.result_dir = os.path.join(self.case_dir, 'RESU')
+        self.src_dir = os.path.join(self.case_dir, 'SRC')
+
+        if (self.tag != None):
+            self.data_dir += '.' + self.tag
+            self.src_dir += '.' + self.tag
+
+        self.mesh_dir = os.path.join(study_dir, 'MESH')
+
+    #---------------------------------------------------------------------------
+
+    def set_exec_dir(self, exec_dir):
+
+        if os.path.isabs(exec_dir):
+            self.exec_dir = exec_dir
+        else:
+            self.exec_dir = os.path.join(self.case_dir, 'RESU', exec_dir)
+
+        if self.tag != None:
+            self.exec_dir = os.path.join(self.exec_dir, self.tag)
+
+        if not os.path.isdir(self.exec_dir):
+            os.makedirs(self.exec_dir)
+
+    #---------------------------------------------------------------------------
+
+    def set_result_dir(self, name, by_suffix=True):
+        """
+        If suffix = true, add suffix to all names in result dir.
+        Otherwise, create subdirectory
+        """
+
+        if by_suffix == True:
+            self.result_dir = os.path.join(self.case_dir, 'RESU')
+            self.result_suffix = name
+
+        else:
+            self.result_dir = os.path.join(self.case_dir, 'RESU', name)
+            if (self.tag != None):
+                self.result_dir = os.path.join(self.result_dir,
+                                               self.tag)
+
+        if not os.path.isdir(self.result_dir):
+            os.makedirs(self.result_dir)
+
+    #---------------------------------------------------------------------------
+
+    def copy_data_file(self, name, copy_name=None, description=None):
+        """
+        Copy a data file to the execution directory.
+        """
+        if os.path.isabs(name):
+            source = name
+            if copy_name == None:
+                dest = os.path.join(self.exec_dir, os.path.basename(name))
+            elif os.path.isabs(copy_name):
+                dest = copy_name
+            else:
+                dest = os.path.join(self.exec_dir, copy_name)
+        else:
+            source = os.path.join(self.data_dir, name)
+            if copy_name == None:
+                dest = os.path.join(self.exec_dir, name)
+            elif os.path.isabs(copy_name):
+                dest = copy_name
+            else:
+                dest = os.path.join(self.exec_dir, copy_name)
+
+        if os.path.isfile(source):
+            shutil.copy2(source, dest)
+        else:
+            if description != None:
+                err_str = \
+                    'The ' + description + ' file: ', name, '\n' \
+                    'can not be accessed.'
+            else:
+                err_str = \
+                    'File: ', name, '\n' \
+                    'can not be accessed.'
+            raise RunCaseError, err_str
+
+    #---------------------------------------------------------------------------
+
+    def copy_result(self, name, destname=None):
+        """
+        Copy a file or directory to the results directory.
+        """
+
+        # Determine absolute source and destination names
+
+        if os.path.isabs(name):
+            src = name
+        else:
+            src = os.path.join(self.exec_dir, name)
+
+        if destname == None:
+            dest = os.path.basename(name)
+        else:
+            dest = destname
+
+        if not os.path.isabs(dest):
+            dest = os.path.join(self.result_dir, dest)
+            if (self.result_suffix != None):
+                if (self.tag != None):
+                    dest += '.' + self.tag
+                dest += '.' + self.result_suffix
+
+        # Copy single file
+
+        if os.path.isfile(src):
+            shutil.copy2(src, dest)
+
+        # Copy single directory (possibly recursive)
+        # Unkike os.path.copytree, the destination directory
+        # may already exist.
+
+        elif os.path.isdir(src):
+            if not os.path.isdir(dest):
+                os.mkdir(dest)
+            list = os.listdir(src)
+            for f in list:
+                f_src = os.path.join(src, f)
+                f_dest = os.path.join(dest, f)
+                if os.path.isfile(f_src):
+                    shutil.copy2(f_src, f_dest)
+                elif os.path.isdir(f_src):
+                    self.copy_result(f_src, f_dest)
+
+    #---------------------------------------------------------------------------
+
+    def copy_results_to_dir(self, names, dirname):
+        """
+        Copy result files to a given directory (a subdirectory
+        of the results directory if a relative path is given).
+        """
+
+        if os.path.isabs(dirname):
+            dirpath = dirname
+        else:
+            dirpath = os.path.join(self.result_dir, dirname)
+            if (self.result_suffix != None):
+                if (self.tag != None):
+                    dirpath += '.' + self.tag
+                dirpath += '.' + self.result_suffix
+
+        if not os.path.isdir(dirpath):
+            os.mkdir(dirpath)
+
+        for name in names:
+            if os.path.isabs(name):
+                src = name
+                dest = os.path.join(dirpath, os.path.basename(name))
+            else:
+                src = os.path.join(self.exec_dir, name)
+                dest = os.path.join(dirpath, name)
+            if os.path.isfile(src):
+                shutil.copy2(src, dest)
+            elif os.path.isdir(src):
+                self.copy_result(src, dest)
+
+    #---------------------------------------------------------------------------
+
+    def get_n_procs(self):
+        """
+        Returns an array (list) containing the current number of processes
+        associated with a solver stage followed by the minimum and maximum
+        number of processes.
+        """
+
+        return [self.n_procs, self.n_procs_min, self.n_procs_max]
+
+    #---------------------------------------------------------------------------
+
+    def set_n_procs(self, n_procs):
+        """
+        Assign a number of processes to a solver stage.
+        """
+
+        self.n_procs = n_procs
+
+    #---------------------------------------------------------------------------
+
+    def solver_args(self, **kw):
+        """
+        Returns a tuple indicating the solver's working directory,
+        executable path, and associated command-line arguments.
+        """
+
+        return self.exec_dir, self.solver_path, ''
+
+#-------------------------------------------------------------------------------
+
+class domain(base_domain):
+    """Handle running case."""
+
+    #---------------------------------------------------------------------------
+
+    def __init__(self,
+                 n_procs = None,              # recommended number of processes
+                 n_procs_min = None,          # min. number of processes
+                 n_procs_max = None,          # max. number of processes
+                 meshes = None,               # name or names of mesh files
+                 reorient = False,            # reorient badly-oriented meshes
+                 join = None,                 # command-line options
+                 periodicity = None,          # command-line options
+                 partition_list = None,       # list of partitions
+                 partition_opts = None,       # partitioner options
+                 solcom = False,              # use old geomet mesh file input
+                 cut_warped_faces = None,     # command-line option
+                 mode_args = None,            # --quality or --benchmark ?
+                 logging_args = None,         # command-line options for logging
+                 param = None,                # XML parameters file
+                 thermochemistry_data = None, # file name
+                 meteo_data = None,           # meteo. profileFile name
+                 user_input_files = None,     # file name or names
+                 user_output_files = None,    # file or directory name or names
+                 lib_add = None,              # linker command-line options
+                 adaptation = None):           # HOMARD adaptation script
+
+        base_domain.__init__(self, n_procs, n_procs_min, n_procs_max)
+
+        # Names, directories, and files in case structure
+
+        self.result_suffix = None
+
+        self.restart_input_dir = None
+        self.preprocess_output_in = None
+        self.partition_output_in = None
+
+        # Default executable
+
+        self.solver_path = os.path.join(cs_config.dirs.bindir,
+                                        solver_base_name)
+
+        # Preprocessor options
+
+        if type(meshes) == tuple or type(meshes) == list:
+            self.meshes = meshes
+        else:
+            self.meshes = (meshes,)
+        self.reorient = reorient
+
+        self.join = join
+        self.periodicity = periodicity
+
+        # Partition options
+
+        self.partition_list = partition_list
+        self.partition_opts = partition_opts
+
+        # Solver options
+
+        self.solcom = solcom
+        self.cut_warped_faces = cut_warped_faces
+        self.mode_args = mode_args
+
+        self.logging_args = logging_args
+
+        self.param = param
+
+        # Additional data
+
+        self.thermochemistry_data = thermochemistry_data
+        self.meteo_data = meteo_data
+
+        self.user_input_files = user_input_files
+        self.user_output_files = user_output_files
+
+        self.lib_add = lib_add
+
+        # Adaptation using HOMARD
+        self.adaptation = adaptation
+
+        # Steps to execute
+        self.exec_preprocess = True
+        self.exec_partition = True
+        self.exec_solver = True
+
+        # Other precautions.
+
+        if self.solcom == True:
+            self.n_procs_max = 1
+            if self.n_procs > self.n_procs_max:
+                err_str = '\n' \
+                    ' Parallel run ' + self.for_domain_str() \
+                    + 'impossible with solcom=', self.solcom, '.\n,'
+                raise RunCaseError, err_str
+
+    #---------------------------------------------------------------------------
+
+    def for_domain_str(self):
+
+        if self.tag == None:
+            return ''
+        else:
+            return 'for domain ' + str(self.tag)
+
+    #---------------------------------------------------------------------------
+
+    def set_case_dir(self, case_dir):
+
+        # Names, directories, and files in case structure
+
+        base_domain.set_case_dir(self, case_dir)
+
+        self.restart_input_dir = os.path.join(self.data_dir, 'RESTART')
+        self.preprocess_output_in = os.path.join(self.data_dir,
+                                                 'preprocessor_output')
+        self.partition_output_in = os.path.join(self.data_dir,
+                                                'PARTITION_OUTPUT')
+
+    #---------------------------------------------------------------------------
+
+    def symlink(self, target, link=None, check_type=None):
+        """
+        Create a symbolic link to a file, or copy it if links are
+        not possible
+        """
+
+        if target == None and link == None:
+            return
+        elif target == None:
+            err_str = 'No target for link: ' + link
+            raise RunCaseError, err_str
+        elif link == None:
+            if self.exec_dir != None:
+                link = os.path.join(self.exec_dir,
+                                    os.path.basename(target))
+            else:
+                err_str = 'No path name given for link to: ' + target
+                raise RunCaseError, err_str
+
+        if not os.path.exists(target):
+            err_str = 'File: ' + target + ' does not exist.'
+            raise RunCaseError, err_str
+
+        elif check_type == 'file':
+            if not os.path.isfile(target):
+                err_str = target + ' is not a regular file.'
+                raise RunCaseError, err_str
+
+        elif check_type == 'dir':
+            if not os.path.isdir(target):
+                err_str = target + ' is not a directory.'
+                raise RunCaseError, err_str
+
+        try:
+            os.symlink(target, link)
+        except AttributeError:
+            shutil.copy2(target, link)
+
+    #---------------------------------------------------------------------------
+
+    def link_solcom_mesh(self):
+        """
+        Link SolCom mesh file to the execution directory
+        """
+
+        mesh = self.meshes[0]
+        base_name = os.path.basename(mesh)
+        if base_name == mesh:
+            mesh_path = os.path.join(self.mesh_dir, base_name)
+        else:
+            mesh_path = mesh
+            link_path = os.path.join(self.exec_dir, 'geomet')
+        self.symlink(mesh_path, link_path)
+
+    #---------------------------------------------------------------------------
+
+    def needs_compile(self):
+        """
+        Compile and link user subroutines if necessary
+        """
+        # Check if there are files to compile in source path
+
+        dir_files = os.listdir(self.src_dir)
+
+        src_files = (fnmatch.filter(dir_files, '*.c')
+                     + fnmatch.filter(dir_files, '*.[fF]90'))
+
+        if len(src_files) > 0:
+            return True
+        else:
+            return False
+
+    #---------------------------------------------------------------------------
+
+    def compile_and_link(self):
+        """
+        Compile and link user subroutines if necessary
+        """
+        # Check if there are files to compile in source path
+
+        dir_files = os.listdir(self.src_dir)
+
+        src_files = (fnmatch.filter(dir_files, '*.c')
+                     + fnmatch.filter(dir_files, '*.[fF]90'))
+
+        if len(src_files) > 0:
+
+            # Add header files to list so as not to forget to copy them
+
+            src_files = src_files + fnmatch.filter(dir_files, '*.h')
+
+            # Copy source files to result directory
+
+            copy_dir = os.path.join(self.result_dir, 'SRC')
+            if (self.result_suffix != None):
+                if (self.tag != None):
+                    copy_dir += '.' + self.tag
+                copy_dir += '.' + self.result_suffix
+
+            os.makedirs(copy_dir)
+
+            for f in src_files:
+                src_file = os.path.join(self.src_dir, f)
+                dest_file = os.path.join(copy_dir, f)
+                shutil.copy2(src_file, dest_file)
+                try:
+                    oldmode = (os.stat(dest_file)).stmode
+                    newmode = oldmode & (stat.IRUSR | stat.IRGRP | stat.IROTH)
+                    os.chmod(dest_file, newmode)
+                except Exception:
+                    pass
+
+            # Copy source files to execution directory
+
+            if (self.exec_dir != self.result_dir):
+                exec_src = os.path.join(self.exec_dir, 'src_saturne')
+                os.mkdir(exec_src)
+                for f in src_files:
+                    src_file = os.path.join(self.src_dir, f)
+                    dest_file = os.path.join(exec_src, f)
+                    shutil.copy2(src_file, dest_file)
+
+            log_name = os.path.join(self.exec_dir, 'compile.log')
+            log = open(log_name, 'w')
+
+            # Note: src_dir and copy_dir should contain identical source files,
+            #       but we prefer to use the copied version, so that if the
+            #       source is later modified, possible debug information in an
+            #       executable file will reference the correct (saved) version.
+
+            retval = cs_compile.compile_and_link(copy_dir,
+                                                 self.exec_dir,
+                                                 self.lib_add,
+                                                 False,
+                                                 stdout=log,
+                                                 stderr=log)
+
+            log.close()
+            self.copy_result(log_name)
+
+            if retval == 0:
+                self.solver_path = os.path.join(self.exec_dir,
+                                                solver_base_name)
+            else:
+                raise RunCaseError, 'Compile or link error.'
+
+    #---------------------------------------------------------------------------
+
+    def check_model_consistency(self):
+        """
+        Check model user subroutine and xml options consistency
+        """
+        from cs_check_consistency import check_consistency
+        return check_consistency(self.param, self.src_dir, self.n_procs)
+
+
+    #---------------------------------------------------------------------------
+
+    def copy_preprocessor_data(self):
+        """
+        Copy preprocessor data to execution directory
+        """
+
+        if self.exec_preprocess == False:
+            return
+
+        for mesh in self.meshes:
+
+            base_name = os.path.basename(mesh)
+
+            if base_name == mesh:
+                mesh_path = os.path.join(self.mesh_dir, base_name)
+            else:
+                mesh_path = mesh
+
+            link_path = os.path.join(self.exec_dir, base_name)
+            self.symlink(mesh_path, link_path)
+
+            # Special case for meshes in EnSight format: link to .geo file
+            # necessary (retrieve name through .case file)
+            base, ext = os.path.splitext(base_name)
+            if ext == '.case':
+                try:
+                    f = open(mesh_path)
+                    text = f.read(4096) # Should be largely sufficient
+                    f.close()
+                    m = re.search('^model:.*$', text, re.MULTILINE)
+                    geo_name = (m.group()).split()[1]
+                    mesh_path = os.path.join(self.mesh_dir, geo_name)
+                    link_path = os.path.join(self.exec_dir, geo_name)
+                    self.symlink(mesh_path, link_path)
+                except Exception:
+                    err_str = 'Model file name not found in ' + mesh_path
+                    raise RunCaseError, err_str
+
+    #---------------------------------------------------------------------------
+
+    def copy_preprocessor_output_data(self):
+        """
+        Copy preprocessor_output file to the execution directory,
+        required both for the partitioner and the solver.
+        """
+
+        if self.exec_preprocess or self.solcom:
+            return
+        elif not (self.exec_partition or self.exec_solver):
+            return
+
+        if self.preprocess_output_in != None:
+            self.symlink(self.preprocess_output_in,
+                         os.path.join(self.exec_dir, 'preprocessor_output'),
+                         'file')
+        else:
+            err_str = 'Error: no path name given for link to: ' + target
+            raise RunCaseError, err_str
+
+    #---------------------------------------------------------------------------
+
+    def copy_solver_data(self):
+        """
+        Copy solver data to the execution directory
+        """
+
+        if self.exec_solver == False:
+            return
+
+        if self.solcom:
+            self.link_solcom_mesh()
+
+        if self.n_procs < 2:
+            self.exec_partition = False
+        elif self.exec_partition == False and self.partition_output_in != None:
+            partition = os.path.join(self.partition_output_in,
+                                     'domain_number_' + str(self.n_procs))
+            if os.path.isfile(partition):
+                self.symlink(partition)
+            else:
+                w_str = \
+                    'Warning: no partitioning file is available\n' \
+                    '         (no ' + partition + ').\n' \
+                    '\n' \
+                    '         Geometry-based partitioning will be used.\n'
+                sys.stderr.write(w_str)
+
+        # Parameters file
+
+        if self.param != None:
+            self.copy_data_file(self.param,
+                                os.path.basename(self.param),
+                                'parameters')
+
+        # Restart files
+
+        if self.restart_input_dir != None:
+
+            if os.path.exists(self.restart_input_dir):
+
+                if not os.path.isdir(self.restart_input_dir):
+                    err_str = self.restart_input_dir + ' is not a directory.'
+                    raise RunCaseError, err_str
+
+                rename = {'suiava':'suiamo',
+                          'suiavx':'suiamx',
+                          'vorava':'voramo',
+                          't1dava':'t1damo',
+                          'rayava':'rayamo',
+                          'lagava':'lagamo',
+                          'lasava':'lasamo',
+                          'ctwava':'ctwamo'}
+
+                l = os.listdir(self.restart_input_dir)
+                for f in l:
+                    if f in rename:
+                        self.symlink(os.path.join(self.restart_input_dir, f),
+                                     os.path.join(self.exec_dir, rename[f]),
+                                     'file')
+
+        # Data for specific physics
+
+        if self.thermochemistry_data != None:
+            self.copy_data_file(self.thermochemistry_data,
+                                'dp_thch',
+                                'thermochemistry')
+            self.copy_data_file(os.path.join(cs_config.dirs.pkgdatadir,
+                                             'data',
+                                             'thch',
+                                             'JANAF'),
+                                'JANAF')
+
+        if self.meteo_data != None:
+            self.copy_data_file(self.meteo_data,
+                                'meteo',
+                                'meteo profile')
+            # Second copy so as to have correct name upon backup
+            if self.meteo_data != 'meteo':
+                self.copy_data_file(self.meteo_data)
+
+        # Presence of user input files
+
+        if self.user_input_files != None:
+            for f in self.user_input_files:
+                self.copy_data_file(f)
+
+    #---------------------------------------------------------------------------
+
+    def run_preprocessor(self):
+        """
+        Runs the preprocessor in the execution directory
+        """
+
+        if self.exec_preprocess == False:
+            return
+
+        # Build command
+
+        cmd = os.path.join(cs_config.dirs.ecs_bindir, 'cs_preprocess')
+        for m in self.meshes:
+            if type(m) == str:
+                cmd += ' --mesh ' + m
+            elif type(m) == tuple:
+                cmd += ' --mesh ' + m[0]
+                if m[1] != None:
+                    cmd += ' --num ' + m[1]
+                if m[2] != None:
+                    cmd += ' --format ' + m[2]
+
+        if self.reorient:
+            cmd += ' --reorient'
+
+        if self.join != None:
+            cmd += ' ' + self.join
+        if self.periodicity != None:
+            cmd += ' ' + self.periodicity
+
+        cmd += ' --log'
+
+        # Run command
+
+        cur_dir = os.path.realpath(os.getcwd())
+        if cur_dir != self.exec_dir:
+            os.chdir(self.exec_dir)
+
+        retcode = run_command(cmd)
+
+        if retcode != 0:
+            err_str = \
+                'Error running the preprocessor.\n' \
+                'Check the preprocessor.log file for details.\n\n'
+            sys.stderr.write(err_str)
+
+            self.exec_partition = False
+            self.exec_solver = False
+
+            self.error = 'preprocess'
+
+        if cur_dir != self.exec_dir:
+            os.chdir(cur_dir)
+
+        return retcode
+
+    #---------------------------------------------------------------------------
+
+    def run_partitioner(self):
+        """
+        Runs the partitioner in the execution directory
+        """
+
+        partitioner = os.path.join(cs_config.dirs.ecs_bindir, 'cs_partition')
+        if not os.path.isfile(partitioner):
+            if self.n_procs > 1:
+                w_str = \
+                    'Warning: ' + partitioner + ' not found.\n\n' \
+                    'The partitioner may not have been installed' \
+                    '  (this is the case if neither METIS nor SCOTCH ' \
+                    ' are avaialable).\n\n' \
+                    'Unoptimized partitioning will be used, so ' \
+                    'parallel performance may be degraded.\n\n'
+                sys.stderr.write(w_str)
+            self.exec_partition = False
+
+        if self.exec_partition == False:
+            return
+
+        # Build command
+
+        cmd = os.path.join(cs_config.dirs.ecs_bindir, 'cs_partition')
+
+        if self.partition_opts != None:
+            cmd += ' ' + self.partition_opts
+
+        if self.partition_list != None:
+            cmd += ' ' + any_to_str(self.partition_list)
+
+        elif not self.exec_solver:
+            err_str = \
+                'Error running the partitioner.\n' \
+                'The list of required partitionings is not set.\n' \
+                'It should contain the number of processors for which a\n' \
+                'partition is required, or a list of such numbers.\n'
+            raise RunCaseError, err_str
+
+        if self.exec_solver and self.n_procs != None:
+            p = str(self.n_procs)
+            if self.partition_list == None:
+                cmd += ' ' + p
+            elif self.n_procs > 1 and not p in self.partition_list:
+                cmd += ' ' + p
+
+        cmd += ' > partition.log'
+
+        # Run command
+
+        cur_dir = os.path.realpath(os.getcwd())
+        if cur_dir != self.exec_dir:
+            os.chdir(self.exec_dir)
+
+        retcode = run_command(cmd)
+
+        if retcode != 0:
+            err_str = \
+                'Error running the partitioner.\n' \
+                'Check the partition.log file for details.\n\n'
+            sys.stderr.write(err_str)
+
+            self.exec_solver = False
+
+            self.error = 'partition'
+
+        if cur_dir != self.exec_dir:
+            os.chdir(cur_dir)
+
+        return retcode
+
+    #---------------------------------------------------------------------------
+
+    def solver_args(self, **kw):
+        """
+        Returns a tuple indicating the solver's working directory,
+        executable path, and associated command-line arguments.
+        """
+
+        wd = self.exec_dir              # Working directory
+        exec_path = self.solver_path    # Executable
+
+        # Build kernel command-line arguments
+
+        args = ''
+
+        if self.param != None:
+            args += ' --param ' + self.param
+
+        if self.logging_args != None:
+            args += ' ' + self.logging_args
+
+        if not self.solcom:
+            if self.cut_warped_faces != None:
+                args += ' ' + self.cut_warped_faces
+
+        else:
+            args += ' --solcom'
+
+        if self.mode_args != None:
+            args += ' ' + self.mode_args
+
+        if 'app_id' in kw:
+            args += ' --mpi ' + str(kw['app_id'])
+        elif self.n_procs > 1:
+            args += ' --mpi'
+
+        if 'syr_port' in kw:
+            args += ' --syr-socket ' + str(kw['syr_port'])
+
+        # Adjust for Valgrind if used
+
+        if self.valgrind != None:
+            args = self.solver_path + ' ' + args
+            exec_path = self.valgrind
+
+        return wd, exec_path, args
+
+    #---------------------------------------------------------------------------
+
+    def copy_preprocessor_results(self):
+        """
+        Retrieve preprocessor results from the execution directory
+        """
+
+        if self.exec_dir == self.result_dir and self.result_suffix == None:
+            return
+
+        dir_files = os.listdir(self.exec_dir)
+
+        # Copy log file first
+
+        f = os.path.join(self.exec_dir, 'preprocessor.log')
+        if os.path.isfile(f):
+            self.copy_result(f)
+
+        # copy output if required
+
+        if not self.exec_solver:
+            f = os.path.join(self.exec_dir, 'preprocessor_output')
+            if os.path.isfile(f):
+                self.copy_result(f)
+
+    #---------------------------------------------------------------------------
+
+    def copy_partition_results(self):
+        """
+        Retrieve partition results from the execution directory
+        """
+
+        if self.exec_dir == self.result_dir and self.result_suffix == None:
+            return
+
+        dir_files = os.listdir(self.exec_dir)
+
+        # Copy log file first
+
+        f = os.path.join(self.exec_dir, 'partition.log')
+        if os.path.isfile(f):
+            self.copy_result(f)
+
+        # copy output if required
+
+        if not self.exec_solver:
+
+            part_files = fnmatch.filter(dir_files, 'domain_number_*')
+            self.copy_results_to_dir(part_files, 'PARTITION_OUTPUT')
+
+    #---------------------------------------------------------------------------
+
+    def copy_solver_results(self, date=None):
+        """
+        Retrieve solver results from the execution directory
+        """
+
+        if self.exec_dir == self.result_dir and self.result_suffix == None:
+            return
+
+        dir_files = os.listdir(self.exec_dir)
+
+        # Copy log files first
+
+        log_files = fnmatch.filter(dir_files, 'listing*')
+        log_files.extend(fnmatch.filter(dir_files, 'error*'))
+
+        for f in log_files:
+            self.copy_result(f)
+
+        # Copy restart files second (in case of full disk,
+        # increases chances of being able to continue).
+
+        restart_files = []
+        for f in ['suiava', 'suiavx', 't1dava', 'vorava', 'rayava']:
+            if f in dir_files:
+                restart_files.append(f)
+        restart_files.extend(fnmatch.filter(dir_files, 'lagava*'))
+        restart_files.extend(fnmatch.filter(dir_files, 'lasava*'))
+
+        self.copy_results_to_dir(restart_files, 'RESTART')
+
+        # User files
+
+        if self.user_output_files != None:
+            user_files = []
+            for f in self.user_output_files:
+                if f in dir_files:
+                    user_files.append(f)
+            if len(user_files) > 0:
+                self.copy_results_to_dir(restart_files, 'RES_USER')
+
+        # Parameter or similar data files
+
+        if self.param != None:
+            self.copy_result(self.param)
+
+        if self.thermochemistry_data != None:
+            self.copy_result(self.thermochemistry_data)
+
+        if self.meteo_data != None:
+            self.copy_result(self.meteo_data)
+
+        # Plot history (including user history) files
+
+        history_files = fnmatch.filter(dir_files, '*.dat')
+        history_files.extend(fnmatch.filter(dir_files, 'ush*'))
+        if len(history_files) > 0:
+            self.copy_results_to_dir(history_files, 'HIST')
+
+        post_list = fnmatch.filter(dir_files, '*.ensight')
+        post_list.extend(fnmatch.filter(dir_files, '*.med'))
+        post_list.extend(fnmatch.filter(dir_files, '*.cgns'))
+
+        # Retrieve postprocessor output.
+
+        # We handle both files and directories here; *.ensight
+        # files are always directories, and *.med or *.cgns files
+        # are always regular files, but the user could define
+        # an output directory with a .med extension, especially if
+        # there are many separate *.med files.
+
+        # Directories in the form dir.extension (for example chr.ensight)
+        # are copied to DIR.SUFFIX, or DIR.extension (for example
+        # CHR.SUFFIX or CHR.ensight) depending on the suffix behavior
+
+        for p in post_list:
+
+            p_abs = os.path.join(self.exec_dir, p)
+
+            if os.path.isfile(p_abs):
+                self.copy_result(p_abs)
+
+            elif os.path.isdir(p_abs):
+                p_base, p_ext = os.path.splitext(p)
+                p_dest = os.path.join(self.result_dir, p_base.upper()) \
+                    + p_ext.upper()
+                if self.result_suffix != None:
+                    if (self.tag != None):
+                        p_dest += '.' + self.tag
+                    p_dest += '.' + self.result_suffix
+
+                self.copy_result(p_abs, p_dest)
+
+        # Handle solver-specific postprocessing output
+
+        radiative_files = fnmatch.filter(dir_files, 'bord*')
+        if len(radiative_files) > 0:
+            self.copy_results_to_dir(radiative_files, 'CHR')
+
+        lagr_files = fnmatch.filter(dir_files, 'deplacement*')
+        lagr_files.extend(fnmatch.filter(dir_files, 'trajectoire*'))
+        lagr_files.extend(fnmatch.filter(dir_files, 'frontiere*'))
+        lagr_files.extend(fnmatch.filter(dir_files, 'debug*'))
+        if len(lagr_files) > 0:
+            self.copy_results_to_dir(lagr_files, 'LAGR')
+
+        # Matisse output files
+
+        res_matisse = os.path.join(self.exec_dir, 'resuMatisse')
+        if os.path.isfile(res_matisse):
+            matisse = get_command_output('grep -i matisse '
+                                         + os.path.join(self.data_dir,
+                                                        self.param))
+            if date != None and len(matisse) > 0:
+                # Add the date to the first line of resuMatisse
+                f = open(res_matisse, 'r')
+                s = f.read()
+                f.close()
+                f = open(res_matisse, 'w')
+                f.write('Date of the case                                       : ' + date + '\n')
+                f.write(s)
+                f.close()
+            self.copy_result('resuMatisse')
+
+#-------------------------------------------------------------------------------
+
+class syrthes_domain(base_domain):
+
+    def __init__(self,
+                 syrthes_env = 'syrthes.env',  # SYRTHES environment file
+                 echo_comm = None,             # coupling verbosity
+                 coupling_mode = 'MPI',        # 'MPI' or 'sockets'
+                 coupled_app_ids = 1):         # coupled aplication ids
+
+        base_domain.__init__(self, 1, 1, 1)
+
+        # Names, directories, and files in case structure
+        self.data_dir = None
+        self.result_dir = None
+        self.src_dir = None
+        self.result_suffix = None
+        self.syrthes_env = 'syrthes.env'
+        self.echo_comm = None
+
+        self.set_coupling_mode(coupling_mode)
+
+        self.coupled_app_ids = coupled_app_ids
+
+    #---------------------------------------------------------------------------
+
+    def set_case_dir(self, case_dir):
+
+        base_domain.set_case_dir(self, case_dir)
+
+        # Names, directories, and files in case structure
+
+        self.data_dir = os.path.join(case_dir, 'DATA_SYR')
+        self.src_dir = os.path.join(case_dir, 'SRC_SYR')
+
+        if (self.tag != None):
+            self.data_dir += '.' + self.tag
+            self.src_dir += '.' + self.tag
+
+    #---------------------------------------------------------------------------
+
+    def set_coupling_mode(self, coupling_mode):
+
+        # Check that coupling mode is either 'MPI' or 'sockets'
+        coupling_modes = ('MPI', 'sockets')
+        if coupling_mode not in coupling_modes:
+            err_str = \
+                'SYRTHES3 coupling mode "' + coupling_mode + '" unknown.\n' \
+                + 'Allowed modes: ' + str(coupling_modes) + '.\n'
+            raise RunCaseError, err_str
+
+        # Coupling mode
+        self.coupling_mode = coupling_mode
+
+    #---------------------------------------------------------------------------
+
+    def set_verbosity(self, verbosity):
+
+        self.echo_comm = verbosity
+
+    #---------------------------------------------------------------------------
+
+    def compile_and_link(self):
+        """
+        Compile and link user subroutines if necessary
+        """
+
+        # Check if there are files to compile in source path
+
+        dir_files = os.listdir(self.src_dir)
+
+        src_files = (fnmatch.filter(dir_files, '*.c')
+                     + fnmatch.filter(dir_files, '*.[fF]'))
+
+        copy_dir = None
+
+        if len(src_files) > 0:
+
+            # Add header files to list so as not to forget to copy them
+
+            src_files = src_files + fnmatch.filter(dir_files, '*.h')
+
+            # Copy source files to result directory
+
+            copy_dir = os.path.join(self.result_dir, 'SRC_SYRTHES')
+            if (self.result_suffix != None):
+                if (self.tag != None):
+                    copy_dir += '.' + self.tag
+                copy_dir += '.' + self.result_suffix
+
+            os.makedirs(copy_dir)
+
+            for f in src_files:
+                src_file = os.path.join(self.src_dir, f)
+                dest_file = os.path.join(copy_dir, f)
+                shutil.copy2(src_file, dest_file)
+                try:
+                    oldmode = (os.stat(dest_file)).stmode
+                    newmode = oldmode & (stat.IRUSR | stat.IRGRP | stat.IROTH)
+                    os.chmod(dest_file, newmode)
+                except Exception:
+                    pass
+
+            # Copy source files to execution directory
+
+
+            if (self.exec_dir != self.result_dir):
+                exec_src = os.path.join(self.exec_dir, 'src_syrthes')
+                os.mkdir(exec_src)
+                for f in src_files:
+                    src_file = os.path.join(self.src_dir, f)
+                    dest_file = os.path.join(exec_src, f)
+                    shutil.copy2(src_file, dest_file)
+
+        log_name = os.path.join(self.exec_dir, 'compile_syrthes.log')
+        log = open(log_name, 'w')
+
+        # Note: src_dir and copy_dir should contain identical source files,
+        #       but we prefer to use the copied version, so that if the
+        #       source is later modified, possible debug information in an
+        #       executable file will reference the correct (saved) version.
+
+        retval = cs_compile.compile_and_link_syrthes(copy_dir,
+                                                     self.exec_dir,
+                                                     stdout=log,
+                                                     stderr=log)
+
+        log.close()
+        self.copy_result(log_name)
+
+        if retval != 0:
+            raise RunCaseError, 'Compile or link error.'
+
+        self.solver_path = os.path.join(self.exec_dir, 'syrthes')
+
+    #---------------------------------------------------------------------------
+
+    def set_exec_dir(self, exec_dir):
+
+        if os.path.isabs(exec_dir):
+            self.exec_dir = exec_dir
+        else:
+            self.exec_dir = os.path.join(self.case_dir, 'RESU', exec_dir)
+
+        if self.tag != None:
+            self.exec_dir = os.path.join(self.exec_dir, 'SYR_' + self.tag)
+
+        if not os.path.isdir(self.exec_dir):
+            os.mkdir(self.exec_dir)
+
+    #---------------------------------------------------------------------------
+
+    def set_result_dir(self, name, by_suffix=True):
+        """
+        If suffix = true, add suffix to all names in result dir.
+        Otherwise, create subdirectory
+        """
+
+        if by_suffix == True:
+            self.result_dir = os.path.join(self.case_dir, 'RESU', 'RESU_SYR')
+            self.result_suffix = name
+
+        else:
+            self.result_dir = os.path.join(self.case_dir,
+                                           'RESU',
+                                           name,
+                                           'RESU_SYR')
+            if (self.tag != None):
+                self.result_dir += '.' + self.tag
+
+        if not os.path.isdir(self.result_dir):
+            os.makedirs(self.result_dir)
+
+    #---------------------------------------------------------------------------
+
+    def solver_args(self, **kw):
+        """
+        Returns a tuple indicating SYRTHES's working directory,
+        executable path, and associated command-line arguments.
+        """
+
+        wd = self.exec_dir              # Working directory
+        exec_path = self.solver_path    # Executable
+
+        # Build kernel command-line arguments
+
+        args = ''
+        if self.echo_comm != None:
+            args += ' -echo-comm ' + str(self.echo_comm)
+            syr_cmd += ' > listsyr 2>&1\n'
+
+        if self.coupling_mode == 'MPI':
+
+            if 'app_id' in kw:
+                args += ' -app-num ' + str(kw['app_id'])
+            else:
+                args += ' -app-num 0' # Default
+
+            args += ' -comm-mpi ' + any_to_str(self.coupled_app_ids)
+
+        elif self.coupling_mode == 'sockets':
+            if 'host_port' in kw:
+                args += ' --comm-socket ' + any_to_str(kw['host_port'])
+
+        # handled direclty
+
+        # Adjust for Valgrind if used
+
+        if self.valgrind != None:
+            args = self.solver_path + ' ' + args
+            exec_path = self.valgrind
+
+        return wd, exec_path, args
+
+    #---------------------------------------------------------------------------
+
+    def copy_data(self):
+        """
+        Copy data to the execution directory
+        """
+
+        if os.path.isabs(self.syrthes_env):
+            syrthes_env = self.syrthes_env
+        else:
+            syrthes_env = os.path.join(self.data_dir, self.syrthes_env)
+
+        cmd = os.path.join(cs_config.dirs.pkgdatadir, 'runcase_syrthes')
+        cmd += ' -copy-data -syrthes-env=' + syrthes_env
+
+        if run_command(cmd) != 0:
+            raise RunCaseError
+
+    #---------------------------------------------------------------------------
+
+    def copy_results(self):
+        """
+        Retrieve results from the execution directory
+        """
+
+        if self.exec_dir == self.result_dir and self.result_suffix == None:
+            return
+
+        cmd = os.path.join(cs_config.dirs.pkgdatadir, 'runcase_syrthes') \
+            + ' -copy-results -result-dir=' + self.result_dir
+
+        if self.result_suffix != None:
+            if self.tag != None:
+                cmd += '.' + self.tag
+            cmd += '.' + self.result_suffix
+
+        if run_command(cmd) != 0:
+            raise RunCaseError
+
+#-------------------------------------------------------------------------------
diff --git a/bin/cs_check_consistency.py b/bin/cs_check_consistency.py
index 05eeed2..160e2aa 100644
--- a/bin/cs_check_consistency.py
+++ b/bin/cs_check_consistency.py
@@ -35,7 +35,7 @@ from optparse import OptionParser
 def process_cmd_line(argv):
     """
     Processes the passed command line arguments.
-    
+
     Input Argument:
       arg -- This can be either a list of arguments as in
              sys.argv[1:] or a string that is similar to the one
@@ -96,7 +96,7 @@ def check_consistency(param, src_dir, n_procs):
     or 1 if they are incompatible.
     """
 
-    # List of the different available modules in Code_Saturne 
+    # List of the different available modules in Code_Saturne
     modules = ['base', 'lagr', 'rayt', 'cplv', 'fuel', 'c3pt', 'cebu',
                'clwc', 'elec', 'cfbl', 'atmo', 'ctwr']
 
@@ -195,7 +195,7 @@ def main(argv):
     """
 
     n_procs, param, src_dir = process_cmd_line(argv)
-        
+
     ret_val = check_consistency(param, src_dir, n_procs)
     sys.exit(ret_val)
 
diff --git a/bin/cs_check_mesh.py b/bin/cs_check_mesh.py
index d4dac94..b3471c1 100644
--- a/bin/cs_check_mesh.py
+++ b/bin/cs_check_mesh.py
@@ -23,25 +23,11 @@ import optparse
 import os, re
 import sys, shutil
 import string
-import subprocess
 import tempfile
 
 import cs_config
 
-#-------------------------------------------------------------------------------
-
-def run_command(cmd):
-    """
-    Run a command.
-    """
-    p = subprocess.Popen(cmd,
-                         shell=True,
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.PIPE)
-    output = p.communicate()
-    print output[0], output[1]
-
-    return p.returncode
+from cs_exec_environment import run_command
 
 #-------------------------------------------------------------------------------
 
diff --git a/bin/cs_compile.py b/bin/cs_compile.py
index b8c3dee..28a113e 100644
--- a/bin/cs_compile.py
+++ b/bin/cs_compile.py
@@ -22,24 +22,26 @@
 import fnmatch
 import os
 import sys
-import subprocess
 import tempfile
 
 from optparse import OptionParser
 
-import cs_config
+from cs_config import dirs
+from cs_config_build import build, build_syrthes
+
+from cs_exec_environment import run_command
 
 #-------------------------------------------------------------------------------
 
 def process_cmd_line(argv):
     """
     Processes the passed command line arguments.
-    
+
     Input Argument:
       arg -- This can be either a list of arguments as in
              sys.argv[1:] or a string that is similar to the one
-             passed on the command line.  If it is a string the
-             string is split to create a list of arguments.
+             passed on the command line.  If it is a string,
+             it is split to create a list of arguments.
     """
 
     parser = OptionParser(usage="usage: %prog [options]")
@@ -73,6 +75,7 @@ def process_cmd_line(argv):
     parser.set_defaults(src_dir=os.getcwd())
     parser.set_defaults(dest_dir=os.getcwd())
     parser.set_defaults(opt_libs="")
+    parser.set_defaults(log_name=None)
     parser.set_defaults(link_syrthes=False)
 
     (options, args) = parser.parse_args(argv)
@@ -85,17 +88,18 @@ def process_cmd_line(argv):
     src_dir = os.path.expandvars(src_dir)
     src_dir = os.path.abspath(src_dir)
     if not os.path.isdir(src_dir):
-        print "Error: %s is not a directory" % src_dir
+        sys.stderr.write('Error: ' + src_dir + ' is not a directory')
         sys.exit(1)
 
     dest_dir = os.path.expanduser(options.dest_dir)
     dest_dir = os.path.expandvars(dest_dir)
     dest_dir = os.path.abspath(dest_dir)
     if not os.path.isdir(dest_dir):
-        print "Error: %s is not a directory" % dest_dir
+        sys.stderr.write('Error: ' + dest_dir + ' is not a directory')
         sys.exit(1)
 
-    return options.test_mode, options.force_link, src_dir, dest_dir, options.opt_libs, options.link_syrthes
+    return options.test_mode, options.force_link, \
+           src_dir, dest_dir, options.opt_libs, options.link_syrthes
 
 #-------------------------------------------------------------------------------
 
@@ -109,9 +113,9 @@ def so_dirs_path(flags):
     args = flags.split(" ")
 
     for arg in args:
-        if arg[0:2] == '-L' and arg[0:6] != '-L/usr' and arg[0:6] != '-L/lib':
+        if arg[0:2] == '-L' and arg[0:10] != '-L/usr/lib' and arg[0:6] != '-L/lib':
             if first == True:
-                retval = " " + cs_config.build.rpath + ":" + arg[2:]
+                retval = " " + build.rpath + ":" + arg[2:]
                 first = False
             else:
                 retval = retval + ":" + arg[2:]
@@ -120,23 +124,8 @@ def so_dirs_path(flags):
 
 #-------------------------------------------------------------------------------
 
-def run_command(cmd):
-    """
-    Run a command.
-    """
-    print cmd
-    p = subprocess.Popen(cmd,
-                         shell=True,
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.PIPE)
-    output = p.communicate()
-    print output[0], output[1]
-
-    return p.returncode
-
-#-------------------------------------------------------------------------------
-
-def compile_and_link(srcdir, destdir, optlibs, force_link):
+def compile_and_link(srcdir, destdir, optlibs, force_link,
+                     stdout = sys.stdout, stderr = sys.stderr):
     """
     Compilation and link function.
     """
@@ -161,40 +150,41 @@ def compile_and_link(srcdir, destdir, optlibs, force_link):
     f_files = fnmatch.filter(dir_files, '*.[fF]90')
 
     for f in c_files:
-        cmd = cs_config.build.cc
+        cmd = build.cc
         if len(h_files) > 0:
             cmd = cmd + " -I" + srcdir
-        cmd = cmd + " -I" + os.path.join(cs_config.dirs.prefix, "include")
+        cmd = cmd + " -I" + os.path.join(dirs.prefix, "include")
         cmd = cmd + " -DHAVE_CONFIG_H"
-        cmd = cmd + " " + cs_config.build.cppflags
-        cmd = cmd + " " + cs_config.build.cflags
+        cmd = cmd + " " + build.cppflags
+        cmd = cmd + " " + build.cflags
         cmd = cmd + " -c " + os.path.join(srcdir, f)
-        if run_command(cmd) != 0:
+        if run_command(cmd, echo=True, stdout=stdout, stderr=stderr) != 0:
             retval = 1
 
     for f in f_files:
-        cmd = cs_config.build.fc
+        cmd = build.fc
         if len(h_files) > 0:
             cmd = cmd + " -I" + srcdir
-        cmd = cmd + " -I" + os.path.join(cs_config.dirs.prefix, "include")
-        cmd = cmd + " " + cs_config.build.fcflags
+        cmd = cmd + " -I" + os.path.join(dirs.prefix, "include")
+        cmd = cmd + " " + build.fcflags
         cmd = cmd + " -c " + os.path.join(srcdir, f)
-        if run_command(cmd) != 0:
+        if run_command(cmd, echo=True, stdout=stdout, stderr=stderr) != 0:
             retval = 1
 
     if retval == 0 and (force_link or (len(c_files) + len(f_files)) > 0):
-        cmd = cs_config.build.cc
+        cmd = build.cc
         cmd = cmd + " -o " + exec_name
         if (len(c_files) + len(f_files)) > 0:
           cmd = cmd + " *.o"
-        cmd = cmd + " -L" + os.path.join(cs_config.dirs.prefix, "lib")
+        cmd = cmd + " -L" + os.path.join(dirs.prefix, "lib")
         cmd = cmd + " -lsaturne"
-        if len(optlibs) > 0:
-            cmd = cmd + " " + optlibs
-        cmd = cmd + " " + cs_config.build.ldflags + " " + cs_config.build.libs
-        if cs_config.build.rpath != "":
+        if optlibs != None:
+            if len(optlibs) > 0:
+                cmd = cmd + " " + optlibs
+        cmd = cmd + " " + build.ldflags + " " + build.libs
+        if build.rpath != "":
             cmd = cmd + " " + so_dirs_path(cmd)
-        if run_command(cmd) != 0:
+        if run_command(cmd, echo=True, stdout=stdout, stderr=stderr) != 0:
             retval = 1
 
     # Cleanup
@@ -211,7 +201,8 @@ def compile_and_link(srcdir, destdir, optlibs, force_link):
 
 #-------------------------------------------------------------------------------
 
-def compile_and_link_syrthes(srcdir, destdir):
+def compile_and_link_syrthes(srcdir, destdir,
+                             stdout = sys.stdout, stderr = sys.stderr):
     """
     Compilation and link function.
     """
@@ -229,45 +220,48 @@ def compile_and_link_syrthes(srcdir, destdir):
 
     # Find files to compile in source path
 
-    dir_files = os.listdir(srcdir)
+    if srcdir != None:
+        dir_files = os.listdir(srcdir)
+    else:
+        dir_files = []
 
     c_files = fnmatch.filter(dir_files, '*.c')
     h_files = fnmatch.filter(dir_files, '*.h')
     f_files = fnmatch.filter(dir_files, '*.[fF]')
 
     for f in c_files:
-        cmd = cs_config.build_syrthes.cc
+        cmd = build_syrthes.cc
         if len(h_files) > 0:
             cmd = cmd + " -I" + srcdir
-        cmd = cmd + " " + cs_config.build_syrthes.cppflags
-        cmd = cmd + " " + cs_config.build_syrthes.cflags
+        cmd = cmd + " " + build_syrthes.cppflags
+        cmd = cmd + " " + build_syrthes.cflags
         cmd = cmd + " -c " + os.path.join(srcdir, f)
-        if run_command(cmd) != 0:
+        if run_command(cmd, echo=True, stdout=stdout, stderr=stderr) != 0:
             retval = 1
 
     for f in f_files:
-        cmd = cs_config.build_syrthes.fc
+        cmd = build_syrthes.fc
         if len(h_files) > 0:
             cmd = cmd + " -I" + srcdir
-        cmd = cmd + " " + cs_config.build_syrthes.cppflags
-        cmd = cmd + " " + cs_config.build_syrthes.fcflags
+        cmd = cmd + " " + build_syrthes.cppflags
+        cmd = cmd + " " + build_syrthes.fcflags
         cmd = cmd + " -c " + os.path.join(srcdir, f)
-        if run_command(cmd) != 0:
+        if run_command(cmd, echo=True, stdout=stdout, stderr=stderr) != 0:
             retval = 1
 
     if retval == 0:
         # Link with Code_Saturne C compiler
-        cmd = cs_config.build.cc
+        cmd = build.cc
         cmd = cmd + " -o " + exec_name
         if (len(f_files)) > 0:
           cmd = cmd + " *.o"
-        cmd = cmd + " -L" + os.path.join(cs_config.dirs.prefix, "lib")
+        cmd = cmd + " -L" + os.path.join(dirs.prefix, "lib")
         cmd = cmd + " -lsyrcs"
-        cmd = cmd + " " + cs_config.build_syrthes.ldflags
-        cmd = cmd + " " + cs_config.build_syrthes.libs
-        if cs_config.build.rpath != "":
+        cmd = cmd + " " + build_syrthes.ldflags
+        cmd = cmd + " " + build_syrthes.libs
+        if build.rpath != "":
             cmd = cmd + " " + so_dirs_path(cmd)
-        if run_command(cmd) != 0:
+        if run_command(cmd, echo=True, stdout=stdout, stderr=stderr) != 0:
             retval = 1
 
     # Cleanup
@@ -280,6 +274,8 @@ def compile_and_link_syrthes(srcdir, destdir):
     os.chdir(call_dir)
     os.rmdir(temp_dir)
 
+    return retval
+
 #-------------------------------------------------------------------------------
 # Main
 #-------------------------------------------------------------------------------
@@ -290,7 +286,7 @@ def main(argv):
     """
 
     test_mode, force_link, src_dir, dest_dir, opt_libs, link_syrthes = process_cmd_line(argv)
-        
+
     if test_mode == True:
         dest_dir = None
 
@@ -302,7 +298,7 @@ def main(argv):
     sys.exit(retcode)
 
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     main(sys.argv[1:])
 
 #-------------------------------------------------------------------------------
diff --git a/bin/cs_config.py.in b/bin/cs_config.py.in
index 5c7dd7c..48b2c94 100644
--- a/bin/cs_config.py.in
+++ b/bin/cs_config.py.in
@@ -1,5 +1,5 @@
 #!@cs_python@
-# @configure_input@
+# Paths associated with Code_Saturne, generated from cs_config.py.in by make.
 #============================================================================
 #
 #     This file is part of the Code_Saturne Kernel, element of the
@@ -28,10 +28,6 @@
 
 #-------------------------------------------------------------------------------
 
- at cs_config_comments@
-
-#-------------------------------------------------------------------------------
-
 import os.path
 
 # Package Version
@@ -47,63 +43,24 @@ class package:
 class dirs:
     prefix = "@prefix@"
     exec_prefix = "@exec_prefix@"
-    if exec_prefix == "${prefix}":
-        exec_prefix = prefix
     bindir = "@bindir@"
-    if bindir == "${exec_prefix}/bin":
-        bindir = os.path.join(exec_prefix, "bin")
     includedir = "@includedir@"
-    if includedir == "${prefix}/include":
-        includedir = os.path.join(prefix, "include")
     libdir = "@libdir@"
-    if libdir == "${exec_prefix}/lib":
-        libdir = os.path.join(exec_prefix, "lib")
     datarootdir = "@datarootdir@"
-    if datarootdir == "${prefix}/share":
-        datarootdir = os.path.join(prefix, "share")
     datadir = "@datadir@"
-    if datadir == "${datarootdir}":
-        datadir = datarootdir
-    pkgdatadir = os.path.join(datadir, "@PACKAGE@")
+    pkgdatadir = "@pkgdatadir@"
     docdir = "@docdir@"
-    if docdir == "${datarootdir}/doc/${PACKAGE_TARNAME}":
-        docdir = os.path.join(datarootdir, "doc", "@PACKAGE_TARNAME@")
     pdfdir = "@pdfdir@"
-    if pdfdir == "${docdir}":
-        pdfdir = docdir
-    ecs_prefix = "@ecs_prefix@"
-    ecs_exec_prefix = ecs_prefix
-    ecs_bindir = os.path.join(ecs_exec_prefix, "bin")
+    ecs_bindir = "@ecs_bindir@"
     syrthes_prefix = "@syrthes_prefix@"
 
 # Optional MPI library info
 #--------------------------
 
 class mpi_lib:
-    type = "@MPI_TYPE@"
-    bindir = "@MPI_BIN@"
-
-# Build tools, option, and libraries
-#-----------------------------------
-
-class build:
-    cc="@CC@"
-    fc="@FC@"
-    cppflags="@CPPFLAGS@ @BFT_CPPFLAGS@ @FVM_CPPFLAGS@ @MEI_CPPFLAGS@ @MPI_CPPFLAGS@ @LIBXML2_CPPFLAGS@ @BLAS_CPPFLAGS@"
-    cflags="@CFLAGS@ @CFLAGS_DBG@ @CFLAGS_OPT@"
-    fcflags="@FCFLAGS@ @FCFLAGS_DBG@ @FCFLAGS_OPT@"
-    ldflags="@MEI_LDFLAGS@ @FVM_LDFLAGS@ @BFT_LDFLAGS@ @MPI_LDFLAGS@ @BLAS_LDFLAGS@ @LIBXML2_LDFLAGS@ @LDFLAGS@"
-    libs="@MEI_LIBS@ @FVM_LIBS@ @BFT_LIBS@ @MPI_LIBS@ @BLAS_LIBS@ @LIBXML2_LIBS@ @LIBS@ @FCLIBS@"
-    rpath="@LDRPATH@"
-
-class build_syrthes:
-    cc="@SYRTHES_CC@"
-    fc="@SYRTHES_FC@"
-    cppflags="@SYRTHES_CPPFLAGS@"
-    cflags="@SYRTHES_CFLAGS@"
-    fcflags="@SYRTHES_FCFLAGS@"
-    ldflags="@SYRTHES_LDFLAGS@"
-    libs="@SYRTHES_LIBS@ @SYRTHES_FCLIBS@"
+    type = "@mpi_type@"
+    bindir = "@mpi_bindir@"
+    libdir = "@mpi_libdir@"
 
 #-------------------------------------------------------------------------------
 
@@ -125,22 +82,13 @@ Directories:
   dirs.pdfdir = %(pdf)s
 
 Auxiliary information:
-  dirs.ecs_prefix = %(ecs)s
+  dirs.ecs_bindir = %(ecs)s
   dirs.syrthes_prefix = %(syrthes)s
 
 MPI library information:
   mpi_lib.type = %(mpi_type)s
   mpi_lib.bindir = %(mpi_bindir)s
-
-Compilers and associated options:
-  cc = %(cc)s
-  fc = %(fc)s
-  cppflags = %(cppflags)s
-  cflags = %(cflags)s
-  fcflags = %(fcflags)s
-  ldflags = %(ldflags)s
-  libs = %(libs)s
-  rpath = %(rpath)s\
+  mpi_lib.libdir = %(mpi_libdir)s\
 """
 
     return msg \
@@ -148,12 +96,9 @@ Compilers and associated options:
             'bin':dirs.bindir, 'include': dirs.includedir, 'lib':dirs.libdir,
             'dataroot':dirs.datarootdir, 'data':dirs.datadir,
             'pkgdata':dirs.pkgdatadir, 'doc':dirs.docdir, 'pdf':dirs.pdfdir,
-            'ecs':dirs.ecs_prefix, 'syrthes':dirs.syrthes_prefix,
+            'ecs':dirs.ecs_bindir, 'syrthes':dirs.syrthes_prefix,
             'mpi_type':mpi_lib.type, 'mpi_bindir':mpi_lib.bindir,
-            'cc':build.cc, 'fc':build.fc,
-            'cppflags':build.cppflags, 'cflags':build.cflags,
-            'fcflags':build.fcflags, 'ldflags':build.ldflags,
-            'libs':build.libs, 'rpath':build.rpath }
+            'mpi_libdir':mpi_lib.libdir }
 
 #-------------------------------------------------------------------------------
 
@@ -161,8 +106,14 @@ def main(argv):
     """
     Main configuration info function.
     """
-    print get_config()
+    import sys
+    import cs_config_build
+    sys.stdout.write("%(d)s\n\n%(b)s\n\n%(s)s\n" %
+                     {'d':get_config(),
+                      'b':cs_config_build.get_config(),
+                      's':cs_config_build.get_config_syrthes()})
 
 if __name__ == '__main__':
-    main(argv)
+    import sys
+    main(sys.argv[1:])
 
diff --git a/bin/cs_config_build.py.in b/bin/cs_config_build.py.in
new file mode 100644
index 0000000..96a75dd
--- /dev/null
+++ b/bin/cs_config_build.py.in
@@ -0,0 +1,117 @@
+#!@cs_python@
+# @configure_input@
+#============================================================================
+#
+#     This file is part of the Code_Saturne Kernel, element of the
+#     Code_Saturne CFD tool.
+#
+#     Copyright (C) 2009 EDF S.A., France
+#
+#     contact: saturne-support at edf.fr
+#
+#     The Code_Saturne Kernel is free software; you can redistribute it
+#     and/or modify it under the terms of the GNU General Public License
+#     as published by the Free Software Foundation; either version 2 of
+#     the License, or (at your option) any later version.
+#
+#     The Code_Saturne Kernel is distributed in the hope that it will be
+#     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#     GNU General Public License for more details.
+#
+#     You should have received a copy of the GNU General Public License
+#     along with the Code_Saturne Kernel; if not, write to the
+#     Free Software Foundation, Inc.,
+#     51 Franklin St, Fifth Floor,
+#     Boston, MA  02110-1301  USA
+#
+#============================================================================
+
+#-------------------------------------------------------------------------------
+
+ at cs_config_comments@
+
+#-------------------------------------------------------------------------------
+
+# Build tools, option, and libraries
+#-----------------------------------
+
+class build:
+    cc="@CC@"
+    fc="@FC@"
+    cppflags="@CPPFLAGS@ @FVM_CPPFLAGS@ @MEI_CPPFLAGS@ @BFT_CPPFLAGS@ @MPI_CPPFLAGS@ @LIBXML2_CPPFLAGS@ @BLAS_CPPFLAGS@"
+    cflags="@CFLAGS@ @CFLAGS_DBG@ @CFLAGS_OPT@"
+    fcflags="@FCFLAGS@ @FCFLAGS_DBG@ @FCFLAGS_OPT@"
+    ldflags="@FVM_LDFLAGS@ @MEI_LDFLAGS@ @BFT_LDFLAGS@ @MPI_LDFLAGS@ @LIBXML2_LDFLAGS@ @BLAS_LDFLAGS@ @LDFLAGS@"
+    libs="@FVM_LIBS@ @MEI_LIBS@ @BFT_LIBS@ @MPI_LIBS@ @LIBXML2_LIBS@ @BLAS_LIBS@ @FCLIBS@ @LIBS@"
+    rpath="@LDRPATH@"
+
+class build_syrthes:
+    cc="@SYRTHES_CC@"
+    fc="@SYRTHES_FC@"
+    cppflags="@SYRTHES_CPPFLAGS@"
+    cflags="@SYRTHES_CFLAGS@"
+    fcflags="@SYRTHES_FCFLAGS@"
+    ldflags="@SYRTHES_LDFLAGS@"
+    libs="@SYRTHES_LIBS@ @SYRTHES_FCLIBS@"
+
+#-------------------------------------------------------------------------------
+
+def get_config():
+    """
+    Get the configuration information.
+    """
+    msg = """\
+Compilers and associated options:
+  cc = %(cc)s
+  fc = %(fc)s
+  cppflags = %(cppflags)s
+  cflags = %(cflags)s
+  fcflags = %(fcflags)s
+  ldflags = %(ldflags)s
+  libs = %(libs)s
+  rpath = %(rpath)s\
+"""
+
+    return msg \
+        % { 'cc':build.cc, 'fc':build.fc,
+            'cppflags':build.cppflags, 'cflags':build.cflags,
+            'fcflags':build.fcflags, 'ldflags':build.ldflags,
+            'libs':build.libs, 'rpath':build.rpath }
+
+#-------------------------------------------------------------------------------
+
+def get_config_syrthes():
+    """
+    Get the configuration information.
+    """
+    msg = """\
+Compilers and associated options for SYRTHES build:
+  cc = %(cc)s
+  fc = %(fc)s
+  cppflags = %(cppflags)s
+  cflags = %(cflags)s
+  fcflags = %(fcflags)s
+  ldflags = %(ldflags)s
+  libs = %(libs)s\
+"""
+
+    return msg \
+        % { 'cc':build_syrthes.cc, 'fc':build_syrthes.fc,
+            'cppflags':build_syrthes.cppflags, 'cflags':build_syrthes.cflags,
+            'fcflags':build_syrthes.fcflags, 'ldflags':build_syrthes.ldflags,
+            'libs':build_syrthes.libs }
+
+#-------------------------------------------------------------------------------
+
+def main(argv):
+    """
+    Main configuration info function.
+    """
+    import sys
+    sys.stdout.write("%(b)s\n\n%(s)s\n" %
+                     {'b':get_config(),
+                      's':get_config_syrthes()})
+
+if __name__ == '__main__':
+    import sys
+    main(sys.argv[1:])
diff --git a/bin/cs_create.py b/bin/cs_create.py
index 26e52bc..f1a1505 100644
--- a/bin/cs_create.py
+++ b/bin/cs_create.py
@@ -39,7 +39,7 @@ and the following classes:
 #-------------------------------------------------------------------------------
 
 import os, sys, pwd, shutil, stat
-import types, string, re
+import types, string, re, fnmatch
 from optparse import OptionParser
 
 import cs_config
@@ -65,10 +65,30 @@ def process_cmd_line(argv):
                       metavar="<case>", action="append",
                       help="create a new case")
 
-    parser.add_option("-n", "--nogui", dest="use_gui",
+    parser.add_option("--copy-from", dest="copy", type="string",
+                      metavar="<case>",
+                      help="create a case from another one")
+
+    parser.add_option("--new-runcase", dest="new_runcase",
+                      action="store_true",
+                      help="use the new Python runcase")
+
+    parser.add_option("--nogui", dest="use_gui",
                       action="store_false",
                       help="don't use the GUI")
 
+    parser.add_option("--noref", dest="use_ref",
+                      action="store_false",
+                      help="don't copy references")
+
+    parser.add_option("-q", "--quiet",
+                      action="store_const", const=0, dest="verbose",
+                      help="do not output any information")
+
+    parser.add_option("-v", "--verbose",
+                      action="store_const", const=2, dest="verbose",
+                      help="dump study creation parameters")
+
     parser.add_option("--nsat", dest="n_sat", type="int",
                       metavar="<nsat>",
                       help="specify the number of Code_Saturne instances")
@@ -78,8 +98,12 @@ def process_cmd_line(argv):
                       help="specify the number of SYRTHES instances")
 
     parser.set_defaults(use_gui=True)
+    parser.set_defaults(use_ref=True)
+    parser.set_defaults(new_runcase=False)
     parser.set_defaults(study_name=os.path.basename(os.getcwd()))
     parser.set_defaults(cases_name=[])
+    parser.set_defaults(copy=None)
+    parser.set_defaults(verbose=1)
     parser.set_defaults(n_sat=1)
     parser.set_defaults(n_syr=0)
 
@@ -91,9 +115,15 @@ def process_cmd_line(argv):
         else:
             options.cases_name = ["CASE1"]
 
+    if options.n_sat > 1: options.new_runcase = True
+
     return Study(options.study_name,
                  options.cases_name,
+                 options.copy,
                  options.use_gui,
+                 options.use_ref,
+                 options.new_runcase,
+                 options.verbose,
                  options.n_sat,
                  options.n_syr)
 
@@ -108,7 +138,7 @@ def make_executable(filename):
     Give executable permission to a given file.
     Equivalent to `chmod +x` shell function.
     """
-    
+
     st   = os.stat(filename)
     mode = st[stat.ST_MODE]
     os.chmod(filename, mode | stat.S_IEXEC)
@@ -125,13 +155,13 @@ def comments(filename, use_gui):
     """
     Comment or uncomment examples in user files.
     """
-    
+
     fd = file(filename, 'r')
     fdt = file(filename+'.tmp','w')
-    
+
     kwd_beg = re.compile('EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START')
     kwd_end = re.compile('EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END')
-    
+
 
     if use_gui:
 
@@ -152,7 +182,7 @@ def comments(filename, use_gui):
         for line in fd:
             if not kwd_beg.search(line) and not kwd_end.search(line):
                 fdt.write(line)
-            
+
     fd.close()
     fdt.close()
 
@@ -168,16 +198,23 @@ def comments(filename, use_gui):
 class Study:
 
 
-    def __init__(self, name, cases, use_gui, n_sat, n_syr):
+    def __init__(self, name, cases, copy, use_gui, use_ref, new_runcase,
+                 verbose, n_sat, n_syr):
         """
         Initialize the structure for a study.
         """
-        
-        self.name = string.upper(name)
+
+        self.name = name
         self.cases = []
         for c in cases:
             self.cases.append(string.upper(c))
+        self.copy = copy
+        if self.copy is not None:
+            self.copy = os.path.abspath(self.copy)
         self.use_gui = use_gui
+        self.use_ref = use_ref
+        self.new_runcase = new_runcase
+        self.verbose = verbose
         self.n_sat = n_sat
         self.n_syr = n_syr
 
@@ -188,10 +225,15 @@ class Study:
         """
 
         if self.name != os.path.basename(os.getcwd()):
+
+            if self.verbose > 0:
+                sys.stdout.write("  o Creating study '%s'...\n" % self.name)
+
             os.mkdir(self.name)
             os.chdir(self.name)
             os.mkdir('MESH')
             os.mkdir('POST')
+
         # Creating cases
         repbase = os.getcwd()
         for c in self.cases:
@@ -204,6 +246,9 @@ class Study:
         Create a case for a Code_Saturne study.
         """
 
+        if self.verbose > 0:
+            sys.stdout.write("  o Creating case  '%s'...\n" % casename)
+
         datadir = os.path.join(cs_config.dirs.pkgdatadir)
         data_distpath  = os.path.join(datadir, 'data')
         users_distpath = os.path.join(datadir, 'users')
@@ -212,7 +257,7 @@ class Study:
             os.mkdir(casename)
         except:
             sys.exit(1)
-            
+
         os.chdir(casename)
 
         # Loop for dependency on the number of instances of Code_Saturne
@@ -228,15 +273,19 @@ class Study:
 
             os.mkdir(data)
 
-            thch_distpath = os.path.join(data_distpath, 'thch')
-            thch          = os.path.join(data, 'THCH')
-            shutil.copytree(thch_distpath, thch)
-        
+            if self.use_ref:
+
+                thch_distpath = os.path.join(data_distpath, 'thch')
+                thch          = os.path.join(data, 'THCH')
+                os.mkdir(thch)
+                for f in ['dp_C3P', 'dp_C3PSJ', 'dp_ELE', 'dp_FCP', 'dp_FUE', 'meteo']:
+                    shutil.copy(os.path.join(thch_distpath, f), thch)
+
             if self.use_gui:
-        
+
                 csguiname = 'SaturneGUI'
                 csguiscript = os.path.join(datadir, csguiname)
-            
+
                 shutil.copy(csguiscript, data)
                 make_executable(os.path.join(data, csguiname))
 
@@ -246,15 +295,40 @@ class Study:
                 src = 'SRC'
             else:
                 src = 'SRC.%(inst)d' % { 'inst' : i+1 }
-                
+
             os.mkdir(src)
 
-            users = os.path.join(src, 'REFERENCE')
-            shutil.copytree(users_distpath, users)
+            if self.use_ref:
+
+                users = os.path.join(src, 'REFERENCE')
+                shutil.copytree(users_distpath, users)
+
+                for file in ['usini1.f90','usalin.f90']:
+                    f = os.path.join(users, 'base', file)
+                    comments(f, self.use_gui)
+
+            # Copy data and source files from another case
+
+            if self.copy is not None:
+
+                ref_data = os.path.join(self.copy, data)
+                data_files = os.listdir(ref_data)
+                for f in data_files:
+                    abs_f = os.path.join(ref_data, f)
+                    if os.path.isfile(abs_f) and \
+                            f not in ['SaturneGUI', 'preprocessor_output']:
+                        shutil.copy(os.path.join(ref_data, abs_f), data)
+
+
+                ref_src = os.path.join(self.copy, src)
+                src_files = os.listdir(ref_src)
 
-            for file in ['usini1.f90','usalin.f90']:
-                f = os.path.join(users, 'base', file)
-                comments(f, self.use_gui)
+                c_files = fnmatch.filter(src_files, '*.c')
+                h_files = fnmatch.filter(src_files, '*.h')
+                f_files = fnmatch.filter(src_files, '*.[fF]90')
+
+                for f in c_files + h_files + f_files:
+                    shutil.copy(os.path.join(ref_src, f), src)
 
 
         # Loop for dependency on the number of instances of SYRTHES
@@ -270,8 +344,11 @@ class Study:
 
             os.mkdir(data_syr)
 
-            data_ref_syr = os.path.join(data_syr, 'REFERENCE')
-            shutil.copytree(os.path.join(cs_config.dirs.syrthes_prefix, 'data'), data_ref_syr)
+            if self.use_ref:
+                data_ref_syr = os.path.join(data_syr, 'REFERENCE')
+                shutil.copytree(os.path.join(cs_config.dirs.syrthes_prefix,
+                                             'data'),
+                                data_ref_syr)
 
             # User source files directory
 
@@ -279,11 +356,14 @@ class Study:
                 src_syr = 'SRC_SYR'
             else:
                 src_syr = 'SRC_SYR.%(inst)d' % { 'inst' : i+1 }
-                
+
             os.mkdir(src_syr)
 
-            users_syr = os.path.join(src_syr, 'REFERENCE')
-            shutil.copytree(os.path.join(cs_config.dirs.syrthes_prefix, 'usr'), users_syr)
+            if self.use_ref:
+                users_syr = os.path.join(src_syr, 'REFERENCE')
+                shutil.copytree(os.path.join(cs_config.dirs.syrthes_prefix,
+                                             'usr'),
+                                users_syr)
 
 
         # Results directory (only one for all instances)
@@ -296,15 +376,15 @@ class Study:
 
         scripts = 'SCRIPTS'
         os.mkdir(scripts)
-        
-        shutil.copy(os.path.join(datadir, 'runcase.help'), scripts)
 
-        if self.n_sat == 1:
+        if not self.new_runcase:
+            shutil.copy(os.path.join(datadir, 'runcase.help'), scripts)
             shutil.copy(os.path.join(datadir, 'runcase'), scripts)
-            runcase = os.path.join(scripts, 'runcase')
         else:
-            shutil.copy(os.path.join(datadir, 'runcase_coupling'), scripts)
-            runcase = os.path.join(scripts, 'runcase_coupling')
+            shutil.copy(os.path.join(datadir, 'runcase.py'),
+                        os.path.join(scripts, 'runcase'))
+
+        runcase = os.path.join(scripts, 'runcase')
 
         kwd1 = re.compile('nameandcase')
         kwd2 = re.compile('STUDYNAME')
@@ -328,12 +408,11 @@ class Study:
             line = re.sub(kwd3, casename, line)
             line = re.sub(kwd4, repbase, line)
             fdt.write(line)
-                
+
         fd.close()
         fdt.close()
 
         shutil.move(runcase_tmp, runcase)
-        
         make_executable(runcase)
 
 
@@ -341,17 +420,22 @@ class Study:
         """
         Dump the structure of a study.
         """
-        
+
+        print
         print "Name  of the study:", self.name
         print "Names of the cases:", self.cases
-        print "Use of the GUI:", self.use_gui
+        if self.copy is not None:
+            print "Copy from case:", self.copy
+        print "Use the GUI:", self.use_gui
+        print "Copy references:", self.use_ref
+        print "Use the Python runcase:", self.new_runcase
         if self.n_sat > 1:
             print "Number of Code_Saturne instances:", self.n_sat
         if self.n_syr > 0:
             print "Number of SYRTHES instances:", self.n_syr
         print
 
-        
+
 #-------------------------------------------------------------------------------
 # Creation of the study directory
 #-------------------------------------------------------------------------------
@@ -361,19 +445,19 @@ def main(argv):
     Main function.
     """
 
-    welcome = """
-=================================================================
-                Code_Saturne study/case generation
-                           Version %(csvers)s
-=================================================================
-    """ % { 'csvers': cs_config.package.version }
-    
-    myStudy = process_cmd_line(argv)
+    welcome = """\
+Code_Saturne %s study/case generation
+"""
+
+    study = process_cmd_line(argv)
+
+    if study.verbose > 0:
+        sys.stdout.write(welcome % cs_config.package.version)
 
-    print welcome
+    study.create()
 
-    myStudy.dump()
-    myStudy.create()
+    if study.verbose > 1:
+        study.dump()
 
 
 if __name__ == "__main__":
diff --git a/bin/cs_exec_environment.py b/bin/cs_exec_environment.py
new file mode 100644
index 0000000..e748be6
--- /dev/null
+++ b/bin/cs_exec_environment.py
@@ -0,0 +1,875 @@
+#!/usr/bin/env python
+#
+#-------------------------------------------------------------------------------
+#   This file is part of the Code_Saturne Solver.
+#
+#   Copyright (C) 2009-2010  EDF
+#
+#   Code_Saturne is free software; you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation; either version 2 of the License,
+#   or (at your option) any later version.
+#
+#   Code_Saturne is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty
+#   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public Licence
+#   along with the Code_Saturne Preprocessor; if not, write to the
+#   Free Software Foundation, Inc.,
+#   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#-------------------------------------------------------------------------------
+
+import datetime
+import fnmatch
+import os.path
+import sys
+import tempfile
+
+python_version = sys.version[:3]
+
+try:
+    import subprocess        # Python 2.4+
+    have_subprocess = True
+except ImportError:
+    import popen2            # Python 2.3-
+    have_subprocess = False
+
+from optparse import OptionParser
+
+from cs_config import mpi_lib
+
+#===============================================================================
+# Utility functions
+#===============================================================================
+
+def abs_exec_path(path):
+    """
+    Find an executable in the system path.
+    """
+
+    abs_path = None
+
+    if os.path.isabs(path):
+        return path
+
+    else:
+        try:
+            for d in os.getenv('PATH').split():
+                f = os.path.join(d, path)
+                if os.path.isfile(f):
+                    return f
+        except Exception:
+            pass
+
+    return None
+
+#-------------------------------------------------------------------------------
+
+def run_command(cmd, echo = False, stdout = sys.stdout, stderr = sys.stderr):
+    """
+    Run a command.
+    """
+    if echo == True:
+        stdout.write(cmd + '\n')
+
+    if have_subprocess == True:
+        p = subprocess.Popen(cmd,
+                             shell=True,
+                             stdout=subprocess.PIPE,
+                             stderr=subprocess.PIPE)
+        output = p.communicate()
+        returncode = p.returncode
+
+    else:
+        p = popen2.Popen3(cmd, capturestderr=True)
+        returncode = p.wait()
+        output = (p.fromchild.read(), p.childerr.read())
+
+    if len(output[0]) > 0:
+        stdout.write(output[0])
+    if len(output[1]) > 0:
+        stderr.write(output[1])
+
+    return returncode
+
+#-------------------------------------------------------------------------------
+
+def get_command_output(cmd):
+    """
+    Run a command and return it's standard output.
+    """
+    if have_subprocess == True:
+        p = subprocess.Popen(cmd,
+                             shell=True,
+                             stdout=subprocess.PIPE,
+                             stderr=subprocess.PIPE)
+        output = p.communicate()
+        if p.returncode != 0:
+            sys.stderr.write(output[1] + '\n')
+            return ''
+        else:
+            return output[0]
+
+    else:
+        p = popen2.Popen3(cmd, capturestderr=True)
+        returncode = p.wait()
+        if returncode != 0:
+            sys.stderr.write(p.childerr.read())
+            return ''
+        else:
+            return p.fromchild.read()
+
+#-------------------------------------------------------------------------------
+
+class batch_info:
+
+    #---------------------------------------------------------------------------
+
+    def __init__(self):
+
+        """
+        Get batch system information.
+        """
+
+        self.batch_type = None
+        self.job_file = None
+        self.job_name = None
+        self.job_id = None
+        self.queue = None
+
+        # Check for specific batch environments
+
+        s = os.getenv('LSB_JOBID') # LSF
+        if s != None:
+            self.batch_type = 'LSF'
+            self.job_file = os.getenv('LSB_JOBFILENAME')
+            self.job_name = os.getenv('LSB_JOBNAME')
+            self.job_id = os.getenv('LSB_BATCH_JID')
+            self.queue = os.getenv('LSB_QUEUE')
+
+        if self.batch_type == None:
+            s = os.getenv('PBS_JOBID') # PBS
+            if s != None:
+                self.batch_type = 'PBS'
+                self.job_name = os.getenv('PBS_JOBNAME')
+                self.job_id = os.getenv('PBS_JOBID')
+                self.queue = os.getenv('PBS_QUEUE')
+
+        if self.batch_type == None:
+            s = os.getenv('LOADL_JOB_NAME') # LoadLeveler
+            if s != None:
+                self.batch_type = 'LOADL'
+
+        if self.batch_type == None:
+            s = os.getenv('SGE_TASKID') # Sun Grid Engine
+            if s != None:
+                self.batch_type = 'SGE'
+                self.job_name = os.getenv('JOB_NAME')
+                self.job_id = os.getenv('JOB_ID')
+                self.queue = os.getenv('QUEUE')
+
+    #---------------------------------------------------------------------------
+
+    def get_remaining_time(self):
+
+        """
+        Get remaining time if available from batch system.
+        """
+
+        rtime = None
+
+        if self.batch_type == 'PBS':
+            cmd = "qstat -r $PBS_JOBID | grep $PBS_JOBID" \
+                + " | sed -e's/ \{1,\}/ /g' | cut -d ' ' -f 9"
+            rtime = get_command_output(cmd)
+
+        return rtime
+
+#-------------------------------------------------------------------------------
+
+class resource_info(batch_info):
+
+    #---------------------------------------------------------------------------
+
+    def __init__(self, n_procs = None, hosts_list = None):
+
+        """
+        Get execution resources information.
+        """
+
+        batch_info.__init__(self)
+
+        self.manager = None
+        self.n_procs = None
+        self.n_nodes = None
+
+        # If obtained from an environment variable, express
+        # the hosts file using a shell variable rather than
+        # an absolute name (for use in generated scripts).
+
+        self.hosts_file = None
+        self.hosts_list = None
+
+        # Check for resource manager and eventual hostsfile
+
+        s = os.getenv('SLURM_NPROCS')
+        if s != None:
+            self.manager = 'SLURM'
+            self.n_procs = int(s)
+            s = os.getenv('SLURM_NNODES')
+            if s != None:
+                self.n_nodes = int(s)
+
+        if self.manager == None and self.batch_type == 'LSF':
+            s = os.getenv('LSB_HOSTS')
+            self.manager = 'LSF'
+            if s != None:
+                self.hosts_list = s.split(' ')
+
+        if self.manager == None and self.batch_type == 'LOADL':
+            s = os.getenv('LOADL_PROCESSOR_LIST')
+            self.manager = 'LOADL'
+            if s != None:
+                self.hosts_list = s.split(' ')
+
+        if self.manager == None and self.batch_type == 'PBS':
+            s = os.getenv('PBS_NODEFILE')
+            if s != None:
+                self.manager = 'PBS'
+                self.n_procs_from_hosts_file(s)
+                self.hosts_file = '$PBS_NODEFILE'
+
+        if self.manager == None and self.batch_type == 'SGE':
+            s = os.getenv('NSLOTS')
+            if s != None:
+                self.n_procs = int(s)
+            s = os.getenv('NHOSTS')
+            if s != None:
+                self.n_nodes = int(s)
+            s = os.getenv('TMPDIR')
+            if s != None:
+                s += '/machines'
+                if os.path.isfile(s):
+                    s.manager = 'SGE'
+                    self.n_procs_from_hosts_file(s)
+                    self.hosts_file = '$TMPDIR/machines'
+
+        # Set an optional list of hosts if we are not running under
+        # a resource manager.
+
+        if hosts_list != None:
+            if self.manager != None:
+                sys.stderr.write('Warning:\n'
+                                 + '   Host list will be ignored because a'
+                                 + ' resource manager (' + self.manager
+                                 + ') is in use.\n\n')
+            else:
+                self.resources.hosts_list = hosts_list
+
+        # Determine number of processors from hosts file or list
+
+        if self.n_procs == None:
+            if self.hosts_file != None:
+                self.n_procs = 0
+                f = open(self.hosts_file, 'r')
+                for line in f:
+                    self.n_procs += 1
+                f.close()
+            elif self.hosts_list != None:
+                self.n_procs = len(self.hosts_list)
+
+        # Check and possibly set number of processes
+
+        if n_procs != None:
+            if self.n_procs != None:
+                if self.n_procs != n_procs:
+                    sys.stderr.write('Warning:\n'
+                                     +'   Will use ' + str(self.n_procs)
+                                     + ' processes while resource manager ('
+                                     + self.resources + ')\n   allows for '
+                                     + str(self.resources.n_procs) + '.\n\n')
+            self.n_procs = n_procs
+
+    #---------------------------------------------------------------------------
+
+    def n_procs_from_hosts_file(self, hosts_file):
+
+        """
+        Compute number of hosts from a hostsfile.
+        """
+
+        self.n_procs = 0
+        f = open(hosts_file, 'r')
+        for line in f:
+            self.n_procs += 1
+        f.close()
+
+    #---------------------------------------------------------------------------
+
+    def get_hosts_file(self, wdir = None):
+        """
+        Returns the name of the hostsfile associated with the
+        resource manager. A hostsfile is built from a hosts
+        list if necessary.
+        """
+
+        hosts_file = self.hosts_file
+
+        if self.hosts_file == None:
+
+            if self.hosts_list != None:
+                if wdir != None:
+                    hosts_file = os.path.join(wdir, 'hostsfile')
+                else:
+                    hosts_file = 'hostsfile'
+                f = open(hosts_file, 'w')
+                # If number of procs not specified, determine it by list
+                if self.n_procs == None or self.n_procs < 1:
+                    n_procs = 0
+                    for host in self.hosts_list:
+                        f.write(host + '\n')
+                        n_procs += 1
+                # If the number of procs is known, use only beginning of list
+                # if it contains more entries than the required number, or
+                # loop through list as many time as necessary to reach
+                # prescribed proc count
+                else:
+                    proc_count = 0
+                    while proc_count < self.n_procs:
+                        for host in self.hosts_list:
+                            if proc_count < self.n_procs:
+                                f.write(host + '\n')
+                                proc_count += 1
+                f.close()
+
+        return hosts_file
+
+#-------------------------------------------------------------------------------
+# MPI environments and associated commands
+#-------------------------------------------------------------------------------
+
+MPI_MPMD_none       = 0
+MPI_MPMD_mpiexec    = (1<<0) # mpiexec colon-separated syntax
+MPI_MPMD_configfile = (1<<1) # mpiexec -configfile syntax
+MPI_MPMD_script     = (1<<2)
+MPI_MPMD_execve     = (1<<3)
+
+class mpi_environment:
+
+    def __init__(self, resource_info=None):
+        """
+        Returns MPI environment info.
+        """
+
+        # Note that self.mpiexec will usually be ' -n ' if present;
+        # blanks are used to separate from the surrounding arguments,
+        # but in the case of srun, which uses a -n<n_procs> instead
+        # of -n <n_procs> syntax, setting it to ' -n' will be enough.
+
+        self.type = mpi_lib.type
+        self.bindir = mpi_lib.bindir
+
+        self.gen_hostsfile = None
+        self.del_hostsfile = None
+        self.mpiboot = None
+        self.mpihalt = None
+        self.mpiexec = None
+        self.mpiexec_n = None
+        self.mpiexec_exe = None
+        self.mpiexec_args = None
+        self.mpmd = MPI_MPMD_none
+
+        self.info_cmds = None
+
+        # Initialize based on known MPI types, or default.
+
+        init_method = self.__init_other__
+
+        if len(mpi_lib.type) > 0:
+            mpi_env_by_type = {'MPICH2':self.__init_mpich2__,
+                               'MPICH1':self.__init_mpich1__,
+                               'OpenMPI':self.__init_openmpi__,
+                               'LAM_MPI':self.__init_lam__,
+                               'BGL_MPI':self.__init_bgl__,
+                               'BGP_MPI':self.__init_bgp__,
+                               'HP_MPI':self.__init_hp_mpi__,
+                               'MPIBULL2':self.__init_mpibull2__}
+            if mpi_lib.type in mpi_env_by_type:
+                init_method = mpi_env_by_type[mpi_lib.type]
+
+        p = os.getenv('PATH').split(':')
+        if len(mpi_lib.bindir) > 0:
+            p.insert(0, mpi_lib.bindir)
+
+        init_method(p, resource_info)
+
+    #---------------------------------------------------------------------------
+
+    def __init_mpich2__(self, p, resource_info=None):
+
+        """
+        Initialize for MPICH2 environment.
+        """
+
+        # Determine base executable paths
+
+        launcher_names = ['mpiexec', 'mpirun']
+
+        for name in launcher_names:
+            for dir in p:
+                absname = os.path.join(dir, name)
+                if os.path.isfile(absname):
+                    if dir == mpi_lib.bindir:
+                        self.mpiexec = absname
+                    else:
+                        self.mpiexec = name
+                    break
+            if self.mpiexec != None:
+                break
+
+        for dir in p:
+            if os.path.isfile(os.path.join(dir, 'mpdboot')):
+                if dir == mpi_lib.bindir:
+                    self.mpiboot = os.path.join(dir, 'mpdboot')
+                    self.mpihalt = os.path.join(dir, 'mpdallexit')
+                else:
+                    self.mpiboot = 'mpdboot'
+                    self.mpihalt = 'mpdallexit'
+                break
+
+        # Note that the self.mpiboot and self.mpihalt commands may be
+        # too simplistic in certain cases. For example, it would be
+        # interesting to run mpdringtest first, and depending on its
+        # exit code (0 if ring is up, 255 if not up), run mpdboot.
+        # The same, mpdlistjobs could be run before mpdallexit to ensure
+        # that we do not kill an mpdring if another job is running.
+
+        # Determine processor count and MPMD handling
+
+        launcher_base = os.path.basename(self.mpiexec)
+
+        if launcher_base[:7] == 'mpiexec':
+            self.mpmd = MPI_MPMD_mpiexec | MPI_MPMD_configfile | MPI_MPMD_script
+            self.mpiexec_n = ' -n '
+        elif launcher_base[:7] == 'mpirun':
+            self.mpiexec_n = ' -np '
+            self.mpmd = MPI_MPMD_script
+
+        # Other options to add
+
+        # Resource manager info
+
+        if resource_info != None:
+            if resource_info.manager == 'SLURM':
+                # This requires linking with SLURM's implementation
+                # of the PMI library.
+                self.mpiexec = 'srun'
+                self.mpiexec_n = ' -n'
+                self.mpmd = MPI_MPMD_script
+                self.mpiboot = None
+                self.mpihalt = None
+            elif resource_info.manager == 'PBS':
+                # Convert PBS to MPD format (based on MPICH2 documentation)
+                # before MPI boot.
+                self.gen_hostsfile = 'sort $PBS_NODEFILE | uniq -C ' \
+                    + '| awk \'{ printf("%s:%s", $2, $1); }\' > ./mpd.nodes'
+                self.del_hostsfile = 'rm -f ./mpd.nodes'
+                if self.mpiboot != None:
+                    self.mpiboot = pbs_to_mpd \
+                        + self.mpiboot + ' --file ./mpd.nodes\n'
+            else:
+                hostsfile = resource_info.get_hosts_file(self)
+                if hostsfile != None and self.mpiboot != None:
+                    self.mpiboot += ' --file ' + hostsfile
+
+        # Info commands
+
+        self.info_cmds = ['mpich2version']
+
+    #---------------------------------------------------------------------------
+
+    def __init_mpich1__(self, p, resource_info=None):
+
+        """
+        Initialize for MPICH1 environment.
+        """
+
+        # Determine base executable paths
+
+        launcher_names = ['mpirun.mpich',
+                          'mpirun.mpich-mpd',
+                          'mpirun.mpich-shmem',
+                          'mpirun']
+
+        for name in launcher_names:
+            for dir in p:
+                absname = os.path.join(dir, name)
+                if os.path.isfile(absname):
+                    if dir == mpi_lib.bindir:
+                        self.mpiexec = absname
+                    else:
+                        self.mpiexec = name
+                    break
+            if self.mpiexec != None:
+                break
+
+        # Determine processor count and MPMD handling
+
+        self.mpiexec_n = ' -np '
+        self.mpmd = MPI_MPMD_script
+
+        # MPD daemons must be launched using the ch_p4mpd device,
+        # but may not be automated as easily as with MPICH2's mpdboot,
+        # so it is not handled here, and must be managed explicitely
+        # by the user or environment.
+
+        # Other options to add
+
+        # Resource manager info
+
+        if resource_info != None:
+            hostsfile = resource_info.get_hosts_file(self)
+            if hostsfile != None:
+                self.mpiexec += ' -machinefile ' + hostsfile
+
+        # Info commands
+
+        self.info_cmds = ['mpichversion']
+
+    #---------------------------------------------------------------------------
+
+    def __init_openmpi__(self, p, resource_info=None):
+        """
+        Initialize for OpenMPI environment.
+        """
+
+        # Determine base executable paths
+
+        launcher_names = ['mpiexec.openmpi', 'mpirun.openmpi',
+                          'mpiexec', 'mpirun']
+
+        for name in launcher_names:
+            for dir in p:
+                absname = os.path.join(dir, name)
+                if os.path.isfile(absname):
+                    if dir == mpi_lib.bindir:
+                        self.mpiexec = absname
+                    else:
+                        self.mpiexec = name
+                    break
+            if self.mpiexec != None:
+                break
+
+        # Determine processor count and MPMD handling
+
+        launcher_base = os.path.basename(self.mpiexec)
+
+        self.mpiexec_n = ' -n '
+        if launcher_base[:7] == 'mpiexec':
+            self.mpmd = MPI_MPMD_mpiexec | MPI_MPMD_script
+        elif launcher_base[:7] == 'mpirun':
+            self.mpmd = MPI_MPMD_script
+
+        # Other options to add
+
+        # Resource manager info (SLURM and PBS Pro/Torque are
+        # handled automatically by OpenMPI, so there is
+        # nothing to do in this case).
+
+        if resource_info != None:
+            if not resource_info.manager in ['SLURM', 'PBS']:
+                hostsfile = resource_info.get_hosts_file()
+                if hostsfile != None:
+                    self.mpiexec += ' --machinefile ' + hostsfile
+
+        # Info commands
+
+        self.info_cmds = ['ompi_info -a']
+
+    #---------------------------------------------------------------------------
+
+    def __init_lam__(self, p, resource_info=None):
+        """
+        Initialize for LAM/MPI environment.
+        """
+
+        # Determine base executable paths
+
+        launcher_names = ['mpiexec.lam', 'mpirun.lam', 'mpiexec', 'mpirun']
+
+        for name in launcher_names:
+            for dir in p:
+                absname = os.path.join(dir, name)
+                if os.path.isfile(absname):
+                    if dir == mpi_lib.bindir:
+                        self.mpiexec = absname
+                    else:
+                        self.mpiexec = name
+                    break
+            if self.mpiexec != None:
+                break
+
+        for dir in p:
+            if os.path.isfile(os.path.join(dir, 'lamboot')):
+                if dir == mpi_lib.bindir:
+                    self.mpiboot = os.path.join(dir, 'lamboot')
+                    self.mpihalt = os.path.join(dir, 'lamhalt')
+                else:
+                    self.mpiboot = 'lamboot'
+                    self.mpihalt = 'lamhalt'
+                break
+
+        # Determine processor count and MPMD handling
+
+        launcher_base = os.path.basename(self.mpiexec)
+
+        if launcher_base[:7] == 'mpiexec':
+            self.mpiexec_n = ' -n '
+            self.mpmd = MPI_MPMD_mpiexec | MPI_MPMD_script
+        elif launcher_base[:7] == 'mpirun':
+            self.mpiexec_n = ' -np '
+            self.mpmd = MPI_MPMD_script
+
+        # Determine options to add
+
+        if self.mpiboot != None:
+            self.mpiboot += ' -v'
+            self.mpihalt += ' -v'
+
+        # Resource manager info
+
+        if resource_info != None:
+            hostsfile = resource_info.get_hosts_file(self)
+            if hostsfile != None and self.mpiboot != None:
+                self.mpiboot += ' ' + hostsfile
+                self.mpihalt += ' ' + hostsfile
+
+        # Info commands
+
+        self.info_cmds = ['laminfo -all']
+
+    #---------------------------------------------------------------------------
+
+    def __init_bgl__(self, p, resource_info=None):
+
+        """
+        Initialize for Blue Gene/L environment.
+        """
+
+        # Set base executable path
+
+        self.mpiexec = '/bgl/BlueLight/ppcfloor/bglsys/mpi/mpirun'
+
+        # Determine processor count and MPMD handling
+
+        self.mpiexec_n = None
+        self.mpmd = MPI_MPMD_execve
+
+        # Other options to add
+
+        self.mpiexec_exe = '-exe'
+        self.mpiexec_args = '-args'
+
+        # Info commands
+
+    #---------------------------------------------------------------------------
+
+    def __init_bgp__(self, p, resource_info=None):
+
+        """
+        Initialize for Blue Gene/P environment.
+        """
+
+        # Set base executable path
+
+        self.mpiexec = 'mpiexec'
+
+        # Determine processor count and MPMD handling
+
+        launcher_base = os.path.basename(self.mpiexec)
+
+        self.mpiexec_n = None
+        self.mpmd = MPI_MPMD_configfile
+
+        # Other options to add
+
+        # Info commands
+
+    #---------------------------------------------------------------------------
+
+    def __init_hp_mpi__(self, p, resource_info=None):
+        """
+        Initialize for HP MPI environment.
+        """
+
+        # Determine base executable paths
+
+        self.mpiexec = 'mpirun'
+
+        if not os.path.isabs(self.mpiexec):
+            for dir in p:
+                absname = os.path.join(dir, self.mpiexec)
+                if os.path.isfile(absname):
+                    if dir == mpi_lib.bindir:
+                        self.mpiexec = absname
+                    else:
+                        self.mpiexec = launcher_name
+                    break
+
+        # Determine processor count and MPMD handling
+
+        self.mpmd = MPI_MPMD_script
+        self.mpiexec_n = '-np'
+
+        # Determine options to add
+
+        # If resource manager is used, add options
+
+        if resource_info != None:
+            if resource_info.manager == 'SLURM':
+                self.mpiexec += ' -srun'
+                self.mpiexec_n = None
+            elif resource_info.manager == 'LSF':
+                self.mpiexec += ' -lsb_hosts'
+
+        # Info commands
+
+    #---------------------------------------------------------------------------
+
+    def __init_mpibull2__(self, p, resource_info=None):
+        """
+        Initialize for MPIBULL2 environment.
+        """
+
+        self.__init_mpich2__(p, resource_info)
+
+        # On a Bull Novascale machine using MPIBULL2 (based on
+        # MPICH2), mpdboot and mpdallexit commands exist, as well as mpiexec
+        # (which connects to the mpd ring), but the SLURM srun launcher or
+        # mpibull2-launch meta-launcher (which can integrate directly to
+        # several resource managers using prun, srun, orterun, or mprun)
+        # should be simpler to use.
+
+        # The SLURM configuration is slightly different from that of MPICH2.
+
+        if resource_info != None:
+            if resource_info.manager == 'SLURM':
+                self.mpiexec = 'srun'
+                self.mpmd = MPI_MPMD_script
+                self.mpiexec_n = None
+                self.mpiboot = None
+                self.mpihalt = None
+            elif resource_info.manager != None:
+                err_str = 'Resource manager type ' + resource_info.manager \
+                    + ' options not handled yet for MPIBULL2.'
+                raise ValueError, err_str
+
+        # Info commands
+
+        self.info_cmds = ['mpibull2-version']
+
+    #---------------------------------------------------------------------------
+
+    def __init_other__(self, resource_info=None):
+        """
+        Initialize MPI environment info for environments not handled
+        in one the the previous cases.
+        """
+
+        # If possible, select launcher based on resource manager or
+        # specific systems (would be better done in derived classes,
+        # but these are cases on systems we have used in the past
+        # but do not currently have access to).
+
+        if os.uname()[0] == 'OSF1':
+            if abs_exec_path('prun') != None:
+                self.mpiexec = 'prun'
+                self.mpiexec_n = ' -n '
+
+        elif os.uname()[0] == 'AIX':
+            if abs_exec_path('poe') != None:
+                self.mpiexec = 'poe'
+                self.mpiexec_n = None
+
+        self.mpmd = MPI_MPMD_script
+
+    #---------------------------------------------------------------------------
+
+    def info(self):
+        """
+        Outputs MPI environment information in known cases.
+        """
+        output = ''
+
+        if self.info_cmds != None:
+            for cmd in self.info_cmds:
+                output += get_command_output(cmd) + '\n'
+
+        return output
+
+    #---------------------------------------------------------------------------
+
+    def unset_mpmd_mode(self, mpi_mpmd_mode):
+        """
+        Unset mask allowing a given mpmd mode.
+        """
+
+        if self.mpmd & mpi_mpmd_mode:
+            self.mpmd = self.mpmd ^ mpi_mpmd_mode
+
+#-------------------------------------------------------------------------------
+# Execution environment (including MPI, OpenMP, ...)
+#-------------------------------------------------------------------------------
+
+class exec_environment:
+
+    #---------------------------------------------------------------------------
+
+    def __init__(self, wdir=None, n_procs=None, hosts_list=None):
+        """
+        Returns Execution environment.
+        """
+
+        if sys.platform == 'win32' or sys.platform == 'win64':
+            self.user = os.getenv('USERNAME')
+        else:
+            self.user = os.getenv('USER')
+
+        self.wdir = wdir
+        if self.wdir == None:
+            self.wdir = os.getcwd()
+
+        self.resources = resource_info(n_procs, hosts_list)
+
+        self.mpi_env = None
+
+        # Associate default launcher and associated options based on
+        # known MPI types, use default otherwise
+
+        self.mpi_env = mpi_environment(self.resources)
+
+#-------------------------------------------------------------------------------
+
+if __name__ == '__main__':
+
+    e = exec_environment()
+
+    mpi_env = mpi_environment()
+
+    print 'mpi_env.bindir =        ', mpi_env.bindir
+    print 'mpi_env.mpiexec =       ', mpi_env.mpiexec
+    print 'mpi_env.mpiexec_args =  ', mpi_env.mpiexec_args
+    print 'mpi_env.mpiexec_exe =   ', mpi_env.mpiexec_exe
+    print 'mpi_env.mpiexec_n =     ', mpi_env.mpiexec_n
+    print 'mpi_env.gen_hostsfile = ', mpi_env.gen_hostsfile
+    print 'mpi_env.del_hostsfile = ', mpi_env.del_hostsfile
+    print 'mpi_env.mpiboot =       ', mpi_env.mpiboot
+    print 'mpi_env.mpihalt =       ', mpi_env.mpihalt
+    print 'mpi_env.info_cmds =     ', mpi_env.info_cmds
+    print 'mpi_env.mpmd =          ', mpi_env.mpmd
+    print 'mpi_env.type =          ', mpi_env.type
+
+    print mpi_env.info()
+
diff --git a/bin/cs_info.py b/bin/cs_info.py
index 40a4582..207519d 100644
--- a/bin/cs_info.py
+++ b/bin/cs_info.py
@@ -55,7 +55,7 @@ import cs_config
 def process_cmd_line(argv):
     """
     Processes the passed command line arguments.
-    
+
     Input Argument:
       arg -- This can be either a list of arguments as in
              sys.argv[1:] or a string that is similar to the one
@@ -71,7 +71,7 @@ def process_cmd_line(argv):
 
     parser.add_option("-g", "--guide", dest="guides", type="string",
                       metavar="<guide>", action="append",
-                      help="open a given manual [user, theory, tutorial]")
+                      help="open a manual [refcard, user, theory, tutorial]")
 
     parser.add_option("--version", dest="version",
                       action="store_true",
@@ -100,13 +100,7 @@ def print_version():
     Print Code_Saturne version.
     """
 
-    msg = """
- Code_Saturne version: %(solver)s
- Preprocessor version: %(prepro)s
-    """
-
-    print msg % {'solver':cs_config.dirs.prefix,
-                 'prepro':cs_config.dirs.ecs_prefix}
+    print "Code_Saturne version: %s" % cs_config.package.version
 
 
 #-------------------------------------------------------------------------------
@@ -146,7 +140,7 @@ def launch_manual(reader, m):
             os.filestart(manual)
 
         elif os.name == "posix":
-            
+
             for t in sys_tools:
                 cmd = t + ' ' + manual + ' 2>/dev/null &'
                 try: os.system(cmd)
@@ -174,7 +168,7 @@ def main(argv):
 
     if version:
         print_version()
-        
+
     for m in manuals:
         launch_manual(reader, m)
 
diff --git a/bin/cs_plot_probes.py b/bin/cs_plot_probes.py
index a9bc384..1cc9025 100644
--- a/bin/cs_plot_probes.py
+++ b/bin/cs_plot_probes.py
@@ -21,8 +21,8 @@
 
 import os
 import sys
-import subprocess
 import tempfile
+from cs_exec_environment import run_command
 from optparse import OptionParser
 
 #-------------------------------------------------------------------------------
@@ -30,7 +30,7 @@ from optparse import OptionParser
 def process_cmd_line(argv):
     """
     Processes the passed command line arguments.
-    
+
     Input Argument:
       arg -- This can be either a list of arguments as in
              sys.argv[1:] or a string that is similar to the one
@@ -52,20 +52,6 @@ def process_cmd_line(argv):
 
 #-------------------------------------------------------------------------------
 
-def run_command(cmd):
-    """
-    Run a command.
-    """
-    p = subprocess.Popen(cmd,
-                         shell=True,
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.PIPE)
-    p.wait()
-
-    return p.returncode
-
-#-------------------------------------------------------------------------------
-
 def plot(f):
     """
     Plot a monitoring file with XmGrace.
@@ -81,7 +67,7 @@ def plot(f):
 
     # Run XmGrace -nxy command
 
-    cmd = "xmgrace -nxy" + " " + temp_file[1]
+    cmd = "xmgrace -geometry 1100x850 -nxy" + " " + temp_file[1]
     run_command(cmd)
 
     # Cleanup and exit
diff --git a/bin/runcase.help b/bin/runcase.help
index 6d6ec6c..2c6ff31 100644
--- a/bin/runcase.help
+++ b/bin/runcase.help
@@ -214,7 +214,7 @@ The EXEC_PREPROCESS, EXEC_PARTITION, and EXEC_KERNEL variables allow running
   so the PARTITION_LIST variable must be used to indicate which partitionings
   are required. For example, PARTITION_LIST="128 256" will generate
   2 partitionings, with files domain_number_128 and domain_number_256
-  in RESU/PARTITION_OUTPUT. The option "-no-perio" may also be added to 
+  in RESU/PARTITION_OUTPUT. The option "-no-perio" may also be added to
   PARTITION_LIST if we do not want periodicity to be accounted for in the
   connectivity graph.
   If EXEC_PREPROCESS is set to no, a preprocessor_output file must be found in
diff --git a/bin/runcase.in b/bin/runcase.in
index b69ca97..91009d8 100644
--- a/bin/runcase.in
+++ b/bin/runcase.in
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 # @configure_input@
 #============================================================================
 #
@@ -235,10 +235,7 @@ pkgdatadir=${datadir}/@PACKAGE@
 #
 # Preprocessor installation parameters
 #
-ecs_prefix=@ecs_prefix@
-#
-ecs_exec_prefix=${ecs_prefix}
-ecs_bindir=${ecs_exec_prefix}/bin
+ecs_bindir=@ecs_bindir@
 #
 # HOMARD installation parameters (to be completed if needed)
 #
@@ -264,6 +261,11 @@ N_SYRTHES_COUPLINGS=0
 if [ -f "${SRC}/ussyrc.f90" ] ; then
   N_SYRTHES_COUPLINGS=`grep -e ^' ' ${SRC}/ussyrc.f90 | grep -i -c defsyr`
 fi
+if [ ! -z "$PARAM" ] ; then
+  var=$DATA/$PARAM
+  N_SYRTHES_COUPLINGS_GUI=`grep -c syrthes_app_num $var`
+  (( N_SYRTHES_COUPLINGS = N_SYRTHES_COUPLINGS + N_SYRTHES_COUPLINGS_GUI ))
+fi
 #
 if [ $N_SYRTHES_COUPLINGS = 0 ] ; then
   SYRTHES_COUPLING=no
@@ -349,7 +351,7 @@ cd $RUN
 # not on the default path. This is a peculiar use of make, but allows
 # us to avoid defining the MPI configuration in multiple files.
 
-CS_MPI_PATH=@MPI_BIN@
+CS_MPI_PATH=@mpi_bindir@
 
 # NUMBER_OF_PROCESSORS is determined here if not already set;
 # MPIHOSTS, MPIRUN, MPIBOOT, MPIHALT, and NUMBER_OF_NODES are
@@ -432,7 +434,7 @@ echo '    ' $RUN
 #
 echo
 echo ' Kernel version:          ' $prefix
-echo ' Preprocessor version:    ' $ecs_prefix
+echo ' Preprocessor:            ' $ecs_bindir
 
 if [ "${EXEC_KERNEL}" = "yes" ] ; then
 
@@ -482,9 +484,9 @@ if [ "${EXEC_KERNEL}" = "yes" ] ; then
 
     # Detect presence and test for compatibility of modules.
     if [ ! -z "$PARAM" ] ; then
-      ${bindir}/cs check_consistency --source=$src_dir --param=$PARAM --nproc=$nproc_kernel
+      ${bindir}/code_saturne check_consistency --source=$src_dir --param=$PARAM --nproc=$nproc_kernel
     else
-      ${bindir}/cs check_consistency --nproc=$nproc_kernel
+      ${bindir}/code_saturne check_consistency --nproc=$nproc_kernel
     fi
     if [ $? = 1 ] ; then
       exit 1
@@ -494,7 +496,7 @@ if [ "${EXEC_KERNEL}" = "yes" ] ; then
     if [ ! -z "${CS_LIB_ADD}" ] ; then
       OPTLIBS="--opt-libs=${CS_LIB_ADD}"
     fi
-    ${bindir}/cs compile \
+    ${bindir}/code_saturne compile \
       --source=$src_dir ${OPTLIBS} 2>>$cur_dir/compil.log 1>&2
     if [ $? -ne 0 ]
     then
@@ -510,9 +512,9 @@ if [ "${EXEC_KERNEL}" = "yes" ] ; then
 
     # Detect presence and test for compatibility of modules.
     if [ ! -z "$PARAM" ] ; then
-      ${bindir}/cs check_consistency --param=$PARAM --nproc=$nproc_kernel
+      ${bindir}/code_saturne check_consistency --param=$PARAM --nproc=$nproc_kernel
     else
-      ${bindir}/cs check_consistency --nproc=$nproc_kernel
+      ${bindir}/code_saturne check_consistency --nproc=$nproc_kernel
     fi
     if [ $? = 1 ] ; then
       exit 1
@@ -636,6 +638,9 @@ if [ "${EXEC_KERNEL}" = "yes" ] ; then
       echo ' can not be accessed. '
       exit 1
     fi
+    if [ ! -f JANAF ] ; then
+      cp ${pkgdatadir}/data/thch/JANAF JANAF
+    fi
   fi
   #
   if [ "$METEO_DATA" != "" ] ; then
@@ -655,13 +660,6 @@ if [ "${EXEC_KERNEL}" = "yes" ] ; then
     fi
   fi
   #
-  for f in uscpcl.f90 usd3pc.f90 usebuc.f90 uslwcc.f90 usfucl.f90
-  do
-    if [ -f "${SRC}/${f}" -a ! -f JANAF ] ; then
-      cp ${datadir}/data/thch/JANAF JANAF
-    fi
-  done
-  #
   if [ $SYRTHES_COUPLING = yes ] ; then
     #
     ${pkgdatadir}/runcase_syrthes -copy-data -syrthes-env=${DATA_SYR}/$SYRTHES_ENV
@@ -695,7 +693,7 @@ echo '========================================================'>>$summary
 echo '   Start time       : ' $CURDATE                         >>$summary
 echo '  ----------------------------------------------------'  >>$summary
 echo '    Kernel          : ' $prefix                          >>$summary
-echo '    Preprocessor    : ' $ecs_prefix                      >>$summary
+echo '    Preprocessor    : ' $ecs_bindir                      >>$summary
 echo '    ------------------------------------------------  '  >>$summary
 echo '    HOMARD          : ' $homard_prefix                   >>$summary
 echo '    ------------------------------------------------  '  >>$summary
@@ -768,7 +766,7 @@ fi
 #
 # Partitioner start
 #
-if [ ! -f ${ecs_bindir}/cs_partition ] ; then
+if [ ! -f ${ecs_bindir}/cs_partition -a $nproc_kernel -gt 1 ] ; then
   echo "Warning: ${ecs_bindir}/cs_partition not found."
   echo
   echo "The partitioner may not have been installed"
diff --git a/bin/runcase.py.in b/bin/runcase.py.in
new file mode 100755
index 0000000..fa60816
--- /dev/null
+++ b/bin/runcase.py.in
@@ -0,0 +1,307 @@
+#!@cs_python@
+#-------------------------------------------------------------------------------
+#   This file is part of the Code_Saturne Solver.
+#
+#   Copyright (C) 2009  EDF
+#
+#   Code_Saturne is free software; you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation; either version 2 of the License,
+#   or (at your option) any later version.
+#
+#   Code_Saturne is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty
+#   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public Licence
+#   along with the Code_Saturne Preprocessor; if not, write to the
+#   Free Software Foundation, Inc.,
+#   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#-------------------------------------------------------------------------------
+
+#===============================================================================
+# Batch options for different queuing systems
+#===============================================================================
+#
+# Batch options for LSF (example: CCRT's platine)
+# =====================
+#
+#BSUB -n 2
+#BSUB -W 00:05
+#BSUB -o nameandcaseo.%J
+#BSUB -e nameandcasee.%J
+#BSUB -J nameandcase
+#
+#  -n : number of processors
+#  -W : walltime as hh:mm
+#  -o : output file name
+#  -e : error file name
+#  -J : job name
+#
+#-------------------------------------------------------------------------------
+#
+# Batch options for PBS or Torque (example: Chatou cluster)
+# ===============================
+#
+#PBS -l nodes=4:ppn=2
+#PBS -l walltime=1:00:00
+#PBS -l mem=320mb
+#
+#PBS -j eo
+#PBS -N nameandcase
+#
+#  nodes    : number of nodes
+#  ppn      : number of process per node
+#  walltime : wall clock time (hh:mm:ss)
+#  mem      : memory
+#
+#WARNING: when coupling with SYRTHES, 1 processor will be reserved for each
+#         instance of SYRTHES. The Kernel will be executed on the remaining
+#         processors, so make sure to reserve a sufficiently high number
+#         of processors.
+#
+#-------------------------------------------------------------------------------
+#
+# Batch options for Sun Grid Engine (example: University of Manchester MACE)
+# =================================
+#
+# set the name of the job
+##$ -N nameandcase
+#
+# request between 2 and 4 slots
+##$ -pe mpich 2-4
+#
+# Execute the job from the current working directory
+# Job output will appear in this directory
+##$ -cwd
+#   can use -o dirname to redirect stdout
+#   can use -e dirname to redirect stderr
+
+#  Export these environment variables
+##$ -v MPI_HOME
+
+#set -x
+#
+#-------------------------------------------------------------------------------
+#
+# Batch options for IBM LoadLeveler (example: IBM cluster under AIX)
+# =================================
+#
+#@ shell = /bin/sh
+#
+#@ job_name = nameandcase
+#
+#@ job_type = parallel
+#@ cpus = 128
+#@ node_usage = not_shared
+#
+#@ network.MPI = csss,shared,US
+#@ bulkxfer = yes
+#
+#@ wall_clock_limit = 00:20:00
+#@ account_no = z001
+#
+#@ output = $(job_name).$(schedd_host).$(jobid).out
+#@ error  = $(job_name).$(schedd_host).$(jobid).err
+#@ notification = never
+#
+#@ queue
+# suggested environment settings:
+#  export MP_EAGER_LIMIT=65536
+#  export MP_SHARED_MEMORY=yes
+#  export MEMORY_AFFINITY=MCM
+#  export MP_TASK_AFFINITY=MCM
+#
+#===============================================================================
+# Import required Python modules
+#===============================================================================
+#
+import datetime
+import os
+import os.path
+import sys
+
+# Trick so that one doesn't have to set the PYTHONPATH variable
+sys.path.insert(0, '@pkgpythondir@')
+
+import cs_config
+import cs_check_consistency
+
+from cs_exec_environment import *
+from cs_case_domain import *
+from cs_case import *
+
+#===============================================================================
+# User variables
+#
+# Variables set to 'None' will be determined automatically
+#===============================================================================
+
+casedir = 'CASEDIRNAME'
+
+MESHES = None
+REORIENT = False
+
+JOIN = None
+PERIODICITY = None
+
+THERMOCHEMISTRY_DATA = None
+METEO_DATA = None
+USER_INPUT_FILES = None
+USER_OUTPUT_FILES = None
+
+# Number of processors associated with resolution domain (auto if none)
+
+N_PROCS = None
+N_PROCS_MIN = 1
+N_PROCS_MAX = None
+
+# Partition options (if separate run from resolution)
+
+PARTITION_LIST = None
+
+# Solver options
+
+PARAMETERS = None
+SOLCOM = False
+CUT_WARPED_FACES = None
+CHECK_ARGS = None
+OUTPUT_ARGS = None
+
+# For SYRTHES couplings, 'MPI' or 'sockets' modes may be used
+
+SYR_COUPLING_MODE = 'MPI'
+SYR_ECHO_COMM = None
+
+# Optional list of hosts
+
+HOSTS_LIST = None
+
+# Operations to execute
+
+EXEC_PREPROCESS = True
+EXEC_PARTITION = True
+EXEC_SOLVER = True
+
+# Adaptation (not operational yet)
+
+HOMARD_PREFIX = None
+
+#-------------------------------------------------------------------------------
+
+def def_exec_prefix():
+    """
+    Define execution directory prefix.
+    """
+
+    exec_prefix = None
+
+    # Preferential base working directories
+
+    if sys.platform == 'win32' or sys.platform == 'win64':
+        user = os.getenv('USERNAME')
+    else:
+        user = os.getenv('USER')
+
+        exec_prefix_prefs = [os.getenv('SCRATCHDIR'),
+                             os.path.join('/local00/users', user),
+                             os.path.join('/local01/users', user)]
+
+    if os.getenv('TMPDIR') != '/tmp':
+        exec_prefix_prefs.append(os.getenv('TMPDIR'))
+
+    exec_prefix_prefs.append(os.getenv('HOME'))
+
+    for prefix in exec_prefix_prefs:
+        if prefix != None and os.path.isdir(prefix):
+            exec_prefix = os.path.join(prefix, 'tmp_Saturne')
+            break
+
+    return exec_prefix
+
+#-------------------------------------------------------------------------------
+
+if __name__ == '__main__':
+
+    # Values in case and associated domain set from global variables
+
+    d = domain(meshes = MESHES,
+               reorient = REORIENT,
+               join = JOIN,
+               periodicity = PERIODICITY,
+               partition_list = PARTITION_LIST,
+               param = PARAMETERS,
+               solcom = SOLCOM,
+               cut_warped_faces = CUT_WARPED_FACES,
+               mode_args = CHECK_ARGS,
+               logging_args = OUTPUT_ARGS,
+               thermochemistry_data = THERMOCHEMISTRY_DATA,
+               meteo_data = METEO_DATA,
+               user_input_files = USER_INPUT_FILES,
+               user_output_files = USER_OUTPUT_FILES,
+               n_procs = N_PROCS,
+               n_procs_min = N_PROCS_MIN,
+               n_procs_max = N_PROCS_MAX)
+
+    # Possible SYRTHES coupling
+
+    if os.path.isdir(os.path.join(casedir, 'DATA_SYR')):
+        sd = syrthes_domain(syrthes_env = 'syrthes.env',  # SYRTHES paths file
+                            echo_comm = None,             # coupling verbosity
+                            coupling_mode = 'MPI',        # 'MPI' or 'sockets'
+                            coupled_app_ids = 1)          # coupled app. ids
+    else:
+        sd = None
+
+    # Now handle case for the corresponding calculation domain(s).
+
+    case = case(casedir,
+                d,
+                sd,
+                results_by_suffix = True,
+                exec_preprocess = EXEC_PREPROCESS,
+                exec_partition = EXEC_PARTITION,
+                exec_solver = EXEC_SOLVER)
+
+    # Select suffix (define if only running the solver or saving results)
+
+    suffix = None
+
+    mpi_env = None
+
+    # Force MPI environment if mpi_environment != None
+
+    # Syntax is as follows:
+    #
+    # mpi_env = mpi_environment()
+    #
+    # Some fields may need to be modified in case of incorrect defaults
+    # (due to the wide variety of MPI implementations and build options,
+    # the default configuration may not give correct values in some cases).
+
+    # mpi_env.bindir = path to mpi binaries
+    # mpi_env.mpiexec = mpiexec, mpirun, or equivalent command
+    # mpi_env.mpiexec_args = option to pass arguments (usually None, or -args)
+    # mpi_env.mpiexec_exe = option to define executable (usually None, of -exe)
+    # mpi_env.mpiexec_n = option to define number of ranks (e.g. ' -n ', ' -np ')
+    # mpi_env.gen_hostsfile = shell command to generate hostsfile if required
+    # mpi_env.del_hostsfile = shell command to delete hostsfile if required
+    # mpi_env.mpiboot = command to start environment (e.g. mpdboot, lamboot)
+    # mpi_env.mpihalt = command to halt environment (e.g. mpdallexit, lamhalt)
+    # mpi_env.mpmd = MPI_MPMD_mpiexec (mpiexec colon-separated syntax), or
+    #                MPI_MPMD_configfile (mpiexec -configfile syntax), or
+    #                MPI_MPMD_script, or
+    #                MPI_MPMD_execve
+
+    # Execute script
+
+    case.run(n_procs=None,
+             hosts_list=HOSTS_LIST,
+             mpi_environment=mpi_env,
+             exec_prefix=def_exec_prefix(),
+             suffix=suffix,
+             prepare_data=True,
+             run_solver=True,
+             save_results=True)
+
diff --git a/bin/runcase_coupling.in b/bin/runcase_coupling.in
deleted file mode 100644
index e087b6a..0000000
--- a/bin/runcase_coupling.in
+++ /dev/null
@@ -1,1029 +0,0 @@
-#!/bin/bash
-# @configure_input@
-#============================================================================
-#
-#     This file is part of the Code_Saturne Kernel, element of the
-#     Code_Saturne CFD tool.
-#
-#     Copyright (C) 1998-2009 EDF S.A., France
-#
-#     contact: saturne-support at edf.fr
-#
-#     The Code_Saturne Kernel is free software; you can redistribute it
-#     and/or modify it under the terms of the GNU General Public License
-#     as published by the Free Software Foundation; either version 2 of
-#     the License, or (at your option) any later version.
-#
-#     The Code_Saturne Kernel is distributed in the hope that it will be
-#     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-#     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#     GNU General Public License for more details.
-#
-#     You should have received a copy of the GNU General Public License
-#     along with the Code_Saturne Kernel; if not, write to the
-#     Free Software Foundation, Inc.,
-#     51 Franklin St, Fifth Floor,
-#     Boston, MA  02110-1301  USA
-#
-#============================================================================
-#
-########################################################################
-#
-#                  BATCH FILE FOR THE CCRT (Platine under LSF)
-#                  ===========================================
-#
-#BSUB -n 2
-#BSUB -W 00:05
-#BSUB -o nameandcaseo.%J
-#BSUB -e nameandcasee.%J
-#BSUB -J nameandcase
-#
-#  -n : number of processors
-#  -W : walltime as hh:mm
-#  -o : output file name
-#  -e : error file name
-#  -J : job name
-#
-# ------------------------------------------------------------------
-#
-#                  BATCH FILE FOR THE Chatou CLUSTER (PBS)
-#                  =======================================
-#
-#PBS -l nodes=4:ppn=2
-#PBS -l walltime=1:00:00
-#PBS -l mem=320mb
-#
-#PBS -j eo
-#PBS -N nameandcase
-#
-#  nodes    : number of nodes
-#  ppn      : number of process per node
-#  walltime : wall clock time (hh:mm:ss)
-#  mem      : memory
-#
-#WARNING: when coupling with SYRTHES, 1 processor will be reserved for each
-#         instance of SYRTHES. The Kernel will be executed on the remaining
-#         processors, so make sure to reserve a sufficiently high number
-#         of processors.
-#
-# ------------------------------------------------------------------
-#
-#                  BATCH FILE (University of Manchester Cluster)
-#                  =============================================
-#
-# set the name of the job
-##$ -N nameandcase
-#
-# request between 2 and 4 slots
-##$ -pe mpich 2-4
-#
-# Execute the job from the current working directory
-# Job output will appear in this directory
-##$ -cwd
-#   can use -o dirname to redirect stdout
-#   can use -e dirname to redirect stderr
-
-#  Export these environment variables
-##$ -v MPI_HOME
-
-#set -x
-#
-# ------------------------------------------------------------------
-#
-#                  BATCH FILE (AIX, Loadlever)
-#                  ===========================
-#
-#@ shell = /bin/sh
-#
-#@ job_name = nameandcase
-#
-#@ job_type = parallel
-#@ cpus = 128
-#@ node_usage = not_shared
-#
-#@ network.MPI = csss,shared,US
-#@ bulkxfer = yes
-#
-#@ wall_clock_limit = 00:20:00
-#@ account_no = z001
-#
-#@ output = $(job_name).$(schedd_host).$(jobid).out
-#@ error  = $(job_name).$(schedd_host).$(jobid).err
-#@ notification = never
-#
-#@ queue
-# suggested environment settings:
-#  export MP_EAGER_LIMIT=65536
-#  export MP_SHARED_MEMORY=yes
-#  export MEMORY_AFFINITY=MCM
-#  export MP_TASK_AFFINITY=MCM
-#
-########################################################################
-#
-# BEGINNING OF USER MODIFIABLE ZONE FOR STANDARD CALCULATIONS
-#
-# runcase.help gives more details about the different variables.
-#
-#                    -------------------------------
-#
-NB_INSTANCES=2
-#
-# On some systems, some external libraries may require TERM to be defined.
-export TERM=xterm
-#
-STUDY=STUDYNAME
-CASE=CASENAME
-#
-# Parameters for the 1st instance 
-# -------------------------------
-PARAM_1=
-MESH_1=
-COMMAND_REORIENT_1=
-COMMAND_JOIN_1=
-COMMAND_CWF_1=
-COMMAND_PERIO_1=
-THERMOCHEMISTRY_DATA_1=
-METEO_DATA_1=
-#
-# Choose the total number of processors used (if empty, automatic detection
-# through the batch system if possible, set to 1 otherwise).
-# When coupling with SYRTHES with COUPLING_MODE=MPI, the 1st processor is
-# used by SYRTHES, so the effective number of processors assigned to the
-# Kernel is reduced by 1.
-# The processors list is only usable when not running on a batch system
-# (as such a system usually already defines a similar list)
-NUMBER_OF_PROCESSORS_1=1
-PROCESSOR_LIST_1=
-#
-PARTITION_LIST_1=
-#
-USER_INPUT_FILES_1=""
-USER_OUTPUT_FILES_1=""
-#
-# Parameters for the 2nd instance 
-# -------------------------------
-PARAM_2=
-MESH_2=
-COMMAND_REORIENT_2=
-COMMAND_JOIN_2=
-COMMAND_CWF_2=
-COMMAND_PERIO_2=
-THERMOCHEMISTRY_DATA_2=
-METEO_DATA_2=
-#
-# Choose the total number of processors used (if empty, automatic detection
-# through the batch system if possible, set to 1 otherwise).
-# When coupling with SYRTHES with COUPLING_MODE=MPI, the 1st processor is
-# used by SYRTHES, so the effective number of processors assigned to the
-# Kernel is reduced by 1.
-# The processors list is only usable when not running on a batch system
-# (as such a system usually already defines a similar list)
-NUMBER_OF_PROCESSORS_2=1
-PROCESSOR_LIST_2=
-#
-PARTITION_LIST_2=
-#
-USER_INPUT_FILES_2=""
-USER_OUTPUT_FILES_2=""
-#
-# Global parameters
-# -----------------
-# Working directory (leave empty for automatic default directory)
-CS_TMP_PREFIX=
-#CS_TMP_PREFIX=/local00/users/`whoami`
-#
-CS_LIB_ADD=
-VALGRIND=
-#
-ARG_CS_VERIF=""
-ARG_CS_OUTPUT=""
-ECHOCOMM=""
-#
-summary=summary
-CASEDIR=CASEDIRNAME
-#DATA=$CASEDIR/DATA
-RESU=$CASEDIR/RESU
-#SRC=$CASEDIR/SRC
-SCRIPTS=$CASEDIR/SCRIPTS
-#RESTART_IN=$DATA/RESTART
-#PREPROCESSOR_OUTPUT_IN=$DATA/preprocessor_output
-#PARTITION_OUTPUT_IN=$DATA/PARTITION_OUTPUT
-MESHDIR=$CASEDIR/../MESH
-#
-#  Indicate which steps should be executed; if both the Preprocessor and the
-#  Kernel are executed, the "preprocessor_output" and eventual "domain_number_*"
-#  files are not saved. If only the preprocessor and / or partitioner are
-#  executed, the corresponding files will be saved in a RESU/PREPROCESSOR_OUTPUT
-#  and RESU/PARTITION directory. If the Preprocessor is not executed,
-#  "preprocessor_output" will be read from $PREPROCESSOR_OUTPUT_IN. If the
-#  Partitioner is not executed, "domain_number_*" will be read from
-#  $PARTITION_OUTPUT_IN if available (otherwise, unoptimized default
-#  partitioning will be used).
-#
-#  EXEC_PREPROCESS : should the Preprocessor be run ? (yes/no)
-#  EXEC_PARTITION  : should the Partitioner be run ? (yes/no)
-#  EXEC_KERNEL     : should the Kernel be run ? (yes/no)
-#
-EXEC_PREPROCESS=yes
-EXEC_PARTITION=yes
-EXEC_KERNEL=yes
-#
-#
-#
-########################################################################
-#
-# END OF USER MODIFIABLE ZONE FOR STANDARD CALCULATIONS
-#
-########################################################################
-#
-# Kernel installation parameters
-#
-prefix=@prefix@
-#
-exec_prefix=@exec_prefix@
-bindir=@bindir@
-datarootdir=@datarootdir@
-datadir=@datadir@
-pkgdatadir=${datadir}/@PACKAGE@
-#
-# Preprocessor installation parameters
-#
-ecs_prefix=@ecs_prefix@
-#
-ecs_exec_prefix=${ecs_prefix}
-ecs_bindir=${ecs_exec_prefix}/bin
-#
-########################################################################
-#
-# Parameters for execution
-#
-# General variables
-THISSCRIPT=$0
-USER=`whoami`
-DATE=`date '+%m%d%H%M'`
-SUFFIX=$DATE
-EXE=cs_solver
-#
-# Copy runcase before changing to the working directory
-# (as after that, the relative path will not be up to date).
-#
-cp $0 $RESU/runcase.$SUFFIX
-#
-# Execution directory (reachable by all the processors)
-#
-if [ ! -z "$CS_TMP_PREFIX" ] ; then
-  RUN=${CS_TMP_PREFIX}/tmp_Saturne/$STUDY.$CASE.$DATE
-#
-else
-#  Default if not specified by the user
-#
-#  On the CCRT, there is no TMPDIR. We work by default in SCRATCHDIR
-  if [ "$SCRATCHDIR" != "" ] ; then
-    RUN=$SCRATCHDIR/tmp_Saturne/$STUDY.$CASE.$DATE
-#
-  elif [ "$TMPDIR" != "" -a "$TMPDIR" != "/tmp" ] ; then
-    RUN=$TMPDIR/tmp_Saturne/$STUDY.$CASE.$DATE
-  else
-    RUN=$HOME/tmp_Saturne/$STUDY.$CASE.$DATE
-  fi
-fi
-#
-# Create directory if necessary
-if [ "$RUN" != "$TMPDIR" ] ; then
-  if [ ! -d $RUN ] ; then
-    mkdir -p $RUN || exit 1
-  else
-    echo "RUN=$RUN already exists."
-    echo "The simulation will not be run."
-    exit 1
-  fi
-fi
-#
-cd $RUN
-#
-# Create a working directory for each instance
-I=0
-while [ $I -lt $NB_INSTANCES ]; do
-  (( I=I+1 ))
-  mkdir RUN.$I || exit 1
-done
-#
-########################################################################
-#
-# Set up MPI environment
-#
-# Use makefile query to obtain the path to MPI binaries if those are
-# not on the default path. This is a peculiar use of make, but allows
-# us to avoid defining the MPI configuration in multiple files.
-
-CS_MPI_PATH=@MPI_BIN@
-
-N_PROCS=0
-I=0
-while [ $I -lt $NB_INSTANCES ]; do
-    (( I=I+1 ))
-    N_PROCS=`eval echo '$NUMBER_OF_PROCESSORS_'$I`
-    (( NUMBER_OF_PROCESSORS=NUMBER_OF_PROCESSORS+$N_PROCS ))
-done
-
-# NUMBER_OF_PROCESSORS is determined here if not already set;
-# MPIHOSTS, MPIRUN, MPIBOOT, MPIHALT, and NUMBER_OF_NODES are
-# defined by the sourced script, and PATH may be updated.
-#
-. ${pkgdatadir}/runcase_mpi_env
-#
-echo
-echo
-#
-echo "Coupling of several Code_Saturne executables activated."
-#
-########################################################################
-# Greeting message
-#
-echo ' '
-echo '                      Code_Saturne is running '
-echo '                      *********************** '
-echo ' '
-echo ' Working directory (to be periodically cleaned) : '
-echo '    ' $RUN
-#
-########################################################################
-#
-# Compilation and link
-#
-# Note: we also check the for the presence of certain user subroutines here.
-#
-echo
-echo ' Kernel version:          ' $prefix
-echo ' Preprocessor version:    ' $ecs_prefix
-
-if [ "${EXEC_KERNEL}" = "yes" ] ; then
-
-I=0
-while [ $I -lt $NB_INSTANCES ]; do
-  (( I=I+1 ))
-
-  cur_dir=$RUN/RUN.$I
-  cd $cur_dir
-
-  PARAM=`eval echo '$PARAM_'$I`
-  SRC=$CASEDIR/SRC.$I
-
-  source_cas=$SRC
-
-  #
-  # Copy of the parameter file
-  if [ ! -z "$PARAM" ] ; then
-    var=$DATA/$PARAM
-    if [ -f $var ] ; then
-      COMMAND_PARAM="--param $PARAM"
-      cp $var .
-    else
-      echo ' '
-      echo ' -- ERROR -- '
-      echo ' The parameters file ' $var
-      echo ' can not be accessed.'
-      exit 1
-    fi
-  fi
-
-  src_files=`ls ${source_cas}/*.[fF]90 ${source_cas}/*.[ch] 2>/dev/null`
-
-  if [ ! -z "${src_files}" ] ; then
-
-if [ $I -eq 1 ]; then
-    echo
-    echo  "  ***************************************************************"
-    echo  "   Compilation of user subroutines and linking of Code_Saturne"
-    echo  "  ***************************************************************"
-fi
-
-    if [ -f compil.log ] ; then
-      rm -f compil.log
-    fi
-
-    src_dir="src_saturne"
-
-    # Copy of the user source files
-    # (no links: the directory is copied later)
-    mkdir ${src_dir}
-    for f in ${src_files} ; do
-      if [ -f $f ] ; then
-        cp ${f} ${src_dir}/
-      fi
-    done
-
-    # Detect presence and test for compatibility of modules.
-    if [ ! -z "$PARAM" ] ; then
-      ${bindir}/cs check_consistency --source=$src_dir --param=$PARAM
-    else
-      ${bindir}/cs check_consistency
-    fi
-    if [ $? = 1 ] ; then
-      exit 1
-    fi
-
-    # Compilation
-    if [ ! -z "${CS_LIB_ADD}" ] ; then
-      OPTLIBS="--opt-libs=${CS_LIB_ADD}"
-    fi
-    ${bindir}/cs compile \
-      --source=$src_dir ${OPTLIBS} 2>>$cur_dir/compil.log 1>&2
-    if [ $? -ne 0 ]
-    then
-      cp $cur_dir/compil.log $RESU/compil.log.$I.$SUFFIX
-      echo "COMPILE OR LINK ERROR"
-      rm -f *.o
-      exit 1
-    else
-      cp $cur_dir/compil.log $RESU/compil.log.$I.$SUFFIX
-    fi
-
-  else
-
-    # Detect presence and test for compatibility of modules.
-    if [ ! -z "$PARAM" ] ; then
-      ${bindir}/cs check_consistency --param=$PARAM
-    else
-      ${bindir}/cs check_consistency
-    fi
-    if [ $? = 1 ] ; then
-      exit 1
-    fi
-
-    ln -s ${bindir}/$EXE .
-
-  fi
-
-done
-
-fi # EXEC_KERNEL = yes
-
-#
-########################################################################
-#
-# Data setup
-#
-echo
-echo  "  ********************************************"
-echo  "             Preparing calculation            "
-echo  "  ********************************************"
-echo
-#
-ERROR=false
-PREPROCESS_ERROR=false
-PARTITION_ERROR=false
-EXECUTION_ERROR=false
-#
-I=0
-while [ $I -lt $NB_INSTANCES ]; do
-#
-  (( I=I+1 ))
-#
-  cur_dir=$RUN/RUN.$I
-  cd $cur_dir
-#
-
-  MESH=`eval echo '$MESH_'$I`
-  COMMAND_JOIN=`eval echo '$COMMAND_JOIN_'$I`
-  COMMAND_CWF=`eval echo '$COMMAND_CWF_'$I`
-  COMMAND_PERIO=`eval echo '$COMMAND_PERIO_'$I`
-
-  nproc_kernel=`eval echo '$NUMBER_OF_PROCESSORS_'$I`
-
-  SRC=$CASEDIR/SRC.$I
-  DATA=$CASEDIR/DATA.$I
-  RESTART_IN=$DATA/RESTART_IN
-  PREPROCESSOR_OUTPUT_IN=$DATA/preprocessor_output
-  PARTITION_OUTPUT_IN=$DATA/PARTITION_OUTPUT
-#
-if [ "${EXEC_PREPROCESS}" = "yes" ]
-then
-  for var in $MESH ; do
-    ln -s $MESHDIR/$var $var || exit 1
-    # Special case for meshes in EnSight format: link to .geo file necessary
-    # (retrieve name through .case file)
-    var2=`basename $var .case`
-    if [ $var2 != $var ] ; then
-      ficgeo_ensight=`awk '/^model:/ {print $2}' $var`
-      ln -s $MESHDIR/$ficgeo_ensight $ficgeo_ensight || FIN
-    fi
-  done
-else
-  if [ -f ${PREPROCESSOR_OUTPUT_IN} ] ; then
-    ln -s ${PREPROCESSOR_OUTPUT_IN} preprocessor_output || exit 1
-  else
-    echo "Error: no preprocessor output file is available;"
-    echo "       (${PREPROCESSOR_OUTPUT_IN} does not exist."
-    echo "       or is not a standard file."
-    exit 1
-  fi
-fi
-#
-if [ $nproc_kernel -eq 1 -a "${EXEC_KERNEL}" = "yes" ] ; then
-  EXEC_PARTITION=no
-elif [ "${EXEC_PARTITION}" = "no" -a "${PARTITION_OUTPUT_IN}" != "" ]
-then
-  if [ -f ${PARTITION_OUTPUT_IN}/domain_number_${nproc_kernel} ] ; then
-    ln -s ${PARTITION_OUTPUT_IN}/domain_number_${nproc_kernel} .
-  else
-    echo "Warning: no partitioning file is available;"
-    echo "         (no ${PARTITION_OUTPUT_IN}/domain_number_${nproc_kernel})."
-    echo
-    echo "         Unoptimized partitioning will be used."
-    echo "         Parallel performance may be degraded."
-  fi
-fi
-#
-if [ "${EXEC_KERNEL}" = "yes" ] ; then
-
-  THERMOCHEMISTRY_DATA=`eval echo '$THERMOCHEMISTRY_DATA_'$I`
-  METEO_DATA=`eval echo '$METEO_DATA_'$I`
-  USER_INPUT_FILES=`eval echo '$USER_INPUT_FILES_'$I`
-
-  for var in ${RESTART_IN}/* ; do
-    if [ -f $var ] ; then
-      varb=`basename $var`
-      if   [ $varb = suiava ] ; then
-        vara=suiamo
-      elif [ $varb = suiavx ] ; then
-        vara=suiamx
-      elif [ $varb = vorava ] ; then
-        vara=voramo
-      elif [ $varb = t1dava ] ; then
-        vara=t1damo
-      elif [ $varb = ctwava ] ; then
-        vara=ctwamo
-      elif [ $varb = rayava ] ; then
-        vara=rayamo
-      elif [ $varb = lagava ] ; then
-        vara=lagamo
-      elif [ $varb = lasava ] ; then
-        vara=lasamo
-      else
-        vara=$varb
-      fi
-      ln -s $var $vara
-    fi
-  done
-  #
-  if [ "$THERMOCHEMISTRY_DATA" != "" ] ; then
-    var=$DATA/$THERMOCHEMISTRY_DATA
-    if [ -f $var ] ; then
-      cp $var dp_tch
-      # Copy so as to have correct name upon backup
-      if [ "$THERMOCHEMISTRY_DATA" != "dp_tch" ] ; then
-        cp dp_tch $THERMOCHEMISTRY_DATA
-      fi
-    else
-      echo ' '
-      echo ' -- ERROR -- '
-      echo ' The thermochemistry file ' $var
-      echo ' can not be accessed. '
-      exit 1
-    fi
-  fi
-  #
-  if [ "$METEO_DATA" != "" ] ; then
-    var=$DATA/$METEO_DATA
-    if [ -f $var ] ; then
-      cp $var meteo
-      # Copy so as to have correct name upon backup
-      if [ "$METEO_DATA" != "meteo" ] ; then
-        cp meteo $METEO_DATA
-      fi
-    else
-      echo ' '
-      echo ' -- ERROR -- '
-      echo ' The meteo profile file ' $var
-      echo ' can not be accessed. '
-      exit 1
-    fi
-  fi
-  #
-  for f in uscpcl.f90 usd3pc.f90 usebuc.f90 uslwcc.f90 usfucl.f90
-  do
-    if [ -f "${SRC}/${f}" -a ! -f JANAF ] ; then
-      cp ${datadir}/data/thch/JANAF JANAF
-    fi
-  done
-  #
-  if [ ! -z "$USER_INPUT_FILES" ] ; then
-    for f in $USER_INPUT_FILES ; do
-      cp $DATA/$f .
-    done
-  fi
-  #
-fi # EXEC_KERNEL = yes
-
-if [ $I -eq 1 ]; then
-########################################################################
-# Maximum time for PBS (done here so as to leave time for PBS to
-# realize that things have started).
-#
-if [ "$PBS_JOBID" != "" ] ; then
-  CS_MAXTIME=`qstat -r $PBS_JOBID | grep $PBS_JOBID | sed -e's/ \{1,\}/ /g' | cut -d ' ' -f 9`
-  export CS_MAXTIME
-fi
-#
-########################################################################
-#
-# Summary: start
-#
-CURDATE=`unset LANG ; date`
-#
-echo '========================================================'>>$summary
-echo '   Start time       : ' $CURDATE                         >>$summary
-echo '  ----------------------------------------------------'  >>$summary
-echo '    Kernel          : ' $prefix                          >>$summary
-echo '    Preprocessor    : ' $ecs_prefix                      >>$summary
-echo '    ------------------------------------------------  '  >>$summary
-echo '    HOMARD          : ' $homard_prefix                   >>$summary
-echo '    ------------------------------------------------  '  >>$summary
-echo '    CS_MPI_PATH     : ' $CS_MPI_PATH                     >>$summary
-echo '    PATH            : ' $PATH                            >>$summary
-echo '    ------------------------------------------------  '  >>$summary
-echo '    User            : ' $USER                            >>$summary
-echo '========================================================'>>$summary
-echo '    Machine         : '                                  >>$summary
-     uname -a                                                  >>$summary
-if [ -z "$NUMBER_OF_PROCESSORS" ] ; then
-  echo '    N Procs         : ' 1                              >>$summary
-else
-  echo '    N Procs         : ' $NUMBER_OF_PROCESSORS          >>$summary
-fi
-if [ -z "$PROCESSOR_LIST" ] ; then
-  echo '    Processors      : ' default                        >>$summary
-else
-  echo '    Processors      : ' $PROCESSOR_LIST                >>$summary
-fi
-echo '========================================================'>>$summary
-echo '  ----------------------------------------------------'  >>$summary
-echo '    Case            : ' $CASE                            >>$summary
-echo '      DATA          : ' $DATA                            >>$summary
-echo '      SRC           : ' $SRC                             >>$summary
-echo '      RESU          : ' $RESU                            >>$summary
-echo '  ----------------------------------------------------'  >>$summary
-echo '    Exec. dir.      : ' $RUN                             >>$summary
-echo '  ----------------------------------------------------'  >>$summary
-if [ "$EXEC_PREPROCESSOR" = "yes" ] ; then
-  echo '    Preprocessor    : ' ${ecs_bindir}/cs_preprocess    >>$summary
-fi
-if [ "$EXEC_PARTITION" = "yes" ] ; then
-  echo '    Partitioner     : ' ${ecs_bindir}/cs_partition     >>$summary
-fi
-if [ "$EXEC_KERNEL" = "yes" ] ; then
-  echo '    Executable      : ' $EXE                           >>$summary
-fi
-echo '  ----------------------------------------------------'  >>$summary
-#
-# Execution
-echo
-echo  "  ********************************************"
-echo  "             Starting calculation"
-echo  "  ********************************************"
-echo
-fi
-#
-# Preprocessor start
-#
-if [ "${EXEC_PREPROCESS}" = "yes" ] ; then
-  #
-  ${ecs_bindir}/cs_preprocess --mesh $MESH "--case" $CASE \
-                   $COMMAND_REORIENT $COMMAND_JOIN $COMMAND_PERIO \
-                   > listpre 2>&1
-  if [ $? != 0 ] ; then
-    echo "Error running the preprocessor."
-    echo "Check preprocessor log (listpre) for details."
-    echo
-    PREPROCESS_ERROR=true
-    ERROR=true
-  fi
-  #
-  if [ "${EXEC_KERNEL}" = "no" ] ; then
-    #
-    PREPROCESSOR_OUTPUT_OUT=$RESU/preprocessor_output.$SUFFIX
-    cp preprocessor_output ${PREPROCESSOR_OUTPUT_OUT}
-  fi
-  #
-fi
-#
-# Partitioner start
-#
-if [ ! -f ${ecs_bindir}/cs_partition ] ; then
-  echo "Warning: ${ecs_bindir}/cs_partition not found."
-  echo
-  echo "The partitioner may not have been installed"
-  echo "  (this is the case if neither METIS nor."
-  echo "  SCOTCH are avaialable)."
-  echo
-  echo "Unoptimized partitioning will be used, so"
-  echo "parallel performance may be degraded."
-  echo
-  EXEC_PARTITION=no
-fi
-#
-if [ "${EXEC_PARTITION}" = "yes" ] ; then
-  #
-  if [ "${EXEC_KERNEL}" = "yes" ] ; then
-    ${ecs_bindir}/cs_partition $nproc_kernel > listpart 2>&1
-  else
-    if [ -z "$PARTITION_LIST" ] ; then
-      echo "Error running the partitioner."
-      echo "PARTITION_LIST is not set."
-      echo "This variable should contain the number of processors"
-      echo "for which we partition (or a list of such numbers)."
-      PARTITION_ERROR=true
-      ERROR=true
-    else
-      ${ecs_bindir}/cs_partition $PARTITION_LIST > listpart 2>&1
-    fi
-  fi
-  if [ $? != 0 -a $PARTITION_ERROR = false ] ; then
-    echo "Error running the partitioner."
-    echo "Check partitioner log (listpart) for details."
-    echo
-    PARTITION_ERROR=true
-    ERROR=true
-  fi
-  #
-  if [ "${EXEC_KERNEL}" = "no" ] ; then
-    #
-    PARTITION_OUTPUT_OUT=$RESU/PARTITION_OUTPUT.$SUFFIX
-    mkdir $PARTITION_OUTPUT_OUT
-    cp -r domain_number_* ${PARTITION_OUTPUT_OUT}/
-  fi
-#
-fi
-done
-#
-# Run calculation proper.
-#
-if [ "$ERROR" != "true" -a "$EXEC_KERNEL" = "yes" ] ; then
-#
-NB_TOT=0
-I=0
-while [ $I -lt $NB_INSTANCES ]; do
-    (( I=I+1 ))
-    cur_dir=$RUN/RUN.$I
-
-    COMMAND_CWF=`eval echo '$COMMANDE_CWF_'$I`
-    NUMBER_OF_PROCESSORS=`eval echo '$NUMBER_OF_PROCESSORS_'$I`
-    (( NB_TOT=NB_TOT+$NUMBER_OF_PROCESSORS ))
-    #
-    cd $RUN
-
-    RUNCS="$VALGRIND $cur_dir/$EXE --mpi $I \
-           $COMMAND_CWF $ARG_CS_VERIF $ARG_CS_OUTPUT $COMMAND_PARAM"
-    CMD="cd $cur_dir && $RUNCS"
-
-    # MPI Communication
-    #
-    # Make sure to transmit possible additional arguments assigned by mpirun to
-    # the executable with some MPI-1 implementations (vanilla MPICH 1.2 sets the
-    # parameters needed by MPI_Init through argc/argv): we use $@ to forward
-    # arguments passed to localexec to the true executable files.
-    #
-    localexec=$RUN/localexec
-    if [ $I -eq 1 ]; then
-    echo '#!/bin/sh' > $localexec
-    echo "MPI_RANK=\`${pkgdatadir}/runcase_mpi_rank \$@\`" >> $localexec
-    echo "if [ \$MPI_RANK -lt $NB_TOT ] ; then" >> $localexec
-    echo "  $CMD" >> $localexec
-    elif [ $I -lt $NB_INSTANCES ]; then
-    echo "elif [ \$MPI_RANK -lt $NB_TOT ] ; then" >> $localexec
-    echo "  $CMD" >> $localexec
-    else
-    echo "else" >> $localexec
-    echo "  $CMD" >> $localexec
-    echo "fi" >> $localexec
-    fi
-    chmod 700 $localexec
-
-done
-
-$MPIBOOT
-$MPIRUN $localexec || EXECUTION_ERROR=true
-$MPIHALT
-
-fi
-#
-########################################################################
-#
-# Treatment of the ouput files:
-#   Starts with the restart files
-#   (in case of full disk, increases chances of being able to continue).
-#
-I=0
-while [ $I -lt $NB_INSTANCES ]; do
- (( I=I+1 ))
-#
-  SUFFIX=$I.$DATE
-#
-  cur_dir=$RUN/RUN.$I
-  cd $cur_dir
-
-  USER_OUTPUT_FILES=`eval echo '$USER_OUTPUT_FILES_'$I`
-
-if [ $EXEC_KERNEL = yes ] ; then
-
-  RESTART_OUT=$RESU/RESTART.$SUFFIX
-  iok=1
-  mkdir ${RESTART_OUT} || iok=0
-  if [ $iok = 1 ] ; then
-    for f in suiava suiavx t1dava ctwava vorava rayava lagava* lasava* ; do
-      if [ -f $f ] ; then
-        cp $f ${RESTART_OUT}
-      fi
-    done
-  else
-    for f in suiava suiavx t1dava ctwava vorava rayava lagava* lasava* ; do
-      if [ -f $f ] ; then
-        cp $f $RESU/$f.$SUFFIX
-      fi
-    done
-  fi
-
-  resuser=0
-  for f in ${USER_OUTPUT_FILES} ; do
-    if [ -f $f ] ; then
-      resuser=1
-    fi
-  done
-  if [ ${resuser} = 1 ] ; then
-    RES_USER=$RESU/RES_USER.$SUFFIX
-    iok=1
-    mkdir ${RES_USER} || iok=0
-    if [ $iok = 1 ] ; then
-      for f in ${USER_OUTPUT_FILES} ; do
-        if [ -f $f ] ; then
-          cp $f ${RES_USER}
-        fi
-      done
-    else
-      for f in ${USER_OUTPUT_FILES} ; do
-        if [ -f $f ] ; then
-          cp $f $RESU/$f.$SUFFIX
-        fi
-      done
-    fi
-  fi
-
-  for f in $PARAM $THERMOCHEMISTRY_DATA $METEO_DATA ; do
-    if [ -f $f ] ; then
-      cp $f $RESU/$f.$SUFFIX
-    fi
-  done
-
-  for f in probes_*.dat ; do
-    if [ -f $f ] ; then
-      if [ ! -d $RESU/HIST.$SUFFIX ] ; then
-        mkdir $RESU/HIST.$SUFFIX
-      fi
-      cp $f $RESU/HIST.$SUFFIX
-    fi
-  done
-  for f in ush* ; do
-    if [ -f $f ] ; then
-      if [ ! -d $RESU/HIST.$SUFFIX ] ; then
-        mkdir $RESU/HIST.$SUFFIX
-      fi
-      cp $f $RESU/HIST.$SUFFIX
-    fi
-  done
-
-fi  # output files
-
-for f in list* error* *.med *.cgns ; do
-  if [ -f $f ] ; then
-    cp $f $RESU/$f.$SUFFIX
-  fi
-done
-
-# Treatment of EnSight and MED files
-#   The $dir (=*.ensight and/or *.med) directories are copied
-#   to $DIR.$SUFFIX
-
-#   We place directories $dir (=*.ensight and/or *.med)
-#   in $DIR.$SUFFIX
-
-cas=`echo $CASE |tr "[:upper:]" "[:lower:]"`
-
-for dir in *.ensight *.med ; do
-  if [ -d $dir ] ; then
-    DIR=`echo $dir |tr "[:lower:]" "[:upper:]"`
-    mkdir $RESU/$DIR.$SUFFIX
-    if [ $? -ne 0 ] ; then
-      echo Creating $RESU/$DIR.$SUFFIX failed
-    else
-      for f in $dir/*  ; do
-        if [ -f $f ] ; then
-          cp -R ${f} $RESU/$DIR.$SUFFIX/.
-        fi
-      done
-    fi
-  fi
-done
-
-if [ $EXEC_KERNEL = yes ] ; then
-
-  rayt_list=`ls bord* 2>/dev/null`
-  if [ ! -z "${rayt_list}" ] ; then
-    for f in $rayt_list ; do
-      if [ ! -d $RESU/CHR.$SUFFIX ] ; then
-        mkdir $RESU/CHR.$SUFFIX
-      fi
-      cp $f $RESU/CHR.$SUFFIX/.
-    done
-  fi
-
-  lagr_list=`ls debug* deplacement* trajectoire* frontiere* 2>/dev/null`
-  if [ ! -z "${lagr_list}" ] ; then
-    mkdir $RESU/LAGR.$SUFFIX
-    for f in $lagr_list ; do
-      cp $f $RESU/LAGR.$SUFFIX
-    done
-  fi
-
-  # Matisse output files
-  if [ -f ${RUN}/resuMatisse ] ; then
-    matisse=`grep -i matisse $DATA/$PARAM`
-    if [ ! -z "$matisse" ] ; then
-  # The date is added to the first line of resuMatisse
-      AFDATE="Date of the case                                       : "$DATE
-      sed  "1i\ ${AFDATE}" ${RUN}/resuMatisse >> ${RUN}/resuMatisse.mod
-      mv ${RUN}/resuMatisse.mod ${RUN}/resuMatisse
-    fi
-    cp ${RUN}/resuMatisse ${RESU}/resuMatisse.$SUFFIX
-  fi
-
-  for dir in src_saturne ; do
-    if [ -d $dir ] ; then
-      mkdir $RESU/SRC.$SUFFIX
-      if [ $? -ne 0 ] ; then
-        echo Failure creating $RESU/SRC.$SUFFIX
-      else
-        for f in $dir/*.[fF]90 $dir/*.[ch] ; do
-          if [ -f ${f} ] ; then
-            cp -R ${f} $RESU/SRC.$SUFFIX/.
-            fbase=`basename ${f}`
-            chmod a-w $RESU/SRC.$SUFFIX/${fbase}
-          fi
-        done
-      fi
-    fi
-  done
-
-fi  # input data and outputs
-done
-#
-########################################################################
-#
-# Summary: end
-#
-if  [ "$PREPROCESS_ERROR" = "true" ] ; then
-  EXEC_PREPROCESS="failed"
-fi
-echo "    Preprocessing   : " $EXEC_PREPROCESS                 >>$summary
-if  [ "$PARTITION_ERROR" = "true" ] ; then
-  EXEC_PARTITION="failed"
-fi
-echo "    Partitioning    : " $EXEC_PARTITION                  >>$summary
-if  [ "$EXECUTION_ERROR" = "true" ] ; then
-  EXEC_KERNEL="failed"
-fi
-echo "    Calculation     : " $EXEC_KERNEL                     >>$summary
-#
-CURDATE=`unset LANG ; date`
-#
-echo '  ----------------------------------------------------'  >>$summary
-echo '   Finish time      : ' $CURDATE                         >>$summary
-echo '========================================================'>>$summary
-#
-cp $summary  $RESU/$summary.$SUFFIX
-#
-########################################################################
-#
-#
-# Finish
-#
-echo
-echo  "  ********************************************"
-if [ "$EXECUTION_ERROR" = "true" ] ; then
-  echo  "         Error in calculation stage."
-elif  [ "$PARTITION_ERROR" = "true" ] ; then
-  echo  "         Error in partitioning stage."
-elif  [ "$PREPROCESS_ERROR" = "true" ] ; then
-  echo  "         Error in preprocessing stage."
-else
-  echo  "           Normal simulation finish"
-fi
-echo  "  ********************************************"
-
-if [ "$ERROR" = "true" ] ; then
-  exit 1
-else
-  exit 0
-fi
-#
-########################################################################
diff --git a/bin/runcase_syrthes b/bin/runcase_syrthes
index 68b3153..07cc642 100755
--- a/bin/runcase_syrthes
+++ b/bin/runcase_syrthes
@@ -144,7 +144,7 @@ if [ "$1" = "-compile" ] ; then
     done
   fi
 
-  ${CS_BINDIR}/cs compile --syrthes > ./compil.log 2>&1
+  ${CS_BINDIR}/code_saturne compile --syrthes > ./compil.log 2>&1
   make_ret=$?
 
   if [ "${LOG_COPY}" != "" ] ; then
diff --git a/config/config.guess b/config/config.guess
index ca2a03c..dc84c68 100755
--- a/config/config.guess
+++ b/config/config.guess
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
 #   Free Software Foundation, Inc.
 
-timestamp='2008-01-08'
+timestamp='2009-11-20'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -27,16 +27,16 @@ timestamp='2008-01-08'
 # the same distribution terms that you use for the rest of that program.
 
 
-# Originally written by Per Bothner <per at bothner.com>.
-# Please send patches to <config-patches at gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches at gnu.org> and include a ChangeLog
+# entry.
 #
 # This script attempts to guess a canonical system name similar to
 # config.sub.  If it succeeds, it prints the system name on stdout, and
 # exits with 0.  Otherwise, it exits with 1.
 #
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -170,7 +170,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
 		eval $set_cc_for_build
 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep __ELF__ >/dev/null
+			| grep -q __ELF__
 		then
 		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
 		    # Return netbsd for either.  FIX?
@@ -324,14 +324,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	case `/usr/bin/uname -p` in
 	    sparc) echo sparc-icl-nx7; exit ;;
 	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
     sun4H:SunOS:5.*:*)
 	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
     sun4*:SunOS:6*:*)
 	# According to config.sub, this is the proper way to canonicalize
@@ -640,7 +659,7 @@ EOF
 	    # => hppa64-hp-hpux11.23
 
 	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep __LP64__ >/dev/null
+		grep -q __LP64__
 	    then
 		HP_ARCH="hppa2.0w"
 	    else
@@ -791,12 +810,12 @@ EOF
     i*:PW*:*)
 	echo ${UNAME_MACHINE}-pc-pw32
 	exit ;;
-    *:Interix*:[3456]*)
+    *:Interix*:*)
     	case ${UNAME_MACHINE} in
 	    x86)
 		echo i586-pc-interix${UNAME_RELEASE}
 		exit ;;
-	    EM64T | authenticamd)
+	    authenticamd | genuineintel | EM64T)
 		echo x86_64-unknown-interix${UNAME_RELEASE}
 		exit ;;
 	    IA64)
@@ -806,6 +825,9 @@ EOF
     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
 	echo i${UNAME_MACHINE}-pc-mks
 	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -835,6 +857,20 @@ EOF
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
 	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
     arm*:Linux:*:*)
 	eval $set_cc_for_build
 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -857,6 +893,17 @@ EOF
     frv:Linux:*:*)
     	echo frv-unknown-linux-gnu
 	exit ;;
+    i*86:Linux:*:*)
+	LIBC=gnu
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+	exit ;;
     ia64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
@@ -866,74 +913,33 @@ EOF
     m68*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
-    mips:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef mips
-	#undef mipsel
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mipsel
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-	;;
-    mips64:Linux:*:*)
+    mips:Linux:*:* | mips64:Linux:*:*)
 	eval $set_cc_for_build
 	sed 's/^	//' << EOF >$dummy.c
 	#undef CPU
-	#undef mips64
-	#undef mips64el
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
 	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mips64el
+	CPU=${UNAME_MACHINE}el
 	#else
 	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips64
+	CPU=${UNAME_MACHINE}
 	#else
 	CPU=
 	#endif
 	#endif
 EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
 	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
 	;;
     or32:Linux:*:*)
 	echo or32-unknown-linux-gnu
 	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-gnu
 	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
 	exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
@@ -943,8 +949,11 @@ EOF
 	  *)    echo hppa-unknown-linux-gnu ;;
 	esac
 	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
 	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
 	echo ${UNAME_MACHINE}-ibm-linux
@@ -967,69 +976,6 @@ EOF
     xtensa*:Linux:*:*)
     	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
-    i*86:Linux:*:*)
-	# The BFD linker knows what the default object file format is, so
-	# first see if it will tell us. cd to the root directory to prevent
-	# problems with other programs or directories called `ld' in the path.
-	# Set LC_ALL=C to ensure ld outputs messages in English.
-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-			 | sed -ne '/supported targets:/!d
-				    s/[ 	][ 	]*/ /g
-				    s/.*supported targets: *//
-				    s/ .*//
-				    p'`
-        case "$ld_supported_targets" in
-	  elf32-i386)
-		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-		;;
-	  a.out-i386-linux)
-		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-		exit ;;
-	  coff-i386)
-		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-		exit ;;
-	  "")
-		# Either a pre-BFD a.out linker (linux-gnuoldld) or
-		# one that does not give us useful --help.
-		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-		exit ;;
-	esac
-	# Determine whether the default compiler is a.out or elf
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#ifdef __ELF__
-	# ifdef __GLIBC__
-	#  if __GLIBC__ >= 2
-	LIBC=gnu
-	#  else
-	LIBC=gnulibc1
-	#  endif
-	# else
-	LIBC=gnulibc1
-	# endif
-	#else
-	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-	LIBC=gnu
-	#else
-	LIBC=gnuaout
-	#endif
-	#endif
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^LIBC/{
-		s: ::g
-		p
-	    }'`"
-	test x"${LIBC}" != x && {
-		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-		exit
-	}
-	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
-	;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
 	# earlier versions are messed up and put the nodename in both
@@ -1058,7 +1004,7 @@ EOF
     i*86:syllable:*:*)
 	echo ${UNAME_MACHINE}-pc-syllable
 	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
 	echo i386-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
     i*86:*DOS:*:*)
@@ -1102,8 +1048,11 @@ EOF
     pc:*:*:*)
 	# Left here for compatibility:
         # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i386.
-	echo i386-pc-msdosdjgpp
+        # the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
         exit ;;
     Intel:Mach:3*:*)
 	echo i386-pc-mach3
@@ -1141,6 +1090,16 @@ EOF
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
           && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
 	echo m68k-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
@@ -1153,7 +1112,7 @@ EOF
     rs6000:LynxOS:2.*:*)
 	echo rs6000-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
 	echo powerpc-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
     SM[BE]S:UNIX_SV:*:*)
@@ -1216,6 +1175,9 @@ EOF
     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
 	echo i586-pc-beos
 	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
     SX-4:SUPER-UX:*:*)
 	echo sx4-nec-superux${UNAME_RELEASE}
 	exit ;;
@@ -1243,6 +1205,16 @@ EOF
     *:Darwin:*:*)
 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
 	case $UNAME_PROCESSOR in
+	    i386)
+		eval $set_cc_for_build
+		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		      grep IS_64BIT_ARCH >/dev/null
+		  then
+		      UNAME_PROCESSOR="x86_64"
+		  fi
+		fi ;;
 	    unknown) UNAME_PROCESSOR=powerpc ;;
 	esac
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
@@ -1324,6 +1296,9 @@ EOF
     i*86:rdos:*:*)
 	echo ${UNAME_MACHINE}-pc-rdos
 	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1484,9 +1459,9 @@ This script, last modified $timestamp, has failed to recognize
 the operating system you are using. It is advised that you
 download the most up to date version of the config scripts from
 
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 and
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
 
 If the version you run ($0) is already up to date, please
 send the following data and any information you think might be
diff --git a/config/config.sub b/config/config.sub
index 6759825..2a55a50 100755
--- a/config/config.sub
+++ b/config/config.sub
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
 #   Free Software Foundation, Inc.
 
-timestamp='2008-01-16'
+timestamp='2009-11-20'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -32,13 +32,16 @@ timestamp='2008-01-16'
 
 
 # Please send patches to <config-patches at gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# diff and a properly formatted GNU ChangeLog entry.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
 # If it is invalid, we print an error message on stderr and exit with code 1.
 # Otherwise, we print the canonical config type on stdout and succeed.
 
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
 # that are meaningful with *any* GNU software.
@@ -122,6 +125,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
   nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
   uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -148,10 +152,13 @@ case $os in
 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray)
+	-apple | -axis | -knuth | -cray | -microblaze)
 		os=
 		basic_machine=$1
 		;;
+        -bluegene*)
+	        os=-cnk
+		;;
 	-sim | -cisco | -oki | -wec | -winbond)
 		os=
 		basic_machine=$1
@@ -249,13 +256,16 @@ case $basic_machine in
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
 	| i370 | i860 | i960 | ia64 \
 	| ip2k | iq2000 \
+	| lm32 \
 	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | mcore | mep \
+	| maxq | mb | microblaze | mcore | mep | metag \
 	| mips | mipsbe | mipseb | mipsel | mipsle \
 	| mips16 \
 	| mips64 | mips64el \
-	| mips64vr | mips64vrel \
+	| mips64octeon | mips64octeonel \
 	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
 	| mips64vr4100 | mips64vr4100el \
 	| mips64vr4300 | mips64vr4300el \
 	| mips64vr5000 | mips64vr5000el \
@@ -268,6 +278,7 @@ case $basic_machine in
 	| mipsisa64sr71k | mipsisa64sr71kel \
 	| mipstx39 | mipstx39el \
 	| mn10200 | mn10300 \
+	| moxie \
 	| mt \
 	| msp430 \
 	| nios | nios2 \
@@ -276,20 +287,22 @@ case $basic_machine in
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
 	| pyramid \
+	| rx \
 	| score \
-	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
 	| spu | strongarm \
 	| tahoe | thumb | tic4x | tic80 | tron \
+	| ubicom32 \
 	| v850 | v850e \
 	| we32k \
 	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-	| z8k)
+	| z8k | z80)
 		basic_machine=$basic_machine-unknown
 		;;
-	m6811 | m68hc11 | m6812 | m68hc12)
+	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
 		# Motorola 68HC11/12.
 		basic_machine=$basic_machine-unknown
 		os=-none
@@ -329,14 +342,17 @@ case $basic_machine in
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
 	| i*86-* | i860-* | i960-* | ia64-* \
 	| ip2k-* | iq2000-* \
+	| lm32-* \
 	| m32c-* | m32r-* | m32rle-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
 	| mips16-* \
 	| mips64-* | mips64el-* \
-	| mips64vr-* | mips64vrel-* \
+	| mips64octeon-* | mips64octeonel-* \
 	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
 	| mips64vr4100-* | mips64vr4100el-* \
 	| mips64vr4300-* | mips64vr4300el-* \
 	| mips64vr5000-* | mips64vr5000el-* \
@@ -357,21 +373,22 @@ case $basic_machine in
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
 	| pyramid-* \
-	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
 	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
 	| tahoe-* | thumb-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
 	| tron-* \
+	| ubicom32-* \
 	| v850-* | v850e-* | vax-* \
 	| we32k-* \
 	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
 	| xstormy16-* | xtensa*-* \
 	| ymp-* \
-	| z8k-*)
+	| z8k-* | z80-*)
 		;;
 	# Recognize the basic CPU types without company name, with glob match.
 	xtensa*)
@@ -439,6 +456,10 @@ case $basic_machine in
 		basic_machine=m68k-apollo
 		os=-bsd
 		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
 	aux)
 		basic_machine=m68k-apple
 		os=-aux
@@ -455,10 +476,18 @@ case $basic_machine in
 		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
 		os=-linux
 		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
 	c90)
 		basic_machine=c90-cray
 		os=-unicos
 		;;
+        cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
 	convex-c1)
 		basic_machine=c1-convex
 		os=-bsd
@@ -526,6 +555,10 @@ case $basic_machine in
 		basic_machine=m88k-motorola
 		os=-sysv3
 		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
 	djgpp)
 		basic_machine=i586-pc
 		os=-msdosdjgpp
@@ -699,6 +732,9 @@ case $basic_machine in
 		basic_machine=ns32k-utek
 		os=-sysv
 		;;
+        microblaze)
+		basic_machine=microblaze-xilinx
+		;;
 	mingw32)
 		basic_machine=i386-pc
 		os=-mingw32
@@ -1128,6 +1164,10 @@ case $basic_machine in
 		basic_machine=z8k-unknown
 		os=-sim
 		;;
+	z80-*-coff)
+		basic_machine=z80-unknown
+		os=-sim
+		;;
 	none)
 		basic_machine=none-none
 		os=-none
@@ -1166,7 +1206,7 @@ case $basic_machine in
 	we32k)
 		basic_machine=we32k-att
 		;;
-	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
 		basic_machine=sh-unknown
 		;;
 	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
@@ -1216,6 +1256,9 @@ case $os in
         # First match some system type aliases
         # that might get confused with valid system types.
 	# -solaris* is a basic system type, with this one exception.
+        -auroraux)
+	        os=-auroraux
+		;;
 	-solaris1 | -solaris1.*)
 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
 		;;
@@ -1236,10 +1279,11 @@ case $os in
 	# Each alternative MUST END IN A *, to match a version number.
 	# -sysv* is not here because it comes later, after sysvr4.
 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* \
+	      | -aos* | -aros* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
@@ -1248,7 +1292,7 @@ case $os in
 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
 	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
 	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* \
@@ -1258,7 +1302,7 @@ case $os in
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1388,6 +1432,9 @@ case $os in
 	-zvmoe)
 		os=-zvmoe
 		;;
+	-dicos*)
+		os=-dicos
+		;;
 	-none)
 		;;
 	*)
@@ -1585,7 +1632,7 @@ case $basic_machine in
 			-sunos*)
 				vendor=sun
 				;;
-			-aix*)
+			-cnk*|-aix*)
 				vendor=ibm
 				;;
 			-beos*)
diff --git a/config/cs_auto_flags.sh b/config/cs_auto_flags.sh
index 67b7f75..be6f5b7 100644
--- a/config/cs_auto_flags.sh
+++ b/config/cs_auto_flags.sh
@@ -254,6 +254,7 @@ elif test "x$cs_gcc" = "xicc"; then
   case "$host-os-$host_cpu" in
     *ia64)
       cflags_default_opt="-O2 -mcpu=itanium2-p9000"
+      cflags_default_hot="-O3 -mcpu=itanium2-p9000"
       cflags_default_ext="-fp-model extended"
       ;;
   esac
@@ -271,12 +272,12 @@ if test "x$cs_cc_compiler_known" != "xyes" ; then
     echo "compiler '$CC' is Portland Group pgcc"
 
     # Version strings for logging purposes and known compiler flag
-    $CC -V conftest.c > $outfile 2>&1
+    $CC -V > $outfile 2>&1
     cs_ac_cc_version=`grep -i pgcc $outfile`
     cs_cc_compiler_known=yes
 
     # Default compiler flags
-    cflags_default="-Xa"
+    cflags_default="-c99"
     cflags_default_dbg="-g -Mbounds"
     cflags_default_opt="-fast -fastsse"
     cflags_default_prf="-Mprof=func,lines"
@@ -583,7 +584,7 @@ if test "$?" = "0" ; then
   test -n "$cs_fc_vers_patch" || cs_fc_vers_patch=0
 
   # Default compiler flags
-  fcflags_default="-x f95-cpp-input"
+  fcflags_default="-x f95-cpp-input -Wall -Wno-unused"
   fcflags_default_dbg="-g -fbounds-check"
   fcflags_default_opt="-O"
   fcflags_default_hot="-O2"
@@ -631,6 +632,32 @@ fi
 
 if test "x$cs_fc_compiler_known" != "xyes" ; then
 
+  # Are we using pgf95 ?
+  #---------------------
+
+  $FC -V 2>&1 | grep 'The Portland Group' > /dev/null
+  if test "$?" = "0" ; then
+
+    echo "compiler '$FC' is Portland Group Fortran compiler"
+
+    # Version strings for logging purposes and known compiler flag
+    $FC -V > $outfile 2>&1
+    cs_ac_cc_version=`grep -i pgf $outfile`
+    cs_fc_compiler_known=yes
+
+    # Default compiler flags
+    fcflags_default="-Mpreprocess"
+    fcflags_default_dbg="-g -Mbounds"
+    fcflags_default_opt="-fast -fastsse"
+    fcflags_default_prf="-Mprof=func,lines"
+    fcflags_default_omp="-mp"
+
+  fi
+
+fi
+
+if test "x$cs_fc_compiler_known" != "xyes" ; then
+
   # Are we using xlf ?
   #-------------------
 
@@ -770,7 +797,7 @@ if test "x$cs_linker_set" != "xyes" ; then
   case "$host_os" in
 
     linux*)
-      ldflags_default="-rdynamic"
+      ldflags_default="-Wl,-export-dynamic"
       ldflags_default_opt="-O"
       ldflags_default_dbg="-g"
       ldflags_default_prf="-pg"
@@ -831,6 +858,9 @@ if test "$cs_ibm_bg_type" = "L" ; then #  For Blue Gene/L
   bg_sys_ldflags="-L/bgl/BlueLight/ppcfloor/bglsys/lib"
   bg_sys_libs="-lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts -lnss_files -lnss_dns -lresolv"
   bg_trace="/bgl/local/lib/libmpitrace.a"
+  if test ! -f "$bg_trace" ; then
+    bg_trace=""
+  fi
 
   ldflags_default="${ldflags_default} -Wl,-allow-multiple-definition -L/opt/ibmcmp/xlmass/bg/4.3/blrts_lib ${bg_sys_ldflags}"
   libs_default="-lmass -lmassv ${bg_trace} ${bg_sys_libs}"
@@ -839,8 +869,11 @@ if test "$cs_ibm_bg_type" = "L" ; then #  For Blue Gene/L
 elif test "$cs_ibm_bg_type" = "P" ; then #  For Blue Gene/P
 
   bg_sys_ldflags="-L/bgsys/drivers/ppcfloor/comm/lib -L/bgsys/drivers/ppcfloor/runtime/SPI"
-  bg_sys_libs="-lmpich.cnk -ldcmfcoll.cnk -ldcmf.cnk -lSPI.cna -lrt -lpthread"
+  bg_sys_libs="-lmpich.cnk -ldcmf.cnk -ldcmfcoll.cnk -lSPI.cna -lrt -lpthread"
   bg_trace="/bgsys/local/tools_ibm/lib/libmpitrace.a"
+  if test ! -f "$bg_trace" ; then
+    bg_trace=""
+  fi
 
   ldflags_default="${ldflags_default} -Wl,-allow-multiple-definition -L/opt/ibmcmp/xlmass/bg/4.4/bglib ${bg_sys_ldflags}"
   libs_default="-lmass -lmassv ${bg_trace} ${bg_sys_libs}"
diff --git a/config/cs_bft.m4 b/config/cs_bft.m4
index 6095441..084ea62 100644
--- a/config/cs_bft.m4
+++ b/config/cs_bft.m4
@@ -27,34 +27,41 @@ dnl-----------------------------------------------------------------------------
 
 AC_DEFUN([CS_AC_TEST_BFT], [
 
-AC_ARG_WITH(bft, [AS_HELP_STRING([--with-bft=PATH], [specify prefix directory for BFT])])
-AC_ARG_WITH(bft-exec, [AS_HELP_STRING([--with-bft-exec=PATH], [specify directory for BFT executables])])
-AC_ARG_WITH(bft-include, [AS_HELP_STRING([--with-bft-include=PATH], [specify directory for BFT include files])])
-AC_ARG_WITH(bft-lib, [AS_HELP_STRING([--with-bft-lib=PATH], [specify directory for BFT library])])
-
-if test "x$with_bft_exec" != "x" ; then
-  bft_config="$with_bft_exec/bft-config"
-elif test "x$with_bft" != "x" ; then
-  bft_config="$with_bft/bin/bft-config"
-else
-  bft_config="bft-config"
-fi
+AC_ARG_WITH(bft,
+            [AS_HELP_STRING([--with-bft=PATH],
+                            [specify prefix directory for BFT])],
+            [if test "x$withval" = "x"; then
+               with_bft=yes
+             fi],
+            [with_bft=yes])
+
+AC_ARG_WITH(bft-exec,
+            [AS_HELP_STRING([--with-bft-exec=PATH],
+                            [specify directory for BFT executables])],
+            [bft_config="$with_bft_exec/bft-config"],
+            [if test "x$with_bft" != "xyes"; then
+               bft_config="$with_bft/bin/bft-config"
+             else
+               bft_config="bft-config"
+             fi])
+
+AC_ARG_WITH(bft-include,
+            [AS_HELP_STRING([--with-bft-include=PATH],
+                            [specify directory for BFT include files])],
+            [BFT_CPPFLAGS="-I$with_bft_include"],
+            [if test "x$with_bft" != "xno" -a "x$with_bft" != "xyes"; then
+               BFT_CPPFLAGS="-I$with_bft/include"
+             fi])
+
+AC_ARG_WITH(bft-lib,
+            [AS_HELP_STRING([--with-bft-lib=PATH],
+                            [specify directory for BFT library])],
+            [BFT_LDFLAGS="-L$with_bft_lib"],
+            [if test "x$with_bft" != "xno" -a "x$with_bft" != "xyes"; then
+               BFT_LDFLAGS="-L$with_bft/lib"
+             fi])
 
-if test "x$with_bft_include" != "x" ; then
-  BFT_CPPFLAGS="-I$with_bft_include"
-elif test "x$with_bft" != "x" ; then
-  BFT_CPPFLAGS="-I$with_bft/include"
-else
-  BFT_CPPFLAGS=""
-fi
 
-if test "x$with_bft_lib" != "x" ; then
-  BFT_LDFLAGS="-L$with_bft_lib"
-elif test "x$with_bft" != "x" ; then
-  BFT_LDFLAGS="-L$with_bft/lib"
-else
-  BFT_LDFLAGS=""
-fi
 BFT_LIBS="-lbft"
 
 type "$bft_config" > /dev/null 2>&1
diff --git a/config/cs_blas.m4 b/config/cs_blas.m4
index 53fb9bd..704a21f 100644
--- a/config/cs_blas.m4
+++ b/config/cs_blas.m4
@@ -29,46 +29,54 @@ AC_DEFUN([CS_AC_TEST_BLAS], [
 
 cs_have_blas=no
 
-AC_ARG_ENABLE(blas,
-  [  --disable-blas          do not use BLAS when available],
-  [
-    case "${enableval}" in
-      yes) blas=true ;;
-      no)  blas=false ;;
-      *)   AC_MSG_ERROR([bad value ${enableval} for --enable-blas]) ;;
-    esac
-  ],
-  [ blas=true ]
-)
-
-AC_ARG_WITH(blas, [AS_HELP_STRING([--with-blas=PATH], [specify prefix directory for BLAS])])
-AC_ARG_WITH(blas-include, [AS_HELP_STRING([--with-blas-include=PATH], [specify directory for BLAS include files])])
-AC_ARG_WITH(blas-lib, [AS_HELP_STRING([--with-blas-lib=PATH], [specify directory for BLAS library])])
-AC_ARG_WITH(blas-type, [AS_HELP_STRING([--with-blas-type=NAME], [force ATLAS, ESSL, MKL, ...])])
-AC_ARG_WITH(blas-libs, [AS_HELP_STRING([--with-blas-libs=LIBS], [specify BLAS libraries])])
-
-if test "x$blas" = "xtrue" ; then
+AC_ARG_WITH(blas,
+            [AS_HELP_STRING([--with-blas=PATH],
+                            [specify prefix directory for BLAS])],
+            [if test "x$withval" = "x"; then
+               with_blas=yes
+             fi],
+            [with_blas=check])
+
+AC_ARG_WITH(blas-include,
+            [AS_HELP_STRING([--with-blas-include=PATH],
+                            [specify directory for BLAS include files])],
+            [if test "x$with_blas" = "xcheck"; then
+               with_blas=yes
+             fi
+             BLAS_CPPFLAGS="-I$with_blas_include"],
+            [if test "x$with_blas" != "xno" -a "x$with_blas" != "xyes" \
+	          -a "x$with_blas" != "xcheck"; then
+               BLAS_CPPFLAGS="-I$with_blas/include"
+             fi])
+
+AC_ARG_WITH(blas-lib,
+            [AS_HELP_STRING([--with-blas-lib=PATH],
+                            [specify directory for BLAS library])],
+            [if test "x$with_blas" = "xcheck"; then
+               with_blas=yes
+             fi
+             BLAS_LDFLAGS="-L$with_blas_lib"],
+            [if test "x$with_blas" != "xno" -a "x$with_blas" != "xyes" \
+	          -a "x$with_blas" != "xcheck"; then
+               BLAS_LDFLAGS="-L$with_blas/lib"
+             fi])
+
+AC_ARG_WITH(blas-type,
+            [AS_HELP_STRING([--with-blas-type=NAME],
+                            [force ATLAS, ESSL, MKL, ...])])
+
+AC_ARG_WITH(blas-libs,
+            [AS_HELP_STRING([--with-blas-libs=LIBS],
+                            [specify BLAS libraries])])
+
+
+if test "x$with_blas" != "xno" ; then
 
   saved_CPPFLAGS="$CPPFLAGS"
   saved_LDFLAGS="$LDFLAGS"
   saved_LIBS="$LIBS"
 
-  BLAS_CPPFLAGS=""
-  BLAS_LDFLAGS=""
-
-  # Also add known paths and libraries for Blue Gene/L or P if not given
-
-  if test "x$with_blas_include" != "x" ; then
-    BLAS_CPPFLAGS="-I$with_blas_include" 
-  elif test "x$with_blas" != "x" ; then
-    BLAS_CPPFLAGS="-I$with_blas/include" 
-  fi
-
-  if test "x$with_blas_lib" != "x" ; then
-    BLAS_LDFLAGS="-L$with_blas_lib"
-  elif test "x$with_blas" != "x" ; then
-    BLAS_LDFLAGS="-L$with_blas/lib" 
-  fi
+  # Add known paths and libraries for Blue Gene/L or P if not given
 
   if test "x$with_blas_type" = "x" ; then
     if test "x$cs_ibm_bg_type" != "x" ; then
@@ -76,50 +84,6 @@ if test "x$blas" = "xtrue" ; then
     fi
   fi
 
-  # Test for ATLAS BLAS
-
-  if test "x$with_blas_type" = "x" -o "x$with_blas_type" = "xATLAS" ; then
-
-    if test "$1" = "yes" -o "x$with_blas_libs" = "x"; then # Threaded version ?
-
-      BLAS_LIBS="-lptcblas -latlas -lpthread"
-
-      CPPFLAGS="${saved_CPPFLAGS} ${BLAS_CPPFLAGS}"
-      LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
-      LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
-
-      AC_MSG_CHECKING([for threaded ATLAS BLAS])
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <cblas.h>]],
-                     [[ cblas_ddot(0, 0, 0, 0, 0); ]])],
-                     [ AC_DEFINE([HAVE_CBLAS], 1, [C BLAS support])
-                       cs_have_blas=yes; with_blas_type=ATLAS ],
-                     [cs_have_blas=no])
-      AC_MSG_RESULT($cs_have_blas)
-    fi
-
-    if test "$cs_have_blas" = "no" ; then # Test for non-threaded version
-                                          # or explicitely specified libs second
-      if test "x$with_blas_libs" != "x" -a "x$with_blas_type" = "xATLAS"; then
-        BLAS_LIBS="$with_blas_libs"
-      else
-        BLAS_LIBS="-lcblas -latlas"
-      fi
-
-      CPPFLAGS="${saved_CPPFLAGS} ${BLAS_CPPFLAGS}"
-      LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
-      LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
-
-      AC_MSG_CHECKING([for ATLAS BLAS])
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <cblas.h>]],
-                     [[ cblas_ddot(0, 0, 0, 0, 0); ]])],
-                     [ AC_DEFINE([HAVE_CBLAS], 1, [C BLAS support])
-                       cs_have_blas=yes; with_blas_type=ATLAS ],
-                     [cs_have_blas=no])
-      AC_MSG_RESULT($cs_have_blas)
-    fi
-
-  fi
-
   # Test for IBM ESSL BLAS
 
   if test "x$with_blas_type" = "x" -o "x$with_blas_type" = "xESSL" ; then
@@ -217,8 +181,8 @@ if test "x$blas" = "xtrue" ; then
       if test `uname -m` = ia64 ; then
         mkl_sub_lib="/64"
       elif test `uname -m` = x86_64 ; then
-        mkl_sub_lib="/64"
-      elif test `uname -m` = x86 ; then
+        mkl_sub_lib="/em64t"
+      else
         mkl_sub_lib="/32"
       fi
     fi
@@ -227,6 +191,8 @@ if test "x$blas" = "xtrue" ; then
 
       if test "`uname -m`" = "ia64" ; then
         BLAS_LIBS="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -lpthread"
+      elif test `uname -m` = x86_64 ; then
+        BLAS_LIBS="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -lpthread"
       else
         BLAS_LIBS="-lmkl_intel -lmkl_intel_thread -lmkl_core -lguide -lpthread"
       fi
@@ -252,6 +218,8 @@ if test "x$blas" = "xtrue" ; then
       else
         if test "`uname -m`" = "ia64" ; then
           BLAS_LIBS="-lmkl_intel_lp64 -lmkl_sequential -lmkl_core"
+        elif test `uname -m` = x86_64 ; then
+          BLAS_LIBS="-lmkl_intel_lp64 -lmkl_sequential -lmkl_core"
         else
           BLAS_LIBS="-lmkl_intel -lmkl_sequential -lmkl_core"
         fi
@@ -277,9 +245,53 @@ if test "x$blas" = "xtrue" ; then
 
   fi
 
-  # Test for generic C BLAS
+  # Test for ATLAS BLAS
 
-  if test "x$with_blas_type" = "x" ; then
+  if test "x$with_blas_type" = "x" -o "x$with_blas_type" = "xATLAS" ; then
+
+    if test "$1" = "yes" -o "x$with_blas_libs" = "x"; then # Threaded version ?
+
+      BLAS_LIBS="-lptcblas -latlas -lpthread"
+
+      CPPFLAGS="${saved_CPPFLAGS} ${BLAS_CPPFLAGS}"
+      LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
+      LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
+
+      AC_MSG_CHECKING([for threaded ATLAS BLAS])
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <cblas.h>]],
+                     [[ cblas_ddot(0, 0, 0, 0, 0); ]])],
+                     [ AC_DEFINE([HAVE_CBLAS], 1, [C BLAS support])
+                       cs_have_blas=yes; with_blas_type=ATLAS ],
+                     [cs_have_blas=no])
+      AC_MSG_RESULT($cs_have_blas)
+    fi
+
+    if test "$cs_have_blas" = "no" ; then # Test for non-threaded version
+                                          # or explicitely specified libs second
+      if test "x$with_blas_libs" != "x" -a "x$with_blas_type" = "xATLAS"; then
+        BLAS_LIBS="$with_blas_libs"
+      else
+        BLAS_LIBS="-lcblas -latlas"
+      fi
+
+      CPPFLAGS="${saved_CPPFLAGS} ${BLAS_CPPFLAGS}"
+      LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
+      LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
+
+      AC_MSG_CHECKING([for ATLAS BLAS])
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <cblas.h>]],
+                     [[ cblas_ddot(0, 0, 0, 0, 0); ]])],
+                     [ AC_DEFINE([HAVE_CBLAS], 1, [C BLAS support])
+                       cs_have_blas=yes; with_blas_type=ATLAS ],
+                     [cs_have_blas=no])
+      AC_MSG_RESULT($cs_have_blas)
+    fi
+
+  fi
+
+  # Test for generic C or Fortran BLAS
+
+  if test "x$with_blas_type" = "x" -o "x$with_blas_type" = "xBLAS" ; then
 
     if test "x$with_blas_libs" != "x" ; then
       BLAS_LIBS="$with_blas_libs"
@@ -291,47 +303,45 @@ if test "x$blas" = "xtrue" ; then
     LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
     LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
 
+    # Firstly, test for C BLAS
+
     AC_MSG_CHECKING([for legacy C BLAS])
     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <cblas.h>]],
                    [[ cblas_ddot(0, 0, 0, 0, 0); ]])],
                    [ AC_DEFINE([HAVE_CBLAS], 1, [C BLAS support])
-                     cs_have_blas=yes; with_blas_type=BLAS ],
-                   [cs_have_blas=no])
-    AC_MSG_RESULT($cs_have_blas)
-  fi
+                     cs_tmp_have_cblas=yes; with_blas_type=BLAS ],
+                   [cs_tmp_have_cblas=no])
+    AC_MSG_RESULT($cs_tmp_have_cblas)
 
-  # Test for generic Fortran BLAS
-
-  if test "x$with_blas_type" = "x" ; then
+    # Secondly, test for C BLAS
 
     AC_LANG_PUSH([Fortran])
     
-    if test "x$with_blas_libs" != "x" ; then
-      BLAS_LIBS="$with_blas_libs"
-    else
-      BLAS_LIBS="-lblas"
-    fi
-
-    LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
-    LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
-
     AC_MSG_CHECKING([for legacy Fortran BLAS])
     AC_LINK_IFELSE([AC_LANG_PROGRAM([],
                    [[      call ddot(0, 0, 0, 0, 0) ]])],
                    [ AC_DEFINE([HAVE_FBLAS], 1, [Fortran BLAS support])
-                     cs_have_blas=yes; with_blas_type=BLAS ],
-                   [cs_have_blas=no])
-    AC_MSG_RESULT($cs_have_blas)
+                     cs_tmp_have_fblas=yes; with_blas_type=BLAS ],
+                   [cs_tmp_have_fblas=no])
+    AC_MSG_RESULT($cs_tmp_have_fblas)
 
     AC_LANG_POP([Fortran])
+
+    if test "x$cs_tmp_have_cblas" = "xyes" \
+         -o "x$cs_tmp_have_fblas" = "xyes"; then
+      cs_have_blas=yes
+    fi
     
   fi
 
   # Cleanup if no BLAS found
 
   if test "x$cs_have_blas" != "xyes"; then
-    BLAS_CPPFLAGS=""
-    BLAS_LDFLAGS=""
+    if test "x$with_blas" != "xcheck" ; then
+      AC_MSG_FAILURE([BLAS support is requested, but test for BLAS failed!])
+    else
+      AC_MSG_WARN([no BLAS support])
+    fi
     BLAS_LIBS=""
   fi
 
diff --git a/config/cs_fortran.m4 b/config/cs_fortran.m4
new file mode 100644
index 0000000..b606565
--- /dev/null
+++ b/config/cs_fortran.m4
@@ -0,0 +1,118 @@
+dnl----------------------------------------------------------------------------
+dnl   This file is part of the Code_Saturne Kernel, element of the
+dnl   Code_Saturne CFD tool.
+dnl
+dnl   Copyright (C) 2009 EDF S.A., France
+dnl
+dnl   The Code_Saturne Kernel is free software; you can redistribute it
+dnl   and/or modify it under the terms of the GNU General Public License
+dnl   as published by the Free Software Foundation; either version 2 of
+dnl   the License, or (at your option) any later version.
+dnl
+dnl   The Code_Saturne Kernel is distributed in the hope that it will be
+dnl   useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+dnl   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl   GNU General Public License for more details.
+dnl
+dnl   You should have received a copy of the GNU General Public Licence
+dnl   along with the Code_Saturne Preprocessor; if not, write to the
+dnl   Free Software Foundation, Inc.,
+dnl   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+dnl-----------------------------------------------------------------------------
+
+# CS_AC_TEST_FC_MOD([use_threads])
+#------------------
+# checks how the Fortran compiler handles modules
+
+AC_DEFUN([CS_AC_TEST_FC_MOD], [
+
+cs_fc_modext=""
+cs_fc_modflag=""
+
+AC_LANG_PUSH(Fortran)
+
+# Create temporary directory
+
+i=0
+while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ;
+do
+  i=`expr $i + 1`
+done
+mkdir tmpdir_$i
+
+# Compile module in temporary directory and check extension
+# (some compilers put module filename in uppercase letters,
+# so also check this)
+
+cd tmpdir_$i
+AC_COMPILE_IFELSE([
+      module conftest_module
+      contains
+      subroutine conftest_routine
+      write(*,'(a)') 'conftest'
+      end subroutine conftest_routine
+      end module conftest_module
+  ],
+                  [cs_fc_modext=`ls | sed -n 's,conftest_module\.,,p'`
+                   if test x$cs_fc_modext = x ; then
+                     cs_fc_modext=`ls | sed -n 's,CONFTEST_MODULE\.,,p'`
+                     if test x$cs_fc_modext = x ; then
+                       cs_fc_modext=""
+                     fi
+                   fi
+                  ],
+                  [cs_fc_modext=""])
+
+# Go up one level and search for module using probable flags
+
+cd ..
+
+for cs_fc_flag in "-I " "-M" "-p"; do
+  if test "x$cs_fc_modflag" = "x" ; then
+    save_FCFLAGS="$FCFLAGS"
+    FCFLAGS="$save_FCFLAGS ${cs_fc_flag}tmpdir_$i"
+    AC_COMPILE_IFELSE([
+      program conftest_program
+      use conftest_module
+      call conftest_routine
+      end program conftest_program
+      ],
+                      [cs_fc_modflag="$cs_fc_flag"],
+                      [])
+    FCFLAGS="$save_FCFLAGS"
+  fi
+done
+
+# Now remove temporary directory and finish
+
+rm -fr tmpdir_$i
+AC_LANG_POP(Fortran)
+
+])dnl
+
+# CS_AC_TEST_FC_FLUSH
+#------------------
+# checks if the Fortran compiler handles flush (Fortran 2003)
+
+AC_DEFUN([CS_AC_TEST_FC_FLUSH], [
+
+cs_fc_flush=no
+
+AC_LANG_PUSH(Fortran)
+
+AC_MSG_CHECKING([for Fortran 2003 flush instruction])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([],
+               [[      flush(6) ]])],
+               [ cs_fc_flush=yes ],
+               [ cs_fc_flush=no])
+AC_MSG_RESULT($cs_fc_flush)
+
+AC_LANG_POP([Fortran])
+
+if test "x$cs_fc_flush" = "xyes"; then
+  FCFLAGS="${FCFLAGS} -D_CS_FC_HAVE_FLUSH"
+fi
+
+unset $cs_fc_flush
+
+])dnl
diff --git a/config/cs_fvm.m4 b/config/cs_fvm.m4
index a693e10..4ebba57 100644
--- a/config/cs_fvm.m4
+++ b/config/cs_fvm.m4
@@ -27,49 +27,63 @@ dnl-----------------------------------------------------------------------------
 
 AC_DEFUN([CS_AC_TEST_FVM], [
 
-AC_ARG_WITH(fvm, [AS_HELP_STRING([--with-fvm=PATH], [specify prefix directory for FVM])])
-AC_ARG_WITH(fvm-exec, [AS_HELP_STRING([--with-fvm-exec=PATH], [specify directory for FVM executables])])
-AC_ARG_WITH(fvm-include, [AS_HELP_STRING([--with-fvm-include=PATH], [specify directory for FVM include files])])
-AC_ARG_WITH(fvm-lib, [AS_HELP_STRING([--with-fvm-lib=PATH], [specify directory for FVM library])])
-
-if test "x$with_fvm_exec" != "x" ; then
-  fvm_config="$with_fvm_exec/fvm-config"
-elif test "x$with_fvm" != "x" ; then
-  fvm_config="$with_fvm/bin/fvm-config"
-else
-  fvm_config="fvm-config"
-fi
+AC_ARG_WITH(fvm,
+            [AS_HELP_STRING([--with-fvm=PATH],
+                            [specify prefix directory for FVM])],
+            [if test "x$withval" = "x"; then
+               with_fvm=yes
+             fi],
+            [with_fvm=yes])
+
+AC_ARG_WITH(fvm-exec,
+            [AS_HELP_STRING([--with-fvm-exec=PATH],
+                            [specify directory for FVM executables])],
+            [fvm_config="$with_fvm_exec/fvm-config"],
+            [if test "x$with_fvm" != "xyes"; then
+               fvm_config="$with_fvm/bin/fvm-config"
+             else
+               fvm_config="fvm-config"
+             fi])
+
+AC_ARG_WITH(fvm-include,
+            [AS_HELP_STRING([--with-fvm-include=PATH],
+                            [specify directory for FVM include files])],
+            [FVM_CPPFLAGS="-I$with_fvm_include"],
+            [if test "x$with_fvm" != "xno" -a "x$with_fvm" != "xyes"; then
+               FVM_CPPFLAGS="-I$with_fvm/include"
+             fi])
+
+AC_ARG_WITH(fvm-lib,
+            [AS_HELP_STRING([--with-fvm-lib=PATH],
+                            [specify directory for FVM library])],
+            [FVM_LDFLAGS="-L$with_fvm_lib"],
+            [if test "x$with_fvm" != "xno" -a "x$with_fvm" != "xyes"; then
+               FVM_LDFLAGS="-L$with_fvm/lib"
+             fi])
 
-if test "x$with_fvm_include" != "x" ; then
-  FVM_CPPFLAGS="-I$with_fvm_include"
-elif test "x$with_fvm" != "x" ; then
-  FVM_CPPFLAGS="-I$with_fvm/include"
-else
-  FVM_CPPFLAGS=""
-fi
 
-if test "x$with_fvm_lib" != "x" ; then
-  FVM_LDFLAGS="-L$with_fvm_lib"
-elif test "x$with_fvm" != "x" ; then
-  FVM_LDFLAGS="-L$with_fvm/lib"
-else
-  FVM_LDFLAGS=""
-fi
 FVM_LIBS="-lfvm"
 
+FVM_COUPL_LDFLAGS="$FVM_LDFLAGS"
+FVM_COUPL_LIBS="-lfvm_coupl"
+
 type "$fvm_config" > /dev/null 2>&1
 if test "$?" = "0" ; then
   FVM_CPPFLAGS="$FVM_CPPFLAGS `$fvm_config --cppflags`"
-  FVM_DEP_LDFLAGS="`$fvm_config --ldflags`"
-  FVM_DEP_LDFLAGS="$FVM_DEP_LDFLAGS `$fvm_config --ldflags cgns`"
-  FVM_DEP_LDFLAGS="$FVM_DEP_LDFLAGS `$fvm_config --ldflags med`"
-  FVM_DEP_LDFLAGS="$FVM_DEP_LDFLAGS `$fvm_config --ldflags hdf5`"
-  FVM_DEP_LDFLAGS="$FVM_DEP_LDFLAGS `$fvm_config --ldflags mpi`"
-  FVM_DEP_LIBS="`$fvm_config --libs`"
-  FVM_DEP_LIBS="$FVM_DEP_LIBS `$fvm_config --libs cgns`"
-  FVM_DEP_LIBS="$FVM_DEP_LIBS `$fvm_config --libs med`"
-  FVM_DEP_LIBS="$FVM_DEP_LIBS `$fvm_config --libs hdf5`"
-  FVM_DEP_LIBS="$FVM_DEP_LIBS `$fvm_config --libs mpi`"
+  FVM_LDFLAGS="$FVM_LDFLAGS `$fvm_config --ldflags`"
+  FVM_LIBS="$FVM_LIBS `$fvm_config --libs`"
+
+  FVM_COUPL_LDFLAGS="$FVM_LDFLAGS"
+
+  FVM_LDFLAGS="$FVM_LDFLAGS `$fvm_config --ldflags cgns`"
+  FVM_LDFLAGS="$FVM_LDFLAGS `$fvm_config --ldflags med`"
+  FVM_LDFLAGS="$FVM_LDFLAGS `$fvm_config --ldflags hdf5`"
+  FVM_LIBS="$FVM_LIBS `$fvm_config --libs cgns`"
+  FVM_LIBS="$FVM_LIBS `$fvm_config --libs med`"
+  FVM_LIBS="$FVM_LIBS `$fvm_config --libs hdf5`"
+
+  FVM_MPI_LDFLAGS="`$fvm_config --ldflags mpi`"
+  FVM_MPI_LIBS="`$fvm_config --libs mpi`"
 fi
 
 fvm_version_min=$1
@@ -114,8 +128,8 @@ saved_LDFLAGS=$LDFLAGS
 saved_LIBS=$LIBS
 
 CPPFLAGS="${CPPFLAGS} $FVM_CPPFLAGS"
-LDFLAGS="$FVM_LDFLAGS $FVM_DEP_LDFLAGS `$fvm_config --ldflags bft` ${LDFLAGS}"
-LIBS="$FVM_LIBS $FVM_DEP_LIBS `$fvm_config --libs bft` ${LIBS}"
+LDFLAGS="$FVM_LDFLAGS $FVM_MPI_LDFLAGS `$fvm_config --ldflags bft` ${LDFLAGS}"
+LIBS="$FVM_LIBS $FVM_MPI_LIBS `$fvm_config --libs bft` ${LIBS}"
 
 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <fvm_config.h>
 ]],
@@ -149,7 +163,8 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <fvm_config.h>
 
 AC_MSG_CHECKING([for fvm_coupling discovery functions])
 
-LIBS="$FVM_LIBS -lfvm_coupl $FVM_DEP_LIBS `$fvm_config --libs bft` ${saved_LIBS}"
+LDFLAGS="$FVM_COUPL_LDFLAGS `$fvm_config --ldflags bft` $FVM_MPI_LDFLAGS ${saved_LDFLAGS}"
+LIBS="$FVM_COUPL_LIBS `$fvm_config --libs bft` $FVM_MPI_LIBS ${saved_LIBS}"
 
 AC_LINK_IFELSE([AC_LANG_PROGRAM([[int fvm_coupling_mpi_world_n_apps(void *);]],
                [[fvm_coupling_mpi_world_n_apps(0); ]])],
@@ -158,10 +173,11 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[int fvm_coupling_mpi_world_n_apps(void *);]],
 
 AC_MSG_RESULT($fvm_have_coupl)
 if test "$fvm_have_coupl" = "yes"; then
-  FVM_LIBS="$FVM_LIBS -lfvm_coupl"
+  FVM_LIBS="$FVM_LIBS $FVM_COUPL_LIBS"
+else
+  FVM_COUPL_LDFLAGS=""
+  FVM_COUPL_LIBS=""
 fi
-FVM_LDFLAGS="$FVM_LDFLAGS $FVM_DEP_LDFLAGS"
-FVM_LIBS="$FVM_LIBS $FVM_DEP_LIBS"
 
 # Unset temporary variables
 
@@ -190,5 +206,7 @@ unset saved_LIBS
 AC_SUBST(FVM_CPPFLAGS)
 AC_SUBST(FVM_LDFLAGS)
 AC_SUBST(FVM_LIBS)
+AC_SUBST(FVM_COUPL_LDFLAGS)
+AC_SUBST(FVM_COUPL_LIBS)
 
 ])dnl
diff --git a/config/cs_libxml2.m4 b/config/cs_libxml2.m4
index e5ef19d..b0b44cc 100644
--- a/config/cs_libxml2.m4
+++ b/config/cs_libxml2.m4
@@ -29,42 +29,49 @@ AC_DEFUN([CS_AC_TEST_LIBXML2], [
 
 have_libxml2=no
 
-AC_ARG_ENABLE(libxml2,
-  [  --disable-libxml2       do not use LIBXML2 when available],
-  [
-    case "${enableval}" in
-      yes) libxml2=true ;;
-      no)  libxml2=false ;;
-      *)   AC_MSG_ERROR([bad value ${enableval} for --enable-libxml2]) ;;
-    esac
-  ],
-  [ libxml2=true ]
-)
-
-AC_ARG_WITH(libxml2, [AS_HELP_STRING([--with-libxml2=PATH], [specify prefix directory for LIBXML2])])
-AC_ARG_WITH(libxml2-include, [AS_HELP_STRING([--with-libxml2-include=PATH], [specify directory for LIBXML2 include files])])
-AC_ARG_WITH(libxml2-lib, [AS_HELP_STRING([--with-libxml2-lib=PATH], [specify directory for LIBXML2 library])])
-
-if test "x$libxml2" = "xtrue" ; then
+AC_ARG_WITH(libxml2,
+            [AS_HELP_STRING([--with-libxml2=PATH],
+                            [specify prefix directory for LIBXML2])],
+            [if test "x$withval" = "x"; then
+               with_libxml2=yes
+             fi],
+            [with_libxml2=check])
+
+AC_ARG_WITH(libxml2-include,
+            [AS_HELP_STRING([--with-libxml2-include=PATH],
+                            [specify directory for LIBXML2 include files])],
+            [if test "x$with_libxml2" = "xcheck"; then
+               with_libxml2=yes
+             fi
+             LIBXML2_CPPFLAGS="-I$with_libxml2_include"],
+            [if test "x$with_libxml2" != "xno" ; then
+               if test "x$with_libxml2" != "xyes" \
+	               -a "x$with_libxml2" != "xcheck"; then
+                 LIBXML2_CPPFLAGS="-I$with_libxml2/include/libxml2"
+               else
+                 LIBXML2_CPPFLAGS="-I/usr/include/libxml2"
+               fi
+             fi])
+
+AC_ARG_WITH(libxml2-lib,
+            [AS_HELP_STRING([--with-libxml2-lib=PATH],
+                            [specify directory for LIBXML2 library])],
+            [if test "x$with_libxml2" = "xcheck"; then
+               with_libxml2=yes
+             fi
+             LIBXML2_LDFLAGS="-L$with_libxml2_lib"],
+            [if test "x$with_libxml2" != "xno" -a "x$with_libxml2" != "xyes" \
+	          -a "x$with_libxml2" != "xcheck"; then
+               LIBXML2_LDFLAGS="-L$with_libxml2/lib"
+             fi])
+
+
+if test "x$with_libxml2" != "xno" ; then
 
   saved_CPPFLAGS="$CPPFLAGS"
   saved_LDFLAGS="$LDFLAGS"
   saved_LIBS="$LIBS"
 
-  if test "x$with_libxml2_include" != "x" ; then
-    LIBXML2_CPPFLAGS="-I$with_libxml2_include"
-  elif test "x$with_libxml2" != "x" ; then
-    LIBXML2_CPPFLAGS="-I$with_libxml2/include/libxml2"
-  else
-    LIBXML2_CPPFLAGS="-I/usr/include/libxml2"
-  fi
-
-  if test "x$with_libxml2_lib" != "x" ; then
-    LIBXML2_LDFLAGS="-L$with_libxml2_lib"
-  elif test "x$with_libxml2" != "x" ; then
-    LIBXML2_LDFLAGS="-L$with_libxml2/lib"
-  fi
-
   LIBXML2_LIBS="-lxml2"
 
   CPPFLAGS="${CPPFLAGS} ${LIBXML2_CPPFLAGS}"
@@ -77,13 +84,15 @@ if test "x$libxml2" = "xtrue" ; then
                [ AC_DEFINE([HAVE_LIBXML2], 1, [LIBXML2 support])
                  have_libxml2=yes
                ], 
-               [ AC_MSG_WARN([no LIBXML2 support])
+               [if test "x$with_libxml2" != "xcheck" ; then
+                  AC_MSG_FAILURE([LIBXML2 support is requested, but test for LIBXML2 failed!])
+                else
+                  AC_MSG_WARN([no LIBXML2 support])
+                fi
                ],
               )
 
   if test "x$have_libxml2" != "xyes"; then
-    LIBXML2_CPPFLAGS=""
-    LIBXML2_LDFLAGS=""
     LIBXML2_LIBS=""
   fi
 
diff --git a/config/cs_mei.m4 b/config/cs_mei.m4
index c5eb33d..c1afd19 100644
--- a/config/cs_mei.m4
+++ b/config/cs_mei.m4
@@ -29,40 +29,52 @@ AC_DEFUN([CS_AC_TEST_MEI], [
 
 have_mei=no
 
-AC_ARG_ENABLE(mei,
-  [  --disable-mei           do not use MEI when available],
-  [
-    case "${enableval}" in
-      yes) mei=true ;;
-      no)  mei=false ;;
-      *)   AC_MSG_ERROR([bad value ${enableval} for --enable-mei]) ;;
-    esac
-  ],
-  [ mei=true ]
-)
-
-AC_ARG_WITH(mei, [AS_HELP_STRING([--with-mei=PATH], [specify prefix directory for MEI])])
-AC_ARG_WITH(mei-include, [AS_HELP_STRING([--with-mei-include=PATH], [specify directory for MEI include files])])
-AC_ARG_WITH(mei-lib, [AS_HELP_STRING([--with-mei-lib=PATH], [specify directory for MEI library])])
-
-if test "x$mei" = "xtrue" ; then
+AC_ARG_WITH(mei,
+            [AS_HELP_STRING([--with-mei=PATH],
+                            [specify prefix directory for MEI])],
+            [if test "x$withval" = "x"; then
+               with_mei=yes
+             fi],
+            [with_mei=check])
+
+AC_ARG_WITH(mei-include,
+            [AS_HELP_STRING([--with-mei-include=PATH],
+                            [specify directory for MEI include files])],
+            [if test "x$with_mei" = "xcheck"; then
+               with_mei=yes
+             fi
+             MEI_CPPFLAGS="-I$with_mei_include"],
+            [if test "x$with_mei" != "xno" -a "x$with_mei" != "xyes" \
+	          -a "x$with_mei" != "xcheck"; then
+               MEI_CPPFLAGS="-I$with_mei/include"
+             fi])
+
+AC_ARG_WITH(mei-lib,
+            [AS_HELP_STRING([--with-mei-lib=PATH],
+                            [specify directory for MEI library])],
+            [if test "x$with_mei" = "xcheck"; then
+               with_mei=yes
+             fi
+             MEI_LDFLAGS="-L$with_mei_lib"],
+            [if test "x$with_mei" != "xno" -a "x$with_mei" != "xyes" \
+	          -a "x$with_mei" != "xcheck"; then
+               MEI_LDFLAGS="-L$with_mei/lib"
+             fi])
+
+
+if test "x$with_mei" != "xno" ; then
 
   saved_CPPFLAGS="$CPPFLAGS"
   saved_LDFLAGS="$LDFLAGS"
   saved_LIBS="$LIBS"
 
-  if test "x$with_mei_include" != "x" ; then
-    MEI_CPPFLAGS="-I$with_mei_include"
-  elif test "x$with_mei" != "x" ; then
-    MEI_CPPFLAGS="-I$with_mei/include"
-  fi
-
-  if test "x$with_mei_lib" != "x" ; then
-    MEI_LDFLAGS="-L$with_mei_lib"
-    mei_libdir=$with_mei_lib
-  elif test "x$with_mei" != "x" ; then
-    MEI_LDFLAGS="-L$with_mei/lib"
-    mei_libdir=$with_mei/lib
+  if test "x$with_mei" != "xyes" -a "x$with_mei" != "xcheck" ; then
+    mei_prefix=$with_mei
+  else
+    type "mei-config" > /dev/null 2>&1
+    if test "$?" = "0" ; then
+      mei_prefix=`mei-config --prefix`
+    fi
   fi
 
   MEI_LIBS="-lmei"
@@ -77,13 +89,11 @@ if test "x$mei" = "xtrue" ; then
                [ AC_DEFINE([HAVE_MEI], 1, [MEI support])
                  have_mei=yes
                ], 
-               [ AC_MSG_WARN([no MEI support])
+               [AC_MSG_FAILURE([MEI support is requested, but test for MEI failed!])
                ],
-              )
+               )
 
   if test "x$have_mei" != "xyes"; then
-    MEI_CPPFLAGS=""
-    MEI_LDFLAGS=""
     MEI_LIBS=""
   fi
 
@@ -103,7 +113,7 @@ AC_SUBST(MEI_CPPFLAGS)
 AC_SUBST(MEI_LDFLAGS)
 AC_SUBST(MEI_LIBS)
 
-AC_SUBST(mei_libdir)
+AC_SUBST(mei_prefix)
 
 ])dnl
 
diff --git a/config/cs_mpi.m4 b/config/cs_mpi.m4
index 953823d..02a4f5c 100644
--- a/config/cs_mpi.m4
+++ b/config/cs_mpi.m4
@@ -34,40 +34,52 @@ saved_LIBS="$LIBS"
 
 cs_have_mpi=no
 
-AC_ARG_ENABLE(mpi,
-  [  --disable-mpi           do not use MPI when available],
-  [
-    case "${enableval}" in
-      yes) mpi=true ;;
-      no)  mpi=false ;;
-      *)   AC_MSG_ERROR([bad value ${enableval} for --enable-mpi]) ;;
-    esac
-  ],
-  [ mpi=true ]
-)
+AC_ARG_WITH(mpi,
+            [AS_HELP_STRING([--with-mpi=PATH],
+                            [specify prefix directory for MPI])],
+            [if test "x$withval" = "x"; then
+               with_mpi=yes
+             fi],
+            [with_mpi=check])
 
-AC_ARG_WITH(mpi, [AS_HELP_STRING([--with-mpi=PATH], [specify prefix directory for MPI])])
-AC_ARG_WITH(mpi-exec, [AS_HELP_STRING([--with-mpi-exec=PATH], [specify prefix directory for MPI executables])])
-AC_ARG_WITH(mpi-include, [AS_HELP_STRING([--with-mpi-include=PATH], [specify directory for MPI include files])])
-AC_ARG_WITH(mpi-lib, [AS_HELP_STRING([--with-mpi-lib=PATH], [specify directory for MPI library])])
+AC_ARG_WITH(mpi-exec,
+            [AS_HELP_STRING([--with-mpi-exec=PATH],
+                            [specify prefix directory for MPI executables])],
+            [if test "x$with_mpi" = "xcheck"; then
+               with_mpi=yes
+             fi
+             mpi_bindir="$with_mpi_exec"],
+            [if test "x$with_mpi" != "xno" -a "x$with_mpi" != "xyes" \
+	          -a "x$with_mpi" != "xcheck"; then
+               mpi_bindir="$with_mpi/bin"
+             fi])
+
+AC_ARG_WITH(mpi-include,
+            [AS_HELP_STRING([--with-mpi-include=PATH],
+                            [specify directory for MPI include files])],
+            [if test "x$with_mpi" = "xcheck"; then
+               with_mpi=yes
+             fi
+             MPI_CPPFLAGS="-I$with_mpi_include"],
+            [if test "x$with_mpi" != "xno" -a "x$with_mpi" != "xyes" \
+	          -a "x$with_mpi" != "xcheck"; then
+               MPI_CPPFLAGS="-I$with_mpi/include"
+             fi])
+
+AC_ARG_WITH(mpi-lib,
+            [AS_HELP_STRING([--with-mpi-lib=PATH],
+                            [specify directory for MPI library])],
+            [if test "x$with_mpi" = "xcheck"; then
+               with_mpi=yes
+             fi
+             MPI_LDFLAGS="-L$with_mpi_lib"
+             mpi_libdir="$with_mpi_lib"],
+            [if test "x$with_mpi" != "xno" -a "x$with_mpi" != "xyes" \
+	          -a "x$with_mpi" != "xcheck"; then
+               MPI_LDFLAGS="-L$with_mpi/lib"
+               mpi_libdir="$with_mpi/lib"
+             fi])
 
-if test "x$mpi" = "xtrue" ; then
-  if test "x$with_mpi_exec" != "x" ; then
-    MPI_BIN="$with_mpi_exec"
-  elif test "x$with_mpi" != "x" ; then
-    MPI_BIN="$with_mpi/bin"
-  fi
-  if test "x$with_mpi_include" != "x" ; then
-    MPI_CPPFLAGS="$MPI_CPPFLAGS -I$with_mpi_include"
-  elif test "x$with_mpi" != "x" ; then
-    MPI_CPPFLAGS="$MPI_CPPFLAGS -I$with_mpi/include"
-  fi
-  if test "x$with_mpi_lib" != "x" ; then
-    MPI_LDFLAGS="$MPI_LDFLAGS -L$with_mpi_lib"
-  elif test "x$with_mpi" != "x" ; then
-    MPI_LDFLAGS="$MPI_LDFLAGS -L$with_mpi/lib"
-  fi
-fi
 
 # Just in case, remove excess whitespace from existing flag and libs variables.
 
@@ -84,7 +96,7 @@ fi
 # If we do not use an MPI compiler wrapper, we must add compilation
 # and link flags; we try to detect the correct flags to add.
 
-if test "x$mpi" = "xtrue" -a "x$cs_have_mpi" = "xno" ; then
+if test "x$with_mpi" != "xno" -a "x$cs_have_mpi" = "xno" ; then
 
   # try several tests for MPI
 
@@ -177,16 +189,26 @@ if test "x$mpi" = "xtrue" -a "x$cs_have_mpi" = "xno" ; then
   fi
 
   if test "x$cs_have_mpi" = "xno"; then
-    MPI_CPPFLAGS=""
-    MPI_LDFLAGS=""
+    if test "x$with_mpi" != "xcheck" ; then
+      AC_MSG_FAILURE([MPI support is requested, but test for MPI failed!])
+    else
+      AC_MSG_WARN([no MPI support])
+    fi
     MPI_LIBS=""
   else
     # Try to detect MPI variants as this may be useful for the run scripts to
     # determine the correct mpi startup syntax (especially when multiple
     # librairies are installed on the same machine).
     CPPFLAGS="$saved_CPPFLAGS $MPI_CPPFLAGS"
-    MPI_TYPE=""
-    if test "x$MPI_TYPE" = "x"; then
+    mpi_type=""
+    if test "x$cs_ibm_bg_type" != "x" ; then
+      if test "x$cs_ibm_bg_type" = "L" ; then
+        mpi_type=BGL_MPI
+      elif test "x$cs_ibm_bg_type" = "P" ; then
+        mpi_type=BGP_MPI
+      fi
+    fi
+    if test "x$mpi_type" = "x"; then
       AC_EGREP_CPP([mpich2],
                    [
                     #include <mpi.h>
@@ -194,9 +216,9 @@ if test "x$mpi" = "xtrue" -a "x$cs_have_mpi" = "xno" ; then
                     mpich2
                     #endif
                     ],
-		    [MPI_TYPE=MPICH2])
+		    [mpi_type=MPICH2])
     fi
-    if test "x$MPI_TYPE" = "x"; then
+    if test "x$mpi_type" = "x"; then
       AC_EGREP_CPP([ompi],
                    [
                     #include <mpi.h>
@@ -204,9 +226,9 @@ if test "x$mpi" = "xtrue" -a "x$cs_have_mpi" = "xno" ; then
                     ompi
                     #endif
                     ],
-		    [MPI_TYPE=OpenMPI])
+		    [mpi_type=OpenMPI])
     fi
-    if test "x$MPI_TYPE" = "x"; then
+    if test "x$mpi_type" = "x"; then
       AC_EGREP_CPP([mpibull2],
                    [
                     #include <mpi.h>
@@ -214,9 +236,9 @@ if test "x$mpi" = "xtrue" -a "x$cs_have_mpi" = "xno" ; then
                     mpibull2
                     #endif
                     ],
-		    [MPI_TYPE=MPIBULL2])
+		    [mpi_type=MPIBULL2])
     fi
-    if test "x$MPI_TYPE" = "x"; then
+    if test "x$mpi_type" = "x"; then
       AC_EGREP_CPP([lam_mpi],
                    [
                     #include <mpi.h>
@@ -224,9 +246,9 @@ if test "x$mpi" = "xtrue" -a "x$cs_have_mpi" = "xno" ; then
                     lam_mpi
                     #endif
                     ],
-		    [MPI_TYPE=LAM_MPI])
+		    [mpi_type=LAM_MPI])
     fi
-    if test "x$MPI_TYPE" = "x"; then
+    if test "x$mpi_type" = "x"; then
       AC_EGREP_CPP([hp_mpi],
                    [
                     #include <mpi.h>
@@ -234,7 +256,7 @@ if test "x$mpi" = "xtrue" -a "x$cs_have_mpi" = "xno" ; then
                     hp_mpi
                     #endif
                     ],
-		    [MPI_TYPE=HP_MPI])
+		    [mpi_type=HP_MPI])
     fi
   fi
 
@@ -253,8 +275,9 @@ AM_CONDITIONAL(HAVE_MPI, test x$cs_have_mpi = xyes)
 AC_SUBST(MPI_CPPFLAGS)
 AC_SUBST(MPI_LDFLAGS)
 AC_SUBST(MPI_LIBS)
-AC_SUBST(MPI_BIN)
-AC_SUBST(MPI_TYPE)
+AC_SUBST(mpi_type)
+AC_SUBST(mpi_bindir)
+AC_SUBST(mpi_libdir)
 
 ])dnl
 
diff --git a/config/cs_syrthes.m4 b/config/cs_syrthes.m4
index f940e6f..2fc73d7 100644
--- a/config/cs_syrthes.m4
+++ b/config/cs_syrthes.m4
@@ -30,11 +30,19 @@ AC_DEFUN([CS_AC_TEST_SYRTHES], [
 
 AC_ARG_WITH(syrthes, [AS_HELP_STRING([--with-syrthes=PATH], [specify prefix directory for SYRTHES])])
 
+# First try with syrthes.profile, second try for Debian-like packaging
+# of SYRTHES where there is no syrthes.profile
+
+AC_MSG_CHECKING([for SYRTHES support])
 if test -f $with_syrthes/bin/syrthes.profile ; then
   have_syrthes=yes
   syrthes_prefix=$with_syrthes
-  AC_MSG_NOTICE([sourcing $syrthes_prefix/bin/syrthes.profile])
+  AC_MSG_RESULT([sourcing $syrthes_prefix/bin/syrthes.profile])
   . "$syrthes_prefix/bin/syrthes.profile"
+elif test -f $with_syrthes/bin/syrthes_create_case ; then
+  have_syrthes=yes
+  syrthes_prefix=$with_syrthes
+  AC_MSG_RESULT([found $syrthes_prefix/bin/syrthes_create_case])
 else
   have_syrthes=no
   AC_MSG_WARN([cannot find syrthes.profile])
@@ -50,6 +58,7 @@ cp $with_syrthes/bin/Makefile $outfile
 cat >> $outfile <<\_______EOF
 
 syr_info:
+	@echo $(NOM_ARCH) > syr-nomarch-tmp
 	@echo $(VERSION) > syr-version-tmp
 	@echo $(CC) > syr-cc-tmp
 	@echo $(FC) > syr-fc-tmp
@@ -59,14 +68,14 @@ _______EOF
 
 make -f $outfile syr_info > /dev/null
 
-SYRTHES_NOM_ARCH=${NOM_ARCH}
+SYRTHES_NOM_ARCH=`cat syr-nomarch-tmp`
 SYRTHES_VERSION=`cat syr-version-tmp`
 SYRTHES_CC=`cat syr-cc-tmp`
 SYRTHES_FC=`cat syr-fc-tmp`
 SYRTHES_CFLAGS=`cat syr-cflags-tmp`
 SYRTHES_FCFLAGS=`cat syr-fcflags-tmp`
 
-rm -f $outfile syr-version-tmp syr-cc-tmp syr-fc-tmp syr-cflags-tmp syr-fcflags-tmp
+rm -f $outfile syr-nomarch-tmp syr-version-tmp syr-cc-tmp syr-fc-tmp syr-cflags-tmp syr-fcflags-tmp
 
 # Get mandatory Fortran libs for linking stage
 # We assume that only SYRTHES user subroutines written in Fortran 77
@@ -82,14 +91,6 @@ SYRTHES_CPPFLAGS="-I$with_syrthes/include"
 SYRTHES_LDFLAGS="-L$with_syrthes/lib/${SYRTHES_NOM_ARCH}"
 SYRTHES_LIBS="-lsatsyrthes${SYRTHES_VERSION}_${SYRTHES_NOM_ARCH} -lsyrthes${SYRTHES_VERSION}_${SYRTHES_NOM_ARCH}"
 
-if test "x$cs_have_mpi" = "xyes"; then
-   FVM_COUPL_LDFLAGS="$FVM_LDFLAGS"
-   FVM_COUPL_LIBS="-lfvm_coupl"
-else
-   FVM_COUPL_LDFLAGS=
-   FVM_COUPL_LIBS=
-fi
-
 SYRTHES_LDFLAGS="$FVM_COUPL_LDFLAGS $BFT_LDFLAGS $MPI_LDFLAGS $SYRTHES_LDFLAGS"
 SYRTHES_LIBS="$FVM_COUPL_LIBS $BFT_LIBS $MPI_LIBS $SYRTHES_LIBS"
 
diff --git a/config/depcomp b/config/depcomp
index e5f9736..df8eea7 100755
--- a/config/depcomp
+++ b/config/depcomp
@@ -1,10 +1,10 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2007-03-29.01
+scriptversion=2009-04-28.21; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
-# Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
+# Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -17,9 +17,7 @@ scriptversion=2007-03-29.01
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -87,6 +85,15 @@ if test "$depmode" = dashXmstdout; then
    depmode=dashmstdout
 fi
 
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u="sed s,\\\\\\\\,/,g"
+   depmode=msvisualcpp
+fi
+
 case "$depmode" in
 gcc3)
 ## gcc 3 implements dependency tracking that does exactly what
@@ -192,14 +199,14 @@ sgi)
 ' < "$tmpdepfile" \
     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
     tr '
-' ' ' >> $depfile
-    echo >> $depfile
+' ' ' >> "$depfile"
+    echo >> "$depfile"
 
     # The second pass generates a dummy entry for each header file.
     tr ' ' '
 ' < "$tmpdepfile" \
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> $depfile
+   >> "$depfile"
   else
     # The sourcefile does not contain any dependencies, so just
     # store a dummy comment line, to avoid errors with the Makefile
@@ -328,7 +335,12 @@ hp2)
   if test -f "$tmpdepfile"; then
     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
     # Add `dependent.h:' lines.
-    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+    sed -ne '2,${
+	       s/^ *//
+	       s/ \\*$//
+	       s/$/:/
+	       p
+	     }' "$tmpdepfile" >> "$depfile"
   else
     echo "#dummy" > "$depfile"
   fi
@@ -404,7 +416,7 @@ dashmstdout)
 
   # Remove the call to Libtool.
   if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
+    while test "X$1" != 'X--mode=compile'; do
       shift
     done
     shift
@@ -455,32 +467,39 @@ makedepend)
   "$@" || exit $?
   # Remove any Libtool call
   if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
+    while test "X$1" != 'X--mode=compile'; do
       shift
     done
     shift
   fi
   # X makedepend
   shift
-  cleared=no
-  for arg in "$@"; do
+  cleared=no eat=no
+  for arg
+  do
     case $cleared in
     no)
       set ""; shift
       cleared=yes ;;
     esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
     case "$arg" in
     -D*|-I*)
       set fnord "$@" "$arg"; shift ;;
     # Strip any option that makedepend may not understand.  Remove
     # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
     -*|$object)
       ;;
     *)
       set fnord "$@" "$arg"; shift ;;
     esac
   done
-  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
   touch "$tmpdepfile"
   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   rm -f "$depfile"
@@ -500,7 +519,7 @@ cpp)
 
   # Remove the call to Libtool.
   if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
+    while test "X$1" != 'X--mode=compile'; do
       shift
     done
     shift
@@ -538,13 +557,27 @@ cpp)
 
 msvisualcpp)
   # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o,
-  # because we must use -o when running libtool.
+  # always write the preprocessed file to stdout.
   "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
   IFS=" "
   for arg
   do
     case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
 	set fnord "$@"
 	shift
@@ -557,16 +590,23 @@ msvisualcpp)
 	;;
     esac
   done
-  "$@" -E |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
   echo "	" >> "$depfile"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 none)
   exec "$@"
   ;;
@@ -585,5 +625,6 @@ exit 0
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
diff --git a/config/install-sh b/config/install-sh
index a5897de..6781b98 100755
--- a/config/install-sh
+++ b/config/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2006-12-25.00
+scriptversion=2009-04-28.21; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -515,5 +515,6 @@ done
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
diff --git a/config/ltmain.sh b/config/ltmain.sh
index b36c4ad..a72f2fd 100755
--- a/config/ltmain.sh
+++ b/config/ltmain.sh
@@ -1,6 +1,6 @@
 # Generated from ltmain.m4sh.
 
-# ltmain.sh (GNU libtool) 2.2.6
+# ltmain.sh (GNU libtool) 2.2.6b
 # Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
@@ -65,7 +65,7 @@
 #       compiler:		$LTCC
 #       compiler flags:		$LTCFLAGS
 #       linker:		$LD (gnu? $with_gnu_ld)
-#       $progname:		(GNU libtool) 2.2.6
+#       $progname:		(GNU libtool) 2.2.6b
 #       automake:		$automake_version
 #       autoconf:		$autoconf_version
 #
@@ -73,9 +73,9 @@
 
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION=2.2.6
+VERSION=2.2.6b
 TIMESTAMP=""
-package_revision=1.3012
+package_revision=1.3017
 
 # Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -116,15 +116,15 @@ $lt_unset CDPATH
 
 : ${CP="cp -f"}
 : ${ECHO="echo"}
-: ${EGREP="/usr/bin/grep -E"}
-: ${FGREP="/usr/bin/grep -F"}
-: ${GREP="/usr/bin/grep"}
+: ${EGREP="/bin/grep -E"}
+: ${FGREP="/bin/grep -F"}
+: ${GREP="/bin/grep"}
 : ${LN_S="ln -s"}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
-: ${SED="/opt/local/bin/gsed"}
+: ${SED="/bin/sed"}
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
 : ${Xsed="$SED -e 1s/^X//"}
 
diff --git a/config/ltversion.m4 b/config/ltversion.m4
index b8e154f..f3c5309 100644
--- a/config/ltversion.m4
+++ b/config/ltversion.m4
@@ -9,15 +9,15 @@
 
 # Generated from ltversion.in.
 
-# serial 3012 ltversion.m4
+# serial 3017 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.2.6])
-m4_define([LT_PACKAGE_REVISION], [1.3012])
+m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+m4_define([LT_PACKAGE_REVISION], [1.3017])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6'
-macro_revision='1.3012'
+[macro_version='2.2.6b'
+macro_revision='1.3017'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff --git a/config/missing b/config/missing
index 1c8ff70..28055d2 100755
--- a/config/missing
+++ b/config/missing
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2006-05-10.23
+scriptversion=2009-04-28.21; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
-#   Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -18,9 +18,7 @@ scriptversion=2006-05-10.23
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -89,6 +87,9 @@ Supported PROGRAM values:
   tar          try tar, gnutar, gtar, then tar without non-portable flags
   yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
 
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
 Send bug reports to <bug-automake at gnu.org>."
     exit $?
     ;;
@@ -106,15 +107,22 @@ Send bug reports to <bug-automake at gnu.org>."
 
 esac
 
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
 # Now exit if we have it, but it failed.  Also exit now if we
 # don't have it and --version was passed (most likely to detect
-# the program).
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
 case $1 in
-  lex|yacc)
+  lex*|yacc*)
     # Not GNU programs, they don't have --version.
     ;;
 
-  tar)
+  tar*)
     if test -n "$run"; then
        echo 1>&2 "ERROR: \`tar' requires --run"
        exit 1
@@ -138,7 +146,7 @@ esac
 
 # If it does not exist, or fails to run (possibly an outdated version),
 # try to emulate it.
-case $1 in
+case $program in
   aclocal*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
@@ -148,7 +156,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch aclocal.m4
     ;;
 
-  autoconf)
+  autoconf*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`${configure_ac}'.  You might want to install the
@@ -157,7 +165,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch configure
     ;;
 
-  autoheader)
+  autoheader*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
@@ -187,7 +195,7 @@ WARNING: \`$1' is $msg.  You should only need it if
 	   while read f; do touch "$f"; done
     ;;
 
-  autom4te)
+  autom4te*)
     echo 1>&2 "\
 WARNING: \`$1' is needed, but is $msg.
          You might have modified some files without having the
@@ -210,7 +218,7 @@ WARNING: \`$1' is needed, but is $msg.
     fi
     ;;
 
-  bison|yacc)
+  bison*|yacc*)
     echo 1>&2 "\
 WARNING: \`$1' $msg.  You should only need it if
          you modified a \`.y' file.  You may need the \`Bison' package
@@ -240,7 +248,7 @@ WARNING: \`$1' $msg.  You should only need it if
     fi
     ;;
 
-  lex|flex)
+  lex*|flex*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified a \`.l' file.  You may need the \`Flex' package
@@ -263,7 +271,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     fi
     ;;
 
-  help2man)
+  help2man*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
 	 you modified a dependency of a manual page.  You may need the
@@ -277,11 +285,11 @@ WARNING: \`$1' is $msg.  You should only need it if
     else
 	test -z "$file" || exec >$file
 	echo ".ab help2man is required to generate this page"
-	exit 1
+	exit $?
     fi
     ;;
 
-  makeinfo)
+  makeinfo*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified a \`.texi' or \`.texinfo' file, or any other file
@@ -310,7 +318,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch $file
     ;;
 
-  tar)
+  tar*)
     shift
 
     # We have already tried tar in the generic part.
@@ -363,5 +371,6 @@ exit 0
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
diff --git a/config/py-compile b/config/py-compile
index d6e900b..3f9d05b 100755
--- a/config/py-compile
+++ b/config/py-compile
@@ -1,9 +1,10 @@
 #!/bin/sh
 # py-compile - Compile a Python program
 
-scriptversion=2005-05-14.22
+scriptversion=2009-04-28.21; # UTC
 
-# Copyright (C) 2000, 2001, 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2003, 2004, 2005, 2008, 2009 Free Software
+# Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,9 +17,7 @@ scriptversion=2005-05-14.22
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -103,38 +102,38 @@ else
 fi
 
 $PYTHON -c "
-import sys, os, string, py_compile
+import sys, os, py_compile
 
 files = '''$files'''
 
-print 'Byte-compiling python modules...'
-for file in string.split(files):
+sys.stdout.write('Byte-compiling python modules...\n')
+for file in files.split():
     $pathtrans
     $filetrans
     if not os.path.exists(filepath) or not (len(filepath) >= 3
                                             and filepath[-3:] == '.py'):
-	continue
-    print file,
+	    continue
+    sys.stdout.write(file)
     sys.stdout.flush()
     py_compile.compile(filepath, filepath + 'c', path)
-print" || exit $?
+sys.stdout.write('\n')" || exit $?
 
 # this will fail for python < 1.5, but that doesn't matter ...
 $PYTHON -O -c "
-import sys, os, string, py_compile
+import sys, os, py_compile
 
 files = '''$files'''
-print 'Byte-compiling python modules (optimized versions) ...'
-for file in string.split(files):
+sys.stdout.write('Byte-compiling python modules (optimized versions) ...\n')
+for file in files.split():
     $pathtrans
     $filetrans
     if not os.path.exists(filepath) or not (len(filepath) >= 3
                                             and filepath[-3:] == '.py'):
-	continue
-    print file,
+	    continue
+    sys.stdout.write(file)
     sys.stdout.flush()
     py_compile.compile(filepath, filepath + 'o', path)
-print" 2>/dev/null || :
+sys.stdout.write('\n')" 2>/dev/null || :
 
 # Local Variables:
 # mode: shell-script
@@ -142,5 +141,6 @@ print" 2>/dev/null || :
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
diff --git a/configure b/configure
index bb88c9b..39735cb 100755
--- a/configure
+++ b/configure
@@ -1,20 +1,24 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for ncs 2.0.0-beta2.
+# Generated by GNU Autoconf 2.65 for ncs 2.0.0-rc1.
 #
 # Report bugs to <saturne-support at edf.fr>.
 #
+#
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+#
+#
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
@@ -22,23 +26,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
 as_nl='
 '
 export as_nl
@@ -46,7 +42,13 @@ export as_nl
 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
   as_echo='printf %s\n'
   as_echo_n='printf %s'
 else
@@ -57,7 +59,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in
+      case $arg in #(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -80,13 +82,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
   }
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
 
 # IFS
 # We need space, tab and new line, in precisely that order.  Quoting is
@@ -96,15 +91,15 @@ fi
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -116,12 +111,16 @@ if test "x$as_myself" = x; then
 fi
 if test ! -f "$as_myself"; then
   $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
@@ -133,7 +132,249 @@ export LC_ALL
 LANGUAGE=C
 export LANGUAGE
 
-# Required to use basename.
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+	# neutralization value for shells without unset; and this also
+	# works around shells that cannot unset nonexistent variables.
+	BASH_ENV=/dev/null
+	ENV=/dev/null
+	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+	export CONFIG_SHELL
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf at gnu.org and
+$0: saturne-support at edf.fr about your system, including any
+$0: error possibly output before this message. Then install
+$0: a modern shell, or manually run the script under such a
+$0: shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$?; test $as_status -eq 0 && as_status=1
+  if test "$3"; then
+    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  fi
+  $as_echo "$as_me: error: $1" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -147,8 +388,12 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
 as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
@@ -168,409 +413,120 @@ $as_echo X/"$0" |
 	  }
 	  s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 
-if test "x$CONFIG_SHELL" = x; then
-  if (eval ":") 2>/dev/null; then
-  as_have_required=yes
-else
-  as_have_required=no
-fi
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
-  if test $as_have_required = yes &&	 (eval ":
-(as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
 }
 
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
 
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
 fi
-
-if as_func_ret_success; then
-  :
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
 else
-  exitcode=1
-  echo as_func_ret_success failed.
+  as_ln_s='cp -p'
 fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
 
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
 fi
 
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
 else
-  exitcode=1
-  echo positional parameters were not saved.
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in #(
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
 fi
+as_executable_p=$as_test_x
 
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=\$LINENO
-  as_lineno_2=\$LINENO
-  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
-  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
-  :
-else
-  as_candidate_shells=
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  case $as_dir in
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
-	   done;;
-       esac
-done
-IFS=$as_save_IFS
-
-
-      for as_shell in $as_candidate_shells $SHELL; do
-	 # Try only shells that exist, to save several forks.
-	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		{ ("$as_shell") 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
-fi
-
-
-:
-_ASEOF
-}; then
-  CONFIG_SHELL=$as_shell
-	       as_have_required=yes
-	       if { "$as_shell" 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
-fi
-
-
-:
-(as_func_return () {
-  (exit $1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
-  break
-fi
-
-fi
-
-      done
-
-      if test "x$CONFIG_SHELL" != x; then
-  for as_var in BASH_ENV ENV
-	do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-	done
-	export CONFIG_SHELL
-	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
-    if test $as_have_required = no; then
-  echo This script requires a shell more modern than all the
-      echo shells that I found on your system.  Please install a
-      echo modern shell, or manually run the script under such a
-      echo shell if you do have one.
-      { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
-
-
-(eval "as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0") || {
-  echo No shell found that supports shell functions.
-  echo Please tell bug-autoconf at gnu.org about your system,
-  echo including any error possibly output before this message.
-  echo This can help us improve future autoconf versions.
-  echo Configuration will now proceed without shell functions.
-}
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
-  case `echo 'x\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
 
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
 
@@ -722,7 +678,8 @@ fi
 
 
 
-exec 7<&0 </dev/null 6>&1
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
 
 # Name of the host.
 # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
@@ -740,14 +697,14 @@ cross_compiling=no
 subdirs=
 MFLAGS=
 MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
 
 # Identity of this package.
 PACKAGE_NAME='ncs'
 PACKAGE_TARNAME='ncs'
-PACKAGE_VERSION='2.0.0-beta2'
-PACKAGE_STRING='ncs 2.0.0-beta2'
+PACKAGE_VERSION='2.0.0-rc1'
+PACKAGE_STRING='ncs 2.0.0-rc1'
 PACKAGE_BUGREPORT='saturne-support at edf.fr'
+PACKAGE_URL=''
 
 ac_unique_file="src/apps/cs_solver.c"
 # Factoring default headers for most tests.
@@ -787,7 +744,9 @@ ac_includes_default="\
 #endif"
 
 gt_needs=
-ac_subst_vars='LTLIBOBJS
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
 LIBOBJS
 POSUB
 LTLIBINTL
@@ -806,6 +765,10 @@ GMSGFMT
 MSGFMT
 GETTEXT_MACRO_VERSION
 USE_NLS
+HAVE_GUI_FALSE
+HAVE_GUI_TRUE
+PYRCC4
+PYUIC4
 pkgpyexecdir
 pyexecdir
 pkgpythondir
@@ -817,9 +780,8 @@ PYTHON_VERSION
 PYTHON
 cs_python
 PYEXE
-HAVE_GUI_FALSE
-HAVE_GUI_TRUE
-ecs_prefix
+ecs_bindir
+ecs
 SYRTHES_LIBS
 SYRTHES_LDFLAGS
 SYRTHES_CPPFLAGS
@@ -833,8 +795,9 @@ FLIBS
 ac_ct_F77
 FFLAGS
 F77
-MPI_TYPE
-MPI_BIN
+mpi_libdir
+mpi_bindir
+mpi_type
 MPI_LIBS
 MPI_LDFLAGS
 MPI_CPPFLAGS
@@ -848,12 +811,14 @@ LIBXML2_LDFLAGS
 LIBXML2_CPPFLAGS
 HAVE_LIBXML2_FALSE
 HAVE_LIBXML2_TRUE
-mei_libdir
+mei_prefix
 MEI_LIBS
 MEI_LDFLAGS
 MEI_CPPFLAGS
 HAVE_MEI_FALSE
 HAVE_MEI_TRUE
+FVM_COUPL_LIBS
+FVM_COUPL_LDFLAGS
 FVM_LIBS
 FVM_LDFLAGS
 FVM_CPPFLAGS
@@ -977,6 +942,7 @@ bindir
 program_transform_name
 prefix
 exec_prefix
+PACKAGE_URL
 PACKAGE_BUGREPORT
 PACKAGE_STRING
 PACKAGE_VERSION
@@ -1007,21 +973,17 @@ with_fvm
 with_fvm_exec
 with_fvm_include
 with_fvm_lib
-enable_mei
 with_mei
 with_mei_include
 with_mei_lib
-enable_libxml2
 with_libxml2
 with_libxml2_include
 with_libxml2_lib
-enable_blas
 with_blas
 with_blas_include
 with_blas_lib
 with_blas_type
 with_blas_libs
-enable_mpi
 with_mpi
 with_mpi_exec
 with_mpi_include
@@ -1030,6 +992,7 @@ with_syrthes
 with_prepro
 enable_gui
 with_python_exec
+with_pyqt4_exec
 enable_sockets
 enable_dlloader
 enable_nls
@@ -1158,8 +1121,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1185,8 +1147,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1390,8 +1351,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1407,8 +1367,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1438,17 +1397,17 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
+  -*) as_fn_error "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information."
     ;;
 
   *=*)
     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+    esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
@@ -1465,15 +1424,13 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  { $as_echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error "missing argument to $ac_option"
 fi
 
 if test -n "$ac_unrecognized_opts"; then
   case $enable_option_checking in
     no) ;;
-    fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
-   { (exit 1); exit 1; }; } ;;
+    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
@@ -1496,8 +1453,7 @@ do
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -1527,11 +1483,9 @@ test "$silent" = yes && exec 6>/dev/null
 ac_pwd=`pwd` && test -n "$ac_pwd" &&
 ac_ls_di=`ls -di .` &&
 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  { $as_echo "$as_me: error: working directory cannot be determined" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error "working directory cannot be determined"
 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
@@ -1570,13 +1524,11 @@ else
 fi
 if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
 fi
 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
 ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
-   { (exit 1); exit 1; }; }
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
 	pwd)`
 # When building in place, set srcdir=.
 if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1602,7 +1554,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ncs 2.0.0-beta2 to adapt to many kinds of systems.
+\`configure' configures ncs 2.0.0-rc1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1673,7 +1625,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ncs 2.0.0-beta2:";;
+     short | recursive ) echo "Configuration of ncs 2.0.0-rc1:";;
    esac
   cat <<\_ACEOF
 
@@ -1694,10 +1646,6 @@ Optional Features:
                           optimize for fast installation [default=yes]
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-openmp      disable OpenMP support
-  --disable-mei           do not use MEI when available
-  --disable-libxml2       do not use LIBXML2 when available
-  --disable-blas          do not use BLAS when available
-  --disable-mpi           do not use MPI when available
   --disable-gui           disable the Graphical User Interface
   --disable-sockets       disable communications through IP sockets
   --disable-dlloader      disable dynamic shared library loading
@@ -1738,6 +1686,8 @@ Optional Packages:
   --with-syrthes=PATH     specify prefix directory for SYRTHES
   --with-prepro=PATH      specify prefix directory for the Preprocessor
   --with-python-exec=PATH specify prefix directory for a Python interpreter
+  --with-pyqt4-exec=PATH  specify prefix directory for PyQt4 developper tools
+                          (pyuic4 and pyrcc4)
   --with-gnu-ld           assume the C compiler uses GNU ld default=no
   --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
   --without-libiconv-prefix     don't search for libiconv in includedir and libdir
@@ -1750,7 +1700,7 @@ Some influential environment variables:
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
               nonstandard directory <lib dir>
   LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   FC          Fortran compiler command
   FCFLAGS     Fortran compiler flags
@@ -1824,943 +1774,1494 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ncs configure 2.0.0-beta2
-generated by GNU Autoconf 2.63
+ncs configure 2.0.0-rc1
+generated by GNU Autoconf 2.65
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 2009 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
   exit
 fi
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
 
-It was created by ncs $as_me 2.0.0-beta2, which was
-generated by GNU Autoconf 2.63.  Invocation command line was
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
 
-  $ $0 $@
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-_ACEOF
-exec 5>>config.log
+	ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_fc_try_compile LINENO
+# ---------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_fc_try_compile ()
 {
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_fc_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+	ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
 
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+} # ac_fn_fc_try_compile
 
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  $as_echo "PATH: $as_dir"
-done
-IFS=$as_save_IFS
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
 
-} >&5
+} # ac_fn_c_try_link
 
-cat >&5 <<_ACEOF
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
+} # ac_fn_c_check_header_compile
 
-## ----------- ##
-## Core tests. ##
-## ----------- ##
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-_ACEOF
+    ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
 
+} # ac_fn_c_try_cpp
 
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
-    2)
-      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      ac_configure_args="$ac_configure_args '$ac_arg'"
-      ;;
-    esac
-  done
-done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
 
-    cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) $as_unset $ac_var ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
+} # ac_fn_c_try_run
 
-    cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
 
-    if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
-## File substitutions. ##
-## ------------------- ##
-_ASBOX
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
 
-    if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
 
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
+#undef $2
 
-# Predefined preprocessor variables.
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
 _ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
+} # ac_fn_c_check_func
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
+# ac_fn_fc_try_link LINENO
+# ------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_fc_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_fc_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
 
+} # ac_fn_fc_try_link
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
 _ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
 _ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
 
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  ac_site_file1=$CONFIG_SITE
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
 else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
+  eval "$3=yes"
 fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test -r "$ac_site_file"; then
-    { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special
-  # files actually), so we avoid doing that.
-  if test -f "$cache_file"; then
-    { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
-gt_needs="$gt_needs "
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:$LINENO:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:$LINENO:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
+} # ac_fn_c_check_type
 
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
 
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
 
+  fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
 
+} # ac_fn_c_compute_int
 
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
-
-
-
-
-
-
-
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-# Use the config directory for libtool stuff ...
-ac_aux_dir=
-for ac_dir in config "$srcdir"/config; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&5
-$as_echo "$as_me: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&2;}
-   { (exit 1); exit 1; }; }
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
 fi
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
 
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-
-
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
-   { (exit 1); exit 1; }; }
-
-{ $as_echo "$as_me:$LINENO: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( cat <<\_ASBOX
+## ------------------------------------- ##
+## Report this to saturne-support at edf.fr ##
+## ------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
-   { (exit 1); exit 1; }; }
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
-
+  eval "$3=\$ac_header_compiler"
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-$as_echo "$as_me: error: invalid value of canonical build" >&2;}
-   { (exit 1); exit 1; }; };;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
+} # ac_fn_c_check_header_mongrel
 
-{ $as_echo "$as_me:$LINENO: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
+# ac_fn_f77_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_f77_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
 else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
-fi
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+	ac_retval=1
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-$as_echo "$as_me: error: invalid value of canonical host" >&2;}
-   { (exit 1); exit 1; }; };;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
 
+} # ac_fn_f77_try_compile
 
-{ $as_echo "$as_me:$LINENO: checking target system type" >&5
-$as_echo_n "checking target system type... " >&6; }
-if test "${ac_cv_target+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$target_alias" = x; then
-  ac_cv_target=$ac_cv_host
+# ac_fn_f77_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_f77_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
 else
-  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
-    { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
-fi
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+	ac_retval=1
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5
-$as_echo "$ac_cv_target" >&6; }
-case $ac_cv_target in
-*-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5
-$as_echo "$as_me: error: invalid value of canonical target" >&2;}
-   { (exit 1); exit 1; }; };;
-esac
-target=$ac_cv_target
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_target
-shift
-target_cpu=$1
-target_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-target_os=$*
-IFS=$ac_save_IFS
-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
 
+} # ac_fn_f77_try_link
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
 
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
-  test "$program_prefix$program_suffix$program_transform_name" = \
-    NONENONEs,x,x, &&
-  program_prefix=${target_alias}-
-ac_config_headers="$ac_config_headers cs_config.h"
+It was created by ncs $as_me 2.0.0-rc1, which was
+generated by GNU Autoconf 2.65.  Invocation command line was
 
+  $ $0 $@
 
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
 
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
 
-am__api_version='1.10'
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
 
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-done
+    $as_echo "PATH: $as_dir"
+  done
 IFS=$as_save_IFS
 
-rm -rf conftest.one conftest.two conftest.dir
+} >&5
 
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
+cat >&5 <<_ACEOF
 
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
 
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+## ----------- ##
+## Core tests. ##
+## ----------- ##
 
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+_ACEOF
 
-{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
 
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&5
-$as_echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&2;}
-   { (exit 1); exit 1; }; }
-   fi
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
 
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-$as_echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
 
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
 
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-fi
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
 
-{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if test "${ac_cv_path_mkdir+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_prog in mkdir gmkdir; do
-	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
-	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-	     'mkdir (GNU coreutils) '* | \
-	     'mkdir (coreutils) '* | \
-	     'mkdir (fileutils) '4.1*)
-	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-	       break 3;;
-	   esac
-	 done
-       done
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
 done
-IFS=$as_save_IFS
+ac_signal=0
 
-fi
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
 
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    test -d ./--version && rmdir ./--version
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
+$as_echo "/* confdefs.h */" > confdefs.h
 
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
+# Predefined preprocessor variables.
 
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
 
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:$LINENO: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
 
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
 
-  test -n "$AWK" && break
-done
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
 
-{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
 
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
 else
-  am__leading_dot=_
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
 fi
-rmdir .tst 2>/dev/null
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
 
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-   { (exit 1); exit 1; }; }
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
   fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
 fi
 
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
+gt_needs="$gt_needs "
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
   fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
 fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
 
-
-# Define the identity of the package.
- PACKAGE='ncs'
- VERSION='2.0.0-beta2'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
 
-# Some tools Automake needs.
 
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+# Use the config directory for libtool stuff ...
+ac_aux_dir=
+for ac_dir in config "$srcdir"/config; do
+  for ac_t in install-sh install.sh shtool; do
+    if test -f "$ac_dir/$ac_t"; then
+      ac_aux_dir=$ac_dir
+      ac_install_sh="$ac_aux_dir/$ac_t -c"
+      break 2
+    fi
+  done
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
+fi
 
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
 
 
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
 
 
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
 
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
-install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
 
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
 else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
 fi
+
 fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if test "${ac_cv_target+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+ac_config_headers="$ac_config_headers cs_config.h"
+
+
+
+
+am__api_version='1.11'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      as_fn_error "ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2770,9 +3271,9 @@ if test -z "$ac_cv_prog_STRIP"; then
   ac_ct_STRIP=$STRIP
   # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_STRIP"; then
@@ -2783,24 +3284,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
 if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
 $as_echo "$ac_ct_STRIP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2809,7 +3310,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -2822,29 +3323,210 @@ fi
 fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if test "${ac_cv_path_mkdir+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='ncs'
+ VERSION='2.0.0-rc1'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
 
 
 
 
-{ $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
     # Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then
+if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
   USE_MAINTAINER_MODE=no
 fi
 
-  { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
 $as_echo "$USE_MAINTAINER_MODE" >&6; }
    if test $USE_MAINTAINER_MODE = yes; then
   MAINTAINER_MODE_TRUE=
@@ -2879,9 +3561,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2892,24 +3574,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2919,9 +3601,9 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -2932,24 +3614,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
 $as_echo "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -2958,7 +3640,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -2972,9 +3654,9 @@ if test -z "$CC"; then
           if test -n "$ac_tool_prefix"; then
     # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2985,24 +3667,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -3012,9 +3694,9 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -3026,18 +3708,18 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 if test $ac_prog_rejected = yes; then
@@ -3056,10 +3738,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -3071,9 +3753,9 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -3084,24 +3766,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -3115,9 +3797,9 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -3128,24 +3810,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
 $as_echo "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -3158,7 +3840,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -3169,57 +3851,37 @@ fi
 fi
 
 
-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
 
 # Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3235,8 +3897,8 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
 ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
 
 # The possible output files:
@@ -3252,17 +3914,17 @@ do
 done
 rm -f $ac_rmfiles
 
-if { (ac_try="$ac_link_default"
+if { { ac_try="$ac_link_default"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link_default") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
 # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
 # in a Makefile.  We should not override ac_cv_exeext if it was cached,
@@ -3279,7 +3941,7 @@ do
 	# certainly right.
 	break;;
     *.* )
-        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
 	then :; else
 	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
 	fi
@@ -3298,84 +3960,42 @@ test "$ac_cv_exeext" = no && ac_cv_exeext=
 else
   ac_file=''
 fi
-
-{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-if test -z "$ac_file"; then
-  $as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
+{ as_fn_set_status 77
+as_fn_error "C compiler cannot create executables
+See \`config.log' for more details." "$LINENO" 5; }; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 fi
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
 ac_exeext=$ac_cv_exeext
 
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
 rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
 ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
 $as_echo_n "checking for suffix of executables... " >&6; }
-if { (ac_try="$ac_link"
+if { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
 # work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -3390,54 +4010,105 @@ for ac_file in conftest.exe conftest conftest.*; do
   esac
 done
 else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." "$LINENO" 5; }
 fi
-
-rm -f conftest$ac_cv_exeext
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
 $as_echo "$ac_cv_exeext" >&6; }
 
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+#include <stdio.h>
 int
 main ()
 {
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_compile") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   for ac_file in conftest.o conftest.obj conftest.*; do
   test -f "$ac_file" || continue;
   case $ac_file in
@@ -3450,31 +4121,23 @@ else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." "$LINENO" 5; }
 fi
-
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
 $as_echo "$ac_cv_objext" >&6; }
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3488,37 +4151,16 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
 $as_echo "$ac_cv_c_compiler_gnu" >&6; }
 if test $ac_compiler_gnu = yes; then
   GCC=yes
@@ -3527,20 +4169,16 @@ else
 fi
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
 $as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
+if test "${ac_cv_prog_cc_g+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
    CFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3551,35 +4189,11 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3590,36 +4204,12 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_compile "$LINENO"; then :
 
-	ac_c_werror_flag=$ac_save_c_werror_flag
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3630,42 +4220,17 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
 $as_echo "$ac_cv_prog_cc_g" >&6; }
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
@@ -3682,18 +4247,14 @@ else
     CFLAGS=
   fi
 fi
-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
@@ -3750,32 +4311,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
 	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
 do
   CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+  if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_c89=$ac_arg
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext
   test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
@@ -3786,17 +4324,19 @@ fi
 # AC_CACHE_VAL
 case "x$ac_cv_prog_cc_c89" in
   x)
-    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
 $as_echo "none needed" >&6; } ;;
   xno)
-    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
 $as_echo "unsupported" >&6; } ;;
   *)
     CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
 
+fi
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -3811,44 +4351,44 @@ ac_config_commands="$ac_config_commands depfiles"
 am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-	@echo done
+	@echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
 $as_echo_n "checking for style of include used by $am_make... " >&6; }
 am__include="#"
 am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
-fi
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # Now try BSD make style include.
 if test "$am__include" = "#"; then
    echo '.include "confinc"' > confmf
-   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-      am__include=.include
-      am__quote="\""
-      _am_result=BSD
-   fi
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 
 
-{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
 $as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
 # Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then
+if test "${enable_dependency_tracking+set}" = set; then :
   enableval=$enable_dependency_tracking;
 fi
 
@@ -3868,9 +4408,9 @@ fi
 
 depcc="$CC"   am_compiler_list=
 
-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
 $as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
@@ -3896,6 +4436,11 @@ else
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
   fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -3913,7 +4458,17 @@ else
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
       # after this tag, mechanisms are not by side-effect, so they'll
       # only be used when explicitly requested
@@ -3923,19 +4478,23 @@ else
 	break
       fi
       ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
     if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
        grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -3959,7 +4518,7 @@ else
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
@@ -3983,9 +4542,9 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_FC+set}" = set; then
+if test "${ac_cv_prog_FC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$FC"; then
@@ -3996,24 +4555,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 FC=$ac_cv_prog_FC
 if test -n "$FC"; then
-  { $as_echo "$as_me:$LINENO: result: $FC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5
 $as_echo "$FC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4027,9 +4586,9 @@ if test -z "$FC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_FC+set}" = set; then
+if test "${ac_cv_prog_ac_ct_FC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_FC"; then
@@ -4040,24 +4599,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_FC="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_FC=$ac_cv_prog_ac_ct_FC
 if test -n "$ac_ct_FC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_FC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5
 $as_echo "$ac_ct_FC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4070,7 +4629,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -4080,54 +4639,41 @@ fi
 
 
 # Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for Fortran compiler version" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 rm -f a.out
 
 # If we don't use `.F' as extension, the preprocessor is not run on the
 # input file.  (Note that this only needs to work for GNU compilers.)
 ac_save_ext=$ac_ext
 ac_ext=F
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5
 $as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; }
-if test "${ac_cv_fc_compiler_gnu+set}" = set; then
+if test "${ac_cv_fc_compiler_gnu+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 #ifndef __GNUC__
        choke me
@@ -4135,86 +4681,44 @@ else
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_fc_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_fc_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5
 $as_echo "$ac_cv_fc_compiler_gnu" >&6; }
 ac_ext=$ac_save_ext
-ac_test_FFLAGS=${FCFLAGS+set}
-ac_save_FFLAGS=$FCFLAGS
+ac_test_FCFLAGS=${FCFLAGS+set}
+ac_save_FCFLAGS=$FCFLAGS
 FCFLAGS=
-{ $as_echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5
 $as_echo_n "checking whether $FC accepts -g... " >&6; }
-if test "${ac_cv_prog_fc_g+set}" = set; then
+if test "${ac_cv_prog_fc_g+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   FCFLAGS=-g
-cat >conftest.$ac_ext <<_ACEOF
+cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_fc_try_compile "$LINENO"; then :
   ac_cv_prog_fc_g=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_prog_fc_g=no
+  ac_cv_prog_fc_g=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5
 $as_echo "$ac_cv_prog_fc_g" >&6; }
-if test "$ac_test_FFLAGS" = set; then
-  FCFLAGS=$ac_save_FFLAGS
+if test "$ac_test_FCFLAGS" = set; then
+  FCFLAGS=$ac_save_FCFLAGS
 elif test $ac_cv_prog_fc_g = yes; then
   if test "x$ac_cv_fc_compiler_gnu" = xyes; then
     FCFLAGS="-g -O2"
@@ -4235,113 +4739,21 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
-{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
 $as_echo_n "checking whether ln -s works... " >&6; }
 LN_S=$as_ln_s
 if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
 $as_echo "no, using $LN_S" >&6; }
 fi
 
-{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
 $as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if test "${ac_cv_path_SED+set}" = set; then
+if test "${ac_cv_path_SED+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
             ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
@@ -4349,7 +4761,7 @@ else
        ac_script="$ac_script$as_nl$ac_script"
      done
      echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     $as_unset ac_script || ac_script=
+     { ac_script=; unset ac_script;}
      if test -z "$SED"; then
   ac_path_SED_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
@@ -4358,7 +4770,7 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in sed gsed; do
+    for ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
       { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
@@ -4378,7 +4790,7 @@ case `"$ac_path_SED" --version 2>&1` in
     $as_echo '' >> "conftest.nl"
     "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_SED_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_SED="$ac_path_SED"
@@ -4393,19 +4805,17 @@ esac
       $ac_path_SED_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_SED"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
   fi
 else
   ac_cv_path_SED=$SED
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
 $as_echo "$ac_cv_path_SED" >&6; }
  SED="$ac_cv_path_SED"
   rm -f conftest.sed
@@ -4416,38 +4826,21 @@ ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking how to get verbose linking output from $FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get verbose linking output from $FC" >&5
 $as_echo_n "checking how to get verbose linking output from $FC... " >&6; }
-if test "${ac_cv_prog_fc_v+set}" = set; then
+if test "${ac_cv_prog_fc_v+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_fc_try_compile "$LINENO"; then :
   ac_cv_prog_fc_v=
 # Try some options frequently used verbose output
 for ac_verb in -v -verbose --verbose -V -\#\#\#; do
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
@@ -4457,17 +4850,17 @@ _ACEOF
 # 1 to this macro) to the Fortran compiler in order to get
 # "verbose" output that we can then parse for the Fortran linker
 # flags.
-ac_save_FFLAGS=$FCFLAGS
+ac_save_FCFLAGS=$FCFLAGS
 FCFLAGS="$FCFLAGS $ac_verb"
 eval "set x $ac_link"
 shift
-$as_echo "$as_me:$LINENO: $*" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5
 # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH,
 # LIBRARY_PATH; skip all such settings.
 ac_fc_v_output=`eval $ac_link 5>&1 2>&1 |
   grep -v 'Driving:' | grep -v "^[_$as_cr_Letters][_$as_cr_alnum]*="`
 $as_echo "$ac_fc_v_output" >&5
-FCFLAGS=$ac_save_FFLAGS
+FCFLAGS=$ac_save_FCFLAGS
 
 rm -rf conftest*
 
@@ -4496,9 +4889,9 @@ case $ac_fc_v_output in
   # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2".
   *-cmdline\ * | *-ignore\ * | *-def\ *)
     ac_fc_v_output=`echo $ac_fc_v_output | sed "\
-        s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
-        s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
-        s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
+	s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
+	s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
+	s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
 
   # If we are using Cray Fortran then delete quotes.
   *cft90*)
@@ -4509,39 +4902,35 @@ esac
   # look for -l* and *.a constructs in the output
   for ac_arg in $ac_fc_v_output; do
      case $ac_arg in
-        [\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
-          ac_cv_prog_fc_v=$ac_verb
-          break 2 ;;
+	[\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
+	  ac_cv_prog_fc_v=$ac_verb
+	  break 2 ;;
      esac
   done
 done
 if test -z "$ac_cv_prog_fc_v"; then
-   { $as_echo "$as_me:$LINENO: WARNING: cannot determine how to obtain linking information from $FC" >&5
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine how to obtain linking information from $FC" >&5
 $as_echo "$as_me: WARNING: cannot determine how to obtain linking information from $FC" >&2;}
 fi
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ $as_echo "$as_me:$LINENO: WARNING: compilation failed" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compilation failed" >&5
 $as_echo "$as_me: WARNING: compilation failed" >&2;}
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_fc_v" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_v" >&5
 $as_echo "$ac_cv_prog_fc_v" >&6; }
-{ $as_echo "$as_me:$LINENO: checking for Fortran libraries of $FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran libraries of $FC" >&5
 $as_echo_n "checking for Fortran libraries of $FC... " >&6; }
-if test "${ac_cv_fc_libs+set}" = set; then
+if test "${ac_cv_fc_libs+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "x$FCLIBS" != "x"; then
   ac_cv_fc_libs="$FCLIBS" # Let the user override the test.
 else
 
-cat >conftest.$ac_ext <<_ACEOF
+cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
@@ -4551,17 +4940,17 @@ _ACEOF
 # 1 to this macro) to the Fortran compiler in order to get
 # "verbose" output that we can then parse for the Fortran linker
 # flags.
-ac_save_FFLAGS=$FCFLAGS
+ac_save_FCFLAGS=$FCFLAGS
 FCFLAGS="$FCFLAGS $ac_cv_prog_fc_v"
 eval "set x $ac_link"
 shift
-$as_echo "$as_me:$LINENO: $*" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5
 # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH,
 # LIBRARY_PATH; skip all such settings.
 ac_fc_v_output=`eval $ac_link 5>&1 2>&1 |
   grep -v 'Driving:' | grep -v "^[_$as_cr_Letters][_$as_cr_alnum]*="`
 $as_echo "$ac_fc_v_output" >&5
-FCFLAGS=$ac_save_FFLAGS
+FCFLAGS=$ac_save_FCFLAGS
 
 rm -rf conftest*
 
@@ -4590,9 +4979,9 @@ case $ac_fc_v_output in
   # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2".
   *-cmdline\ * | *-ignore\ * | *-def\ *)
     ac_fc_v_output=`echo $ac_fc_v_output | sed "\
-        s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
-        s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
-        s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
+	s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
+	s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
+	s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
 
   # If we are using Cray Fortran then delete quotes.
   *cft90*)
@@ -4611,8 +5000,8 @@ while test $# != 1; do
   shift
   ac_arg=$1
   case $ac_arg in
-        [\\/]*.a | ?:[\\/]*.a)
-            ac_exists=false
+	[\\/]*.a | ?:[\\/]*.a)
+	    ac_exists=false
   for ac_i in $ac_cv_fc_libs; do
     if test x"$ac_arg" = x"$ac_i"; then
       ac_exists=true
@@ -4620,15 +5009,14 @@ while test $# != 1; do
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
 fi
-
-          ;;
-        -bI:*)
-            ac_exists=false
+	  ;;
+	-bI:*)
+	    ac_exists=false
   for ac_i in $ac_cv_fc_libs; do
     if test x"$ac_arg" = x"$ac_i"; then
       ac_exists=true
@@ -4636,8 +5024,8 @@ fi
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   if test "$ac_compiler_gnu" = yes; then
   for ac_link_opt in $ac_arg; do
@@ -4647,18 +5035,18 @@ else
   ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
 fi
 fi
-
-          ;;
-          # Ignore these flags.
-        -lang* | -lcrt*.o | -lc | -lgcc* | -lSystem | -libmil | -LANG:=* | -LIST:* | -LNO:*)
-          ;;
-        -lkernel32)
-          test x"$CYGWIN" != xyes && ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
-          ;;
-        -[LRuYz])
-          # These flags, when seen by themselves, take an argument.
-          # We remove the space between option and argument and re-iterate
-          # unless we find an empty arg or a new option (starting with -)
+	  ;;
+	  # Ignore these flags.
+	-lang* | -lcrt*.o | -lc | -lgcc* | -lSystem | -libmil | -little \
+	  |-LANG:=* | -LIST:* | -LNO:*)
+	  ;;
+	-lkernel32)
+	  test x"$CYGWIN" != xyes && ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+	  ;;
+	-[LRuYz])
+	  # These flags, when seen by themselves, take an argument.
+	  # We remove the space between option and argument and re-iterate
+	  # unless we find an empty arg or a new option (starting with -)
 	  case $2 in
 	     "" | -*);;
 	     *)
@@ -4667,10 +5055,10 @@ fi
 		set X $ac_arg "$@"
 		;;
 	  esac
-          ;;
-        -YP,*)
-          for ac_j in `$as_echo "$ac_arg" | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
-              ac_exists=false
+	  ;;
+	-YP,*)
+	  for ac_j in `$as_echo "$ac_arg" | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
+	      ac_exists=false
   for ac_i in $ac_cv_fc_libs; do
     if test x"$ac_j" = x"$ac_i"; then
       ac_exists=true
@@ -4678,17 +5066,16 @@ fi
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   ac_arg="$ac_arg $ac_j"
-                               ac_cv_fc_libs="$ac_cv_fc_libs $ac_j"
+			       ac_cv_fc_libs="$ac_cv_fc_libs $ac_j"
 fi
-
-          done
-          ;;
-        -[lLR]*)
-            ac_exists=false
+	  done
+	  ;;
+	-[lLR]*)
+	    ac_exists=false
   for ac_i in $ac_cv_fc_libs; do
     if test x"$ac_arg" = x"$ac_i"; then
       ac_exists=true
@@ -4696,17 +5083,16 @@ fi
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
 fi
-
-          ;;
+	  ;;
 	-zallextract*| -zdefaultextract)
 	  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
 	  ;;
-          # Ignore everything else.
+	  # Ignore everything else.
   esac
 done
 # restore positional arguments
@@ -4718,9 +5104,9 @@ set X $ac_save_positional; shift
 case `(uname -sr) 2>/dev/null` in
    "SunOS 5"*)
       ac_ld_run_path=`$as_echo "$ac_fc_v_output" |
-                        sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
+			sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
       test "x$ac_ld_run_path" != x &&
-        if test "$ac_compiler_gnu" = yes; then
+	if test "$ac_compiler_gnu" = yes; then
   for ac_link_opt in $ac_ld_run_path; do
     ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt"
   done
@@ -4732,7 +5118,7 @@ esac
 fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x"
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_fc_libs" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_libs" >&5
 $as_echo "$ac_cv_fc_libs" >&6; }
 FCLIBS="$ac_cv_fc_libs"
 
@@ -4747,14 +5133,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # Debug or production compilation mode (debug by default) ?
 
 # Check whether --enable-debug was given.
-if test "${enable_debug+set}" = set; then
+if test "${enable_debug+set}" = set; then :
   enableval=$enable_debug;
     case "${enableval}" in
       yes) debug=true ;;
       no)  debug=false ;;
-      *)   { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-debug" >&5
-$as_echo "$as_me: error: bad value ${enableval} for --enable-debug" >&2;}
-   { (exit 1); exit 1; }; } ;;
+      *)   as_fn_error "bad value ${enableval} for --enable-debug" "$LINENO" 5 ;;
     esac
 
 else
@@ -4766,14 +5150,12 @@ fi
 # Optionally deactivate automatic determination of flags on known systems
 
 # Check whether --enable-auto-flags was given.
-if test "${enable_auto_flags+set}" = set; then
+if test "${enable_auto_flags+set}" = set; then :
   enableval=$enable_auto_flags;
     case "${enableval}" in
       yes) auto_flags=true ;;
       no)  auto_flags=false ;;
-      *)   { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-auto-flags" >&5
-$as_echo "$as_me: error: bad value ${enableval} for --enable-auto-flags" >&2;}
-   { (exit 1); exit 1; }; } ;;
+      *)   as_fn_error "bad value ${enableval} for --enable-auto-flags" "$LINENO" 5 ;;
     esac
 
 else
@@ -4785,14 +5167,12 @@ fi
 # Optionally activate French translation of Fortran logs (compile-time)
 
 # Check whether --enable-french was given.
-if test "${enable_french+set}" = set; then
+if test "${enable_french+set}" = set; then :
   enableval=$enable_french;
     case "${enableval}" in
       yes) french=true ;;
       no)  french=false ;;
-      *)   { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-french" >&5
-$as_echo "$as_me: error: bad value ${enableval} for --enable-french" >&2;}
-   { (exit 1); exit 1; }; } ;;
+      *)   as_fn_error "bad value ${enableval} for --enable-french" "$LINENO" 5 ;;
     esac
 
 else
@@ -4810,11 +5190,11 @@ if test "x$auto_flags" = "xtrue" ; then
   # Source associated recommended compiler options
 
   if test -f "$srcdir/config/cs_auto_flags.sh" ; then
-    { $as_echo "$as_me:$LINENO: sourcing config/cs_auto_flags.sh (test for known compilers)" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: sourcing config/cs_auto_flags.sh (test for known compilers)" >&5
 $as_echo "$as_me: sourcing config/cs_auto_flags.sh (test for known compilers)" >&6;}
     . "$srcdir/config/cs_auto_flags.sh"
   else
-    { $as_echo "$as_me:$LINENO: WARNING: config/cs_auto_flags.sh default configuration file not found" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: config/cs_auto_flags.sh default configuration file not found" >&5
 $as_echo "$as_me: WARNING: config/cs_auto_flags.sh default configuration file not found" >&2;}
   fi
 
@@ -4907,14 +5287,14 @@ fi
 
 case `pwd` in
   *\ * | *\	*)
-    { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
 esac
 
 
 
-macro_version='2.2.6'
-macro_revision='1.3012'
+macro_version='2.2.6b'
+macro_revision='1.3017'
 
 
 
@@ -4930,9 +5310,9 @@ macro_revision='1.3012'
 
 ltmain="$ac_aux_dir/ltmain.sh"
 
-{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
 $as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if test "${ac_cv_path_SED+set}" = set; then
+if test "${ac_cv_path_SED+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
             ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
@@ -4940,7 +5320,7 @@ else
        ac_script="$ac_script$as_nl$ac_script"
      done
      echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     $as_unset ac_script || ac_script=
+     { ac_script=; unset ac_script;}
      if test -z "$SED"; then
   ac_path_SED_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
@@ -4949,7 +5329,7 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in sed gsed; do
+    for ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
       { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
@@ -4969,7 +5349,7 @@ case `"$ac_path_SED" --version 2>&1` in
     $as_echo '' >> "conftest.nl"
     "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_SED_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_SED="$ac_path_SED"
@@ -4984,19 +5364,17 @@ esac
       $ac_path_SED_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_SED"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
   fi
 else
   ac_cv_path_SED=$SED
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
 $as_echo "$ac_cv_path_SED" >&6; }
  SED="$ac_cv_path_SED"
   rm -f conftest.sed
@@ -5014,9 +5392,9 @@ Xsed="$SED -e 1s/^X//"
 
 
 
-{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
 $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
+if test "${ac_cv_path_GREP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$GREP"; then
@@ -5027,7 +5405,7 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in grep ggrep; do
+    for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
       { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
@@ -5047,7 +5425,7 @@ case `"$ac_path_GREP" --version 2>&1` in
     $as_echo 'GREP' >> "conftest.nl"
     "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_GREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_GREP="$ac_path_GREP"
@@ -5062,26 +5440,24 @@ esac
       $ac_path_GREP_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_GREP"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_GREP=$GREP
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
 $as_echo "$ac_cv_path_GREP" >&6; }
  GREP="$ac_cv_path_GREP"
 
 
-{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
 $as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
+if test "${ac_cv_path_EGREP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@ -5095,7 +5471,7 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in egrep; do
+    for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
       { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
@@ -5115,7 +5491,7 @@ case `"$ac_path_EGREP" --version 2>&1` in
     $as_echo 'EGREP' >> "conftest.nl"
     "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_EGREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_EGREP="$ac_path_EGREP"
@@ -5130,12 +5506,10 @@ esac
       $ac_path_EGREP_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_EGREP"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_EGREP=$EGREP
@@ -5143,14 +5517,14 @@ fi
 
    fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
 $as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
 
 
-{ $as_echo "$as_me:$LINENO: checking for fgrep" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
 $as_echo_n "checking for fgrep... " >&6; }
-if test "${ac_cv_path_FGREP+set}" = set; then
+if test "${ac_cv_path_FGREP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
@@ -5164,7 +5538,7 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in fgrep; do
+    for ac_prog in fgrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
       { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
@@ -5184,7 +5558,7 @@ case `"$ac_path_FGREP" --version 2>&1` in
     $as_echo 'FGREP' >> "conftest.nl"
     "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_FGREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_FGREP="$ac_path_FGREP"
@@ -5199,12 +5573,10 @@ esac
       $ac_path_FGREP_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_FGREP"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_FGREP=$FGREP
@@ -5212,7 +5584,7 @@ fi
 
    fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
 $as_echo "$ac_cv_path_FGREP" >&6; }
  FGREP="$ac_cv_path_FGREP"
 
@@ -5238,7 +5610,7 @@ test -z "$GREP" && GREP=grep
 
 
 # Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
+if test "${with_gnu_ld+set}" = set; then :
   withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
 else
   with_gnu_ld=no
@@ -5247,7 +5619,7 @@ fi
 ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
 $as_echo_n "checking for ld used by $CC... " >&6; }
   case $host in
   *-*-mingw*)
@@ -5277,13 +5649,13 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
     ;;
   esac
 elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
 $as_echo_n "checking for GNU ld... " >&6; }
 else
-  { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
 $as_echo_n "checking for non-GNU ld... " >&6; }
 fi
-if test "${lt_cv_path_LD+set}" = set; then
+if test "${lt_cv_path_LD+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
@@ -5314,18 +5686,16 @@ fi
 
 LD="$lt_cv_path_LD"
 if test -n "$LD"; then
-  { $as_echo "$as_me:$LINENO: result: $LD" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
 $as_echo "$LD" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${lt_cv_prog_gnu_ld+set}" = set; then
+if test "${lt_cv_prog_gnu_ld+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   # I'd rather use --version here, but apparently some GNU lds only accept -v.
@@ -5338,7 +5708,7 @@ case `$LD -v 2>&1 </dev/null` in
   ;;
 esac
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
 $as_echo "$lt_cv_prog_gnu_ld" >&6; }
 with_gnu_ld=$lt_cv_prog_gnu_ld
 
@@ -5350,9 +5720,9 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 
-{ $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if test "${lt_cv_path_NM+set}" = set; then
+if test "${lt_cv_path_NM+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$NM"; then
@@ -5399,7 +5769,7 @@ else
   : ${lt_cv_path_NM=no}
 fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
 $as_echo "$lt_cv_path_NM" >&6; }
 if test "$lt_cv_path_NM" != "no"; then
   NM="$lt_cv_path_NM"
@@ -5410,9 +5780,9 @@ else
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DUMPBIN+set}" = set; then
+if test "${ac_cv_prog_DUMPBIN+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$DUMPBIN"; then
@@ -5423,24 +5793,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 DUMPBIN=$ac_cv_prog_DUMPBIN
 if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
 $as_echo "$DUMPBIN" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -5454,9 +5824,9 @@ if test -z "$DUMPBIN"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then
+if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_DUMPBIN"; then
@@ -5467,24 +5837,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
 if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
 $as_echo "$ac_ct_DUMPBIN" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -5497,7 +5867,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -5517,33 +5887,33 @@ test -z "$NM" && NM=nm
 
 
 
-{ $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
 $as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if test "${lt_cv_nm_interface+set}" = set; then
+if test "${lt_cv_nm_interface+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:5527: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:5897: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5530: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:5900: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5533: output\"" >&5)
+  (eval echo "\"\$as_me:5903: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
   fi
   rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
 $as_echo "$lt_cv_nm_interface" >&6; }
 
 # find the maximum length of command line arguments
-{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
 $as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
     i=0
@@ -5661,10 +6031,10 @@ else
 fi
 
 if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
 $as_echo "$lt_cv_sys_max_cmd_len" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: none" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
 $as_echo "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
@@ -5678,7 +6048,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len
 : ${MV="mv -f"}
 : ${RM="rm -f"}
 
-{ $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
 # Try some XSI features
 xsi_shell=no
@@ -5688,17 +6058,17 @@ xsi_shell=no
     && eval 'test $(( 1 + 1 )) -eq 2 \
     && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
   && xsi_shell=yes
-{ $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
 $as_echo "$xsi_shell" >&6; }
 
 
-{ $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
 lt_shell_append=no
 ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
     >/dev/null 2>&1 \
   && lt_shell_append=yes
-{ $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
 $as_echo "$lt_shell_append" >&6; }
 
 
@@ -5733,14 +6103,14 @@ esac
 
 
 
-{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
 $as_echo_n "checking for $LD option to reload object files... " >&6; }
-if test "${lt_cv_ld_reload_flag+set}" = set; then
+if test "${lt_cv_ld_reload_flag+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_ld_reload_flag='-r'
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
 $as_echo "$lt_cv_ld_reload_flag" >&6; }
 reload_flag=$lt_cv_ld_reload_flag
 case $reload_flag in
@@ -5769,9 +6139,9 @@ esac
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
 set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OBJDUMP+set}" = set; then
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OBJDUMP"; then
@@ -5782,24 +6152,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 OBJDUMP=$ac_cv_prog_OBJDUMP
 if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
 $as_echo "$OBJDUMP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -5809,9 +6179,9 @@ if test -z "$ac_cv_prog_OBJDUMP"; then
   ac_ct_OBJDUMP=$OBJDUMP
   # Extract the first word of "objdump", so it can be a program name with args.
 set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OBJDUMP"; then
@@ -5822,24 +6192,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
 if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
 $as_echo "$ac_ct_OBJDUMP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -5848,7 +6218,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -5868,9 +6238,9 @@ test -z "$OBJDUMP" && OBJDUMP=objdump
 
 
 
-{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
 $as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if test "${lt_cv_deplibs_check_method+set}" = set; then
+if test "${lt_cv_deplibs_check_method+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_file_magic_cmd='$MAGIC_CMD'
@@ -6064,7 +6434,7 @@ tpf*)
 esac
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
 $as_echo "$lt_cv_deplibs_check_method" >&6; }
 file_magic_cmd=$lt_cv_file_magic_cmd
 deplibs_check_method=$lt_cv_deplibs_check_method
@@ -6084,9 +6454,9 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AR+set}" = set; then
+if test "${ac_cv_prog_AR+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$AR"; then
@@ -6097,24 +6467,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  { $as_echo "$as_me:$LINENO: result: $AR" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
 $as_echo "$AR" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6124,9 +6494,9 @@ if test -z "$ac_cv_prog_AR"; then
   ac_ct_AR=$AR
   # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_AR"; then
@@ -6137,24 +6507,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
 $as_echo "$ac_ct_AR" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6163,7 +6533,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -6189,9 +6559,9 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
 set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
+if test "${ac_cv_prog_STRIP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$STRIP"; then
@@ -6202,24 +6572,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 STRIP=$ac_cv_prog_STRIP
 if test -n "$STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
 $as_echo "$STRIP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6229,9 +6599,9 @@ if test -z "$ac_cv_prog_STRIP"; then
   ac_ct_STRIP=$STRIP
   # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_STRIP"; then
@@ -6242,24 +6612,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
 if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
 $as_echo "$ac_ct_STRIP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6268,7 +6638,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -6288,9 +6658,9 @@ test -z "$STRIP" && STRIP=:
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then
+if test "${ac_cv_prog_RANLIB+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$RANLIB"; then
@@ -6301,24 +6671,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
-  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
 $as_echo "$RANLIB" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6328,9 +6698,9 @@ if test -z "$ac_cv_prog_RANLIB"; then
   ac_ct_RANLIB=$RANLIB
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_RANLIB"; then
@@ -6341,24 +6711,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
 if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
 $as_echo "$ac_ct_RANLIB" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6367,7 +6737,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -6445,9 +6815,9 @@ compiler=$CC
 
 
 # Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -6563,18 +6933,18 @@ void nm_test_func(void){}
 int main(){nm_test_var='a';nm_test_func();return(0);}
 _LT_EOF
 
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5
   (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s "$nlist"; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
 	mv -f "$nlist"T "$nlist"
@@ -6627,11 +6997,11 @@ _LT_EOF
 	  lt_save_CFLAGS="$CFLAGS"
 	  LIBS="conftstm.$ac_objext"
 	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
 	    pipe_works=yes
 	  fi
 	  LIBS="$lt_save_LIBS"
@@ -6665,10 +7035,10 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then
   lt_cv_sys_global_symbol_to_cdecl=
 fi
 if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:$LINENO: result: failed" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
 $as_echo "failed" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: ok" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
 $as_echo "ok" >&6; }
 fi
 
@@ -6695,7 +7065,7 @@ fi
 
 
 # Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then
+if test "${enable_libtool_lock+set}" = set; then :
   enableval=$enable_libtool_lock;
 fi
 
@@ -6707,11 +7077,11 @@ case $host in
 ia64-*-hpux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     case `/usr/bin/file conftest.$ac_objext` in
       *ELF-32*)
 	HPUX_IA64_MODE="32"
@@ -6725,12 +7095,12 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 6728 "configure"' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  echo '#line 7098 "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     if test "$lt_cv_prog_gnu_ld" = yes; then
       case `/usr/bin/file conftest.$ac_objext` in
 	*32-bit*)
@@ -6764,11 +7134,11 @@ x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     case `/usr/bin/file conftest.o` in
       *32-bit*)
 	case $host in
@@ -6817,9 +7187,9 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
   SAVE_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
 $as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if test "${lt_cv_cc_needs_belf+set}" = set; then
+if test "${lt_cv_cc_needs_belf+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_ext=c
@@ -6828,11 +7198,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-     cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -6843,38 +7209,13 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   lt_cv_cc_needs_belf=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	lt_cv_cc_needs_belf=no
+  lt_cv_cc_needs_belf=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
      ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -6882,7 +7223,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
 $as_echo "$lt_cv_cc_needs_belf" >&6; }
   if test x"$lt_cv_cc_needs_belf" != x"yes"; then
     # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
@@ -6892,11 +7233,11 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
 sparc*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
@@ -6922,9 +7263,9 @@ need_locks="$enable_libtool_lock"
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
 set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$DSYMUTIL"; then
@@ -6935,24 +7276,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 DSYMUTIL=$ac_cv_prog_DSYMUTIL
 if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
 $as_echo "$DSYMUTIL" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6962,9 +7303,9 @@ if test -z "$ac_cv_prog_DSYMUTIL"; then
   ac_ct_DSYMUTIL=$DSYMUTIL
   # Extract the first word of "dsymutil", so it can be a program name with args.
 set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_DSYMUTIL"; then
@@ -6975,24 +7316,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
 if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
 $as_echo "$ac_ct_DSYMUTIL" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7001,7 +7342,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -7014,9 +7355,9 @@ fi
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
 set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_NMEDIT+set}" = set; then
+if test "${ac_cv_prog_NMEDIT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$NMEDIT"; then
@@ -7027,24 +7368,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 NMEDIT=$ac_cv_prog_NMEDIT
 if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
 $as_echo "$NMEDIT" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7054,9 +7395,9 @@ if test -z "$ac_cv_prog_NMEDIT"; then
   ac_ct_NMEDIT=$NMEDIT
   # Extract the first word of "nmedit", so it can be a program name with args.
 set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_NMEDIT"; then
@@ -7067,24 +7408,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
 if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
 $as_echo "$ac_ct_NMEDIT" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7093,7 +7434,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -7106,9 +7447,9 @@ fi
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
 set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_LIPO+set}" = set; then
+if test "${ac_cv_prog_LIPO+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$LIPO"; then
@@ -7119,24 +7460,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 LIPO=$ac_cv_prog_LIPO
 if test -n "$LIPO"; then
-  { $as_echo "$as_me:$LINENO: result: $LIPO" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
 $as_echo "$LIPO" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7146,9 +7487,9 @@ if test -z "$ac_cv_prog_LIPO"; then
   ac_ct_LIPO=$LIPO
   # Extract the first word of "lipo", so it can be a program name with args.
 set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then
+if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_LIPO"; then
@@ -7159,24 +7500,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
 if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
 $as_echo "$ac_ct_LIPO" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7185,7 +7526,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -7198,9 +7539,9 @@ fi
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
 set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL+set}" = set; then
+if test "${ac_cv_prog_OTOOL+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OTOOL"; then
@@ -7211,24 +7552,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 OTOOL=$ac_cv_prog_OTOOL
 if test -n "$OTOOL"; then
-  { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
 $as_echo "$OTOOL" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7238,9 +7579,9 @@ if test -z "$ac_cv_prog_OTOOL"; then
   ac_ct_OTOOL=$OTOOL
   # Extract the first word of "otool", so it can be a program name with args.
 set dummy otool; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then
+if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OTOOL"; then
@@ -7251,24 +7592,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
 if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
 $as_echo "$ac_ct_OTOOL" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7277,7 +7618,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -7290,9 +7631,9 @@ fi
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
 set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL64+set}" = set; then
+if test "${ac_cv_prog_OTOOL64+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OTOOL64"; then
@@ -7303,24 +7644,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 OTOOL64=$ac_cv_prog_OTOOL64
 if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
 $as_echo "$OTOOL64" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7330,9 +7671,9 @@ if test -z "$ac_cv_prog_OTOOL64"; then
   ac_ct_OTOOL64=$OTOOL64
   # Extract the first word of "otool64", so it can be a program name with args.
 set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then
+if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OTOOL64"; then
@@ -7343,24 +7684,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
 if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
 $as_echo "$ac_ct_OTOOL64" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7369,7 +7710,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -7405,9 +7746,9 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
 $as_echo_n "checking for -single_module linker flag... " >&6; }
-if test "${lt_cv_apple_cc_single_mod+set}" = set; then
+if test "${lt_cv_apple_cc_single_mod+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_apple_cc_single_mod=no
@@ -7432,22 +7773,18 @@ else
 	rm -f conftest.*
       fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
 $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-    { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_ld_exported_symbols_list=no
       save_LDFLAGS=$LDFLAGS
       echo "_main" > conftest.sym
       LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -7458,42 +7795,17 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   lt_cv_ld_exported_symbols_list=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	lt_cv_ld_exported_symbols_list=no
+  lt_cv_ld_exported_symbols_list=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 	LDFLAGS="$save_LDFLAGS"
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
     case $host_os in
     rhapsody* | darwin1.[012])
@@ -7535,14 +7847,14 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
 $as_echo_n "checking how to run the C preprocessor... " >&6; }
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then
+  if test "${ac_cv_prog_CPP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
@@ -7557,11 +7869,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -7570,78 +7878,34 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
 		     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-
 rm -f conftest.err conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
 rm -f conftest.err conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
+if $ac_preproc_ok; then :
   break
 fi
 
@@ -7653,7 +7917,7 @@ fi
 else
   ac_cv_prog_CPP=$CPP
 fi
-{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
 $as_echo "$CPP" >&6; }
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
@@ -7664,11 +7928,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -7677,87 +7937,40 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
 		     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-
 rm -f conftest.err conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
 rm -f conftest.err conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
+if $ac_preproc_ok; then :
+
 else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." "$LINENO" 5; }
 fi
 
 ac_ext=c
@@ -7767,16 +7980,12 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
+if test "${ac_cv_header_stdc+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 #include <stdarg.h>
@@ -7791,48 +8000,23 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_header_stdc=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_header_stdc=no
+  ac_cv_header_stdc=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <string.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
@@ -7842,18 +8026,14 @@ fi
 
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
+  $EGREP "free" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
@@ -7863,14 +8043,10 @@ fi
 
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   :
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ctype.h>
 #include <stdlib.h>
@@ -7897,188 +8073,55 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_run "$LINENO"; then :
 
-( exit $ac_status )
-ac_cv_header_stdc=no
+else
+  ac_cv_header_stdc=no
 fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-
 fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
 $as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
 # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
 
+fi
 
+done
 
 
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
 
+fi
 
-
-
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-for ac_header in dlfcn.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
+done
 
 
 
@@ -8091,9 +8134,9 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_FC+set}" = set; then
+if test "${ac_cv_prog_FC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$FC"; then
@@ -8104,24 +8147,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 FC=$ac_cv_prog_FC
 if test -n "$FC"; then
-  { $as_echo "$as_me:$LINENO: result: $FC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5
 $as_echo "$FC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -8135,9 +8178,9 @@ if test -z "$FC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_FC+set}" = set; then
+if test "${ac_cv_prog_ac_ct_FC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_FC"; then
@@ -8148,24 +8191,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_FC="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_FC=$ac_cv_prog_ac_ct_FC
 if test -n "$ac_ct_FC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_FC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5
 $as_echo "$ac_ct_FC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -8178,7 +8221,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -8188,54 +8231,41 @@ fi
 
 
 # Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for Fortran compiler version" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 rm -f a.out
 
 # If we don't use `.F' as extension, the preprocessor is not run on the
 # input file.  (Note that this only needs to work for GNU compilers.)
 ac_save_ext=$ac_ext
 ac_ext=F
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5
 $as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; }
-if test "${ac_cv_fc_compiler_gnu+set}" = set; then
+if test "${ac_cv_fc_compiler_gnu+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 #ifndef __GNUC__
        choke me
@@ -8243,86 +8273,44 @@ else
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_fc_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_fc_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5
 $as_echo "$ac_cv_fc_compiler_gnu" >&6; }
 ac_ext=$ac_save_ext
-ac_test_FFLAGS=${FCFLAGS+set}
-ac_save_FFLAGS=$FCFLAGS
+ac_test_FCFLAGS=${FCFLAGS+set}
+ac_save_FCFLAGS=$FCFLAGS
 FCFLAGS=
-{ $as_echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5
 $as_echo_n "checking whether $FC accepts -g... " >&6; }
-if test "${ac_cv_prog_fc_g+set}" = set; then
+if test "${ac_cv_prog_fc_g+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   FCFLAGS=-g
-cat >conftest.$ac_ext <<_ACEOF
+cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_fc_try_compile "$LINENO"; then :
   ac_cv_prog_fc_g=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_prog_fc_g=no
+  ac_cv_prog_fc_g=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5
 $as_echo "$ac_cv_prog_fc_g" >&6; }
-if test "$ac_test_FFLAGS" = set; then
-  FCFLAGS=$ac_save_FFLAGS
+if test "$ac_test_FCFLAGS" = set; then
+  FCFLAGS=$ac_save_FCFLAGS
 elif test $ac_cv_prog_fc_g = yes; then
   if test "x$ac_cv_fc_compiler_gnu" = xyes; then
     FCFLAGS="-g -O2"
@@ -8361,7 +8349,7 @@ fi
 
 
             # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then
+if test "${enable_shared+set}" = set; then :
   enableval=$enable_shared; p=${PACKAGE-default}
     case $enableval in
     yes) enable_shared=yes ;;
@@ -8392,7 +8380,7 @@ fi
 
 
   # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then
+if test "${enable_static+set}" = set; then :
   enableval=$enable_static; p=${PACKAGE-default}
     case $enableval in
     yes) enable_static=yes ;;
@@ -8424,7 +8412,7 @@ fi
 
 
 # Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then
+if test "${with_pic+set}" = set; then :
   withval=$with_pic; pic_mode="$withval"
 else
   pic_mode=default
@@ -8440,7 +8428,7 @@ test -z "$pic_mode" && pic_mode=default
 
 
   # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then
+if test "${enable_fast_install+set}" = set; then :
   enableval=$enable_fast_install; p=${PACKAGE-default}
     case $enableval in
     yes) enable_fast_install=yes ;;
@@ -8521,9 +8509,9 @@ if test -n "${ZSH_VERSION+set}" ; then
    setopt NO_GLOB_SUBST
 fi
 
-{ $as_echo "$as_me:$LINENO: checking for objdir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
 $as_echo_n "checking for objdir... " >&6; }
-if test "${lt_cv_objdir+set}" = set; then
+if test "${lt_cv_objdir+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   rm -f .libs 2>/dev/null
@@ -8536,7 +8524,7 @@ else
 fi
 rmdir .libs 2>/dev/null
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
 $as_echo "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
@@ -8629,9 +8617,9 @@ test -z "$MAGIC_CMD" && MAGIC_CMD=file
 case $deplibs_check_method in
 file_magic*)
   if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $MAGIC_CMD in
@@ -8682,10 +8670,10 @@ fi
 
 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
 $as_echo "$MAGIC_CMD" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -8695,9 +8683,9 @@ fi
 
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:$LINENO: checking for file" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
 $as_echo_n "checking for file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $MAGIC_CMD in
@@ -8748,10 +8736,10 @@ fi
 
 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
 $as_echo "$MAGIC_CMD" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -8828,9 +8816,9 @@ lt_prog_compiler_no_builtin_flag=
 if test "$GCC" = yes; then
   lt_prog_compiler_no_builtin_flag=' -fno-builtin'
 
-  { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_rtti_exceptions=no
@@ -8846,11 +8834,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8849: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8837: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8853: \$? = $ac_status" >&5
+   echo "$as_me:8841: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8863,7 +8851,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
 
 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
@@ -8883,7 +8871,7 @@ fi
 lt_prog_compiler_pic=
 lt_prog_compiler_static=
 
-{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
 $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 
   if test "$GCC" = yes; then
@@ -9155,7 +9143,7 @@ case $host_os in
     lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
     ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
 $as_echo "$lt_prog_compiler_pic" >&6; }
 
 
@@ -9167,9 +9155,9 @@ $as_echo "$lt_prog_compiler_pic" >&6; }
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works+set}" = set; then
+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_pic_works=no
@@ -9185,11 +9173,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9188: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9176: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:9192: \$? = $ac_status" >&5
+   echo "$as_me:9180: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -9202,7 +9190,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
 
 if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
@@ -9226,9 +9214,9 @@ fi
 # Check to make sure the static flag actually works.
 #
 wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if test "${lt_cv_prog_compiler_static_works+set}" = set; then
+if test "${lt_cv_prog_compiler_static_works+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works=no
@@ -9254,7 +9242,7 @@ else
    LDFLAGS="$save_LDFLAGS"
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
 $as_echo "$lt_cv_prog_compiler_static_works" >&6; }
 
 if test x"$lt_cv_prog_compiler_static_works" = xyes; then
@@ -9269,9 +9257,9 @@ fi
 
 
 
-  { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o=no
@@ -9290,11 +9278,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9293: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9281: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:9297: \$? = $ac_status" >&5
+   echo "$as_me:9285: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -9316,7 +9304,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
@@ -9324,9 +9312,9 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
-  { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o=no
@@ -9345,11 +9333,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9348: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9336: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:9352: \$? = $ac_status" >&5
+   echo "$as_me:9340: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -9371,7 +9359,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
@@ -9380,7 +9368,7 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 hard_links="nottested"
 if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
   # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
 $as_echo_n "checking if we can lock with hard links... " >&6; }
   hard_links=yes
   $RM conftest*
@@ -9388,10 +9376,10 @@ $as_echo_n "checking if we can lock with hard links... " >&6; }
   touch conftest.a
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
 $as_echo "$hard_links" >&6; }
   if test "$hard_links" = no; then
-    { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
     need_locks=warn
   fi
@@ -9404,7 +9392,7 @@ fi
 
 
 
-  { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
   runpath_var=
@@ -9846,11 +9834,7 @@ _LT_EOF
 	allow_undefined_flag='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -9861,27 +9845,7 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -9895,16 +9859,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat
 if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
         hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
@@ -9917,11 +9874,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	else
 	 # Determine the default libpath from the value encoded in an
 	 # empty executable.
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -9932,27 +9885,7 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -9966,16 +9899,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat
 if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
 	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
@@ -10187,42 +10113,16 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	# implicitly export all symbols.
         save_LDFLAGS="$LDFLAGS"
         LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        cat >conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 int foo(void) {}
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
         LDFLAGS="$save_LDFLAGS"
       else
 	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
@@ -10478,7 +10378,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     fi
   fi
 
-{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
 $as_echo "$ld_shlibs" >&6; }
 test "$ld_shlibs" = no && can_build_shared=no
 
@@ -10515,16 +10415,16 @@ x|xyes)
       # Test whether the compiler implicitly links with -lc since on some
       # systems, -lgcc has to come before -lc. If gcc already passes -lc
       # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
       $RM conftest*
       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
         soname=conftest
         lib=conftest
         libobjs=conftest.$ac_objext
@@ -10538,11 +10438,11 @@ $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
         libname=conftest
         lt_save_allow_undefined_flag=$allow_undefined_flag
         allow_undefined_flag=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
+        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
   (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
         then
 	  archive_cmds_need_lc=no
         else
@@ -10553,7 +10453,7 @@ $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
         cat conftest.err 1>&5
       fi
       $RM conftest*
-      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5
 $as_echo "$archive_cmds_need_lc" >&6; }
       ;;
     esac
@@ -10717,7 +10617,7 @@ esac
 
 
 
-  { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
 if test "$GCC" = yes; then
@@ -11139,11 +11039,7 @@ linux* | k*bsd*-gnu)
   save_libdir=$libdir
   eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -11154,41 +11050,13 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
   shlibpath_overrides_runpath=yes
 fi
-
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
   LDFLAGS=$save_LDFLAGS
   libdir=$save_libdir
 
@@ -11400,7 +11268,7 @@ uts4*)
   dynamic_linker=no
   ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
 $as_echo "$dynamic_linker" >&6; }
 test "$dynamic_linker" = no && can_build_shared=no
 
@@ -11502,7 +11370,7 @@ fi
 
 
 
-  { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
 $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
 hardcode_action=
 if test -n "$hardcode_libdir_flag_spec" ||
@@ -11527,7 +11395,7 @@ else
   # directories.
   hardcode_action=unsupported
 fi
-{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
 $as_echo "$hardcode_action" >&6; }
 
 if test "$hardcode_action" = relink ||
@@ -11572,18 +11440,14 @@ else
 
   darwin*)
   # if libdl is installed we need to link against it
-    { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
 $as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -11601,43 +11465,18 @@ return dlopen ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dl_dlopen=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_dl_dlopen=no
+  ac_cv_lib_dl_dlopen=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
 $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
 
@@ -11650,33 +11489,19 @@ fi
     ;;
 
   *)
-    { $as_echo "$as_me:$LINENO: checking for shl_load" >&5
-$as_echo_n "checking for shl_load... " >&6; }
-if test "${ac_cv_func_shl_load+set}" = set; then
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = x""yes; then :
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define shl_load innocuous_shl_load
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char shl_load (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef shl_load
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
@@ -11685,13 +11510,6 @@ cat >>conftest.$ac_ext <<_ACEOF
 extern "C"
 #endif
 char shl_load ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_shl_load || defined __stub___shl_load
-choke me
-#endif
-
 int
 main ()
 {
@@ -11700,56 +11518,32 @@ return shl_load ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func_shl_load=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_func_shl_load=no
+  ac_cv_lib_dld_shl_load=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-$as_echo "$ac_cv_func_shl_load" >&6; }
-if test "x$ac_cv_func_shl_load" = x""yes; then
-  lt_cv_dlopen="shl_load"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = x""yes; then :
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
 else
-  { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = x""yes; then :
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -11758,222 +11552,37 @@ cat >>conftest.$ac_ext <<_ACEOF
 #ifdef __cplusplus
 extern "C"
 #endif
-char shl_load ();
+char dlopen ();
 int
 main ()
 {
-return shl_load ();
+return dlopen ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_lib_dld_shl_load=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_dld_shl_load=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = x""yes; then
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  { $as_echo "$as_me:$LINENO: checking for dlopen" >&5
-$as_echo_n "checking for dlopen... " >&6; }
-if test "${ac_cv_func_dlopen+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define dlopen innocuous_dlopen
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char dlopen (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef dlopen
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_dlopen || defined __stub___dlopen
-choke me
-#endif
-
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func_dlopen=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_func_dlopen=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-$as_echo "$ac_cv_func_dlopen" >&6; }
-if test "x$ac_cv_func_dlopen" = x""yes; then
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dl_dlopen=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_dl_dlopen=no
+  ac_cv_lib_dl_dlopen=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
 $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
-  { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
 $as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsvld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -11991,57 +11600,28 @@ return dlopen ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_svld_dlopen=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_svld_dlopen=no
+  ac_cv_lib_svld_dlopen=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
 $as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = x""yes; then
+if test "x$ac_cv_lib_svld_dlopen" = x""yes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
 else
-  { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
 $as_echo_n "checking for dld_link in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -12059,43 +11639,18 @@ return dld_link ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dld_dld_link=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_dld_dld_link=no
+  ac_cv_lib_dld_dld_link=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
 $as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = x""yes; then
+if test "x$ac_cv_lib_dld_dld_link" = x""yes; then :
   lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
 fi
 
@@ -12134,9 +11689,9 @@ fi
     save_LIBS="$LIBS"
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
-    { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
 $as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self+set}" = set; then
+if test "${lt_cv_dlopen_self+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   	  if test "$cross_compiling" = yes; then :
@@ -12145,7 +11700,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12148 "configure"
+#line 11703 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12204,11 +11759,11 @@ int main ()
   return status;
 }
 _LT_EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -12225,14 +11780,14 @@ rm -fr conftest*
 
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
 $as_echo "$lt_cv_dlopen_self" >&6; }
 
     if test "x$lt_cv_dlopen_self" = xyes; then
       wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self_static+set}" = set; then
+if test "${lt_cv_dlopen_self_static+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   	  if test "$cross_compiling" = yes; then :
@@ -12241,7 +11796,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12244 "configure"
+#line 11799 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12300,11 +11855,11 @@ int main ()
   return status;
 }
 _LT_EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -12321,7 +11876,7 @@ rm -fr conftest*
 
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
 $as_echo "$lt_cv_dlopen_self_static" >&6; }
     fi
 
@@ -12360,12 +11915,12 @@ fi
 
 striplib=
 old_striplib=
-{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
 $as_echo_n "checking whether stripping libraries is possible... " >&6; }
 if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
   test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
   test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
 # FIXME - insert some real tests, host_os isn't really good enough
@@ -12374,15 +11929,15 @@ else
     if test -n "$STRIP" ; then
       striplib="$STRIP -x"
       old_striplib="$STRIP -S"
-      { $as_echo "$as_me:$LINENO: result: yes" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
     else
-      { $as_echo "$as_me:$LINENO: result: no" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
     fi
     ;;
   *)
-    { $as_echo "$as_me:$LINENO: result: no" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
     ;;
   esac
@@ -12400,12 +11955,12 @@ fi
 
 
   # Report which library types will actually be built
-  { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
 $as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
 $as_echo "$can_build_shared" >&6; }
 
-  { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
 $as_echo_n "checking whether to build shared libraries... " >&6; }
   test "$can_build_shared" = "no" && enable_shared=no
 
@@ -12426,14 +11981,14 @@ $as_echo_n "checking whether to build shared libraries... " >&6; }
     fi
     ;;
   esac
-  { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
 $as_echo "$enable_shared" >&6; }
 
-  { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
 $as_echo_n "checking whether to build static libraries... " >&6; }
   # Make sure either enable_shared or enable_static is yes.
   test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:$LINENO: result: $enable_static" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
 
@@ -12555,12 +12110,12 @@ cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
 
 
   if test -n "$compiler"; then
-    { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
 $as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
 $as_echo "$can_build_shared" >&6; }
 
-    { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
 $as_echo_n "checking whether to build shared libraries... " >&6; }
     test "$can_build_shared" = "no" && enable_shared=no
 
@@ -12580,14 +12135,14 @@ $as_echo_n "checking whether to build shared libraries... " >&6; }
 	fi
         ;;
     esac
-    { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
 $as_echo "$enable_shared" >&6; }
 
-    { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
 $as_echo_n "checking whether to build static libraries... " >&6; }
     # Make sure either enable_shared or enable_static is yes.
     test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:$LINENO: result: $enable_static" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
     GCC_FC="$ac_cv_fc_compiler_gnu"
@@ -12613,11 +12168,11 @@ cat > conftest.$ac_ext <<_LT_EOF
       end
 _LT_EOF
 
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   # Parse the compiler output and extract the necessary
   # objects, libraries and library flags.
 
@@ -12744,7 +12299,7 @@ fi
 lt_prog_compiler_pic_FC=
 lt_prog_compiler_static_FC=
 
-{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
 $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 
   if test "$GCC" = yes; then
@@ -13016,7 +12571,7 @@ case $host_os in
     lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC"
     ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_FC" >&5
 $as_echo "$lt_prog_compiler_pic_FC" >&6; }
 
 
@@ -13025,9 +12580,9 @@ $as_echo "$lt_prog_compiler_pic_FC" >&6; }
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$lt_prog_compiler_pic_FC"; then
-  { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5
 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works_FC+set}" = set; then
+if test "${lt_cv_prog_compiler_pic_works_FC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_pic_works_FC=no
@@ -13043,11 +12598,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13046: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12601: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13050: \$? = $ac_status" >&5
+   echo "$as_me:12605: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -13060,7 +12615,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_FC" >&5
 $as_echo "$lt_cv_prog_compiler_pic_works_FC" >&6; }
 
 if test x"$lt_cv_prog_compiler_pic_works_FC" = xyes; then
@@ -13081,9 +12636,9 @@ fi
 # Check to make sure the static flag actually works.
 #
 wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\"
-{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if test "${lt_cv_prog_compiler_static_works_FC+set}" = set; then
+if test "${lt_cv_prog_compiler_static_works_FC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works_FC=no
@@ -13109,7 +12664,7 @@ else
    LDFLAGS="$save_LDFLAGS"
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_FC" >&5
 $as_echo "$lt_cv_prog_compiler_static_works_FC" >&6; }
 
 if test x"$lt_cv_prog_compiler_static_works_FC" = xyes; then
@@ -13121,9 +12676,9 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o_FC+set}" = set; then
+if test "${lt_cv_prog_compiler_c_o_FC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o_FC=no
@@ -13142,11 +12697,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13145: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12700: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13149: \$? = $ac_status" >&5
+   echo "$as_me:12704: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -13168,14 +12723,14 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
 $as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
 
 
 
-    { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o_FC+set}" = set; then
+if test "${lt_cv_prog_compiler_c_o_FC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o_FC=no
@@ -13194,11 +12749,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13197: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12752: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13201: \$? = $ac_status" >&5
+   echo "$as_me:12756: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -13220,7 +12775,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
 $as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
 
 
@@ -13229,7 +12784,7 @@ $as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
 hard_links="nottested"
 if test "$lt_cv_prog_compiler_c_o_FC" = no && test "$need_locks" != no; then
   # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
 $as_echo_n "checking if we can lock with hard links... " >&6; }
   hard_links=yes
   $RM conftest*
@@ -13237,10 +12792,10 @@ $as_echo_n "checking if we can lock with hard links... " >&6; }
   touch conftest.a
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
 $as_echo "$hard_links" >&6; }
   if test "$hard_links" = no; then
-    { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
     need_locks=warn
   fi
@@ -13250,7 +12805,7 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
   runpath_var=
@@ -13692,32 +13247,12 @@ _LT_EOF
 	allow_undefined_flag_FC='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        cat >conftest.$ac_ext <<_ACEOF
+        cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_fc_try_link "$LINENO"; then :
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -13731,16 +13266,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat
 if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
         hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
@@ -13753,32 +13281,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	else
 	 # Determine the default libpath from the value encoded in an
 	 # empty executable.
-	 cat >conftest.$ac_ext <<_ACEOF
+	 cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_fc_try_link "$LINENO"; then :
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -13792,16 +13300,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat
 if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
 	 hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
@@ -14013,42 +13514,15 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	# implicitly export all symbols.
         save_LDFLAGS="$LDFLAGS"
         LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        cat >conftest.$ac_ext <<_ACEOF
+        cat > conftest.$ac_ext <<_ACEOF
 int foo(void) {}
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_fc_try_link "$LINENO"; then :
   archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
         LDFLAGS="$save_LDFLAGS"
       else
 	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
@@ -14304,7 +13778,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     fi
   fi
 
-{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_FC" >&5
 $as_echo "$ld_shlibs_FC" >&6; }
 test "$ld_shlibs_FC" = no && can_build_shared=no
 
@@ -14332,16 +13806,16 @@ x|xyes)
       # Test whether the compiler implicitly links with -lc since on some
       # systems, -lgcc has to come before -lc. If gcc already passes -lc
       # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
       $RM conftest*
       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
         soname=conftest
         lib=conftest
         libobjs=conftest.$ac_objext
@@ -14355,11 +13829,11 @@ $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
         libname=conftest
         lt_save_allow_undefined_flag=$allow_undefined_flag_FC
         allow_undefined_flag_FC=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
+        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
   (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
         then
 	  archive_cmds_need_lc_FC=no
         else
@@ -14370,7 +13844,7 @@ $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
         cat conftest.err 1>&5
       fi
       $RM conftest*
-      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_FC" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_FC" >&5
 $as_echo "$archive_cmds_need_lc_FC" >&6; }
       ;;
     esac
@@ -14441,7 +13915,7 @@ esac
 
 
 
-    { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
 library_names_spec=
@@ -14811,46 +14285,18 @@ linux* | k*bsd*-gnu)
   save_libdir=$libdir
   eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \
        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\""
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
+if ac_fn_fc_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
   shlibpath_overrides_runpath=yes
 fi
-
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
   LDFLAGS=$save_LDFLAGS
   libdir=$save_libdir
 
@@ -15062,3326 +14508,526 @@ uts4*)
   dynamic_linker=no
   ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
 $as_echo "$dynamic_linker" >&6; }
 test "$dynamic_linker" = no && can_build_shared=no
 
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_FC=
-if test -n "$hardcode_libdir_flag_spec_FC" ||
-   test -n "$runpath_var_FC" ||
-   test "X$hardcode_automatic_FC" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_FC" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" != no &&
-     test "$hardcode_minus_L_FC" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_FC=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_FC=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_FC=unsupported
-fi
-{ $as_echo "$as_me:$LINENO: result: $hardcode_action_FC" >&5
-$as_echo "$hardcode_action_FC" >&6; }
-
-if test "$hardcode_action_FC" = relink ||
-   test "$inherit_rpath_FC" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-fi # test "$_lt_disable_FC" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-#------------------------------------------------------------------------------
-# Checks for typedefs, structures, and compiler characteristics.
-#------------------------------------------------------------------------------
-
-{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
-  typedef int charset[2];
-  const charset cs;
-  /* SunOS 4.1.1 cc rejects this.  */
-  char const *const *pcpcc;
-  char **ppc;
-  /* NEC SVR4.0.2 mips cc rejects this.  */
-  struct point {int x, y;};
-  static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
-     It does not let you subtract one const X* pointer from another in
-     an arm of an if-expression whose if-part is not a constant
-     expression */
-  const char *g = "string";
-  pcpcc = &g + (g ? g-g : 0);
-  /* HPUX 7.0 cc rejects these. */
-  ++pcpcc;
-  ppc = (char**) pcpcc;
-  pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
-    char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-    *t++ = 0;
-    if (s) return 0;
-  }
-  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-    int x[] = {25, 17};
-    const int *foo = &x[0];
-    ++foo;
-  }
-  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-    typedef const int *iptr;
-    iptr p = 0;
-    ++p;
-  }
-  { /* AIX XL C 1.02.0.0 rejects this saying
-       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
-  }
-  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-    const int foo = 10;
-    if (!foo) return 0;
-  }
-  return !cs[0] && !zero.x;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_c_const=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_c_const=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-cat >>confdefs.h <<\_ACEOF
-#define const /**/
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if test "${ac_cv_c_inline+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifndef __cplusplus
-typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_c_inline=$ac_kw
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  test "$ac_cv_c_inline" != no && break
-done
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
-
-
-case $ac_cv_c_inline in
-  inline | yes) ;;
-  *)
-    case $ac_cv_c_inline in
-      no) ac_val=;;
-      *) ac_val=$ac_cv_c_inline;;
-    esac
-    cat >>confdefs.h <<_ACEOF
-#ifndef __cplusplus
-#define inline $ac_val
-#endif
-_ACEOF
-    ;;
-esac
-
-{ $as_echo "$as_me:$LINENO: checking for size_t" >&5
-$as_echo_n "checking for size_t... " >&6; }
-if test "${ac_cv_type_size_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_size_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (size_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((size_t)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_size_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-$as_echo "$ac_cv_type_size_t" >&6; }
-if test "x$ac_cv_type_size_t" = x""yes; then
-  :
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for pid_t" >&5
-$as_echo_n "checking for pid_t... " >&6; }
-if test "${ac_cv_type_pid_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_pid_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (pid_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((pid_t)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_pid_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
-$as_echo "$ac_cv_type_pid_t" >&6; }
-if test "x$ac_cv_type_pid_t" = x""yes; then
-  :
-else
-
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
-_ACEOF
-
-fi
-
-
-{ $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if test "${ac_cv_header_time+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_time=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_header_time=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define TIME_WITH_SYS_TIME 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5
-$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
-if test "${ac_cv_header_stdbool_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <stdbool.h>
-#ifndef bool
- "error: bool is not defined"
-#endif
-#ifndef false
- "error: false is not defined"
-#endif
-#if false
- "error: false is not 0"
-#endif
-#ifndef true
- "error: true is not defined"
-#endif
-#if true != 1
- "error: true is not 1"
-#endif
-#ifndef __bool_true_false_are_defined
- "error: __bool_true_false_are_defined is not defined"
-#endif
-
-	struct s { _Bool s: 1; _Bool t; } s;
-
-	char a[true == 1 ? 1 : -1];
-	char b[false == 0 ? 1 : -1];
-	char c[__bool_true_false_are_defined == 1 ? 1 : -1];
-	char d[(bool) 0.5 == true ? 1 : -1];
-	bool e = &s;
-	char f[(_Bool) 0.0 == false ? 1 : -1];
-	char g[true];
-	char h[sizeof (_Bool)];
-	char i[sizeof s.t];
-	enum { j = false, k = true, l = false * true, m = true * 256 };
-	/* The following fails for
-	   HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
-	_Bool n[m];
-	char o[sizeof n == m * sizeof n[0] ? 1 : -1];
-	char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
-#	if defined __xlc__ || defined __GNUC__
-	 /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
-	    reported by James Lemley on 2005-10-05; see
-	    http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
-	    This test is not quite right, since xlc is allowed to
-	    reject this program, as the initializer for xlcbug is
-	    not one of the forms that C requires support for.
-	    However, doing the test right would require a runtime
-	    test, and that would make cross-compilation harder.
-	    Let us hope that IBM fixes the xlc bug, and also adds
-	    support for this kind of constant expression.  In the
-	    meantime, this test will reject xlc, which is OK, since
-	    our stdbool.h substitute should suffice.  We also test
-	    this with GCC, where it should work, to detect more
-	    quickly whether someone messes up the test in the
-	    future.  */
-	 char digs[] = "0123456789";
-	 int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
-#	endif
-	/* Catch a bug in an HP-UX C compiler.  See
-	   http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
-	   http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
-	 */
-	_Bool q = true;
-	_Bool *pq = &q;
-
-int
-main ()
-{
-
-	*pq |= q;
-	*pq |= ! q;
-	/* Refer to every declared value, to avoid compiler optimizations.  */
-	return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
-		+ !m + !n + !o + !p + !q + !pq);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_stdbool_h=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_header_stdbool_h=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5
-$as_echo "$ac_cv_header_stdbool_h" >&6; }
-{ $as_echo "$as_me:$LINENO: checking for _Bool" >&5
-$as_echo_n "checking for _Bool... " >&6; }
-if test "${ac_cv_type__Bool+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type__Bool=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (_Bool))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((_Bool)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type__Bool=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5
-$as_echo "$ac_cv_type__Bool" >&6; }
-if test "x$ac_cv_type__Bool" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE__BOOL 1
-_ACEOF
-
-
-fi
-
-if test $ac_cv_header_stdbool_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_STDBOOL_H 1
-_ACEOF
-
-fi
-
-
-{ $as_echo "$as_me:$LINENO: checking for long long" >&5
-$as_echo_n "checking for long long... " >&6; }
-if test "${ac_cv_type_long_long+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_long_long=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (long long))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((long long)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_long_long=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
-$as_echo "$ac_cv_type_long_long" >&6; }
-if test "x$ac_cv_type_long_long" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_LONG_LONG 1
-_ACEOF
-
-
-fi
-{ $as_echo "$as_me:$LINENO: checking for unsigned long long" >&5
-$as_echo_n "checking for unsigned long long... " >&6; }
-if test "${ac_cv_type_unsigned_long_long+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_unsigned_long_long=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (unsigned long long))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((unsigned long long)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_unsigned_long_long=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5
-$as_echo "$ac_cv_type_unsigned_long_long" >&6; }
-if test "x$ac_cv_type_unsigned_long_long" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UNSIGNED_LONG_LONG 1
-_ACEOF
-
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for int32_t" >&5
-$as_echo_n "checking for int32_t... " >&6; }
-if test "${ac_cv_type_int32_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_int32_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (int32_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((int32_t)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_int32_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5
-$as_echo "$ac_cv_type_int32_t" >&6; }
-if test "x$ac_cv_type_int32_t" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INT32_T 1
-_ACEOF
-
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for int64_t" >&5
-$as_echo_n "checking for int64_t... " >&6; }
-if test "${ac_cv_type_int64_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_int64_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (int64_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((int64_t)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_int64_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_int64_t" >&5
-$as_echo "$ac_cv_type_int64_t" >&6; }
-if test "x$ac_cv_type_int64_t" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INT64_T 1
-_ACEOF
-
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for uint32_t" >&5
-$as_echo_n "checking for uint32_t... " >&6; }
-if test "${ac_cv_type_uint32_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_uint32_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (uint32_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((uint32_t)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_uint32_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5
-$as_echo "$ac_cv_type_uint32_t" >&6; }
-if test "x$ac_cv_type_uint32_t" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UINT32_T 1
-_ACEOF
-
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for uint64_t" >&5
-$as_echo_n "checking for uint64_t... " >&6; }
-if test "${ac_cv_type_uint64_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_uint64_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (uint64_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((uint64_t)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_uint64_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5
-$as_echo "$ac_cv_type_uint64_t" >&6; }
-if test "x$ac_cv_type_uint64_t" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UINT64_T 1
-_ACEOF
-
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
-$as_echo_n "checking for ptrdiff_t... " >&6; }
-if test "${ac_cv_type_ptrdiff_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_ptrdiff_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (ptrdiff_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((ptrdiff_t)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_ptrdiff_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
-$as_echo "$ac_cv_type_ptrdiff_t" >&6; }
-if test "x$ac_cv_type_ptrdiff_t" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_PTRDIFF_T 1
-_ACEOF
-
-
-fi
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:$LINENO: checking size of void *" >&5
-$as_echo_n "checking size of void *... " >&6; }
-if test "${ac_cv_sizeof_void_p+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) < 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_hi=`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo= ac_hi=
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_void_p=$ac_lo;;
-'') if test "$ac_cv_type_void_p" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (void *)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_void_p=0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-static long int longval () { return (long int) (sizeof (void *)); }
-static unsigned long int ulongval () { return (long int) (sizeof (void *)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (void *))) < 0)
-    {
-      long int i = longval ();
-      if (i != ((long int) (sizeof (void *))))
-	return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ((long int) (sizeof (void *))))
-	return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_void_p=`cat conftest.val`
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-if test "$ac_cv_type_void_p" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (void *)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_void_p=0
-   fi
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
 fi
-rm -f conftest.val
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5
-$as_echo "$ac_cv_sizeof_void_p" >&6; }
 
 
 
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
-_ACEOF
 
 
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:$LINENO: checking size of short" >&5
-$as_echo_n "checking size of short... " >&6; }
-if test "${ac_cv_sizeof_short+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (short))) >= 0)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (short))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_lo=`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (short))) < 0)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (short))) >= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_hi=`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid`
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_lo= ac_hi=
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (short))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_short=$ac_lo;;
-'') if test "$ac_cv_type_short" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (short)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (short)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_short=0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-static long int longval () { return (long int) (sizeof (short)); }
-static unsigned long int ulongval () { return (long int) (sizeof (short)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
 
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (short))) < 0)
-    {
-      long int i = longval ();
-      if (i != ((long int) (sizeof (short))))
-	return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ((long int) (sizeof (short))))
-	return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_short=`cat conftest.val`
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-( exit $ac_status )
-if test "$ac_cv_type_short" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (short)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (short)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_short=0
-   fi
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
-$as_echo "$ac_cv_sizeof_short" >&6; }
 
 
 
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
-_ACEOF
 
 
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:$LINENO: checking size of int" >&5
-$as_echo_n "checking size of int... " >&6; }
-if test "${ac_cv_sizeof_int+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= 0)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_lo=`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (int))) < 0)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_hi=`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid`
-fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_FC=
+if test -n "$hardcode_libdir_flag_spec_FC" ||
+   test -n "$runpath_var_FC" ||
+   test "X$hardcode_automatic_FC" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct_FC" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" != no &&
+     test "$hardcode_minus_L_FC" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_FC=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_FC=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_FC=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_FC" >&5
+$as_echo "$hardcode_action_FC" >&6; }
+
+if test "$hardcode_action_FC" = relink ||
+   test "$inherit_rpath_FC" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC="$lt_save_CC"
+fi # test "$_lt_disable_FC" != yes
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_lo= ac_hi=
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_int=$ac_lo;;
-'') if test "$ac_cv_type_int" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_int=0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-static long int longval () { return (long int) (sizeof (int)); }
-static unsigned long int ulongval () { return (long int) (sizeof (int)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
+        ac_config_commands="$ac_config_commands libtool"
 
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (int))) < 0)
-    {
-      long int i = longval ();
-      if (i != ((long int) (sizeof (int))))
-	return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ((long int) (sizeof (int))))
-	return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_int=`cat conftest.val`
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-( exit $ac_status )
-if test "$ac_cv_type_int" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_int=0
-   fi
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
-$as_echo "$ac_cv_sizeof_int" >&6; }
 
+# Only expand once:
 
 
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
 
+#------------------------------------------------------------------------------
+# Checks for typedefs, structures, and compiler characteristics.
+#------------------------------------------------------------------------------
 
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:$LINENO: checking size of long" >&5
-$as_echo_n "checking size of long... " >&6; }
-if test "${ac_cv_sizeof_long+set}" = set; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if test "${ac_cv_c_const+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
+
 int
 main ()
 {
-static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= 0)];
-test_array [0] = 0
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this.  */
+  typedef int charset[2];
+  const charset cs;
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *pcpcc;
+  char **ppc;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  pcpcc = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++pcpcc;
+  ppc = (char**) pcpcc;
+  pcpcc = (char const *const *) ppc;
+  { /* SCO 3.2v4 cc rejects this.  */
+    char *t;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)];
-test_array [0] = 0
+    *t++ = 0;
+    if (s) return 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; };
+    struct s *b; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+    if (!foo) return 0;
+  }
+  return !cs[0] && !zero.x;
+#endif
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid; break
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_const=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+$as_echo "#define const /**/" >>confdefs.h
 
-	ac_lo=`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid + 1`
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if test "${ac_cv_c_inline+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (long))) < 0)];
-test_array [0] = 0
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= $ac_mid)];
-test_array [0] = 0
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
 
-  ;
-  return 0;
-}
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
+    ;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=$ac_mid; break
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = x""yes; then :
+
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_hi=`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid`
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
+ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
+if test "x$ac_cv_type_pid_t" = x""yes; then :
+
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_lo= ac_hi=
-fi
+cat >>confdefs.h <<_ACEOF
+#define pid_t int
+_ACEOF
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
+$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
+if test "${ac_cv_header_time+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+
 int
 main ()
 {
-static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)];
-test_array [0] = 0
-
+if ((struct tm *) 0)
+return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_time=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_header_time=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
+$as_echo "$ac_cv_header_time" >&6; }
+if test $ac_cv_header_time = yes; then
+
+$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
 
-	ac_lo=`expr '(' $ac_mid ')' + 1`
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_long=$ac_lo;;
-'') if test "$ac_cv_type_long" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_long=0
-   fi ;;
-esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if test "${ac_cv_header_stdbool_h+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
-static long int longval () { return (long int) (sizeof (long)); }
-static unsigned long int ulongval () { return (long int) (sizeof (long)); }
-#include <stdio.h>
-#include <stdlib.h>
+
+#include <stdbool.h>
+#ifndef bool
+ "error: bool is not defined"
+#endif
+#ifndef false
+ "error: false is not defined"
+#endif
+#if false
+ "error: false is not 0"
+#endif
+#ifndef true
+ "error: true is not defined"
+#endif
+#if true != 1
+ "error: true is not 1"
+#endif
+#ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+#endif
+
+	struct s { _Bool s: 1; _Bool t; } s;
+
+	char a[true == 1 ? 1 : -1];
+	char b[false == 0 ? 1 : -1];
+	char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+	char d[(bool) 0.5 == true ? 1 : -1];
+	bool e = &s;
+	char f[(_Bool) 0.0 == false ? 1 : -1];
+	char g[true];
+	char h[sizeof (_Bool)];
+	char i[sizeof s.t];
+	enum { j = false, k = true, l = false * true, m = true * 256 };
+	/* The following fails for
+	   HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+	_Bool n[m];
+	char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+	char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+#	if defined __xlc__ || defined __GNUC__
+	 /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+	    reported by James Lemley on 2005-10-05; see
+	    http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+	    This test is not quite right, since xlc is allowed to
+	    reject this program, as the initializer for xlcbug is
+	    not one of the forms that C requires support for.
+	    However, doing the test right would require a runtime
+	    test, and that would make cross-compilation harder.
+	    Let us hope that IBM fixes the xlc bug, and also adds
+	    support for this kind of constant expression.  In the
+	    meantime, this test will reject xlc, which is OK, since
+	    our stdbool.h substitute should suffice.  We also test
+	    this with GCC, where it should work, to detect more
+	    quickly whether someone messes up the test in the
+	    future.  */
+	 char digs[] = "0123456789";
+	 int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+#	endif
+	/* Catch a bug in an HP-UX C compiler.  See
+	   http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+	   http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+	 */
+	_Bool q = true;
+	_Bool *pq = &q;
+
 int
 main ()
 {
 
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (long))) < 0)
-    {
-      long int i = longval ();
-      if (i != ((long int) (sizeof (long))))
-	return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ((long int) (sizeof (long))))
-	return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
+	*pq |= q;
+	*pq |= ! q;
+	/* Refer to every declared value, to avoid compiler optimizations.  */
+	return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+		+ !m + !n + !o + !p + !q + !pq);
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_long=`cat conftest.val`
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdbool_h=yes
 else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-if test "$ac_cv_type_long" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_long=0
-   fi
+  ac_cv_header_stdbool_h=no
 fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-rm -f conftest.val
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = x""yes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
-$as_echo "$ac_cv_sizeof_long" >&6; }
 
+if test $ac_cv_header_stdbool_h = yes; then
+
+$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
 
 
+ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
+if test "x$ac_cv_type_long_long" = x""yes; then :
+
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
+#define HAVE_LONG_LONG 1
 _ACEOF
 
 
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:$LINENO: checking size of float" >&5
-$as_echo_n "checking size of float... " >&6; }
-if test "${ac_cv_sizeof_float+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (float))) >= 0)];
-test_array [0] = 0
+fi
+ac_fn_c_check_type "$LINENO" "unsigned long long" "ac_cv_type_unsigned_long_long" "$ac_includes_default"
+if test "x$ac_cv_type_unsigned_long_long" = x""yes; then :
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNSIGNED_LONG_LONG 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (float))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_lo=`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid + 1`
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+ac_fn_c_check_type "$LINENO" "int32_t" "ac_cv_type_int32_t" "$ac_includes_default"
+if test "x$ac_cv_type_int32_t" = x""yes; then :
 
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT32_T 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (float))) < 0)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (float))) >= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
+fi
+
+ac_fn_c_check_type "$LINENO" "int64_t" "ac_cv_type_int64_t" "$ac_includes_default"
+if test "x$ac_cv_type_int64_t" = x""yes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT64_T 1
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_hi=`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid`
+
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default"
+if test "x$ac_cv_type_uint32_t" = x""yes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT32_T 1
+_ACEOF
 
-	ac_lo= ac_hi=
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (float))) <= $ac_mid)];
-test_array [0] = 0
+ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "$ac_includes_default"
+if test "x$ac_cv_type_uint64_t" = x""yes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT64_T 1
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_lo=`expr '(' $ac_mid ')' + 1`
+
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_float=$ac_lo;;
-'') if test "$ac_cv_type_float" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (float)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (float)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_float=0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
+if test "x$ac_cv_type_ptrdiff_t" = x""yes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_PTRDIFF_T 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-static long int longval () { return (long int) (sizeof (float)); }
-static unsigned long int ulongval () { return (long int) (sizeof (float)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
 
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (float))) < 0)
-    {
-      long int i = longval ();
-      if (i != ((long int) (sizeof (float))))
-	return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ((long int) (sizeof (float))))
-	return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_float=`cat conftest.val`
+fi
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
+$as_echo_n "checking size of void *... " >&6; }
+if test "${ac_cv_sizeof_void_p+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p"        "$ac_includes_default"; then :
 
-( exit $ac_status )
-if test "$ac_cv_type_float" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+else
+  if test "$ac_cv_type_void_p" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (float)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (float)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (void *)
+See \`config.log' for more details." "$LINENO" 5; }; }
    else
-     ac_cv_sizeof_float=0
+     ac_cv_sizeof_void_p=0
    fi
 fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
+
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_float" >&5
-$as_echo "$ac_cv_sizeof_float" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
+$as_echo "$ac_cv_sizeof_void_p" >&6; }
 
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_FLOAT $ac_cv_sizeof_float
+#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
 _ACEOF
 
 
@@ -18389,352 +15035,163 @@ _ACEOF
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
 # This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:$LINENO: checking size of double" >&5
-$as_echo_n "checking size of double... " >&6; }
-if test "${ac_cv_sizeof_double+set}" = set; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
+$as_echo_n "checking size of short... " >&6; }
+if test "${ac_cv_sizeof_short+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (double))) >= 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (double))) <= $ac_mid)];
-test_array [0] = 0
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid; break
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if test "$ac_cv_type_short" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (short)
+See \`config.log' for more details." "$LINENO" 5; }; }
+   else
+     ac_cv_sizeof_short=0
+   fi
+fi
 
-	ac_lo=`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid + 1`
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
+$as_echo "$ac_cv_sizeof_short" >&6; }
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (double))) < 0)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (double))) >= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=$ac_mid; break
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+$as_echo_n "checking size of int... " >&6; }
+if test "${ac_cv_sizeof_int+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
 
-	ac_hi=`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid`
+else
+  if test "$ac_cv_type_int" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (int)
+See \`config.log' for more details." "$LINENO" 5; }; }
+   else
+     ac_cv_sizeof_int=0
+   fi
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+$as_echo "$ac_cv_sizeof_int" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if test "${ac_cv_sizeof_long+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
 
-	ac_lo= ac_hi=
+else
+  if test "$ac_cv_type_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (long)
+See \`config.log' for more details." "$LINENO" 5; }; }
+   else
+     ac_cv_sizeof_long=0
+   fi
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (double))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_double=$ac_lo;;
-'') if test "$ac_cv_type_double" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of float" >&5
+$as_echo_n "checking size of float... " >&6; }
+if test "${ac_cv_sizeof_float+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_float" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (double)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (double)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (float)
+See \`config.log' for more details." "$LINENO" 5; }; }
    else
-     ac_cv_sizeof_double=0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-static long int longval () { return (long int) (sizeof (double)); }
-static unsigned long int ulongval () { return (long int) (sizeof (double)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
+     ac_cv_sizeof_float=0
+   fi
+fi
 
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (double))) < 0)
-    {
-      long int i = longval ();
-      if (i != ((long int) (sizeof (double))))
-	return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ((long int) (sizeof (double))))
-	return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5
+$as_echo "$ac_cv_sizeof_float" >&6; }
 
-  ;
-  return 0;
-}
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_FLOAT $ac_cv_sizeof_float
 _ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_double=`cat conftest.val`
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5
+$as_echo_n "checking size of double... " >&6; }
+if test "${ac_cv_sizeof_double+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double"        "$ac_includes_default"; then :
 
-( exit $ac_status )
-if test "$ac_cv_type_double" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+else
+  if test "$ac_cv_type_double" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (double)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (double)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (double)
+See \`config.log' for more details." "$LINENO" 5; }; }
    else
      ac_cv_sizeof_double=0
    fi
 fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
+
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5
 $as_echo "$ac_cv_sizeof_double" >&6; }
 
 
@@ -18745,6 +15202,48 @@ _ACEOF
 
 
 
+
+
+cs_fc_flush=no
+
+ac_ext=${ac_fc_srcext-f}
+ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 2003 flush instruction" >&5
+$as_echo_n "checking for Fortran 2003 flush instruction... " >&6; }
+cat > conftest.$ac_ext <<_ACEOF
+      program main
+      flush(6)
+      end
+_ACEOF
+if ac_fn_fc_try_link "$LINENO"; then :
+   cs_fc_flush=yes
+else
+   cs_fc_flush=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_fc_flush" >&5
+$as_echo "$cs_fc_flush" >&6; }
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+if test "x$cs_fc_flush" = "xyes"; then
+  FCFLAGS="${FCFLAGS} -D_CS_FC_HAVE_FLUSH"
+fi
+
+unset $cs_fc_flush
+
+
+
 #------------------------------------------------------------------------------
 # Determine OpenMP support
 #------------------------------------------------------------------------------
@@ -18760,14 +15259,12 @@ _ACEOF
 cs_have_openmp=no
 
 # Check whether --enable-openmp was given.
-if test "${enable_openmp+set}" = set; then
+if test "${enable_openmp+set}" = set; then :
   enableval=$enable_openmp;
     case "${enableval}" in
       yes) cs_have_openmp=yes ;;
       no)  cs_have_openmp=no ;;
-      *)   { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-openmp" >&5
-$as_echo "$as_me: error: bad value ${enableval} for --enable-openmp" >&2;}
-   { (exit 1); exit 1; }; } ;;
+      *)   as_fn_error "bad value ${enableval} for --enable-openmp" "$LINENO" 5 ;;
     esac
 
 else
@@ -18786,13 +15283,9 @@ if test "x$cs_have_openmp" = "xyes" ; then
   FCFLAGS="${FCFLAGS} ${fcflags_default_omp}"
   LDFLAGS="${LDFLAGS} ${cflags_default_omp}"
 
-  { $as_echo "$as_me:$LINENO: checking for OpenMP (C)" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenMP (C)" >&5
 $as_echo_n "checking for OpenMP (C)... " >&6; }
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <omp.h>
 int
@@ -18803,39 +15296,14 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   cs_have_openmp=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_openmp=no
+  cs_have_openmp=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-  { $as_echo "$as_me:$LINENO: result: $cs_have_openmp" >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_openmp" >&5
 $as_echo "$cs_have_openmp" >&6; }
   if test "x$cs_have_openmp" = "xyes" ; then
     ac_ext=${ac_fc_srcext-f}
@@ -18843,9 +15311,9 @@ ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 
-    { $as_echo "$as_me:$LINENO: checking for OpenMP (Fortran)" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenMP (Fortran)" >&5
 $as_echo_n "checking for OpenMP (Fortran)... " >&6; }
-    cat >conftest.$ac_ext <<_ACEOF
+    cat > conftest.$ac_ext <<_ACEOF
       program main
 
       integer n
@@ -18853,39 +15321,14 @@ $as_echo_n "checking for OpenMP (Fortran)... " >&6; }
 
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_fc_try_link "$LINENO"; then :
   cs_have_openmp=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_openmp=no
+  cs_have_openmp=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-    { $as_echo "$as_me:$LINENO: result: $cs_have_openmp" >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_openmp" >&5
 $as_echo "$cs_have_openmp" >&6; }
     ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -18896,9 +15339,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
   fi
   if test "x$cs_have_openmp" = "xyes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_OPENMP 1
-_ACEOF
+$as_echo "#define HAVE_OPENMP 1" >>confdefs.h
 
   else
     cs_have_openmp=no
@@ -18916,52 +15357,51 @@ fi
 
 
 # Check whether --with-bft was given.
-if test "${with_bft+set}" = set; then
-  withval=$with_bft;
+if test "${with_bft+set}" = set; then :
+  withval=$with_bft; if test "x$withval" = "x"; then
+               with_bft=yes
+             fi
+else
+  with_bft=yes
 fi
 
 
+
 # Check whether --with-bft-exec was given.
-if test "${with_bft_exec+set}" = set; then
-  withval=$with_bft_exec;
+if test "${with_bft_exec+set}" = set; then :
+  withval=$with_bft_exec; bft_config="$with_bft_exec/bft-config"
+else
+  if test "x$with_bft" != "xyes"; then
+               bft_config="$with_bft/bin/bft-config"
+             else
+               bft_config="bft-config"
+             fi
 fi
 
 
+
 # Check whether --with-bft-include was given.
-if test "${with_bft_include+set}" = set; then
-  withval=$with_bft_include;
+if test "${with_bft_include+set}" = set; then :
+  withval=$with_bft_include; BFT_CPPFLAGS="-I$with_bft_include"
+else
+  if test "x$with_bft" != "xno" -a "x$with_bft" != "xyes"; then
+               BFT_CPPFLAGS="-I$with_bft/include"
+             fi
 fi
 
 
-# Check whether --with-bft-lib was given.
-if test "${with_bft_lib+set}" = set; then
-  withval=$with_bft_lib;
-fi
-
 
-if test "x$with_bft_exec" != "x" ; then
-  bft_config="$with_bft_exec/bft-config"
-elif test "x$with_bft" != "x" ; then
-  bft_config="$with_bft/bin/bft-config"
+# Check whether --with-bft-lib was given.
+if test "${with_bft_lib+set}" = set; then :
+  withval=$with_bft_lib; BFT_LDFLAGS="-L$with_bft_lib"
 else
-  bft_config="bft-config"
+  if test "x$with_bft" != "xno" -a "x$with_bft" != "xyes"; then
+               BFT_LDFLAGS="-L$with_bft/lib"
+             fi
 fi
 
-if test "x$with_bft_include" != "x" ; then
-  BFT_CPPFLAGS="-I$with_bft_include"
-elif test "x$with_bft" != "x" ; then
-  BFT_CPPFLAGS="-I$with_bft/include"
-else
-  BFT_CPPFLAGS=""
-fi
 
-if test "x$with_bft_lib" != "x" ; then
-  BFT_LDFLAGS="-L$with_bft_lib"
-elif test "x$with_bft" != "x" ; then
-  BFT_LDFLAGS="-L$with_bft/lib"
-else
-  BFT_LDFLAGS=""
-fi
+
 BFT_LIBS="-lbft"
 
 type "$bft_config" > /dev/null 2>&1
@@ -18976,10 +15416,10 @@ bft_version_max=
 
 if test "x$bft_version_min" != "x" ; then
   if test "x$bft_version_max" != "x" ; then
-    { $as_echo "$as_me:$LINENO: checking for bft version >= \"1.1.0\" and <= " >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bft version >= \"1.1.0\" and <= " >&5
 $as_echo_n "checking for bft version >= \"1.1.0\" and <= ... " >&6; }
   else
-    { $as_echo "$as_me:$LINENO: checking for bft version >= \"1.1.0\"" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bft version >= \"1.1.0\"" >&5
 $as_echo_n "checking for bft version >= \"1.1.0\"... " >&6; }
   fi
 else
@@ -18992,13 +15432,10 @@ bft_version_release_min=`echo "$bft_version_min" | cut -f3 -d.`
 if test    "$bft_version_major_min" = "" \
         -o "$bft_version_minor_min" = "" \
         -o "$bft_version_release_min" = ""; then
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: bad BFT version definition in configure.ac: $bft_version_min
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: bad BFT version definition in configure.ac: $bft_version_min
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error "bad BFT version definition in configure.ac: $bft_version_min
+See \`config.log' for more details." "$LINENO" 5; }
 fi
 
 if test "x$bft_version_max" != "x" ; then
@@ -19008,13 +15445,10 @@ if test "x$bft_version_max" != "x" ; then
   if test    "$bft_version_major_max" = "" \
           -o "$bft_version_minor_max" = "" \
           -o "$bft_version_release_max" = ""; then
-    { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: bad BFT version definition in configure.ac: $bft_version_max
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: bad BFT version definition in configure.ac: $bft_version_max
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error "bad BFT version definition in configure.ac: $bft_version_max
+See \`config.log' for more details." "$LINENO" 5; }
   fi
 else
   bft_version_major_max=99999999
@@ -19030,11 +15464,7 @@ CPPFLAGS="${CPPFLAGS} $BFT_CPPFLAGS"
 LDFLAGS="${LDFLAGS} $BFT_LDFLAGS"
 LIBS="${LIBS} $BFT_LIBS"
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <bft_config.h>
 
@@ -19068,45 +15498,17 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  { $as_echo "$as_me:$LINENO: result: compatible bft version found" >&5
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: compatible bft version found" >&5
 $as_echo "compatible bft version found" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: compatible bft version not found
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: compatible bft version not found
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error "compatible bft version not found
+See \`config.log' for more details." "$LINENO" 5; }
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
 unset bft_version_major_min
 unset bft_version_minor_min
@@ -19139,79 +15541,85 @@ unset saved_LIBS
 
 
 # Check whether --with-fvm was given.
-if test "${with_fvm+set}" = set; then
-  withval=$with_fvm;
+if test "${with_fvm+set}" = set; then :
+  withval=$with_fvm; if test "x$withval" = "x"; then
+               with_fvm=yes
+             fi
+else
+  with_fvm=yes
 fi
 
 
+
 # Check whether --with-fvm-exec was given.
-if test "${with_fvm_exec+set}" = set; then
-  withval=$with_fvm_exec;
+if test "${with_fvm_exec+set}" = set; then :
+  withval=$with_fvm_exec; fvm_config="$with_fvm_exec/fvm-config"
+else
+  if test "x$with_fvm" != "xyes"; then
+               fvm_config="$with_fvm/bin/fvm-config"
+             else
+               fvm_config="fvm-config"
+             fi
 fi
 
 
+
 # Check whether --with-fvm-include was given.
-if test "${with_fvm_include+set}" = set; then
-  withval=$with_fvm_include;
+if test "${with_fvm_include+set}" = set; then :
+  withval=$with_fvm_include; FVM_CPPFLAGS="-I$with_fvm_include"
+else
+  if test "x$with_fvm" != "xno" -a "x$with_fvm" != "xyes"; then
+               FVM_CPPFLAGS="-I$with_fvm/include"
+             fi
 fi
 
 
-# Check whether --with-fvm-lib was given.
-if test "${with_fvm_lib+set}" = set; then
-  withval=$with_fvm_lib;
-fi
-
 
-if test "x$with_fvm_exec" != "x" ; then
-  fvm_config="$with_fvm_exec/fvm-config"
-elif test "x$with_fvm" != "x" ; then
-  fvm_config="$with_fvm/bin/fvm-config"
+# Check whether --with-fvm-lib was given.
+if test "${with_fvm_lib+set}" = set; then :
+  withval=$with_fvm_lib; FVM_LDFLAGS="-L$with_fvm_lib"
 else
-  fvm_config="fvm-config"
+  if test "x$with_fvm" != "xno" -a "x$with_fvm" != "xyes"; then
+               FVM_LDFLAGS="-L$with_fvm/lib"
+             fi
 fi
 
-if test "x$with_fvm_include" != "x" ; then
-  FVM_CPPFLAGS="-I$with_fvm_include"
-elif test "x$with_fvm" != "x" ; then
-  FVM_CPPFLAGS="-I$with_fvm/include"
-else
-  FVM_CPPFLAGS=""
-fi
 
-if test "x$with_fvm_lib" != "x" ; then
-  FVM_LDFLAGS="-L$with_fvm_lib"
-elif test "x$with_fvm" != "x" ; then
-  FVM_LDFLAGS="-L$with_fvm/lib"
-else
-  FVM_LDFLAGS=""
-fi
+
 FVM_LIBS="-lfvm"
 
+FVM_COUPL_LDFLAGS="$FVM_LDFLAGS"
+FVM_COUPL_LIBS="-lfvm_coupl"
+
 type "$fvm_config" > /dev/null 2>&1
 if test "$?" = "0" ; then
   FVM_CPPFLAGS="$FVM_CPPFLAGS `$fvm_config --cppflags`"
-  FVM_DEP_LDFLAGS="`$fvm_config --ldflags`"
-  FVM_DEP_LDFLAGS="$FVM_DEP_LDFLAGS `$fvm_config --ldflags cgns`"
-  FVM_DEP_LDFLAGS="$FVM_DEP_LDFLAGS `$fvm_config --ldflags med`"
-  FVM_DEP_LDFLAGS="$FVM_DEP_LDFLAGS `$fvm_config --ldflags hdf5`"
-  FVM_DEP_LDFLAGS="$FVM_DEP_LDFLAGS `$fvm_config --ldflags mpi`"
-  FVM_DEP_LIBS="`$fvm_config --libs`"
-  FVM_DEP_LIBS="$FVM_DEP_LIBS `$fvm_config --libs cgns`"
-  FVM_DEP_LIBS="$FVM_DEP_LIBS `$fvm_config --libs med`"
-  FVM_DEP_LIBS="$FVM_DEP_LIBS `$fvm_config --libs hdf5`"
-  FVM_DEP_LIBS="$FVM_DEP_LIBS `$fvm_config --libs mpi`"
-fi
-
-fvm_version_min="0.14.0"
+  FVM_LDFLAGS="$FVM_LDFLAGS `$fvm_config --ldflags`"
+  FVM_LIBS="$FVM_LIBS `$fvm_config --libs`"
+
+  FVM_COUPL_LDFLAGS="$FVM_LDFLAGS"
+
+  FVM_LDFLAGS="$FVM_LDFLAGS `$fvm_config --ldflags cgns`"
+  FVM_LDFLAGS="$FVM_LDFLAGS `$fvm_config --ldflags med`"
+  FVM_LDFLAGS="$FVM_LDFLAGS `$fvm_config --ldflags hdf5`"
+  FVM_LIBS="$FVM_LIBS `$fvm_config --libs cgns`"
+  FVM_LIBS="$FVM_LIBS `$fvm_config --libs med`"
+  FVM_LIBS="$FVM_LIBS `$fvm_config --libs hdf5`"
+
+  FVM_MPI_LDFLAGS="`$fvm_config --ldflags mpi`"
+  FVM_MPI_LIBS="`$fvm_config --libs mpi`"
+fi
+
+fvm_version_min="0.15.0"
 fvm_version_max=
 
 if test "x$fvm_version_min" != "x" ; then
   if test "x$fvm_version_max" != "x" ; then
-    { $as_echo "$as_me:$LINENO: checking for fvm version >= \"0.14.0\" and <= " >&5
-$as_echo_n "checking for fvm version >= \"0.14.0\" and <= ... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fvm version >= \"0.15.0\" and <= " >&5
+$as_echo_n "checking for fvm version >= \"0.15.0\" and <= ... " >&6; }
   else
-    { $as_echo "$as_me:$LINENO: checking for fvm version >= \"0.14.0\"" >&5
-$as_echo_n "checking for fvm version >= \"0.14.0\"... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fvm version >= \"0.15.0\"" >&5
+$as_echo_n "checking for fvm version >= \"0.15.0\"... " >&6; }
   fi
 else
   fvm_version_min="0.0.0"
@@ -19223,13 +15631,10 @@ fvm_version_release_min=`echo "$fvm_version_min" | cut -f3 -d.`
 if test    "$fvm_version_major_min" = "" \
         -o "$fvm_version_minor_min" = "" \
         -o "$fvm_version_release_min" = ""; then
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: bad FVM version definition in configure.ac: $fvm_version_min
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: bad FVM version definition in configure.ac: $fvm_version_min
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error "bad FVM version definition in configure.ac: $fvm_version_min
+See \`config.log' for more details." "$LINENO" 5; }
 fi
 
 if test "x$fvm_version_max" != "x" ; then
@@ -19239,13 +15644,10 @@ if test "x$fvm_version_max" != "x" ; then
   if test    "$fvm_version_major_max" = "" \
           -o "$fvm_version_minor_max" = "" \
           -o "$fvm_version_release_max" = ""; then
-    { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: bad FVM version definition in configure.ac: $fvm_version_max
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: bad FVM version definition in configure.ac: $fvm_version_max
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error "bad FVM version definition in configure.ac: $fvm_version_max
+See \`config.log' for more details." "$LINENO" 5; }
   fi
 else
   fvm_version_major_max=99999999
@@ -19258,14 +15660,10 @@ saved_LDFLAGS=$LDFLAGS
 saved_LIBS=$LIBS
 
 CPPFLAGS="${CPPFLAGS} $FVM_CPPFLAGS"
-LDFLAGS="$FVM_LDFLAGS $FVM_DEP_LDFLAGS `$fvm_config --ldflags bft` ${LDFLAGS}"
-LIBS="$FVM_LIBS $FVM_DEP_LIBS `$fvm_config --libs bft` ${LIBS}"
+LDFLAGS="$FVM_LDFLAGS $FVM_MPI_LDFLAGS `$fvm_config --ldflags bft` ${LDFLAGS}"
+LIBS="$FVM_LIBS $FVM_MPI_LIBS `$fvm_config --libs bft` ${LIBS}"
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <fvm_config.h>
 
@@ -19299,58 +15697,27 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  { $as_echo "$as_me:$LINENO: result: compatible fvm version found" >&5
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: compatible fvm version found" >&5
 $as_echo "compatible fvm version found" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: compatible fvm version not found
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: compatible fvm version not found
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error "compatible fvm version not found
+See \`config.log' for more details." "$LINENO" 5; }
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
 # Now check if fvm_coupl library is available (using MPI)
 
-{ $as_echo "$as_me:$LINENO: checking for fvm_coupling discovery functions" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fvm_coupling discovery functions" >&5
 $as_echo_n "checking for fvm_coupling discovery functions... " >&6; }
 
-LIBS="$FVM_LIBS -lfvm_coupl $FVM_DEP_LIBS `$fvm_config --libs bft` ${saved_LIBS}"
+LDFLAGS="$FVM_COUPL_LDFLAGS `$fvm_config --ldflags bft` $FVM_MPI_LDFLAGS ${saved_LDFLAGS}"
+LIBS="$FVM_COUPL_LIBS `$fvm_config --libs bft` $FVM_MPI_LIBS ${saved_LIBS}"
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 int fvm_coupling_mpi_world_n_apps(void *);
 int
@@ -19361,46 +15728,22 @@ fvm_coupling_mpi_world_n_apps(0);
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   fvm_have_coupl=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	fvm_have_coupl=no
+  fvm_have_coupl=no
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:$LINENO: result: $fvm_have_coupl" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $fvm_have_coupl" >&5
 $as_echo "$fvm_have_coupl" >&6; }
 if test "$fvm_have_coupl" = "yes"; then
-  FVM_LIBS="$FVM_LIBS -lfvm_coupl"
+  FVM_LIBS="$FVM_LIBS $FVM_COUPL_LIBS"
+else
+  FVM_COUPL_LDFLAGS=""
+  FVM_COUPL_LIBS=""
 fi
-FVM_LDFLAGS="$FVM_LDFLAGS $FVM_DEP_LDFLAGS"
-FVM_LIBS="$FVM_LIBS $FVM_DEP_LIBS"
 
 # Unset temporary variables
 
@@ -19433,217 +15776,88 @@ unset saved_LIBS
 
 
 
-have_mei=no
-
-# Check whether --enable-mei was given.
-if test "${enable_mei+set}" = set; then
-  enableval=$enable_mei;
-    case "${enableval}" in
-      yes) mei=true ;;
-      no)  mei=false ;;
-      *)   { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-mei" >&5
-$as_echo "$as_me: error: bad value ${enableval} for --enable-mei" >&2;}
-   { (exit 1); exit 1; }; } ;;
-    esac
-
-else
-   mei=true
 
-fi
 
+have_mei=no
 
 
 # Check whether --with-mei was given.
-if test "${with_mei+set}" = set; then
-  withval=$with_mei;
-fi
-
-
-# Check whether --with-mei-include was given.
-if test "${with_mei_include+set}" = set; then
-  withval=$with_mei_include;
-fi
-
-
-# Check whether --with-mei-lib was given.
-if test "${with_mei_lib+set}" = set; then
-  withval=$with_mei_lib;
+if test "${with_mei+set}" = set; then :
+  withval=$with_mei; if test "x$withval" = "x"; then
+               with_mei=yes
+             fi
+else
+  with_mei=check
 fi
 
 
-if test "x$mei" = "xtrue" ; then
-
-  saved_CPPFLAGS="$CPPFLAGS"
-  saved_LDFLAGS="$LDFLAGS"
-  saved_LIBS="$LIBS"
-
-  if test "x$with_mei_include" != "x" ; then
-    MEI_CPPFLAGS="-I$with_mei_include"
-  elif test "x$with_mei" != "x" ; then
-    MEI_CPPFLAGS="-I$with_mei/include"
-  fi
-
-  if test "x$with_mei_lib" != "x" ; then
-    MEI_LDFLAGS="-L$with_mei_lib"
-    mei_libdir=$with_mei_lib
-  elif test "x$with_mei" != "x" ; then
-    MEI_LDFLAGS="-L$with_mei/lib"
-    mei_libdir=$with_mei/lib
-  fi
-
-  MEI_LIBS="-lmei"
-
-  CPPFLAGS="${CPPFLAGS} ${MEI_CPPFLAGS} ${BFT_CPPFLAGS}"
-  LDFLAGS="${LDFLAGS} ${MEI_LDFLAGS} ${BFT_LDFLAGS}"
-  LIBS="${LIBS} ${MEI_LIBS} -lbft"
 
-  if test "${ac_cv_header_mei_evaluate_h+set}" = set; then
-  { $as_echo "$as_me:$LINENO: checking for mei_evaluate.h" >&5
-$as_echo_n "checking for mei_evaluate.h... " >&6; }
-if test "${ac_cv_header_mei_evaluate_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_mei_evaluate_h" >&5
-$as_echo "$ac_cv_header_mei_evaluate_h" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking mei_evaluate.h usability" >&5
-$as_echo_n "checking mei_evaluate.h usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <mei_evaluate.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
+# Check whether --with-mei-include was given.
+if test "${with_mei_include+set}" = set; then :
+  withval=$with_mei_include; if test "x$with_mei" = "xcheck"; then
+               with_mei=yes
+             fi
+             MEI_CPPFLAGS="-I$with_mei_include"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
+  if test "x$with_mei" != "xno" -a "x$with_mei" != "xyes" \
+	          -a "x$with_mei" != "xcheck"; then
+               MEI_CPPFLAGS="-I$with_mei/include"
+             fi
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking mei_evaluate.h presence" >&5
-$as_echo_n "checking mei_evaluate.h presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <mei_evaluate.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
 
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
 
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: mei_evaluate.h: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: mei_evaluate.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: mei_evaluate.h: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: mei_evaluate.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: mei_evaluate.h: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: mei_evaluate.h: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: mei_evaluate.h:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: mei_evaluate.h:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: mei_evaluate.h: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: mei_evaluate.h: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: mei_evaluate.h:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: mei_evaluate.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: mei_evaluate.h: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: mei_evaluate.h: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: mei_evaluate.h: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: mei_evaluate.h: in the future, the compiler will take precedence" >&2;}
-    ( cat <<\_ASBOX
-## ------------------------------------- ##
-## Report this to saturne-support at edf.fr ##
-## ------------------------------------- ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for mei_evaluate.h" >&5
-$as_echo_n "checking for mei_evaluate.h... " >&6; }
-if test "${ac_cv_header_mei_evaluate_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
+# Check whether --with-mei-lib was given.
+if test "${with_mei_lib+set}" = set; then :
+  withval=$with_mei_lib; if test "x$with_mei" = "xcheck"; then
+               with_mei=yes
+             fi
+             MEI_LDFLAGS="-L$with_mei_lib"
 else
-  ac_cv_header_mei_evaluate_h=$ac_header_preproc
+  if test "x$with_mei" != "xno" -a "x$with_mei" != "xyes" \
+	          -a "x$with_mei" != "xcheck"; then
+               MEI_LDFLAGS="-L$with_mei/lib"
+             fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_mei_evaluate_h" >&5
-$as_echo "$ac_cv_header_mei_evaluate_h" >&6; }
+
+
+
+if test "x$with_mei" != "xno" ; then
+
+  saved_CPPFLAGS="$CPPFLAGS"
+  saved_LDFLAGS="$LDFLAGS"
+  saved_LIBS="$LIBS"
+
+  if test "x$with_mei" != "xyes" -a "x$with_mei" != "xcheck" ; then
+    mei_prefix=$with_mei
+  else
+    type "mei-config" > /dev/null 2>&1
+    if test "$?" = "0" ; then
+      mei_prefix=`mei-config --prefix`
+    fi
+  fi
+
+  MEI_LIBS="-lmei"
+
+  CPPFLAGS="${CPPFLAGS} ${MEI_CPPFLAGS} ${BFT_CPPFLAGS}"
+  LDFLAGS="${LDFLAGS} ${MEI_LDFLAGS} ${BFT_LDFLAGS}"
+  LIBS="${LIBS} ${MEI_LIBS} -lbft"
+
+  ac_fn_c_check_header_mongrel "$LINENO" "mei_evaluate.h" "ac_cv_header_mei_evaluate_h" "$ac_includes_default"
+if test "x$ac_cv_header_mei_evaluate_h" = x""yes; then :
 
 fi
 
 
 
-  { $as_echo "$as_me:$LINENO: checking for mei_evaluate in -lmei" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mei_evaluate in -lmei" >&5
 $as_echo_n "checking for mei_evaluate in -lmei... " >&6; }
-if test "${ac_cv_lib_mei_mei_evaluate+set}" = set; then
+if test "${ac_cv_lib_mei_mei_evaluate+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmei  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -19661,60 +15875,33 @@ return mei_evaluate ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_mei_mei_evaluate=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_mei_mei_evaluate=no
+  ac_cv_lib_mei_mei_evaluate=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mei_mei_evaluate" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mei_mei_evaluate" >&5
 $as_echo "$ac_cv_lib_mei_mei_evaluate" >&6; }
-if test "x$ac_cv_lib_mei_mei_evaluate" = x""yes; then
+if test "x$ac_cv_lib_mei_mei_evaluate" = x""yes; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MEI 1
-_ACEOF
+$as_echo "#define HAVE_MEI 1" >>confdefs.h
 
                  have_mei=yes
 
 else
-   { $as_echo "$as_me:$LINENO: WARNING: no MEI support" >&5
-$as_echo "$as_me: WARNING: no MEI support" >&2;}
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "MEI support is requested, but test for MEI failed!
+See \`config.log' for more details." "$LINENO" 5; }
 
 fi
 
 
   if test "x$have_mei" != "xyes"; then
-    MEI_CPPFLAGS=""
-    MEI_LDFLAGS=""
     MEI_LIBS=""
   fi
 
@@ -19748,215 +15935,79 @@ fi
 
 have_libxml2=no
 
-# Check whether --enable-libxml2 was given.
-if test "${enable_libxml2+set}" = set; then
-  enableval=$enable_libxml2;
-    case "${enableval}" in
-      yes) libxml2=true ;;
-      no)  libxml2=false ;;
-      *)   { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-libxml2" >&5
-$as_echo "$as_me: error: bad value ${enableval} for --enable-libxml2" >&2;}
-   { (exit 1); exit 1; }; } ;;
-    esac
 
+# Check whether --with-libxml2 was given.
+if test "${with_libxml2+set}" = set; then :
+  withval=$with_libxml2; if test "x$withval" = "x"; then
+               with_libxml2=yes
+             fi
 else
-   libxml2=true
-
+  with_libxml2=check
 fi
 
 
 
-# Check whether --with-libxml2 was given.
-if test "${with_libxml2+set}" = set; then
-  withval=$with_libxml2;
-fi
-
-
 # Check whether --with-libxml2-include was given.
-if test "${with_libxml2_include+set}" = set; then
-  withval=$with_libxml2_include;
+if test "${with_libxml2_include+set}" = set; then :
+  withval=$with_libxml2_include; if test "x$with_libxml2" = "xcheck"; then
+               with_libxml2=yes
+             fi
+             LIBXML2_CPPFLAGS="-I$with_libxml2_include"
+else
+  if test "x$with_libxml2" != "xno" ; then
+               if test "x$with_libxml2" != "xyes" \
+	               -a "x$with_libxml2" != "xcheck"; then
+                 LIBXML2_CPPFLAGS="-I$with_libxml2/include/libxml2"
+               else
+                 LIBXML2_CPPFLAGS="-I/usr/include/libxml2"
+               fi
+             fi
 fi
 
 
+
 # Check whether --with-libxml2-lib was given.
-if test "${with_libxml2_lib+set}" = set; then
-  withval=$with_libxml2_lib;
+if test "${with_libxml2_lib+set}" = set; then :
+  withval=$with_libxml2_lib; if test "x$with_libxml2" = "xcheck"; then
+               with_libxml2=yes
+             fi
+             LIBXML2_LDFLAGS="-L$with_libxml2_lib"
+else
+  if test "x$with_libxml2" != "xno" -a "x$with_libxml2" != "xyes" \
+	          -a "x$with_libxml2" != "xcheck"; then
+               LIBXML2_LDFLAGS="-L$with_libxml2/lib"
+             fi
 fi
 
 
-if test "x$libxml2" = "xtrue" ; then
+
+if test "x$with_libxml2" != "xno" ; then
 
   saved_CPPFLAGS="$CPPFLAGS"
   saved_LDFLAGS="$LDFLAGS"
   saved_LIBS="$LIBS"
 
-  if test "x$with_libxml2_include" != "x" ; then
-    LIBXML2_CPPFLAGS="-I$with_libxml2_include"
-  elif test "x$with_libxml2" != "x" ; then
-    LIBXML2_CPPFLAGS="-I$with_libxml2/include/libxml2"
-  else
-    LIBXML2_CPPFLAGS="-I/usr/include/libxml2"
-  fi
-
-  if test "x$with_libxml2_lib" != "x" ; then
-    LIBXML2_LDFLAGS="-L$with_libxml2_lib"
-  elif test "x$with_libxml2" != "x" ; then
-    LIBXML2_LDFLAGS="-L$with_libxml2/lib"
-  fi
-
   LIBXML2_LIBS="-lxml2"
 
   CPPFLAGS="${CPPFLAGS} ${LIBXML2_CPPFLAGS}"
   LDFLAGS="${LDFLAGS} ${LIBXML2_LDFLAGS}"
   LIBS="${LIBS} ${LIBXML2_LIBS}"
 
-  if test "${ac_cv_header_libxml_parser_h+set}" = set; then
-  { $as_echo "$as_me:$LINENO: checking for libxml/parser.h" >&5
-$as_echo_n "checking for libxml/parser.h... " >&6; }
-if test "${ac_cv_header_libxml_parser_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_libxml_parser_h" >&5
-$as_echo "$ac_cv_header_libxml_parser_h" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking libxml/parser.h usability" >&5
-$as_echo_n "checking libxml/parser.h usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <libxml/parser.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking libxml/parser.h presence" >&5
-$as_echo_n "checking libxml/parser.h presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <libxml/parser.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: libxml/parser.h: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: libxml/parser.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libxml/parser.h: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: libxml/parser.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: libxml/parser.h: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: libxml/parser.h: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libxml/parser.h:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: libxml/parser.h:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libxml/parser.h: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: libxml/parser.h: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libxml/parser.h:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: libxml/parser.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libxml/parser.h: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: libxml/parser.h: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: libxml/parser.h: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: libxml/parser.h: in the future, the compiler will take precedence" >&2;}
-    ( cat <<\_ASBOX
-## ------------------------------------- ##
-## Report this to saturne-support at edf.fr ##
-## ------------------------------------- ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for libxml/parser.h" >&5
-$as_echo_n "checking for libxml/parser.h... " >&6; }
-if test "${ac_cv_header_libxml_parser_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_header_libxml_parser_h=$ac_header_preproc
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_libxml_parser_h" >&5
-$as_echo "$ac_cv_header_libxml_parser_h" >&6; }
+  ac_fn_c_check_header_mongrel "$LINENO" "libxml/parser.h" "ac_cv_header_libxml_parser_h" "$ac_includes_default"
+if test "x$ac_cv_header_libxml_parser_h" = x""yes; then :
 
 fi
 
 
 
-  { $as_echo "$as_me:$LINENO: checking for xmlInitParser in -lxml2" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlInitParser in -lxml2" >&5
 $as_echo_n "checking for xmlInitParser in -lxml2... " >&6; }
-if test "${ac_cv_lib_xml2_xmlInitParser+set}" = set; then
+if test "${ac_cv_lib_xml2_xmlInitParser+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lxml2  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -19974,60 +16025,38 @@ return xmlInitParser ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_xml2_xmlInitParser=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_xml2_xmlInitParser=no
+  ac_cv_lib_xml2_xmlInitParser=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_xml2_xmlInitParser" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlInitParser" >&5
 $as_echo "$ac_cv_lib_xml2_xmlInitParser" >&6; }
-if test "x$ac_cv_lib_xml2_xmlInitParser" = x""yes; then
+if test "x$ac_cv_lib_xml2_xmlInitParser" = x""yes; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBXML2 1
-_ACEOF
+$as_echo "#define HAVE_LIBXML2 1" >>confdefs.h
 
                  have_libxml2=yes
 
 else
-   { $as_echo "$as_me:$LINENO: WARNING: no LIBXML2 support" >&5
+  if test "x$with_libxml2" != "xcheck" ; then
+                  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "LIBXML2 support is requested, but test for LIBXML2 failed!
+See \`config.log' for more details." "$LINENO" 5; }
+                else
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no LIBXML2 support" >&5
 $as_echo "$as_me: WARNING: no LIBXML2 support" >&2;}
+                fi
 
 fi
 
 
   if test "x$have_libxml2" != "xyes"; then
-    LIBXML2_CPPFLAGS=""
-    LIBXML2_LDFLAGS=""
     LIBXML2_LIBS=""
   fi
 
@@ -20059,223 +16088,74 @@ fi
 
 cs_have_blas=no
 
-# Check whether --enable-blas was given.
-if test "${enable_blas+set}" = set; then
-  enableval=$enable_blas;
-    case "${enableval}" in
-      yes) blas=true ;;
-      no)  blas=false ;;
-      *)   { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-blas" >&5
-$as_echo "$as_me: error: bad value ${enableval} for --enable-blas" >&2;}
-   { (exit 1); exit 1; }; } ;;
-    esac
 
+# Check whether --with-blas was given.
+if test "${with_blas+set}" = set; then :
+  withval=$with_blas; if test "x$withval" = "x"; then
+               with_blas=yes
+             fi
 else
-   blas=true
-
+  with_blas=check
 fi
 
 
 
-# Check whether --with-blas was given.
-if test "${with_blas+set}" = set; then
-  withval=$with_blas;
-fi
-
-
 # Check whether --with-blas-include was given.
-if test "${with_blas_include+set}" = set; then
-  withval=$with_blas_include;
+if test "${with_blas_include+set}" = set; then :
+  withval=$with_blas_include; if test "x$with_blas" = "xcheck"; then
+               with_blas=yes
+             fi
+             BLAS_CPPFLAGS="-I$with_blas_include"
+else
+  if test "x$with_blas" != "xno" -a "x$with_blas" != "xyes" \
+	          -a "x$with_blas" != "xcheck"; then
+               BLAS_CPPFLAGS="-I$with_blas/include"
+             fi
 fi
 
 
+
 # Check whether --with-blas-lib was given.
-if test "${with_blas_lib+set}" = set; then
-  withval=$with_blas_lib;
+if test "${with_blas_lib+set}" = set; then :
+  withval=$with_blas_lib; if test "x$with_blas" = "xcheck"; then
+               with_blas=yes
+             fi
+             BLAS_LDFLAGS="-L$with_blas_lib"
+else
+  if test "x$with_blas" != "xno" -a "x$with_blas" != "xyes" \
+	          -a "x$with_blas" != "xcheck"; then
+               BLAS_LDFLAGS="-L$with_blas/lib"
+             fi
 fi
 
 
+
 # Check whether --with-blas-type was given.
-if test "${with_blas_type+set}" = set; then
+if test "${with_blas_type+set}" = set; then :
   withval=$with_blas_type;
 fi
 
 
-# Check whether --with-blas-libs was given.
-if test "${with_blas_libs+set}" = set; then
-  withval=$with_blas_libs;
-fi
-
-
-if test "x$blas" = "xtrue" ; then
-
-  saved_CPPFLAGS="$CPPFLAGS"
-  saved_LDFLAGS="$LDFLAGS"
-  saved_LIBS="$LIBS"
-
-  BLAS_CPPFLAGS=""
-  BLAS_LDFLAGS=""
-
-  # Also add known paths and libraries for Blue Gene/L or P if not given
-
-  if test "x$with_blas_include" != "x" ; then
-    BLAS_CPPFLAGS="-I$with_blas_include"
-  elif test "x$with_blas" != "x" ; then
-    BLAS_CPPFLAGS="-I$with_blas/include"
-  fi
-
-  if test "x$with_blas_lib" != "x" ; then
-    BLAS_LDFLAGS="-L$with_blas_lib"
-  elif test "x$with_blas" != "x" ; then
-    BLAS_LDFLAGS="-L$with_blas/lib"
-  fi
-
-  if test "x$with_blas_type" = "x" ; then
-    if test "x$cs_ibm_bg_type" != "x" ; then
-      with_blas_type="ESSL"
-    fi
-  fi
-
-  # Test for ATLAS BLAS
-
-  if test "x$with_blas_type" = "x" -o "x$with_blas_type" = "xATLAS" ; then
-
-    if test "$cs_have_openmp" = "yes" -o "x$with_blas_libs" = "x"; then # Threaded version ?
-
-      BLAS_LIBS="-lptcblas -latlas -lpthread"
-
-      CPPFLAGS="${saved_CPPFLAGS} ${BLAS_CPPFLAGS}"
-      LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
-      LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
-
-      { $as_echo "$as_me:$LINENO: checking for threaded ATLAS BLAS" >&5
-$as_echo_n "checking for threaded ATLAS BLAS... " >&6; }
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <cblas.h>
-int
-main ()
-{
- cblas_ddot(0, 0, 0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CBLAS 1
-_ACEOF
-
-                       cs_have_blas=yes; with_blas_type=ATLAS
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_blas=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-      { $as_echo "$as_me:$LINENO: result: $cs_have_blas" >&5
-$as_echo "$cs_have_blas" >&6; }
-    fi
-
-    if test "$cs_have_blas" = "no" ; then # Test for non-threaded version
-                                          # or explicitely specified libs second
-      if test "x$with_blas_libs" != "x" -a "x$with_blas_type" = "xATLAS"; then
-        BLAS_LIBS="$with_blas_libs"
-      else
-        BLAS_LIBS="-lcblas -latlas"
-      fi
-
-      CPPFLAGS="${saved_CPPFLAGS} ${BLAS_CPPFLAGS}"
-      LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
-      LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
-
-      { $as_echo "$as_me:$LINENO: checking for ATLAS BLAS" >&5
-$as_echo_n "checking for ATLAS BLAS... " >&6; }
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <cblas.h>
-int
-main ()
-{
- cblas_ddot(0, 0, 0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CBLAS 1
-_ACEOF
-
-                       cs_have_blas=yes; with_blas_type=ATLAS
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	cs_have_blas=no
+# Check whether --with-blas-libs was given.
+if test "${with_blas_libs+set}" = set; then :
+  withval=$with_blas_libs;
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-      { $as_echo "$as_me:$LINENO: result: $cs_have_blas" >&5
-$as_echo "$cs_have_blas" >&6; }
-    fi
 
+
+if test "x$with_blas" != "xno" ; then
+
+  saved_CPPFLAGS="$CPPFLAGS"
+  saved_LDFLAGS="$LDFLAGS"
+  saved_LIBS="$LIBS"
+
+  # Add known paths and libraries for Blue Gene/L or P if not given
+
+  if test "x$with_blas_type" = "x" ; then
+    if test "x$cs_ibm_bg_type" != "x" ; then
+      with_blas_type="ESSL"
+    fi
   fi
 
   # Test for IBM ESSL BLAS
@@ -20319,51 +16199,24 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu
       LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
       LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
 
-      { $as_echo "$as_me:$LINENO: checking for smp ESSL BLAS" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for smp ESSL BLAS" >&5
 $as_echo_n "checking for smp ESSL BLAS... " >&6; }
-      cat >conftest.$ac_ext <<_ACEOF
+      cat > conftest.$ac_ext <<_ACEOF
       program main
       call ddot(0, 0, 0, 0, 0)
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_fc_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ESSL 1
-_ACEOF
+$as_echo "#define HAVE_ESSL 1" >>confdefs.h
 
                        cs_have_blas=yes; with_blas_type=ESSL
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_blas=no
+  cs_have_blas=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-      { $as_echo "$as_me:$LINENO: result: $cs_have_blas" >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_blas" >&5
 $as_echo "$cs_have_blas" >&6; }
     fi
 
@@ -20381,51 +16234,24 @@ $as_echo "$cs_have_blas" >&6; }
       LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
       LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
 
-      { $as_echo "$as_me:$LINENO: checking for ESSL BLAS" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ESSL BLAS" >&5
 $as_echo_n "checking for ESSL BLAS... " >&6; }
-      cat >conftest.$ac_ext <<_ACEOF
+      cat > conftest.$ac_ext <<_ACEOF
       program main
       call ddot(0, 0, 0, 0, 0)
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_fc_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ESSL 1
-_ACEOF
+$as_echo "#define HAVE_ESSL 1" >>confdefs.h
 
                        cs_have_blas=yes; with_blas_type=ESSL
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_blas=no
+  cs_have_blas=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-      { $as_echo "$as_me:$LINENO: result: $cs_have_blas" >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_blas" >&5
 $as_echo "$cs_have_blas" >&6; }
     fi
 
@@ -20442,13 +16268,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
       CPPFLAGS="${CPPFLAGS} ${BLAS_CPPFLAGS}"
 
-      { $as_echo "$as_me:$LINENO: checking for ESSL BLAS headers" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ESSL BLAS headers" >&5
 $as_echo_n "checking for ESSL BLAS headers... " >&6; }
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <essl.h>
 int
@@ -20459,39 +16281,16 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ESSL_H 1
-_ACEOF
+$as_echo "#define HAVE_ESSL_H 1" >>confdefs.h
 
                           cs_have_essl_h=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_essl_h=no
+  cs_have_essl_h=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-      { $as_echo "$as_me:$LINENO: result: $cs_have_essl_h" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_essl_h" >&5
 $as_echo "$cs_have_essl_h" >&6; }
 
    fi
@@ -20506,8 +16305,8 @@ $as_echo "$cs_have_essl_h" >&6; }
       if test `uname -m` = ia64 ; then
         mkl_sub_lib="/64"
       elif test `uname -m` = x86_64 ; then
-        mkl_sub_lib="/64"
-      elif test `uname -m` = x86 ; then
+        mkl_sub_lib="/em64t"
+      else
         mkl_sub_lib="/32"
       fi
     fi
@@ -20516,6 +16315,8 @@ $as_echo "$cs_have_essl_h" >&6; }
 
       if test "`uname -m`" = "ia64" ; then
         BLAS_LIBS="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -lpthread"
+      elif test `uname -m` = x86_64 ; then
+        BLAS_LIBS="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -lpthread"
       else
         BLAS_LIBS="-lmkl_intel -lmkl_intel_thread -lmkl_core -lguide -lpthread"
       fi
@@ -20524,13 +16325,9 @@ $as_echo "$cs_have_essl_h" >&6; }
       LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}${mkl_sub_lib}"
       LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
 
-      { $as_echo "$as_me:$LINENO: checking for threaded MKL BLAS" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for threaded MKL BLAS" >&5
 $as_echo_n "checking for threaded MKL BLAS... " >&6; }
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mkl_cblas.h>
 int
@@ -20541,44 +16338,17 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MKL 1
-_ACEOF
+$as_echo "#define HAVE_MKL 1" >>confdefs.h
 
                        cs_have_blas=yes; with_blas_type=MKL
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_blas=no
+  cs_have_blas=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-      { $as_echo "$as_me:$LINENO: result: $cs_have_blas" >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_blas" >&5
 $as_echo "$cs_have_blas" >&6; }
     fi
 
@@ -20590,6 +16360,8 @@ $as_echo "$cs_have_blas" >&6; }
       else
         if test "`uname -m`" = "ia64" ; then
           BLAS_LIBS="-lmkl_intel_lp64 -lmkl_sequential -lmkl_core"
+        elif test `uname -m` = x86_64 ; then
+          BLAS_LIBS="-lmkl_intel_lp64 -lmkl_sequential -lmkl_core"
         else
           BLAS_LIBS="-lmkl_intel -lmkl_sequential -lmkl_core"
         fi
@@ -20599,13 +16371,9 @@ $as_echo "$cs_have_blas" >&6; }
       LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}${mkl_sub_lib}"
       LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
 
-      { $as_echo "$as_me:$LINENO: checking for MKL BLAS" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MKL BLAS" >&5
 $as_echo_n "checking for MKL BLAS... " >&6; }
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mkl_blas.h>
 int
@@ -20616,44 +16384,17 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MKL 1
-_ACEOF
+$as_echo "#define HAVE_MKL 1" >>confdefs.h
 
                        cs_have_blas=yes; with_blas_type=MKL
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_blas=no
+  cs_have_blas=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-      { $as_echo "$as_me:$LINENO: result: $cs_have_blas" >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_blas" >&5
 $as_echo "$cs_have_blas" >&6; }
     fi
 
@@ -20664,9 +16405,89 @@ $as_echo "$cs_have_blas" >&6; }
 
   fi
 
-  # Test for generic C BLAS
+  # Test for ATLAS BLAS
 
-  if test "x$with_blas_type" = "x" ; then
+  if test "x$with_blas_type" = "x" -o "x$with_blas_type" = "xATLAS" ; then
+
+    if test "$cs_have_openmp" = "yes" -o "x$with_blas_libs" = "x"; then # Threaded version ?
+
+      BLAS_LIBS="-lptcblas -latlas -lpthread"
+
+      CPPFLAGS="${saved_CPPFLAGS} ${BLAS_CPPFLAGS}"
+      LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
+      LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for threaded ATLAS BLAS" >&5
+$as_echo_n "checking for threaded ATLAS BLAS... " >&6; }
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <cblas.h>
+int
+main ()
+{
+ cblas_ddot(0, 0, 0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+$as_echo "#define HAVE_CBLAS 1" >>confdefs.h
+
+                       cs_have_blas=yes; with_blas_type=ATLAS
+else
+  cs_have_blas=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_blas" >&5
+$as_echo "$cs_have_blas" >&6; }
+    fi
+
+    if test "$cs_have_blas" = "no" ; then # Test for non-threaded version
+                                          # or explicitely specified libs second
+      if test "x$with_blas_libs" != "x" -a "x$with_blas_type" = "xATLAS"; then
+        BLAS_LIBS="$with_blas_libs"
+      else
+        BLAS_LIBS="-lcblas -latlas"
+      fi
+
+      CPPFLAGS="${saved_CPPFLAGS} ${BLAS_CPPFLAGS}"
+      LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
+      LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ATLAS BLAS" >&5
+$as_echo_n "checking for ATLAS BLAS... " >&6; }
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <cblas.h>
+int
+main ()
+{
+ cblas_ddot(0, 0, 0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+$as_echo "#define HAVE_CBLAS 1" >>confdefs.h
+
+                       cs_have_blas=yes; with_blas_type=ATLAS
+else
+  cs_have_blas=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_blas" >&5
+$as_echo "$cs_have_blas" >&6; }
+    fi
+
+  fi
+
+  # Test for generic C or Fortran BLAS
+
+  if test "x$with_blas_type" = "x" -o "x$with_blas_type" = "xBLAS" ; then
 
     if test "x$with_blas_libs" != "x" ; then
       BLAS_LIBS="$with_blas_libs"
@@ -20678,13 +16499,11 @@ $as_echo "$cs_have_blas" >&6; }
     LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
     LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
 
-    { $as_echo "$as_me:$LINENO: checking for legacy C BLAS" >&5
+    # Firstly, test for C BLAS
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for legacy C BLAS" >&5
 $as_echo_n "checking for legacy C BLAS... " >&6; }
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <cblas.h>
 int
@@ -20695,50 +16514,20 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CBLAS 1
-_ACEOF
+$as_echo "#define HAVE_CBLAS 1" >>confdefs.h
 
-                     cs_have_blas=yes; with_blas_type=BLAS
+                     cs_tmp_have_cblas=yes; with_blas_type=BLAS
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_blas=no
+  cs_tmp_have_cblas=no
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_tmp_have_cblas" >&5
+$as_echo "$cs_tmp_have_cblas" >&6; }
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-    { $as_echo "$as_me:$LINENO: result: $cs_have_blas" >&5
-$as_echo "$cs_have_blas" >&6; }
-  fi
-
-  # Test for generic Fortran BLAS
-
-  if test "x$with_blas_type" = "x" ; then
+    # Secondly, test for C BLAS
 
     ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
@@ -20746,61 +16535,25 @@ ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 
 
-    if test "x$with_blas_libs" != "x" ; then
-      BLAS_LIBS="$with_blas_libs"
-    else
-      BLAS_LIBS="-lblas"
-    fi
-
-    LDFLAGS="${saved_LDFLAGS} ${BLAS_LDFLAGS}"
-    LIBS=" ${saved_LIBS} ${BLAS_LIBS}"
-
-    { $as_echo "$as_me:$LINENO: checking for legacy Fortran BLAS" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for legacy Fortran BLAS" >&5
 $as_echo_n "checking for legacy Fortran BLAS... " >&6; }
-    cat >conftest.$ac_ext <<_ACEOF
+    cat > conftest.$ac_ext <<_ACEOF
       program main
       call ddot(0, 0, 0, 0, 0)
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_fc_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FBLAS 1
-_ACEOF
+$as_echo "#define HAVE_FBLAS 1" >>confdefs.h
 
-                     cs_have_blas=yes; with_blas_type=BLAS
+                     cs_tmp_have_fblas=yes; with_blas_type=BLAS
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_blas=no
+  cs_tmp_have_fblas=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-    { $as_echo "$as_me:$LINENO: result: $cs_have_blas" >&5
-$as_echo "$cs_have_blas" >&6; }
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_tmp_have_fblas" >&5
+$as_echo "$cs_tmp_have_fblas" >&6; }
 
     ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -20809,13 +16562,25 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
+    if test "x$cs_tmp_have_cblas" = "xyes" \
+         -o "x$cs_tmp_have_fblas" = "xyes"; then
+      cs_have_blas=yes
+    fi
+
   fi
 
   # Cleanup if no BLAS found
 
   if test "x$cs_have_blas" != "xyes"; then
-    BLAS_CPPFLAGS=""
-    BLAS_LDFLAGS=""
+    if test "x$with_blas" != "xcheck" ; then
+      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "BLAS support is requested, but test for BLAS failed!
+See \`config.log' for more details." "$LINENO" 5; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no BLAS support" >&5
+$as_echo "$as_me: WARNING: no BLAS support" >&2;}
+    fi
     BLAS_LIBS=""
   fi
 
@@ -20842,65 +16607,64 @@ saved_LIBS="$LIBS"
 
 cs_have_mpi=no
 
-# Check whether --enable-mpi was given.
-if test "${enable_mpi+set}" = set; then
-  enableval=$enable_mpi;
-    case "${enableval}" in
-      yes) mpi=true ;;
-      no)  mpi=false ;;
-      *)   { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-mpi" >&5
-$as_echo "$as_me: error: bad value ${enableval} for --enable-mpi" >&2;}
-   { (exit 1); exit 1; }; } ;;
-    esac
 
+# Check whether --with-mpi was given.
+if test "${with_mpi+set}" = set; then :
+  withval=$with_mpi; if test "x$withval" = "x"; then
+               with_mpi=yes
+             fi
 else
-   mpi=true
-
+  with_mpi=check
 fi
 
 
 
-# Check whether --with-mpi was given.
-if test "${with_mpi+set}" = set; then
-  withval=$with_mpi;
-fi
-
-
 # Check whether --with-mpi-exec was given.
-if test "${with_mpi_exec+set}" = set; then
-  withval=$with_mpi_exec;
+if test "${with_mpi_exec+set}" = set; then :
+  withval=$with_mpi_exec; if test "x$with_mpi" = "xcheck"; then
+               with_mpi=yes
+             fi
+             mpi_bindir="$with_mpi_exec"
+else
+  if test "x$with_mpi" != "xno" -a "x$with_mpi" != "xyes" \
+	          -a "x$with_mpi" != "xcheck"; then
+               mpi_bindir="$with_mpi/bin"
+             fi
 fi
 
 
+
 # Check whether --with-mpi-include was given.
-if test "${with_mpi_include+set}" = set; then
-  withval=$with_mpi_include;
+if test "${with_mpi_include+set}" = set; then :
+  withval=$with_mpi_include; if test "x$with_mpi" = "xcheck"; then
+               with_mpi=yes
+             fi
+             MPI_CPPFLAGS="-I$with_mpi_include"
+else
+  if test "x$with_mpi" != "xno" -a "x$with_mpi" != "xyes" \
+	          -a "x$with_mpi" != "xcheck"; then
+               MPI_CPPFLAGS="-I$with_mpi/include"
+             fi
 fi
 
 
+
 # Check whether --with-mpi-lib was given.
-if test "${with_mpi_lib+set}" = set; then
-  withval=$with_mpi_lib;
+if test "${with_mpi_lib+set}" = set; then :
+  withval=$with_mpi_lib; if test "x$with_mpi" = "xcheck"; then
+               with_mpi=yes
+             fi
+             MPI_LDFLAGS="-L$with_mpi_lib"
+             mpi_libdir="$with_mpi_lib"
+else
+  if test "x$with_mpi" != "xno" -a "x$with_mpi" != "xyes" \
+	          -a "x$with_mpi" != "xcheck"; then
+               MPI_LDFLAGS="-L$with_mpi/lib"
+               mpi_libdir="$with_mpi/lib"
+             fi
 fi
 
 
-if test "x$mpi" = "xtrue" ; then
-  if test "x$with_mpi_exec" != "x" ; then
-    MPI_BIN="$with_mpi_exec"
-  elif test "x$with_mpi" != "x" ; then
-    MPI_BIN="$with_mpi/bin"
-  fi
-  if test "x$with_mpi_include" != "x" ; then
-    MPI_CPPFLAGS="$MPI_CPPFLAGS -I$with_mpi_include"
-  elif test "x$with_mpi" != "x" ; then
-    MPI_CPPFLAGS="$MPI_CPPFLAGS -I$with_mpi/include"
-  fi
-  if test "x$with_mpi_lib" != "x" ; then
-    MPI_LDFLAGS="$MPI_LDFLAGS -L$with_mpi_lib"
-  elif test "x$with_mpi" != "x" ; then
-    MPI_LDFLAGS="$MPI_LDFLAGS -L$with_mpi/lib"
-  fi
-fi
 
 # Just in case, remove excess whitespace from existing flag and libs variables.
 
@@ -20917,21 +16681,17 @@ fi
 # If we do not use an MPI compiler wrapper, we must add compilation
 # and link flags; we try to detect the correct flags to add.
 
-if test "x$mpi" = "xtrue" -a "x$cs_have_mpi" = "xno" ; then
+if test "x$with_mpi" != "xno" -a "x$cs_have_mpi" = "xno" ; then
 
   # try several tests for MPI
 
   # MPI Compiler wrapper test
-  { $as_echo "$as_me:$LINENO: checking for MPI (MPI compiler wrapper test)" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI (MPI compiler wrapper test)" >&5
 $as_echo_n "checking for MPI (MPI compiler wrapper test)... " >&6; }
   CPPFLAGS="$saved_CPPFLAGS $MPI_CPPFLAGS"
   LDFLAGS="$saved_LDFLAGS $MPI_LDFLAGS"
   LIBS="$saved_LIBS $MPI_LIBS"
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mpi.h>
 int
@@ -20942,50 +16702,23 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MPI 1
-_ACEOF
+$as_echo "#define HAVE_MPI 1" >>confdefs.h
 
                   cs_have_mpi=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_mpi=no
+  cs_have_mpi=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-  { $as_echo "$as_me:$LINENO: result: $cs_have_mpi" >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_mpi" >&5
 $as_echo "$cs_have_mpi" >&6; }
 
   # If failed, basic test
   if test "x$cs_have_mpi" = "xno"; then
     # Basic test
-    { $as_echo "$as_me:$LINENO: checking for MPI (basic test)" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI (basic test)" >&5
 $as_echo_n "checking for MPI (basic test)... " >&6; }
     if test "$MPI_LIBS" = "" ; then
       MPI_LIBS="-lmpi $PTHREAD_LIBS"
@@ -20993,11 +16726,7 @@ $as_echo_n "checking for MPI (basic test)... " >&6; }
     CPPFLAGS="$saved_CPPFLAGS $MPI_CPPFLAGS"
     LDFLAGS="$saved_LDFLAGS $MPI_LDFLAGS"
     LIBS="$saved_LIBS $MPI_LIBS"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mpi.h>
 int
@@ -21008,59 +16737,28 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MPI 1
-_ACEOF
+$as_echo "#define HAVE_MPI 1" >>confdefs.h
 
                     cs_have_mpi=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_mpi=no
+  cs_have_mpi=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-    { $as_echo "$as_me:$LINENO: result: $cs_have_mpi" >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_mpi" >&5
 $as_echo "$cs_have_mpi" >&6; }
   fi
 
   # If failed, test for mpich
   if test "x$cs_have_mpi" = "xno"; then
-    { $as_echo "$as_me:$LINENO: checking for MPI (mpich test)" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI (mpich test)" >&5
 $as_echo_n "checking for MPI (mpich test)... " >&6; }
     # First try (simplest)
     MPI_LIBS="-lmpich $PTHREAD_LIBS"
     LIBS="$saved_LIBS $MPI_LIBS"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mpi.h>
 int
@@ -21071,52 +16769,21 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MPI 1
-_ACEOF
+$as_echo "#define HAVE_MPI 1" >>confdefs.h
 
                     cs_have_mpi=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_mpi=no
+  cs_have_mpi=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
     if test "x$cs_have_mpi" = "xno"; then
       # Second try (with lpmpich)
       MPI_LIBS="-Wl,-lpmpich -Wl,-lmpich -Wl,-lpmpich -Wl,-lmpich"
       LIBS="$saved_LIBS $MPI_LIBS"
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mpi.h>
 int
@@ -21127,51 +16794,24 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MPI 1
-_ACEOF
+$as_echo "#define HAVE_MPI 1" >>confdefs.h
 
                       cs_have_mpi=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_mpi=no
+  cs_have_mpi=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
     fi
-    { $as_echo "$as_me:$LINENO: result: $cs_have_mpi" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_mpi" >&5
 $as_echo "$cs_have_mpi" >&6; }
   fi
 
   # If failed, test for lam-mpi
   if test "x$cs_have_mpi" = "xno"; then
-    { $as_echo "$as_me:$LINENO: checking for MPI (lam-mpi test)" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI (lam-mpi test)" >&5
 $as_echo_n "checking for MPI (lam-mpi test)... " >&6; }
     # First try (without MPI-IO)
     case $host_os in
@@ -21181,11 +16821,7 @@ $as_echo_n "checking for MPI (lam-mpi test)... " >&6; }
         MPI_LIBS="-lmpi -llam -lpthread";;
     esac
     LIBS="$saved_LIBS $MPI_LIBS"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mpi.h>
 int
@@ -21196,43 +16832,16 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MPI 1
-_ACEOF
+$as_echo "#define HAVE_MPI 1" >>confdefs.h
 
                     cs_have_mpi=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_mpi=no
+  cs_have_mpi=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
     if test "x$cs_have_mpi" = "xno"; then
       # Second try (with MPI-IO)
       case $host_os in
@@ -21242,11 +16851,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
           MPI_LIBS="-lmpi -llam -lutil -ldl -lpthread";;
       esac
       LIBS="$saved_LIBS $MPI_LIBS"
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mpi.h>
 int
@@ -21257,64 +16862,47 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MPI 1
-_ACEOF
+$as_echo "#define HAVE_MPI 1" >>confdefs.h
 
                       cs_have_mpi=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cs_have_mpi=no
+  cs_have_mpi=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
     fi
-    { $as_echo "$as_me:$LINENO: result: $cs_have_mpi" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cs_have_mpi" >&5
 $as_echo "$cs_have_mpi" >&6; }
   fi
 
   if test "x$cs_have_mpi" = "xno"; then
-    MPI_CPPFLAGS=""
-    MPI_LDFLAGS=""
+    if test "x$with_mpi" != "xcheck" ; then
+      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "MPI support is requested, but test for MPI failed!
+See \`config.log' for more details." "$LINENO" 5; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no MPI support" >&5
+$as_echo "$as_me: WARNING: no MPI support" >&2;}
+    fi
     MPI_LIBS=""
   else
     # Try to detect MPI variants as this may be useful for the run scripts to
     # determine the correct mpi startup syntax (especially when multiple
     # librairies are installed on the same machine).
     CPPFLAGS="$saved_CPPFLAGS $MPI_CPPFLAGS"
-    MPI_TYPE=""
-    if test "x$MPI_TYPE" = "x"; then
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    mpi_type=""
+    if test "x$cs_ibm_bg_type" != "x" ; then
+      if test "x$cs_ibm_bg_type" = "L" ; then
+        mpi_type=BGL_MPI
+      elif test "x$cs_ibm_bg_type" = "P" ; then
+        mpi_type=BGP_MPI
+      fi
+    fi
+    if test "x$mpi_type" = "x"; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
                     #include <mpi.h>
@@ -21324,18 +16912,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "mpich2" >/dev/null 2>&1; then
-  MPI_TYPE=MPICH2
+  $EGREP "mpich2" >/dev/null 2>&1; then :
+  mpi_type=MPICH2
 fi
 rm -f conftest*
 
     fi
-    if test "x$MPI_TYPE" = "x"; then
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    if test "x$mpi_type" = "x"; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
                     #include <mpi.h>
@@ -21345,18 +16929,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "ompi" >/dev/null 2>&1; then
-  MPI_TYPE=OpenMPI
+  $EGREP "ompi" >/dev/null 2>&1; then :
+  mpi_type=OpenMPI
 fi
 rm -f conftest*
 
     fi
-    if test "x$MPI_TYPE" = "x"; then
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    if test "x$mpi_type" = "x"; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
                     #include <mpi.h>
@@ -21366,18 +16946,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "mpibull2" >/dev/null 2>&1; then
-  MPI_TYPE=MPIBULL2
+  $EGREP "mpibull2" >/dev/null 2>&1; then :
+  mpi_type=MPIBULL2
 fi
 rm -f conftest*
 
     fi
-    if test "x$MPI_TYPE" = "x"; then
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    if test "x$mpi_type" = "x"; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
                     #include <mpi.h>
@@ -21387,18 +16963,14 @@ cat >>conftest.$ac_ext <<_ACEOF
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "lam_mpi" >/dev/null 2>&1; then
-  MPI_TYPE=LAM_MPI
+  $EGREP "lam_mpi" >/dev/null 2>&1; then :
+  mpi_type=LAM_MPI
 fi
 rm -f conftest*
 
     fi
-    if test "x$MPI_TYPE" = "x"; then
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    if test "x$mpi_type" = "x"; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
                     #include <mpi.h>
@@ -21408,8 +16980,8 @@ cat >>conftest.$ac_ext <<_ACEOF
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "hp_mpi" >/dev/null 2>&1; then
-  MPI_TYPE=HP_MPI
+  $EGREP "hp_mpi" >/dev/null 2>&1; then :
+  mpi_type=HP_MPI
 fi
 rm -f conftest*
 
@@ -21426,22 +16998,239 @@ rm -f conftest*
 
 fi
 
- if test x$cs_have_mpi = xyes; then
-  HAVE_MPI_TRUE=
-  HAVE_MPI_FALSE='#'
+ if test x$cs_have_mpi = xyes; then
+  HAVE_MPI_TRUE=
+  HAVE_MPI_FALSE='#'
+else
+  HAVE_MPI_TRUE='#'
+  HAVE_MPI_FALSE=
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_F77+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5
+$as_echo "$F77" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5
+$as_echo "$ac_ct_F77" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_F77" && break
+done
+
+  if test "x$ac_ct_F77" = x; then
+    F77=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    F77=$ac_ct_F77
+  fi
+fi
+
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5
+$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+if ac_fn_f77_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5
+$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5
+$as_echo_n "checking whether $F77 accepts -g... " >&6; }
+if test "${ac_cv_prog_f77_g+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  FFLAGS=-g
+cat > conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+if ac_fn_f77_try_compile "$LINENO"; then :
+  ac_cv_prog_f77_g=yes
+else
+  ac_cv_prog_f77_g=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5
+$as_echo "$ac_cv_prog_f77_g" >&6; }
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
 else
-  HAVE_MPI_TRUE='#'
-  HAVE_MPI_FALSE=
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
 fi
 
+if test $ac_compiler_gnu = yes; then
+  G77=yes
+else
+  G77=
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-
-
-
-
-
-
-
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
 
 
 ac_ext=f
@@ -21453,9 +17242,9 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_F77+set}" = set; then
+if test "${ac_cv_prog_F77+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$F77"; then
@@ -21466,24 +17255,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 F77=$ac_cv_prog_F77
 if test -n "$F77"; then
-  { $as_echo "$as_me:$LINENO: result: $F77" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5
 $as_echo "$F77" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -21497,9 +17286,9 @@ if test -z "$F77"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_F77"; then
@@ -21510,24 +17299,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_F77="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_F77=$ac_cv_prog_ac_ct_F77
 if test -n "$ac_ct_F77"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5
 $as_echo "$ac_ct_F77" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -21540,7 +17329,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -21550,54 +17339,41 @@ fi
 
 
 # Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 rm -f a.out
 
 # If we don't use `.F' as extension, the preprocessor is not run on the
 # input file.  (Note that this only needs to work for GNU compilers.)
 ac_save_ext=$ac_ext
 ac_ext=F
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5
 $as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
-if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 #ifndef __GNUC__
        choke me
@@ -21605,83 +17381,41 @@ else
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_f77_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_f77_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5
 $as_echo "$ac_cv_f77_compiler_gnu" >&6; }
 ac_ext=$ac_save_ext
 ac_test_FFLAGS=${FFLAGS+set}
 ac_save_FFLAGS=$FFLAGS
 FFLAGS=
-{ $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5
 $as_echo_n "checking whether $F77 accepts -g... " >&6; }
-if test "${ac_cv_prog_f77_g+set}" = set; then
+if test "${ac_cv_prog_f77_g+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   FFLAGS=-g
-cat >conftest.$ac_ext <<_ACEOF
+cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_f77_try_compile "$LINENO"; then :
   ac_cv_prog_f77_g=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_prog_f77_g=no
+  ac_cv_prog_f77_g=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5
 $as_echo "$ac_cv_prog_f77_g" >&6; }
 if test "$ac_test_FFLAGS" = set; then
   FFLAGS=$ac_save_FFLAGS
@@ -21704,16 +17438,10 @@ if test $ac_compiler_gnu = yes; then
 else
   G77=
 fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
 
 
 ac_ext=f
@@ -21725,9 +17453,9 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_F77+set}" = set; then
+if test "${ac_cv_prog_F77+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$F77"; then
@@ -21738,24 +17466,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 F77=$ac_cv_prog_F77
 if test -n "$F77"; then
-  { $as_echo "$as_me:$LINENO: result: $F77" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5
 $as_echo "$F77" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -21769,9 +17497,9 @@ if test -z "$F77"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_F77"; then
@@ -21782,24 +17510,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_F77="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_F77=$ac_cv_prog_ac_ct_F77
 if test -n "$ac_ct_F77"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5
 $as_echo "$ac_ct_F77" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -21812,7 +17540,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -21822,54 +17550,41 @@ fi
 
 
 # Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 rm -f a.out
 
 # If we don't use `.F' as extension, the preprocessor is not run on the
 # input file.  (Note that this only needs to work for GNU compilers.)
 ac_save_ext=$ac_ext
 ac_ext=F
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5
 $as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
-if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 #ifndef __GNUC__
        choke me
@@ -21877,83 +17592,41 @@ else
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_f77_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_f77_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5
 $as_echo "$ac_cv_f77_compiler_gnu" >&6; }
 ac_ext=$ac_save_ext
 ac_test_FFLAGS=${FFLAGS+set}
 ac_save_FFLAGS=$FFLAGS
 FFLAGS=
-{ $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5
 $as_echo_n "checking whether $F77 accepts -g... " >&6; }
-if test "${ac_cv_prog_f77_g+set}" = set; then
+if test "${ac_cv_prog_f77_g+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   FFLAGS=-g
-cat >conftest.$ac_ext <<_ACEOF
+cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_f77_try_compile "$LINENO"; then :
   ac_cv_prog_f77_g=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_prog_f77_g=no
+  ac_cv_prog_f77_g=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5
 $as_echo "$ac_cv_prog_f77_g" >&6; }
 if test "$ac_test_FFLAGS" = set; then
   FFLAGS=$ac_save_FFLAGS
@@ -22082,12 +17755,12 @@ cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
 
   GCC=$G77
   if test -n "$compiler"; then
-    { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
 $as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
 $as_echo "$can_build_shared" >&6; }
 
-    { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
 $as_echo_n "checking whether to build shared libraries... " >&6; }
     test "$can_build_shared" = "no" && enable_shared=no
 
@@ -22107,14 +17780,14 @@ $as_echo_n "checking whether to build shared libraries... " >&6; }
 	fi
         ;;
     esac
-    { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
 $as_echo "$enable_shared" >&6; }
 
-    { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
 $as_echo_n "checking whether to build static libraries... " >&6; }
     # Make sure either enable_shared or enable_static is yes.
     test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:$LINENO: result: $enable_static" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
     GCC_F77="$G77"
@@ -22128,7 +17801,7 @@ $as_echo "$enable_static" >&6; }
 lt_prog_compiler_pic_F77=
 lt_prog_compiler_static_F77=
 
-{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
 $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 
   if test "$GCC" = yes; then
@@ -22400,7 +18073,7 @@ case $host_os in
     lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
     ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_F77" >&5
 $as_echo "$lt_prog_compiler_pic_F77" >&6; }
 
 
@@ -22409,9 +18082,9 @@ $as_echo "$lt_prog_compiler_pic_F77" >&6; }
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$lt_prog_compiler_pic_F77"; then
-  { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then
+if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_pic_works_F77=no
@@ -22427,11 +18100,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:22430: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:18103: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:22434: \$? = $ac_status" >&5
+   echo "$as_me:18107: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -22444,7 +18117,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_F77" >&5
 $as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; }
 
 if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then
@@ -22465,9 +18138,9 @@ fi
 # Check to make sure the static flag actually works.
 #
 wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
-{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then
+if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works_F77=no
@@ -22493,7 +18166,7 @@ else
    LDFLAGS="$save_LDFLAGS"
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_F77" >&5
 $as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; }
 
 if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then
@@ -22505,9 +18178,9 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o_F77=no
@@ -22526,11 +18199,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:22529: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:18202: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:22533: \$? = $ac_status" >&5
+   echo "$as_me:18206: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -22552,14 +18225,14 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
 $as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
 
 
 
-    { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o_F77=no
@@ -22578,11 +18251,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:22581: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:18254: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:22585: \$? = $ac_status" >&5
+   echo "$as_me:18258: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -22604,7 +18277,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
 $as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
 
 
@@ -22613,7 +18286,7 @@ $as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
 hard_links="nottested"
 if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
   # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
 $as_echo_n "checking if we can lock with hard links... " >&6; }
   hard_links=yes
   $RM conftest*
@@ -22621,10 +18294,10 @@ $as_echo_n "checking if we can lock with hard links... " >&6; }
   touch conftest.a
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
 $as_echo "$hard_links" >&6; }
   if test "$hard_links" = no; then
-    { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
     need_locks=warn
   fi
@@ -22634,7 +18307,7 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
   runpath_var=
@@ -23076,32 +18749,12 @@ _LT_EOF
 	allow_undefined_flag_F77='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        cat >conftest.$ac_ext <<_ACEOF
+        cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_f77_try_link "$LINENO"; then :
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -23115,16 +18768,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat
 if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
         hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
@@ -23137,32 +18783,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	else
 	 # Determine the default libpath from the value encoded in an
 	 # empty executable.
-	 cat >conftest.$ac_ext <<_ACEOF
+	 cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_f77_try_link "$LINENO"; then :
 
 lt_aix_libpath_sed='
     /Import File Strings/,/^$/ {
@@ -23176,16 +18802,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat
 if test -z "$aix_libpath"; then
   aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
 	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
@@ -23397,42 +19016,15 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	# implicitly export all symbols.
         save_LDFLAGS="$LDFLAGS"
         LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        cat >conftest.$ac_ext <<_ACEOF
+        cat > conftest.$ac_ext <<_ACEOF
 int foo(void) {}
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_f77_try_link "$LINENO"; then :
   archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
         LDFLAGS="$save_LDFLAGS"
       else
 	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
@@ -23688,7 +19280,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     fi
   fi
 
-{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_F77" >&5
 $as_echo "$ld_shlibs_F77" >&6; }
 test "$ld_shlibs_F77" = no && can_build_shared=no
 
@@ -23716,16 +19308,16 @@ x|xyes)
       # Test whether the compiler implicitly links with -lc since on some
       # systems, -lgcc has to come before -lc. If gcc already passes -lc
       # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
       $RM conftest*
       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
         soname=conftest
         lib=conftest
         libobjs=conftest.$ac_objext
@@ -23739,11 +19331,11 @@ $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
         libname=conftest
         lt_save_allow_undefined_flag=$allow_undefined_flag_F77
         allow_undefined_flag_F77=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
+        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
   (eval $archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
         then
 	  archive_cmds_need_lc_F77=no
         else
@@ -23754,7 +19346,7 @@ $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
         cat conftest.err 1>&5
       fi
       $RM conftest*
-      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_F77" >&5
 $as_echo "$archive_cmds_need_lc_F77" >&6; }
       ;;
     esac
@@ -23825,7 +19417,7 @@ esac
 
 
 
-    { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
 library_names_spec=
@@ -24195,46 +19787,18 @@ linux* | k*bsd*-gnu)
   save_libdir=$libdir
   eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_F77\"; \
        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_F77\""
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
+if ac_fn_f77_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
   shlibpath_overrides_runpath=yes
 fi
-
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
   LDFLAGS=$save_LDFLAGS
   libdir=$save_libdir
 
@@ -24446,7 +20010,7 @@ uts4*)
   dynamic_linker=no
   ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
 $as_echo "$dynamic_linker" >&6; }
 test "$dynamic_linker" = no && can_build_shared=no
 
@@ -24497,7 +20061,7 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
 $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
 hardcode_action_F77=
 if test -n "$hardcode_libdir_flag_spec_F77" ||
@@ -24522,7 +20086,7 @@ else
   # directories.
   hardcode_action_F77=unsupported
 fi
-{ $as_echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_F77" >&5
 $as_echo "$hardcode_action_F77" >&6; }
 
 if test "$hardcode_action_F77" = relink ||
@@ -24558,20 +20122,30 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 # Check whether --with-syrthes was given.
-if test "${with_syrthes+set}" = set; then
+if test "${with_syrthes+set}" = set; then :
   withval=$with_syrthes;
 fi
 
 
+# First try with syrthes.profile, second try for Debian-like packaging
+# of SYRTHES where there is no syrthes.profile
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYRTHES support" >&5
+$as_echo_n "checking for SYRTHES support... " >&6; }
 if test -f $with_syrthes/bin/syrthes.profile ; then
   have_syrthes=yes
   syrthes_prefix=$with_syrthes
-  { $as_echo "$as_me:$LINENO: sourcing $syrthes_prefix/bin/syrthes.profile" >&5
-$as_echo "$as_me: sourcing $syrthes_prefix/bin/syrthes.profile" >&6;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: sourcing $syrthes_prefix/bin/syrthes.profile" >&5
+$as_echo "sourcing $syrthes_prefix/bin/syrthes.profile" >&6; }
   . "$syrthes_prefix/bin/syrthes.profile"
+elif test -f $with_syrthes/bin/syrthes_create_case ; then
+  have_syrthes=yes
+  syrthes_prefix=$with_syrthes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $syrthes_prefix/bin/syrthes_create_case" >&5
+$as_echo "found $syrthes_prefix/bin/syrthes_create_case" >&6; }
 else
   have_syrthes=no
-  { $as_echo "$as_me:$LINENO: WARNING: cannot find syrthes.profile" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find syrthes.profile" >&5
 $as_echo "$as_me: WARNING: cannot find syrthes.profile" >&2;}
 fi
 
@@ -24585,6 +20159,7 @@ cp $with_syrthes/bin/Makefile $outfile
 cat >> $outfile <<\_______EOF
 
 syr_info:
+	@echo $(NOM_ARCH) > syr-nomarch-tmp
 	@echo $(VERSION) > syr-version-tmp
 	@echo $(CC) > syr-cc-tmp
 	@echo $(FC) > syr-fc-tmp
@@ -24594,14 +20169,14 @@ _______EOF
 
 make -f $outfile syr_info > /dev/null
 
-SYRTHES_NOM_ARCH=${NOM_ARCH}
+SYRTHES_NOM_ARCH=`cat syr-nomarch-tmp`
 SYRTHES_VERSION=`cat syr-version-tmp`
 SYRTHES_CC=`cat syr-cc-tmp`
 SYRTHES_FC=`cat syr-fc-tmp`
 SYRTHES_CFLAGS=`cat syr-cflags-tmp`
 SYRTHES_FCFLAGS=`cat syr-fcflags-tmp`
 
-rm -f $outfile syr-version-tmp syr-cc-tmp syr-fc-tmp syr-cflags-tmp syr-fcflags-tmp
+rm -f $outfile syr-nomarch-tmp syr-version-tmp syr-cc-tmp syr-fc-tmp syr-cflags-tmp syr-fcflags-tmp
 
 # Get mandatory Fortran libs for linking stage
 # We assume that only SYRTHES user subroutines written in Fortran 77
@@ -24614,38 +20189,21 @@ ac_ext=f
 ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
 ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking how to get verbose linking output from $F77" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get verbose linking output from $F77" >&5
 $as_echo_n "checking how to get verbose linking output from $F77... " >&6; }
-if test "${ac_cv_prog_f77_v+set}" = set; then
+if test "${ac_cv_prog_f77_v+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_f77_try_compile "$LINENO"; then :
   ac_cv_prog_f77_v=
 # Try some options frequently used verbose output
 for ac_verb in -v -verbose --verbose -V -\#\#\#; do
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
@@ -24659,7 +20217,7 @@ ac_save_FFLAGS=$FFLAGS
 FFLAGS="$FFLAGS $ac_verb"
 eval "set x $ac_link"
 shift
-$as_echo "$as_me:$LINENO: $*" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5
 # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH,
 # LIBRARY_PATH; skip all such settings.
 ac_f77_v_output=`eval $ac_link 5>&1 2>&1 |
@@ -24694,9 +20252,9 @@ case $ac_f77_v_output in
   # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2".
   *-cmdline\ * | *-ignore\ * | *-def\ *)
     ac_f77_v_output=`echo $ac_f77_v_output | sed "\
-        s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
-        s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
-        s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
+	s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
+	s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
+	s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
 
   # If we are using Cray Fortran then delete quotes.
   *cft90*)
@@ -24707,39 +20265,35 @@ esac
   # look for -l* and *.a constructs in the output
   for ac_arg in $ac_f77_v_output; do
      case $ac_arg in
-        [\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
-          ac_cv_prog_f77_v=$ac_verb
-          break 2 ;;
+	[\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
+	  ac_cv_prog_f77_v=$ac_verb
+	  break 2 ;;
      esac
   done
 done
 if test -z "$ac_cv_prog_f77_v"; then
-   { $as_echo "$as_me:$LINENO: WARNING: cannot determine how to obtain linking information from $F77" >&5
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine how to obtain linking information from $F77" >&5
 $as_echo "$as_me: WARNING: cannot determine how to obtain linking information from $F77" >&2;}
 fi
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ $as_echo "$as_me:$LINENO: WARNING: compilation failed" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compilation failed" >&5
 $as_echo "$as_me: WARNING: compilation failed" >&2;}
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_v" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_v" >&5
 $as_echo "$ac_cv_prog_f77_v" >&6; }
-{ $as_echo "$as_me:$LINENO: checking for Fortran 77 libraries of $F77" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 libraries of $F77" >&5
 $as_echo_n "checking for Fortran 77 libraries of $F77... " >&6; }
-if test "${ac_cv_f77_libs+set}" = set; then
+if test "${ac_cv_f77_libs+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "x$FLIBS" != "x"; then
   ac_cv_f77_libs="$FLIBS" # Let the user override the test.
 else
 
-cat >conftest.$ac_ext <<_ACEOF
+cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
@@ -24753,7 +20307,7 @@ ac_save_FFLAGS=$FFLAGS
 FFLAGS="$FFLAGS $ac_cv_prog_f77_v"
 eval "set x $ac_link"
 shift
-$as_echo "$as_me:$LINENO: $*" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5
 # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH,
 # LIBRARY_PATH; skip all such settings.
 ac_f77_v_output=`eval $ac_link 5>&1 2>&1 |
@@ -24788,9 +20342,9 @@ case $ac_f77_v_output in
   # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2".
   *-cmdline\ * | *-ignore\ * | *-def\ *)
     ac_f77_v_output=`echo $ac_f77_v_output | sed "\
-        s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
-        s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
-        s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
+	s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
+	s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
+	s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
 
   # If we are using Cray Fortran then delete quotes.
   *cft90*)
@@ -24809,8 +20363,8 @@ while test $# != 1; do
   shift
   ac_arg=$1
   case $ac_arg in
-        [\\/]*.a | ?:[\\/]*.a)
-            ac_exists=false
+	[\\/]*.a | ?:[\\/]*.a)
+	    ac_exists=false
   for ac_i in $ac_cv_f77_libs; do
     if test x"$ac_arg" = x"$ac_i"; then
       ac_exists=true
@@ -24818,15 +20372,14 @@ while test $# != 1; do
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
 fi
-
-          ;;
-        -bI:*)
-            ac_exists=false
+	  ;;
+	-bI:*)
+	    ac_exists=false
   for ac_i in $ac_cv_f77_libs; do
     if test x"$ac_arg" = x"$ac_i"; then
       ac_exists=true
@@ -24834,8 +20387,8 @@ fi
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   if test "$ac_compiler_gnu" = yes; then
   for ac_link_opt in $ac_arg; do
@@ -24845,18 +20398,18 @@ else
   ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
 fi
 fi
-
-          ;;
-          # Ignore these flags.
-        -lang* | -lcrt*.o | -lc | -lgcc* | -lSystem | -libmil | -LANG:=* | -LIST:* | -LNO:*)
-          ;;
-        -lkernel32)
-          test x"$CYGWIN" != xyes && ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
-          ;;
-        -[LRuYz])
-          # These flags, when seen by themselves, take an argument.
-          # We remove the space between option and argument and re-iterate
-          # unless we find an empty arg or a new option (starting with -)
+	  ;;
+	  # Ignore these flags.
+	-lang* | -lcrt*.o | -lc | -lgcc* | -lSystem | -libmil | -little \
+	  |-LANG:=* | -LIST:* | -LNO:*)
+	  ;;
+	-lkernel32)
+	  test x"$CYGWIN" != xyes && ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
+	  ;;
+	-[LRuYz])
+	  # These flags, when seen by themselves, take an argument.
+	  # We remove the space between option and argument and re-iterate
+	  # unless we find an empty arg or a new option (starting with -)
 	  case $2 in
 	     "" | -*);;
 	     *)
@@ -24865,10 +20418,10 @@ fi
 		set X $ac_arg "$@"
 		;;
 	  esac
-          ;;
-        -YP,*)
-          for ac_j in `$as_echo "$ac_arg" | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
-              ac_exists=false
+	  ;;
+	-YP,*)
+	  for ac_j in `$as_echo "$ac_arg" | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
+	      ac_exists=false
   for ac_i in $ac_cv_f77_libs; do
     if test x"$ac_j" = x"$ac_i"; then
       ac_exists=true
@@ -24876,17 +20429,16 @@ fi
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   ac_arg="$ac_arg $ac_j"
-                               ac_cv_f77_libs="$ac_cv_f77_libs $ac_j"
+			       ac_cv_f77_libs="$ac_cv_f77_libs $ac_j"
 fi
-
-          done
-          ;;
-        -[lLR]*)
-            ac_exists=false
+	  done
+	  ;;
+	-[lLR]*)
+	    ac_exists=false
   for ac_i in $ac_cv_f77_libs; do
     if test x"$ac_arg" = x"$ac_i"; then
       ac_exists=true
@@ -24894,17 +20446,16 @@ fi
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
 fi
-
-          ;;
+	  ;;
 	-zallextract*| -zdefaultextract)
 	  ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
 	  ;;
-          # Ignore everything else.
+	  # Ignore everything else.
   esac
 done
 # restore positional arguments
@@ -24916,9 +20467,9 @@ set X $ac_save_positional; shift
 case `(uname -sr) 2>/dev/null` in
    "SunOS 5"*)
       ac_ld_run_path=`$as_echo "$ac_f77_v_output" |
-                        sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
+			sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
       test "x$ac_ld_run_path" != x &&
-        if test "$ac_compiler_gnu" = yes; then
+	if test "$ac_compiler_gnu" = yes; then
   for ac_link_opt in $ac_ld_run_path; do
     ac_cv_f77_libs="$ac_cv_f77_libs -Xlinker $ac_link_opt"
   done
@@ -24930,7 +20481,7 @@ esac
 fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x"
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_f77_libs" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_libs" >&5
 $as_echo "$ac_cv_f77_libs" >&6; }
 FLIBS="$ac_cv_f77_libs"
 
@@ -24947,14 +20498,6 @@ SYRTHES_CPPFLAGS="-I$with_syrthes/include"
 SYRTHES_LDFLAGS="-L$with_syrthes/lib/${SYRTHES_NOM_ARCH}"
 SYRTHES_LIBS="-lsatsyrthes${SYRTHES_VERSION}_${SYRTHES_NOM_ARCH} -lsyrthes${SYRTHES_VERSION}_${SYRTHES_NOM_ARCH}"
 
-if test "x$cs_have_mpi" = "xyes"; then
-   FVM_COUPL_LDFLAGS="$FVM_LDFLAGS"
-   FVM_COUPL_LIBS="-lfvm_coupl"
-else
-   FVM_COUPL_LDFLAGS=
-   FVM_COUPL_LIBS=
-fi
-
 SYRTHES_LDFLAGS="$FVM_COUPL_LDFLAGS $BFT_LDFLAGS $MPI_LDFLAGS $SYRTHES_LDFLAGS"
 SYRTHES_LIBS="$FVM_COUPL_LIBS $BFT_LIBS $MPI_LIBS $SYRTHES_LIBS"
 
@@ -24979,63 +20522,74 @@ fi
 
 
 # Check whether --with-prepro was given.
-if test "${with_prepro+set}" = set; then
+if test "${with_prepro+set}" = set; then :
   withval=$with_prepro;
 fi
 
 
 # Extract the first word of "cs_preprocess", so it can be a program name with args.
 set dummy cs_preprocess; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ecs_prefix+set}" = set; then
+if test "${ac_cv_path_ecs+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ecs_prefix"; then
-  ac_cv_prog_ecs_prefix="$ecs_prefix" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $with_prepro/bin
+  case $ecs in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ecs="$ecs" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $with_prepro/bin$PATH_SEPARATOR$PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ecs_prefix="$with_prepro"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    ac_cv_path_ecs="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
+  test -z "$ac_cv_path_ecs" && ac_cv_path_ecs="no"
+  ;;
+esac
 fi
-fi
-ecs_prefix=$ac_cv_prog_ecs_prefix
-if test -n "$ecs_prefix"; then
-  { $as_echo "$as_me:$LINENO: result: $ecs_prefix" >&5
-$as_echo "$ecs_prefix" >&6; }
+ecs=$ac_cv_path_ecs
+if test -n "$ecs"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ecs" >&5
+$as_echo "$ecs" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
 
+if test "x${ecs}" = "xno"; then
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot find Code_Saturne preprocessor
+See \`config.log' for more details." "$LINENO" 5; }
+else
+  ecs_bindir=`dirname ${ecs}`
+
+fi
 
 #------------------------------------------------------------------------------
 # Enables Code_Saturne graphical user interface
 #------------------------------------------------------------------------------
 
 # Check whether --enable-gui was given.
-if test "${enable_gui+set}" = set; then
+if test "${enable_gui+set}" = set; then :
   enableval=$enable_gui;
     case "${enableval}" in
       yes) have_gui=yes ;;
       no)  have_gui=no ;;
-      *)   { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-gui" >&5
-$as_echo "$as_me: error: bad value ${enableval} for --enable-gui" >&2;}
-   { (exit 1); exit 1; }; } ;;
+      *)   as_fn_error "bad value ${enableval} for --enable-gui" "$LINENO" 5 ;;
     esac
 
 else
@@ -25043,14 +20597,6 @@ else
 
 fi
 
- if test "x$have_gui" = "xyes"; then
-  HAVE_GUI_TRUE=
-  HAVE_GUI_FALSE='#'
-else
-  HAVE_GUI_TRUE='#'
-  HAVE_GUI_FALSE=
-fi
-
 
 #------------------------------------------------------------------------------
 # Checks for Python support.
@@ -25058,7 +20604,7 @@ fi
 
 
 # Check whether --with-python-exec was given.
-if test "${with_python_exec+set}" = set; then
+if test "${with_python_exec+set}" = set; then :
   withval=$with_python_exec; PYTHON_EXE=${withval}
 else
   PYTHON_EXE=none
@@ -25068,9 +20614,9 @@ if test "x${PYTHON_EXE}" == "xnone" ; then
    cs_python="/usr/bin/env python"
    # Extract the first word of "python", so it can be a program name with args.
 set dummy python; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PYEXE+set}" = set; then
+if test "${ac_cv_path_PYEXE+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PYEXE in
@@ -25083,14 +20629,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_PYEXE="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_PYEXE" && ac_cv_path_PYEXE=""no""
@@ -25099,10 +20645,10 @@ esac
 fi
 PYEXE=$ac_cv_path_PYEXE
 if test -n "$PYEXE"; then
-  { $as_echo "$as_me:$LINENO: result: $PYEXE" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYEXE" >&5
 $as_echo "$PYEXE" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -25111,9 +20657,9 @@ else
    cs_python="${PYTHON_EXE}/python"
    # Extract the first word of "python", so it can be a program name with args.
 set dummy python; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PYEXE+set}" = set; then
+if test "${ac_cv_path_PYEXE+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PYEXE in
@@ -25126,14 +20672,14 @@ for as_dir in ${PYTHON_EXE}
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_PYEXE="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_PYEXE" && ac_cv_path_PYEXE=""no""
@@ -25142,10 +20688,10 @@ esac
 fi
 PYEXE=$ac_cv_path_PYEXE
 if test -n "$PYEXE"; then
-  { $as_echo "$as_me:$LINENO: result: $PYEXE" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYEXE" >&5
 $as_echo "$PYEXE" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -25160,58 +20706,58 @@ PYTHON=${PYEXE}
 
         if test -n "$PYTHON"; then
       # If the user set $PYTHON, use it and don't search something else.
-      { $as_echo "$as_me:$LINENO: checking whether $PYTHON version >= 2.3" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version >= 2.3" >&5
 $as_echo_n "checking whether $PYTHON version >= 2.3... " >&6; }
-      prog="import sys, string
+      prog="import sys
 # split strings by '.' and convert to numeric.  Append some zeros
 # because we need at least 4 digits for the hex conversion.
-minver = map(int, string.split('2.3', '.')) + [0, 0, 0]
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '2.3'.split('.'))) + [0, 0, 0]
 minverhex = 0
-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i]
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
 sys.exit(sys.hexversion < minverhex)"
   if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
    ($PYTHON -c "$prog") >&5 2>&5
    ac_status=$?
    echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+   (exit $ac_status); }; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  { { $as_echo "$as_me:$LINENO: error: too old" >&5
-$as_echo "$as_me: error: too old" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "too old" "$LINENO" 5
 fi
-
       am_display_PYTHON=$PYTHON
     else
       # Otherwise, try each interpreter until we find one that satisfies
       # VERSION.
-      { $as_echo "$as_me:$LINENO: checking for a Python interpreter with version >= 2.3" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.3" >&5
 $as_echo_n "checking for a Python interpreter with version >= 2.3... " >&6; }
-if test "${am_cv_pathless_PYTHON+set}" = set; then
+if test "${am_cv_pathless_PYTHON+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
-	for am_cv_pathless_PYTHON in python python2 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5 none; do
+	for am_cv_pathless_PYTHON in python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
 	  test "$am_cv_pathless_PYTHON" = none && break
-	  prog="import sys, string
+	  prog="import sys
 # split strings by '.' and convert to numeric.  Append some zeros
 # because we need at least 4 digits for the hex conversion.
-minver = map(int, string.split('2.3', '.')) + [0, 0, 0]
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '2.3'.split('.'))) + [0, 0, 0]
 minverhex = 0
-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i]
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
 sys.exit(sys.hexversion < minverhex)"
   if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
    ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
    ac_status=$?
    echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then
+   (exit $ac_status); }; then :
   break
 fi
-
 	done
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_pathless_PYTHON" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
 $as_echo "$am_cv_pathless_PYTHON" >&6; }
       # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
       if test "$am_cv_pathless_PYTHON" = none; then
@@ -25219,9 +20765,9 @@ $as_echo "$am_cv_pathless_PYTHON" >&6; }
       else
         # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
 set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PYTHON+set}" = set; then
+if test "${ac_cv_path_PYTHON+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PYTHON in
@@ -25234,14 +20780,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   ;;
@@ -25249,10 +20795,10 @@ esac
 fi
 PYTHON=$ac_cv_path_PYTHON
 if test -n "$PYTHON"; then
-  { $as_echo "$as_me:$LINENO: result: $PYTHON" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
 $as_echo "$PYTHON" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -25263,20 +20809,18 @@ fi
 
 
   if test "$PYTHON" = :; then
-      { { $as_echo "$as_me:$LINENO: error: no suitable Python interpreter found" >&5
-$as_echo "$as_me: error: no suitable Python interpreter found" >&2;}
-   { (exit 1); exit 1; }; }
+      as_fn_error "no suitable Python interpreter found" "$LINENO" 5
   else
 
 
-  { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON version" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
 $as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if test "${am_cv_python_version+set}" = set; then
+if test "${am_cv_python_version+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  am_cv_python_version=`$PYTHON -c "import sys; print sys.version[:3]"`
+  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_python_version" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
 $as_echo "$am_cv_python_version" >&6; }
   PYTHON_VERSION=$am_cv_python_version
 
@@ -25288,801 +20832,443 @@ $as_echo "$am_cv_python_version" >&6; }
 
 
 
-  { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON platform" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
 $as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if test "${am_cv_python_platform+set}" = set; then
+if test "${am_cv_python_platform+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`
+  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_python_platform" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
 $as_echo "$am_cv_python_platform" >&6; }
   PYTHON_PLATFORM=$am_cv_python_platform
 
 
 
 
-                { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON script directory" >&5
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
 $as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if test "${am_cv_python_pythondir+set}" = set; then
+if test "${am_cv_python_pythondir+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null ||
+  if test "x$prefix" = xNONE
+     then
+       am_py_prefix=$ac_default_prefix
+     else
+       am_py_prefix=$prefix
+     fi
+     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null ||
      echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
+     case $am_cv_python_pythondir in
+     $am_py_prefix*)
+       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
+       ;;
+     *)
+       case $am_py_prefix in
+         /usr|/System*) ;;
+         *)
+	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	  ;;
+       esac
+       ;;
+     esac
+
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_python_pythondir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
 $as_echo "$am_cv_python_pythondir" >&6; }
   pythondir=$am_cv_python_pythondir
 
 
 
-  pkgpythondir=\${pythondir}/$PACKAGE
-
-
-            { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if test "${am_cv_python_pyexecdir+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null ||
-     echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`
-fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
-  pyexecdir=$am_cv_python_pyexecdir
-
-
-
-  pkgpyexecdir=\${pyexecdir}/$PACKAGE
-
-
-
-  fi
-
-
-
-#------------------------------------------------------------------------------
-# Checks for header files.
-#------------------------------------------------------------------------------
-
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_stdc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_header_stdc=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-
-
-
-
-for ac_header in sys/types.h sys/utsname.h sys/stat.h stddef.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    ( cat <<\_ASBOX
-## ------------------------------------- ##
-## Report this to saturne-support at edf.fr ##
-## ------------------------------------- ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  pkgpythondir=\${pythondir}/$PACKAGE
+
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
+$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
+if test "${am_cv_python_pyexecdir+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+  if test "x$exec_prefix" = xNONE
+     then
+       am_py_exec_prefix=$am_py_prefix
+     else
+       am_py_exec_prefix=$exec_prefix
+     fi
+     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null ||
+     echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
+     case $am_cv_python_pyexecdir in
+     $am_py_exec_prefix*)
+       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
+       ;;
+     *)
+       case $am_py_exec_prefix in
+         /usr|/System*) ;;
+         *)
+	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	   ;;
+       esac
+       ;;
+     esac
 
 fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+$as_echo "$am_cv_python_pyexecdir" >&6; }
+  pyexecdir=$am_cv_python_pyexecdir
+
+
+
+  pkgpyexecdir=\${pyexecdir}/$PACKAGE
 
-fi
 
-done
+
+  fi
+
 
 
 #------------------------------------------------------------------------------
-# Checks for library functions.
+# Checks for PyQt support.
 #------------------------------------------------------------------------------
 
 
-for ac_func in snprintf
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
+# Check whether --with-pyqt4-exec was given.
+if test "${with_pyqt4_exec+set}" = set; then :
+  withval=$with_pyqt4_exec; PYQT4_EXE=${withval}
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
+  PYQT4_EXE=none
+fi
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+# Test for PyQt4
+if test "x$have_gui" == "xyes" ; then
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PyQt4 version >= 4.3" >&5
+$as_echo_n "checking for PyQt4 version >= 4.3... " >&6; }
 
-#undef $ac_func
+  prog="import sys, string
+try: import PyQt4
+except ImportError: sys.exit(1)
+from PyQt4.QtCore import *
+if map(int, string.split(QT_VERSION_STR, '.')) < [4,3,0]: sys.exit(1)
+if map(int, string.split(PYQT_VERSION_STR, '.')) < [4,3,0]: sys.exit(1)
+sys.exit(0)"
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
+  ${PYTHON} -c "${prog}"
+  retval=$?
 
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if test $retval -ne 0 ; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot find PyQt4 support (>= 4.3), Graphical User Interface cannot be installed
+See \`config.log' for more details." "$LINENO" 5; }
+    have_gui=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  fi
 
-	eval "$as_ac_var=no"
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+# Test for PyQt4 developper tools
+if test "x$have_gui" == "xyes" ; then
 
-fi
-done
+  if test "x${PYQT4_EXE}" == "xnone" ; then
 
+    # Try to find PyQt4 tools through Python interpreter
+    prog="import os, sys
+from PyQt4.QtCore import QCoreApplication
+app = QCoreApplication([])
+path = app.applicationDirPath()
+sys.stdout.write(path)"
 
+    PYPATH=`${PYTHON} -c "${prog}"`
 
-for ac_func in getcwd sleep
+  else
+    PYPATH=${PYQT4_EXE}
+  fi
+
+  # Extract the first word of "pyuic4", so it can be a program name with args.
+set dummy pyuic4; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PYUIC4+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PYUIC4 in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYUIC4="$PYUIC4" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in ${PYPATH}
 do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PYUIC4="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_PYUIC4" && ac_cv_path_PYUIC4=""no""
+  ;;
+esac
+fi
+PYUIC4=$ac_cv_path_PYUIC4
+if test -n "$PYUIC4"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYUIC4" >&5
+$as_echo "$PYUIC4" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  # Extract the first word of "pyrcc4", so it can be a program name with args.
+set dummy pyrcc4; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PYRCC4+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
+  case $PYRCC4 in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYRCC4="$PYRCC4" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in ${PYPATH}
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PYRCC4="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+  test -z "$ac_cv_path_PYRCC4" && ac_cv_path_PYRCC4=""no""
+  ;;
+esac
+fi
+PYRCC4=$ac_cv_path_PYRCC4
+if test -n "$PYRCC4"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYRCC4" >&5
+$as_echo "$PYRCC4" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
 
-#undef $ac_func
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
+  if test "x$PYUIC4" == "xno" -o "x$PYRCC4" == "xno" ; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot find PyQt4 dev tools, Graphical User Interface cannot be installed
+See \`config.log' for more details." "$LINENO" 5; }
+    have_gui=no
+  fi
+
+fi
+
+ if test "x$have_gui" = "xyes"; then
+  HAVE_GUI_TRUE=
+  HAVE_GUI_FALSE='#'
+else
+  HAVE_GUI_TRUE='#'
+  HAVE_GUI_FALSE=
+fi
+
+
+#------------------------------------------------------------------------------
+# Checks for header files.
+#------------------------------------------------------------------------------
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
 
 int
 main ()
 {
-return $ac_func ();
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
+  ac_cv_header_stdc=no
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
 
+else
+  ac_cv_header_stdc=no
 fi
-done
-
+rm -f conftest*
 
+fi
 
-for ac_func in getpwuid geteuid
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
+#include <stdlib.h>
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
 
-#undef $ac_func
+fi
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
 #endif
 
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
 int
 main ()
 {
-return $ac_func ();
-  ;
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
+if ac_fn_c_try_run "$LINENO"; then :
+
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-	eval "$as_ac_var=no"
 fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+
+for ac_header in sys/types.h sys/utsname.h sys/stat.h stddef.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
 fi
+
 done
 
 
-for ac_func in uname
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
+#------------------------------------------------------------------------------
+# Checks for library functions.
+#------------------------------------------------------------------------------
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+for ac_func in snprintf
+do :
+  ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
+if test "x$ac_cv_func_snprintf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SNPRINTF 1
+_ACEOF
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+fi
+done
 
-#undef $ac_func
+for ac_func in getcwd sleep
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
+fi
+done
 
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
+for ac_func in getpwuid geteuid
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	eval "$as_ac_var=no"
 fi
+done
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+for ac_func in uname
+do :
+  ac_fn_c_check_func "$LINENO" "uname" "ac_cv_func_uname"
+if test "x$ac_cv_func_uname" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_UNAME 1
 _ACEOF
 
 fi
@@ -26099,14 +21285,12 @@ done
 have_socket=no
 
 # Check whether --enable-sockets was given.
-if test "${enable_sockets+set}" = set; then
+if test "${enable_sockets+set}" = set; then :
   enableval=$enable_sockets;
     case "${enableval}" in
       yes) have_socket=yes ;;
       no)  have_socket=no ;;
-      *)   { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-sockets" >&5
-$as_echo "$as_me: error: bad value ${enableval} for --enable-sockets" >&2;}
-   { (exit 1); exit 1; }; } ;;
+      *)   as_fn_error "bad value ${enableval} for --enable-sockets" "$LINENO" 5 ;;
     esac
 
 else
@@ -26116,9 +21300,7 @@ fi
 
 if test "x$have_socket" = "xyes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SOCKET 1
-_ACEOF
+$as_echo "#define HAVE_SOCKET 1" >>confdefs.h
 
 fi
 
@@ -26128,14 +21310,12 @@ fi
 have_dlloader=no
 
 # Check whether --enable-dlloader was given.
-if test "${enable_dlloader+set}" = set; then
+if test "${enable_dlloader+set}" = set; then :
   enableval=$enable_dlloader;
     case "${enableval}" in
       yes) have_dlloader=yes ;;
       no)  have_dlloader=no ;;
-      *)   { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-dlloader" >&5
-$as_echo "$as_me: error: bad value ${enableval} for --enable-dlloader" >&2;}
-   { (exit 1); exit 1; }; } ;;
+      *)   as_fn_error "bad value ${enableval} for --enable-dlloader" "$LINENO" 5 ;;
     esac
 
 else
@@ -26149,13 +21329,9 @@ if test "x$have_dlloader" = "xyes" ; then
   saved_LIBS="$LIBS"
   LIBS="$LIBS -ldl"
 
-  { $as_echo "$as_me:$LINENO: checking for dlopen" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen" >&5
 $as_echo_n "checking for dlopen... " >&6; }
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <dlfcn.h>
 int
@@ -26166,45 +21342,18 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   have_dlloader=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	have_dlloader=no
+  have_dlloader=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-  { $as_echo "$as_me:$LINENO: result: $have_dlloader" >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_dlloader" >&5
 $as_echo "$have_dlloader" >&6; }
   if test "x$have_dlloader" = "xyes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DLOPEN 1
-_ACEOF
+$as_echo "#define HAVE_DLOPEN 1" >>confdefs.h
 
   else
     LIBS="$saved_LIBS"
@@ -26231,16 +21380,16 @@ _ACEOF
 # Set of available languages now in po/LINGUAS.
 
 
-  { $as_echo "$as_me:$LINENO: checking whether NLS is requested" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
 $as_echo_n "checking whether NLS is requested... " >&6; }
     # Check whether --enable-nls was given.
-if test "${enable_nls+set}" = set; then
+if test "${enable_nls+set}" = set; then :
   enableval=$enable_nls; USE_NLS=$enableval
 else
   USE_NLS=yes
 fi
 
-  { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
 $as_echo "$USE_NLS" >&6; }
 
 
@@ -26281,9 +21430,9 @@ rm -f conf$$.file
 
 # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_MSGFMT+set}" = set; then
+if test "${ac_cv_path_MSGFMT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case "$MSGFMT" in
@@ -26313,18 +21462,18 @@ esac
 fi
 MSGFMT="$ac_cv_path_MSGFMT"
 if test "$MSGFMT" != ":"; then
-  { $as_echo "$as_me:$LINENO: result: $MSGFMT" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
 $as_echo "$MSGFMT" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
   # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_GMSGFMT+set}" = set; then
+if test "${ac_cv_path_GMSGFMT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $GMSGFMT in
@@ -26337,14 +21486,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
@@ -26353,10 +21502,10 @@ esac
 fi
 GMSGFMT=$ac_cv_path_GMSGFMT
 if test -n "$GMSGFMT"; then
-  { $as_echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
 $as_echo "$GMSGFMT" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -26404,9 +21553,9 @@ rm -f conf$$.file
 
 # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_XGETTEXT+set}" = set; then
+if test "${ac_cv_path_XGETTEXT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case "$XGETTEXT" in
@@ -26436,10 +21585,10 @@ esac
 fi
 XGETTEXT="$ac_cv_path_XGETTEXT"
 if test "$XGETTEXT" != ":"; then
-  { $as_echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
 $as_echo "$XGETTEXT" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -26482,9 +21631,9 @@ rm -f conf$$.file
 
 # Extract the first word of "msgmerge", so it can be a program name with args.
 set dummy msgmerge; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_MSGMERGE+set}" = set; then
+if test "${ac_cv_path_MSGMERGE+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case "$MSGMERGE" in
@@ -26513,10 +21662,10 @@ esac
 fi
 MSGMERGE="$ac_cv_path_MSGMERGE"
 if test "$MSGMERGE" != ":"; then
-  { $as_echo "$as_me:$LINENO: result: $MSGMERGE" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
 $as_echo "$MSGMERGE" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -26548,7 +21697,7 @@ fi
 
 
 # Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
+if test "${with_gnu_ld+set}" = set; then :
   withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
 else
   with_gnu_ld=no
@@ -26570,7 +21719,7 @@ fi
 ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
 $as_echo_n "checking for ld used by GCC... " >&6; }
   case $host in
   *-*-mingw*)
@@ -26600,13 +21749,13 @@ $as_echo_n "checking for ld used by GCC... " >&6; }
     ;;
   esac
 elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
 $as_echo_n "checking for GNU ld... " >&6; }
 else
-  { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
 $as_echo_n "checking for non-GNU ld... " >&6; }
 fi
-if test "${acl_cv_path_LD+set}" = set; then
+if test "${acl_cv_path_LD+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
@@ -26634,18 +21783,16 @@ fi
 
 LD="$acl_cv_path_LD"
 if test -n "$LD"; then
-  { $as_echo "$as_me:$LINENO: result: $LD" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
 $as_echo "$LD" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${acl_cv_prog_gnu_ld+set}" = set; then
+if test "${acl_cv_prog_gnu_ld+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   # I'd rather use --version here, but apparently some GNU ld's only accept -v.
@@ -26656,16 +21803,16 @@ case `$LD -v 2>&1 </dev/null` in
   acl_cv_prog_gnu_ld=no ;;
 esac
 fi
-{ $as_echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
 $as_echo "$acl_cv_prog_gnu_ld" >&6; }
 with_gnu_ld=$acl_cv_prog_gnu_ld
 
 
 
 
-                                                { $as_echo "$as_me:$LINENO: checking for shared library run path origin" >&5
+                                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
 $as_echo_n "checking for shared library run path origin... " >&6; }
-if test "${acl_cv_rpath+set}" = set; then
+if test "${acl_cv_rpath+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -26676,7 +21823,7 @@ else
     acl_cv_rpath=done
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
 $as_echo "$acl_cv_rpath" >&6; }
   wl="$acl_cv_wl"
   acl_libext="$acl_cv_libext"
@@ -26688,7 +21835,7 @@ $as_echo "$acl_cv_rpath" >&6; }
   acl_hardcode_direct="$acl_cv_hardcode_direct"
   acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
     # Check whether --enable-rpath was given.
-if test "${enable_rpath+set}" = set; then
+if test "${enable_rpath+set}" = set; then :
   enableval=$enable_rpath; :
 else
   enable_rpath=yes
@@ -26737,7 +21884,7 @@ fi
 
 
 # Check whether --with-libiconv-prefix was given.
-if test "${with_libiconv_prefix+set}" = set; then
+if test "${with_libiconv_prefix+set}" = set; then :
   withval=$with_libiconv_prefix;
     if test "X$withval" = "Xno"; then
       use_additional=no
@@ -27177,18 +22324,14 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
 $as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
-if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then
+if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   gt_save_LIBS="$LIBS"
      LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
-     cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <CoreFoundation/CFPreferences.h>
 int
@@ -27199,61 +22342,30 @@ CFPreferencesCopyAppValue(NULL, NULL)
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   gt_cv_func_CFPreferencesCopyAppValue=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	gt_cv_func_CFPreferencesCopyAppValue=no
+  gt_cv_func_CFPreferencesCopyAppValue=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
      LIBS="$gt_save_LIBS"
 fi
-{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
 $as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
   if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CFPREFERENCESCOPYAPPVALUE 1
-_ACEOF
+$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
 
   fi
-    { $as_echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
 $as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
-if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then
+if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   gt_save_LIBS="$LIBS"
      LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
-     cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <CoreFoundation/CFLocale.h>
 int
@@ -27264,47 +22376,20 @@ CFLocaleCopyCurrent();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   gt_cv_func_CFLocaleCopyCurrent=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	gt_cv_func_CFLocaleCopyCurrent=no
+  gt_cv_func_CFLocaleCopyCurrent=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
      LIBS="$gt_save_LIBS"
 fi
-{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
 $as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
   if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CFLOCALECOPYCURRENT 1
-_ACEOF
+$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
 
   fi
   INTL_MACOSX_LIBS=
@@ -27349,16 +22434,12 @@ typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
           gt_expression_test_code=
         fi
 
-        { $as_echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
 $as_echo_n "checking for GNU gettext in libc... " >&6; }
-if { as_var=$gt_func_gnugettext_libc; eval "test \"\${$as_var+set}\" = set"; }; then
+if { as_var=$gt_func_gnugettext_libc; eval "test \"\${$as_var+set}\" = set"; }; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
 $gt_revision_test_code
@@ -27373,42 +22454,16 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_b
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   eval "$gt_func_gnugettext_libc=yes"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$gt_func_gnugettext_libc=no"
+  eval "$gt_func_gnugettext_libc=no"
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$gt_func_gnugettext_libc'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+eval ac_res=\$$gt_func_gnugettext_libc
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
 
         if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
@@ -27442,19 +22497,15 @@ $as_echo "$ac_res" >&6; }
   done
 
 
-  { $as_echo "$as_me:$LINENO: checking for iconv" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
 $as_echo_n "checking for iconv... " >&6; }
-if test "${am_cv_func_iconv+set}" = set; then
+if test "${am_cv_func_iconv+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
     am_cv_func_iconv="no, consider installing GNU libiconv"
     am_cv_lib_iconv=no
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 #include <iconv.h>
@@ -27468,46 +22519,15 @@ iconv_t cd = iconv_open("","");
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   am_cv_func_iconv=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
     if test "$am_cv_func_iconv" != yes; then
       am_save_LIBS="$LIBS"
       LIBS="$LIBS $LIBICONV"
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 #include <iconv.h>
@@ -27521,49 +22541,22 @@ iconv_t cd = iconv_open("","");
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   am_cv_lib_iconv=yes
         am_cv_func_iconv=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
       LIBS="$am_save_LIBS"
     fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
 $as_echo "$am_cv_func_iconv" >&6; }
   if test "$am_cv_func_iconv" = yes; then
-    { $as_echo "$as_me:$LINENO: checking for working iconv" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
 $as_echo_n "checking for working iconv... " >&6; }
-if test "${am_cv_func_iconv_works+set}" = set; then
+if test "${am_cv_func_iconv_works+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -27571,17 +22564,13 @@ else
       if test $am_cv_lib_iconv = yes; then
         LIBS="$LIBS $LIBICONV"
       fi
-      if test "$cross_compiling" = yes; then
+      if test "$cross_compiling" = yes; then :
   case "$host_os" in
            aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
            *)            am_cv_func_iconv_works="guessing yes" ;;
          esac
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <iconv.h>
@@ -27641,46 +22630,19 @@ int main ()
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_run "$LINENO"; then :
   am_cv_func_iconv_works=yes
 else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-am_cv_func_iconv_works=no
+  am_cv_func_iconv_works=no
 fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-
       LIBS="$am_save_LIBS"
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
 $as_echo "$am_cv_func_iconv_works" >&6; }
     case "$am_cv_func_iconv_works" in
       *no) am_func_iconv=no am_cv_lib_iconv=no ;;
@@ -27691,15 +22653,13 @@ $as_echo "$am_cv_func_iconv_works" >&6; }
   fi
   if test "$am_func_iconv" = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ICONV 1
-_ACEOF
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
 
   fi
   if test "$am_cv_lib_iconv" = yes; then
-    { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
 $as_echo_n "checking how to link with libiconv... " >&6; }
-    { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
 $as_echo "$LIBICONV" >&6; }
   else
             CPPFLAGS="$am_save_CPPFLAGS"
@@ -27729,7 +22689,7 @@ $as_echo "$LIBICONV" >&6; }
 
 
 # Check whether --with-libintl-prefix was given.
-if test "${with_libintl_prefix+set}" = set; then
+if test "${with_libintl_prefix+set}" = set; then :
   withval=$with_libintl_prefix;
     if test "X$withval" = "Xno"; then
       use_additional=no
@@ -28145,20 +23105,16 @@ fi
     done
   fi
 
-          { $as_echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
 $as_echo_n "checking for GNU gettext in libintl... " >&6; }
-if { as_var=$gt_func_gnugettext_libintl; eval "test \"\${$as_var+set}\" = set"; }; then
+if { as_var=$gt_func_gnugettext_libintl; eval "test \"\${$as_var+set}\" = set"; }; then :
   $as_echo_n "(cached) " >&6
 else
   gt_save_CPPFLAGS="$CPPFLAGS"
             CPPFLAGS="$CPPFLAGS $INCINTL"
             gt_save_LIBS="$LIBS"
             LIBS="$LIBS $LIBINTL"
-                        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+                        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
 $gt_revision_test_code
@@ -28177,45 +23133,16 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   eval "$gt_func_gnugettext_libintl=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$gt_func_gnugettext_libintl=no"
+else
+  eval "$gt_func_gnugettext_libintl=no"
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
                         if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
               LIBS="$LIBS $LIBICONV"
-              cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
 $gt_revision_test_code
@@ -28234,48 +23161,20 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   LIBINTL="$LIBINTL $LIBICONV"
                 LTLIBINTL="$LTLIBINTL $LTLIBICONV"
                 eval "$gt_func_gnugettext_libintl=yes"
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
             fi
             CPPFLAGS="$gt_save_CPPFLAGS"
             LIBS="$gt_save_LIBS"
 fi
-ac_res=`eval 'as_val=${'$gt_func_gnugettext_libintl'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+eval ac_res=\$$gt_func_gnugettext_libintl
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
         fi
 
@@ -28303,21 +23202,19 @@ $as_echo "$ac_res" >&6; }
     if test "$gt_use_preinstalled_gnugettext" = "yes" \
        || test "$nls_cv_use_gnu_gettext" = "yes"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define ENABLE_NLS 1
-_ACEOF
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
 
     else
       USE_NLS=no
     fi
   fi
 
-  { $as_echo "$as_me:$LINENO: checking whether to use NLS" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5
 $as_echo_n "checking whether to use NLS... " >&6; }
-  { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
 $as_echo "$USE_NLS" >&6; }
   if test "$USE_NLS" = "yes"; then
-    { $as_echo "$as_me:$LINENO: checking where the gettext function comes from" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
 $as_echo_n "checking where the gettext function comes from... " >&6; }
     if test "$gt_use_preinstalled_gnugettext" = "yes"; then
       if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
@@ -28328,7 +23225,7 @@ $as_echo_n "checking where the gettext function comes from... " >&6; }
     else
       gt_source="included intl directory"
     fi
-    { $as_echo "$as_me:$LINENO: result: $gt_source" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5
 $as_echo "$gt_source" >&6; }
   fi
 
@@ -28336,9 +23233,9 @@ $as_echo "$gt_source" >&6; }
 
     if test "$gt_use_preinstalled_gnugettext" = "yes"; then
       if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
-        { $as_echo "$as_me:$LINENO: checking how to link with libintl" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
 $as_echo_n "checking how to link with libintl... " >&6; }
-        { $as_echo "$as_me:$LINENO: result: $LIBINTL" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
 $as_echo "$LIBINTL" >&6; }
 
   for element in $INCINTL; do
@@ -28366,14 +23263,10 @@ $as_echo "$LIBINTL" >&6; }
       fi
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETTEXT 1
-_ACEOF
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DCGETTEXT 1
-_ACEOF
+$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
 
     fi
 
@@ -28419,7 +23312,7 @@ outfile="$cs_ac_config_info"-tmp
 
 rm -f $outfile
 
-{ $as_echo "$as_me:$LINENO: initializing $cs_ac_config_info" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: initializing $cs_ac_config_info" >&5
 $as_echo "$as_me: initializing $cs_ac_config_info" >&6;}
 
 
@@ -28432,6 +23325,7 @@ echo "# Configuration:" >> $outfile
 echo "# --------------"    >> $outfile
 echo "
 # use debugging code:                              "$debug"
+# use graphical user interface:                    "$have_gui"
 # MPI (Message Passing Interface) support:         "$cs_have_mpi"
 # OpenMP support:                                  "$cs_have_openmp"
 # BLAS (Basic Linear Algebra Subprograms) support: "$cs_have_blas"
@@ -28455,7 +23349,7 @@ if test "${cs_ac_cc_version}" != "" -o "${cs_ac_cc_version_full}" != "" ; then
     echo "${cs_ac_cc_version_full}" | sed 's/^/# /' >> $outfile
   fi
 else
-  { $as_echo "$as_me:$LINENO: C compiler version info unavailable for configuration file" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: C compiler version info unavailable for configuration file" >&5
 $as_echo "$as_me: C compiler version info unavailable for configuration file" >&6;}
 fi
 
@@ -28472,7 +23366,7 @@ if test "${cs_ac_fc_version}" != "" -o "${cs_ac_fc_version_full}" != "" ; then
     echo "${cs_ac_fc_version_full}" | sed 's/^/# /' >> $outfile
   fi
 else
-  { $as_echo "$as_me:$LINENO: Fortran compiler version info unavailable for configuration file" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Fortran compiler version info unavailable for configuration file" >&5
 $as_echo "$as_me: Fortran compiler version info unavailable for configuration file" >&6;}
 fi
 
@@ -28482,12 +23376,12 @@ fi
 
 outfile="$cs_ac_config_info"-tmp
 
-{ $as_echo "$as_me:$LINENO: closing $cs_ac_config_info" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: closing $cs_ac_config_info" >&5
 $as_echo "$as_me: closing $cs_ac_config_info" >&6;}
 
 diff $outfile $cs_ac_config_info > /dev/null 2>&1
 if test $? -eq 0 ; then
-  { $as_echo "$as_me:$LINENO: $cs_ac_config_info is unchanged" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: $cs_ac_config_info is unchanged" >&5
 $as_echo "$as_me: $cs_ac_config_info is unchanged" >&6;}
   rm -f $outfile
 else
@@ -28502,7 +23396,7 @@ cs_config_comments=cs_config_comments_include
 
 # Main configuration
 
-ac_config_files="$ac_config_files Makefile po/Makefile.in src/Makefile src/apps/Makefile src/base/Makefile src/atmo/Makefile src/cfbl/Makefile src/cogz/Makefile src/cplv/Makefile src/ctwr/Makefile src/elec/Makefile src/fuel/Makefile src/mati/Makefile src/pprt/Makefile src/lagr/Makefile src/rayt/Makefile libsyrcs/Makefile gui/Makefile gui/Base/Makefile gui/Pages/Makefile doc/Makefile doc/style/csvers.tex doc/howto/Makefile doc/howto/graphics/Makefile doc/refcard/Makefile doc/refcard/graph [...]
+ac_config_files="$ac_config_files Makefile po/Makefile.in src/Makefile src/apps/Makefile src/base/Makefile src/atmo/Makefile src/cfbl/Makefile src/cogz/Makefile src/cplv/Makefile src/ctwr/Makefile src/elec/Makefile src/fuel/Makefile src/mati/Makefile src/pprt/Makefile src/lagr/Makefile src/rayt/Makefile libsyrcs/Makefile gui/Makefile gui/Base/Makefile gui/Pages/Makefile doc/Makefile doc/style/csvers.tex doc/howto/Makefile doc/howto/graphics/Makefile doc/developper/Makefile doc/developper [...]
 
 
 #------------------------------------------------------------------------------
@@ -28534,13 +23428,13 @@ _ACEOF
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
       BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) $as_unset $ac_var ;;
+      *) { eval $ac_var=; unset $ac_var;} ;;
       esac ;;
     esac
   done
@@ -28548,8 +23442,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
   (set) 2>&1 |
     case $as_nl`(ac_space=' '; set) 2>&1` in #(
     *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
 	"s/'/'\\\\''/g;
 	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
@@ -28572,11 +23466,11 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
     test "x$cache_file" != "x/dev/null" &&
-      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
 $as_echo "$as_me: updating cache $cache_file" >&6;}
     cat confcache >$cache_file
   else
-    { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
@@ -28596,71 +23490,59 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
-  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
 LIBOBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
 
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
 if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_MEI_TRUE}" && test -z "${HAVE_MEI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_MEI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_MEI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "conditional \"HAVE_MEI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LIBXML2_TRUE}" && test -z "${HAVE_LIBXML2_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LIBXML2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LIBXML2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "conditional \"HAVE_LIBXML2\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_MPI_TRUE}" && test -z "${HAVE_MPI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_MPI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_MPI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "conditional \"HAVE_MPI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_GUI_TRUE}" && test -z "${HAVE_GUI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_GUI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_GUI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "conditional \"HAVE_GUI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
 : ${CONFIG_STATUS=./config.status}
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
 # Generated by $as_me.
 # Run this file to recreate the current configuration.
@@ -28670,17 +23552,18 @@ cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 debug=false
 ac_cs_recheck=false
 ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
@@ -28688,23 +23571,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
 as_nl='
 '
 export as_nl
@@ -28712,7 +23587,13 @@ export as_nl
 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
   as_echo='printf %s\n'
   as_echo_n='printf %s'
 else
@@ -28723,7 +23604,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in
+      case $arg in #(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -28746,13 +23627,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
   }
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
 
 # IFS
 # We need space, tab and new line, in precisely that order.  Quoting is
@@ -28762,15 +23636,15 @@ fi
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -28782,12 +23656,16 @@ if test "x$as_myself" = x; then
 fi
 if test ! -f "$as_myself"; then
   $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
@@ -28799,7 +23677,89 @@ export LC_ALL
 LANGUAGE=C
 export LANGUAGE
 
-# Required to use basename.
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$?; test $as_status -eq 0 && as_status=1
+  if test "$3"; then
+    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  fi
+  $as_echo "$as_me: error: $1" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -28813,8 +23773,12 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
 as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
@@ -28834,76 +23798,25 @@ $as_echo X/"$0" |
 	  }
 	  s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
+case `echo -n x` in #(((((
 -n*)
-  case `echo 'x\c'` in
+  case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
   esac;;
 *)
   ECHO_N='-n';;
 esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
 
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
@@ -28932,8 +23845,56 @@ fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
@@ -28952,10 +23913,10 @@ else
       if test -d "$1"; then
 	test -d "$1/.";
       else
-	case $1 in
+	case $1 in #(
 	-*)set "./$1";;
 	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
 	???[sx]*):;;*)false;;esac;fi
     '\'' sh
   '
@@ -28970,13 +23931,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
 exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
 
-# Save the log message, to keep $[0] and so on meaningful, and to
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ncs $as_me 2.0.0-beta2, which was
-generated by GNU Autoconf 2.63.  Invocation command line was
+This file was extended by ncs $as_me 2.0.0-rc1, which was
+generated by GNU Autoconf 2.65.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -29008,13 +23975,15 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
 
-Usage: $0 [OPTION]... [FILE]...
+Usage: $0 [OPTION]... [TAG]...
 
   -h, --help       print this help, then exit
   -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
   -q, --quiet, --silent
                    do not print progress messages
   -d, --debug      don't remove temporary files
@@ -29033,16 +24002,17 @@ $config_headers
 Configuration commands:
 $config_commands
 
-Report bugs to <bug-autoconf at gnu.org>."
+Report bugs to <saturne-support at edf.fr>."
 
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-ncs config.status 2.0.0-beta2
-configured by $0, generated by GNU Autoconf 2.63,
-  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+ncs config.status 2.0.0-rc1
+configured by $0, generated by GNU Autoconf 2.65,
+  with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2008 Free Software Foundation, Inc.
+Copyright (C) 2009 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -29078,6 +24048,8 @@ do
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
     $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
@@ -29085,20 +24057,19 @@ do
     case $ac_optarg in
     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
-    CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
   --header | --heade | --head | --hea )
     $ac_shift
     case $ac_optarg in
     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
-    CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    { $as_echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; };;
+    as_fn_error "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
   --help | --hel | -h )
     $as_echo "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
@@ -29106,11 +24077,10 @@ Try \`$0 --help' for more information." >&2
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) { $as_echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; } ;;
+  -*) as_fn_error "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
 
-  *) ac_config_targets="$ac_config_targets $1"
+  *) as_fn_append ac_config_targets " $1"
      ac_need_defaults=false ;;
 
   esac
@@ -29631,6 +24601,9 @@ do
     "doc/style/csvers.tex") CONFIG_FILES="$CONFIG_FILES doc/style/csvers.tex" ;;
     "doc/howto/Makefile") CONFIG_FILES="$CONFIG_FILES doc/howto/Makefile" ;;
     "doc/howto/graphics/Makefile") CONFIG_FILES="$CONFIG_FILES doc/howto/graphics/Makefile" ;;
+    "doc/developper/Makefile") CONFIG_FILES="$CONFIG_FILES doc/developper/Makefile" ;;
+    "doc/developper/graphics/Makefile") CONFIG_FILES="$CONFIG_FILES doc/developper/graphics/Makefile" ;;
+    "doc/install/Makefile") CONFIG_FILES="$CONFIG_FILES doc/install/Makefile" ;;
     "doc/refcard/Makefile") CONFIG_FILES="$CONFIG_FILES doc/refcard/Makefile" ;;
     "doc/refcard/graphics/Makefile") CONFIG_FILES="$CONFIG_FILES doc/refcard/graphics/Makefile" ;;
     "doc/theory/Makefile") CONFIG_FILES="$CONFIG_FILES doc/theory/Makefile" ;;
@@ -29639,15 +24612,11 @@ do
     "doc/tutorial/graphics/Makefile") CONFIG_FILES="$CONFIG_FILES doc/tutorial/graphics/Makefile" ;;
     "doc/user/Makefile") CONFIG_FILES="$CONFIG_FILES doc/user/Makefile" ;;
     "doc/user/graphics/Makefile") CONFIG_FILES="$CONFIG_FILES doc/user/graphics/Makefile" ;;
-    "bin/cs") CONFIG_FILES="$CONFIG_FILES bin/cs" ;;
-    "bin/cs_config.py") CONFIG_FILES="$CONFIG_FILES bin/cs_config.py" ;;
+    "bin/cs_config_build.py") CONFIG_FILES="$CONFIG_FILES bin/cs_config_build.py" ;;
     "bin/runcase") CONFIG_FILES="$CONFIG_FILES bin/runcase" ;;
-    "bin/runcase_coupling") CONFIG_FILES="$CONFIG_FILES bin/runcase_coupling" ;;
     "bin/SaturneGUI") CONFIG_FILES="$CONFIG_FILES bin/SaturneGUI" ;;
 
-  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
+  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
@@ -29674,7 +24643,7 @@ $debug ||
   trap 'exit_status=$?
   { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
 ' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
+  trap 'as_fn_exit 1' 1 2 13 15
 }
 # Create a (secure) tmp directory for tmp files.
 
@@ -29685,11 +24654,7 @@ $debug ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
-} ||
-{
-   $as_echo "$as_me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
+} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -29714,10 +24679,16 @@ else
   # The final `:' finishes the AND list.
   ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }'
 fi
-ac_cr='
'
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
 ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
 if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
+  ac_cs_awk_cr='\r'
 else
   ac_cs_awk_cr=$ac_cr
 fi
@@ -29734,9 +24705,7 @@ _ACEOF
   echo "_ACEOF"
 } >conf$$files.sh &&
 . ./conf$$files.sh ||
-  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
 rm -f conf$$files.sh
 
 {
@@ -29744,24 +24713,18 @@ rm -f conf$$files.sh
   echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
   echo "_ACEOF"
 } >conf$$subs.sh ||
-  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
 ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   . ./conf$$subs.sh ||
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
 
   ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
   if test $ac_delim_n = $ac_delim_num; then
     break
   elif $ac_last_try; then
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -29783,7 +24746,7 @@ s/'"$ac_delim"'$//
 t delim
 :nl
 h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
 t more1
 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
 p
@@ -29797,7 +24760,7 @@ s/.\{148\}//
 t nl
 :delim
 h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
 t more2
 s/["\\]/\\&/g; s/^/"/; s/$/"/
 p
@@ -29856,9 +24819,7 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
 else
   cat
 fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
-$as_echo "$as_me: error: could not setup config files machinery" >&2;}
-   { (exit 1); exit 1; }; }
+  || as_fn_error "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
 # VPATH may cause trouble with some makes, so we remove $(srcdir),
@@ -29899,9 +24860,7 @@ for ac_last_try in false false :; do
   if test -z "$ac_t"; then
     break
   elif $ac_last_try; then
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -29986,9 +24945,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
 _ACEOF
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
-$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "could not setup config headers machinery" "$LINENO" 5
 fi # test -n "$CONFIG_HEADERS"
 
 
@@ -30001,9 +24958,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
-$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
-   { (exit 1); exit 1; }; };;
+  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -30031,12 +24986,10 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-   { (exit 1); exit 1; }; };;
+	   as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
       esac
       case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      ac_file_inputs="$ac_file_inputs '$ac_f'"
+      as_fn_append ac_file_inputs " '$ac_f'"
     done
 
     # Let's still pretend it is `configure' which instantiates (i.e., don't
@@ -30047,7 +25000,7 @@ $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
 	`' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
 $as_echo "$as_me: creating $ac_file" >&6;}
     fi
     # Neutralize special characters interpreted by sed in replacement strings.
@@ -30060,9 +25013,7 @@ $as_echo "$as_me: creating $ac_file" >&6;}
 
     case $ac_tag in
     *:-:* | *:-) cat >"$tmp/stdin" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; } ;;
+      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
     esac
     ;;
   esac
@@ -30090,47 +25041,7 @@ $as_echo X"$ac_file" |
 	    q
 	  }
 	  s/.*/./; q'`
-  { as_dir="$ac_dir"
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
+  as_dir="$ac_dir"; as_fn_mkdir_p
   ac_builddir=.
 
 case "$ac_dir" in
@@ -30187,7 +25098,6 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # If the template does not know about datarootdir, expand it.
 # FIXME: This hack should be removed a few years after 2.60.
 ac_datarootdir_hack=; ac_datarootdir_seen=
-
 ac_sed_dataroot='
 /datarootdir/ {
   p
@@ -30197,12 +25107,11 @@ ac_sed_dataroot='
 /@docdir@/p
 /@infodir@/p
 /@localedir@/p
-/@mandir@/p
-'
+/@mandir@/p'
 case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
@@ -30212,7 +25121,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   s&@infodir@&$infodir&g
   s&@localedir@&$localedir&g
   s&@mandir@&$mandir&g
-    s&\\\${datarootdir}&$datarootdir&g' ;;
+  s&\\\${datarootdir}&$datarootdir&g' ;;
 esac
 _ACEOF
 
@@ -30246,14 +25155,12 @@ if $ac_cs_awk_getline; then
 else
   $AWK -f "$tmp/subs.awk" | $SHELL
 fi >$tmp/out \
-  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+  || as_fn_error "could not create $ac_file" "$LINENO" 5
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
   { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined." >&5
 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined." >&2;}
@@ -30263,9 +25170,7 @@ which seems to be undefined.  Please make sure it is defined." >&2;}
   -) cat "$tmp/out" && rm -f "$tmp/out";;
   *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
   esac \
-  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+  || as_fn_error "could not create $ac_file" "$LINENO" 5
  ;;
   :H)
   #
@@ -30276,25 +25181,19 @@ $as_echo "$as_me: error: could not create $ac_file" >&2;}
       $as_echo "/* $configure_input  */" \
       && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
     } >"$tmp/config.h" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+      || as_fn_error "could not create $ac_file" "$LINENO" 5
     if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
 $as_echo "$as_me: $ac_file is unchanged" >&6;}
     else
       rm -f "$ac_file"
       mv "$tmp/config.h" "$ac_file" \
-	|| { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+	|| as_fn_error "could not create $ac_file" "$LINENO" 5
     fi
   else
     $as_echo "/* $configure_input  */" \
       && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
-$as_echo "$as_me: error: could not create -" >&2;}
-   { (exit 1); exit 1; }; }
+      || as_fn_error "could not create -" "$LINENO" 5
   fi
 # Compute "$ac_file"'s index in $config_headers.
 _am_arg="$ac_file"
@@ -30332,25 +25231,35 @@ $as_echo X"$_am_arg" |
 	  s/.*/./; q'`/stamp-h$_am_stamp_count
  ;;
 
-  :C)  { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
 $as_echo "$as_me: executing $ac_file commands" >&6;}
  ;;
   esac
 
 
   case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
-  # Strip MF so we end up with the name of the file.
-  mf=`echo "$mf" | sed -e 's/:.*$//'`
-  # Check whether this is an Automake generated Makefile or not.
-  # We used to match only the files named `Makefile.in', but
-  # some people rename them; so instead we look at the file content.
-  # Grep'ing the first line is not enough: some people post-process
-  # each Makefile.in and add a new line on top of each file to say so.
-  # Grep'ing the whole file is not good either: AIX grep has a line
-  # limit of 2048, but all sed's we know have understand at least 4000.
-  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-    dirpart=`$as_dirname -- "$mf" ||
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
 $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$mf" : 'X\(//\)[^/]' \| \
 	 X"$mf" : 'X\(//\)$' \| \
@@ -30373,28 +25282,28 @@ $as_echo X"$mf" |
 	    q
 	  }
 	  s/.*/./; q'`
-  else
-    continue
-  fi
-  # Extract the definition of DEPDIR, am__include, and am__quote
-  # from the Makefile without running `make'.
-  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-  test -z "$DEPDIR" && continue
-  am__include=`sed -n 's/^am__include = //p' < "$mf"`
-  test -z "am__include" && continue
-  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-  # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n 's/^U = //p' < "$mf"`
-  # Find all dependency output files, they are included files with
-  # $(DEPDIR) in their names.  We invoke sed twice because it is the
-  # simplest approach to changing $(DEPDIR) to its actual value in the
-  # expansion.
-  for file in `sed -n "
-    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-    # Make sure the directory exists.
-    test -f "$dirpart/$file" && continue
-    fdir=`$as_dirname -- "$file" ||
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
 $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$file" : 'X\(//\)[^/]' \| \
 	 X"$file" : 'X\(//\)$' \| \
@@ -30417,51 +25326,12 @@ $as_echo X"$file" |
 	    q
 	  }
 	  s/.*/./; q'`
-    { as_dir=$dirpart/$fdir
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
     done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
-    # echo "creating $dirpart/$file"
-    echo '# dummy' > "$dirpart/$file"
   done
-done
+}
  ;;
     "libtool":C)
 
@@ -31536,15 +26406,12 @@ _LT_EOF
 done # for ac_tag
 
 
-{ (exit 0); exit 0; }
+as_fn_exit 0
 _ACEOF
-chmod +x $CONFIG_STATUS
 ac_clean_files=$ac_clean_files_save
 
 test $ac_write_fail = 0 ||
-  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
 
 
 # configure is writing to config.log, and then calls config.status.
@@ -31565,10 +26432,10 @@ if test "$no_create" != yes; then
   exec 5>>config.log
   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
   # would make configure fail if this is the last instruction.
-  $ac_cs_success || { (exit 1); exit 1; }
+  $ac_cs_success || as_fn_exit $?
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
@@ -31597,6 +26464,7 @@ rm -f cs_config_comments_include
 echo
 echo "Configuration options:"
 echo " use debugging code: "$debug""
+echo " use graphical user interface: "$have_gui""
 echo " MPI (Message Passing Interface) support: "$cs_have_mpi""
 echo " OpenMP support: "$cs_have_openmp""
 echo " BLAS (Basic Linear Algebra Subprograms) support: "$cs_have_blas""
diff --git a/configure.ac b/configure.ac
index ef82fd6..52ee5fc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -52,7 +52,7 @@ m4_define([cs_licence_c_comment],
 m4_define([cs_major_version], [2])
 m4_define([cs_minor_version], [0])
 m4_define([cs_release_version], [0])
-m4_define([cs_version_extra], [-beta2])
+m4_define([cs_version_extra], [-rc1])
 m4_define([cs_version_string],
           [cs_major_version.cs_minor_version.cs_release_version@&t at cs_version_extra])
 
@@ -266,6 +266,8 @@ AC_CHECK_SIZEOF([long], [cs])
 AC_CHECK_SIZEOF([float], [cs])
 AC_CHECK_SIZEOF([double], [cs])
 
+CS_AC_TEST_FC_FLUSH
+
 #------------------------------------------------------------------------------
 # Determine OpenMP support
 #------------------------------------------------------------------------------
@@ -336,7 +338,7 @@ fi
 #------------------------------------------------------------------------------
 
 CS_AC_TEST_BFT(["1.1.0"])
-CS_AC_TEST_FVM(["0.14.0"])
+CS_AC_TEST_FVM(["0.15.0"])
 CS_AC_TEST_MEI
 CS_AC_TEST_LIBXML2
 CS_AC_TEST_BLAS([$cs_have_openmp])
@@ -350,8 +352,16 @@ CS_AC_TEST_SYRTHES
 AC_ARG_WITH(prepro, [AS_HELP_STRING([--with-prepro=PATH],
                                     [specify prefix directory for the Preprocessor])])
 
-AC_CHECK_PROG(ecs_prefix, cs_preprocess, $with_prepro, , $with_prepro/bin, )
-AC_SUBST(ecs_prefix)
+AC_PATH_PROG([ecs], [cs_preprocess],
+             [no],
+             [$with_prepro/bin$PATH_SEPARATOR$PATH])
+
+if test "x${ecs}" = "xno"; then
+  AC_MSG_FAILURE([cannot find Code_Saturne preprocessor])
+else
+  ecs_bindir=`dirname ${ecs}`
+  AC_SUBST(ecs_bindir)
+fi
 
 #------------------------------------------------------------------------------
 # Enables Code_Saturne graphical user interface
@@ -368,7 +378,6 @@ AC_ARG_ENABLE(gui, [AS_HELP_STRING([--disable-gui],
   ],
   [ have_gui=yes ]
 )
-AM_CONDITIONAL(HAVE_GUI, [test "x$have_gui" = "xyes"])
 
 #------------------------------------------------------------------------------
 # Checks for Python support.
@@ -392,6 +401,71 @@ PYTHON=${PYEXE}
 AM_PATH_PYTHON([2.3])
 
 #------------------------------------------------------------------------------
+# Checks for PyQt support.
+#------------------------------------------------------------------------------
+
+AC_ARG_WITH(pyqt4-exec, [AS_HELP_STRING([--with-pyqt4-exec=PATH],
+                                        [specify prefix directory for PyQt4 developper tools (pyuic4 and pyrcc4)])],
+                        [PYQT4_EXE=${withval}],
+                        [PYQT4_EXE=none])dnl
+
+# Test for PyQt4
+if test "x$have_gui" == "xyes" ; then
+
+  AC_MSG_CHECKING([for PyQt4 version >= 4.3])
+
+  prog="[import sys, string
+try: import PyQt4
+except ImportError: sys.exit(1)
+from PyQt4.QtCore import *
+if map(int, string.split(QT_VERSION_STR, '.')) < [4,3,0]: sys.exit(1)
+if map(int, string.split(PYQT_VERSION_STR, '.')) < [4,3,0]: sys.exit(1)
+sys.exit(0)]"
+
+  ${PYTHON} -c "${prog}"
+  retval=$?
+
+  if test $retval -ne 0 ; then
+    AC_MSG_RESULT([no])
+    AC_MSG_FAILURE([cannot find PyQt4 support (>= 4.3), Graphical User Interface cannot be installed])
+    have_gui=no
+  else
+    AC_MSG_RESULT([yes])
+  fi
+
+fi
+
+# Test for PyQt4 developper tools
+if test "x$have_gui" == "xyes" ; then
+
+  if test "x${PYQT4_EXE}" == "xnone" ; then
+
+    # Try to find PyQt4 tools through Python interpreter
+    prog="[import os, sys
+from PyQt4.QtCore import QCoreApplication
+app = QCoreApplication([])
+path = app.applicationDirPath()
+sys.stdout.write(path)]"
+
+    PYPATH=`${PYTHON} -c "${prog}"`
+
+  else
+    PYPATH=${PYQT4_EXE}
+  fi
+
+  AC_PATH_PROG([PYUIC4], [pyuic4], ["no"], [${PYPATH}])
+  AC_PATH_PROG([PYRCC4], [pyrcc4], ["no"], [${PYPATH}])
+
+  if test "x$PYUIC4" == "xno" -o "x$PYRCC4" == "xno" ; then
+    AC_MSG_FAILURE([cannot find PyQt4 dev tools, Graphical User Interface cannot be installed])
+    have_gui=no
+  fi
+
+fi
+
+AM_CONDITIONAL(HAVE_GUI, [test "x$have_gui" = "xyes"])
+
+#------------------------------------------------------------------------------
 # Checks for header files.
 #------------------------------------------------------------------------------
 
@@ -503,6 +577,7 @@ CS_AC_CONFIG_INFO_INIT([cs_config_comments_include])
 
 CS_AC_CONFIG_INFO_EXTRA([
 # use debugging code:                              "$debug"
+# use graphical user interface:                    "$have_gui"
 # MPI (Message Passing Interface) support:         "$cs_have_mpi"
 # OpenMP support:                                  "$cs_have_openmp"
 # BLAS (Basic Linear Algebra Subprograms) support: "$cs_have_blas"
@@ -531,12 +606,13 @@ AC_CONFIG_FILES([Makefile po/Makefile.in
                  gui/Makefile gui/Base/Makefile gui/Pages/Makefile
                  doc/Makefile doc/style/csvers.tex
                  doc/howto/Makefile doc/howto/graphics/Makefile
+                 doc/developper/Makefile doc/developper/graphics/Makefile
+                 doc/install/Makefile
                  doc/refcard/Makefile doc/refcard/graphics/Makefile
                  doc/theory/Makefile doc/theory/graphics/Makefile
                  doc/tutorial/Makefile doc/tutorial/graphics/Makefile
                  doc/user/Makefile doc/user/graphics/Makefile
-                 bin/cs bin/cs_config.py
-                 bin/runcase bin/runcase_coupling bin/SaturneGUI])
+                 bin/cs_config_build.py bin/runcase bin/SaturneGUI])
 
 #------------------------------------------------------------------------------
 
@@ -566,6 +642,7 @@ rm -f cs_config_comments_include
 echo
 echo "Configuration options:"
 echo " use debugging code: "$debug""
+echo " use graphical user interface: "$have_gui""
 echo " MPI (Message Passing Interface) support: "$cs_have_mpi""
 echo " OpenMP support: "$cs_have_openmp""
 echo " BLAS (Basic Linear Algebra Subprograms) support: "$cs_have_blas""
diff --git a/cs_config.h.in b/cs_config.h.in
index 3a5e590..14045d4 100644
--- a/cs_config.h.in
+++ b/cs_config.h.in
@@ -158,6 +158,9 @@
 /* Define to the one symbol short name of this package. */
 #undef PACKAGE_TARNAME
 
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
diff --git a/data/thch/dp_ELE b/data/thch/dp_ELE
index 0ca39ff..25e85e0 100644
--- a/data/thch/dp_ELE
+++ b/data/thch/dp_ELE
@@ -5,7 +5,7 @@
 #
 # Nb d'especes NGAZG et Nb de points NPO (le fichier contient NGAZG blocs de NPO lignes chacun)
 # NGAZG NPO 
-   1   238
+   1   249
 #
 # Rayonnement : IXKABE = 0 -> XKABEL est lu mais pas utilise
 #               IXKABE = 1 -> XKABEL represente le coefficient d'absorption 
@@ -46,214 +46,225 @@
    2700.0      0.12498E+07  0.18029       520.33      0.13214E-03  0.11110E-03  0.86714E-01   0.0000     
    2800.0      0.13019E+07  0.17385       520.33      0.13214E-03  0.11405E-03  0.89019E-01   0.0000     
    2900.0      0.13539E+07  0.16786       520.33      0.13214E-03  0.11698E-03  0.91301E-01   0.0000     
-   3000.0      0.14059E+07  0.16226       520.33      0.13214E-03  0.11987E-03  0.93561E-01   0.0000     
-   3100.0      0.14580E+07  0.15703       520.33      0.13214E-03  0.12274E-03  0.95798E-01   0.0000     
-   3200.0      0.15100E+07  0.15212       520.33      0.30489E-03  0.12557E-03  0.98014E-01   0.0000     
-   3300.0      0.15620E+07  0.14751       520.33      0.67299E-03  0.12837E-03  0.10021       0.0000     
-   3400.0      0.16141E+07  0.14200       520.33      0.14257E-02  0.13114E-03  0.10240       0.0000     
-   3500.0      0.16661E+07  0.13700       520.33      0.29073E-02  0.13389E-03  0.10458       0.0000     
-   3600.0      0.17181E+07  0.13522       520.33      0.57210E-02  0.13660E-03  0.10679       0.0000     
-   3700.0      0.17702E+07  0.13157       520.33      0.10891E-01  0.13928E-03  0.10904       0.0000     
-   3800.0      0.18222E+07  0.12810       520.33      0.20098E-01  0.14193E-03  0.11140       0.0000     
-   3900.0      0.18742E+07  0.12482       520.33      0.36037E-01  0.14455E-03  0.11395       0.0000     
-   4000.0      0.19263E+07  0.12170       520.33      0.62885E-01  0.14715E-03  0.11682       0.0000     
-   4100.0      0.19783E+07  0.11873       520.33      0.10700      0.14972E-03  0.12019       0.0000     
-   4200.0      0.20303E+07  0.11590       520.33      0.17783      0.15226E-03  0.12435       0.0000     
-   4300.0      0.20824E+07  0.11321       520.33      0.28904      0.15477E-03  0.12570       0.0000     
-   4400.0      0.21344E+07  0.11064       520.34      0.46013      0.15726E-03  0.12680       0.0000     
-   4500.0      0.21864E+07  0.10818       520.34      0.71816      0.15972E-03  0.12739       0.0000     
-   4600.0      0.22385E+07  0.10583       520.35       1.1010      0.16216E-03  0.12853       0.0000     
-   4700.0      0.22905E+07  0.10358       520.36       1.6587      0.16458E-03  0.12954       0.0000     
-   4800.0      0.23425E+07  0.10142       520.38       2.4584      0.16697E-03  0.13019       0.0000     
-   4900.0      0.23946E+07  0.99348E-01   520.41       3.5882      0.16934E-03  0.13175       0.0000     
-   5000.0      0.24466E+07  0.97361E-01   520.50       5.1615      0.17169E-03  0.13200       0.0000     
-   5100.0      0.24987E+07  0.95452E-01   520.50       7.0610      0.17402E-03  0.13604       0.0000     
-   5200.0      0.25507E+07  0.93617E-01   520.57       9.7731      0.17632E-03  0.13793       0.0000     
-   5300.0      0.26028E+07  0.91850E-01   520.66       13.321      0.17861E-03  0.13985       0.0000     
-   5400.0      0.26549E+07  0.90149E-01   520.79       17.883      0.18088E-03  0.14179       0.0000     
-   5500.0      0.27070E+07  0.88510E-01   520.95       23.647      0.18314E-03  0.14378       0.0000     
-   5600.0      0.27591E+07  0.86930E-01   521.16       30.805      0.18537E-03  0.14582       0.0000     
-   5700.0      0.28112E+07  0.85404E-01   521.43       39.542      0.18759E-03  0.14794       0.0000     
-   5800.0      0.28634E+07  0.83932E-01   521.78       50.028      0.18979E-03  0.15015       0.0000     
-   5900.0      0.29156E+07  0.82509E-01   522.21       62.412      0.19198E-03  0.15248       0.0000     
-   6000.0      0.29679E+07  0.81133E-01   522.76       76.821      0.19415E-03  0.15494       0.0000     
-   6100.0      0.30202E+07  0.79803E-01   523.44       93.364      0.19631E-03  0.15756       0.0000     
-   6200.0      0.30727E+07  0.78515E-01   524.27       112.14      0.19845E-03  0.16037       0.0000     
-   6300.0      0.31252E+07  0.77268E-01   525.29       133.24      0.20056E-03  0.16338       0.0000     
-   6400.0      0.31779E+07  0.76059E-01   526.52       156.79      0.20270E-03  0.16663       0.0000     
-   6500.0      0.32307E+07  0.74888E-01   528.01       182.90      0.20481E-03  0.17012       0.0000     
-   6600.0      0.32836E+07  0.73752E-01   529.80       217.74      0.20690E-03  0.17388       0.0000     
-   6700.0      0.33368E+07  0.72649E-01   531.93       243.48      0.20899E-03  0.17793       0.0000     
-   6800.0      0.33903E+07  0.71578E-01   534.45       278.31      0.21106E-03  0.18229       0.0000     
-   6900.0      0.34440E+07  0.70538E-01   537.42       316.44      0.21312E-03  0.18696       0.0000     
-   7000.0      0.34981E+07  0.69527E-01   540.91       358.08      0.21517E-03  0.19199       0.0000     
-   7100.0      0.35526E+07  0.68544E-01   544.98       403.42      0.21721E-03  0.19734       0.0000     
-   7200.0      0.36076E+07  0.67587E-01   549.71       452.61      0.21925E-03  0.20308       0.0000     
-   7300.0      0.36631E+07  0.66656E-01   555.18       505.79      0.22127E-03  0.20922       0.0000     
-   7400.0      0.37192E+07  0.65749E-01   561.48       563.04      0.22328E-03  0.21578       0.0000     
-   7500.0      0.37761E+07  0.64865E-01   568.59       624.40      0.22529E-03  0.22278       0.0000     
-   7600.0      0.38338E+07  0.64003E-01   576.78       689.84      0.22729E-03  0.23026       0.0000     
-   7700.0      0.38924E+07  0.63162E-01   585.87       759.30      0.22927E-03  0.23823       0.0000     
-   7800.0      0.39520E+07  0.62342E-01   596.54       832.64      0.23125E-03  0.24675       0.0000     
-   7900.0      0.40129E+07  0.61540E-01   608.40       909.72      0.23322E-03  0.25586       0.0000     
-   8000.0      0.40750E+07  0.60757E-01   621.33       990.34      0.23518E-03  0.26555       0.0000     
-   8100.0      0.41386E+07  0.59991E-01   636.55       1074.2      0.23713E-03  0.27592       0.0000     
-   8200.0      0.42040E+07  0.59241E-01   653.19       1191.2      0.23906E-03  0.28698       0.0000     
-   8300.0      0.42711E+07  0.58507E-01   671.70       1251.0      0.24099E-03  0.29878       0.0000     
-   8400.0      0.43405E+07  0.57788E-01   693.15       1343.3      0.24290E-03  0.31142       0.0000     
-   8500.0      0.44120E+07  0.57083E-01   715.15       1437.8      0.24480E-03  0.32480       0.0000     
-   8600.0      0.44860E+07  0.56391E-01   740.24       1534.3      0.24668E-03  0.33902       0.0000     
-   8700.0      0.45628E+07  0.55711E-01   767.84       1632.6      0.24855E-03  0.35411       0.0000     
-   8800.0      0.46426E+07  0.55043E-01   798.13       1732.4      0.25040E-03  0.37011       0.0000     
-   8900.0      0.47259E+07  0.54387E-01   833.59       1833.6      0.25222E-03  0.38722       0.0000     
-   9000.0      0.48127E+07  0.53740E-01   867.85       1935.8      0.25402E-03  0.40512       0.0000     
-   9100.0      0.49035E+07  0.53103E-01   907.33       2039.0      0.25579E-03  0.42400       0.0000     
-   9200.0      0.49988E+07  0.52476E-01   953.81       2143.0      0.25754E-03  0.44416       0.0000     
-   9300.0      0.50986E+07  0.51856E-01   997.24       2247.6      0.25924E-03  0.46510       0.0000     
-   9400.0      0.52039E+07  0.51244E-01   1053.0       2352.8      0.26090E-03  0.48746       0.0000     
-   9500.0      0.53141E+07  0.50639E-01   1102.7       2458.4      0.26252E-03  0.51052       0.0000     
-   9600.0      0.54310E+07  0.50040E-01   1168.7       2564.3      0.26408E-03  0.53517       0.0000     
-   9700.0      0.55535E+07  0.49447E-01   1225.4       2670.5      0.26559E-03  0.56042       0.0000     
-   9800.0      0.56838E+07  0.48859E-01   1303.0       2776.9      0.26702E-03  0.58741       0.0000     
-   9900.0      0.58206E+07  0.48276E-01   1367.1       2883.4      0.26838E-03  0.61489       0.0000     
-   10000.      0.59663E+07  0.47696E-01   1457.7       2990.0      0.26965E-03  0.64428       0.0000     
-   10100.      0.61193E+07  0.47120E-01   1529.4       3096.6      0.27083E-03  0.67400       0.0000     
-   10200.      0.62827E+07  0.46546E-01   1634.5       3203.3      0.27189E-03  0.70582       0.0000     
-   10300.      0.64560E+07  0.45975E-01   1733.3       3309.9      0.27284E-03  0.73894       0.0000     
-   10400.      0.66376E+07  0.45406E-01   1816.1       3416.5      0.27365E-03  0.77204       0.0000     
-   10500.      0.68323E+07  0.44838E-01   1946.9       3523.1      0.27431E-03  0.80759       0.0000     
-   10600.      0.70389E+07  0.44271E-01   2065.6       3629.5      0.27481E-03  0.84446       0.0000     
-   10700.      0.72548E+07  0.43704E-01   2159.1       3735.9      0.27514E-03  0.88084       0.0000     
-   10800.      0.74868E+07  0.43137E-01   2319.8       3842.2      0.27527E-03  0.92007       0.0000     
-   10900.      0.77328E+07  0.42570E-01   2460.3       3948.4      0.27519E-03  0.96057       0.0000     
-   11000.      0.79937E+07  0.42003E-01   2608.7       4054.4      0.27489E-03   1.0023       0.0000     
-   11100.      0.82650E+07  0.41434E-01   2725.2       4160.3      0.27435E-03   1.0428       0.0000     
-   11200.      0.85572E+07  0.40864E-01   2922.1       4266.0      0.27355E-03   1.0867       0.0000     
-   11300.      0.88666E+07  0.40293E-01   3094.1       4371.6      0.27248E-03   1.1317       0.0000     
-   11400.      0.91940E+07  0.39720E-01   3274.5       4477.0      0.27113E-03   1.1779       0.0000     
-   11500.      0.95326E+07  0.39145E-01   3455.4       4582.2      0.26947E-03   1.2217       0.0000     
-   11600.      0.98976E+07  0.38568E-01   3650.3       4687.2      0.26751E-03   1.2696       0.0000     
-   11700.      0.10283E+08  0.37990E-01   3854.8       4792.0      0.26524E-03   1.3184       0.0000     
-   11800.      0.10690E+08  0.37410E-01   4067.6       4896.5      0.26265E-03   1.3680       0.0000     
-   11900.      0.11119E+08  0.36828E-01   4288.4       5000.8      0.25973E-03   1.4183       0.0000     
-   12000.      0.11558E+08  0.36243E-01   4504.2       5104.9      0.25646E-03   1.4650       0.0000     
-   12100.      0.12032E+08  0.35658E-01   4739.2       5208.6      0.25289E-03   1.5162       0.0000     
-   12200.      0.12530E+08  0.35072E-01   4981.2       5312.0      0.24900E-03   1.5679       0.0000     
-   12300.      0.13053E+08  0.34485E-01   5229.8       5415.0      0.24480E-03   1.6198       0.0000     
-   12400.      0.13602E+08  0.33897E-01   5484.1       5517.6      0.24030E-03   1.6719       0.0000     
-   12500.      0.14176E+08  0.33310E-01   5743.6       5619.9      0.23552E-03   1.7239       0.0000     
-   12600.      0.14777E+08  0.32723E-01   6007.3       5721.6      0.23048E-03   1.7758       0.0000     
-   12700.      0.15383E+08  0.32134E-01   6204.5       5823.3      0.22516E-03   1.8220       0.0000     
-   12800.      0.16036E+08  0.31549E-01   6525.2       5924.2      0.21966E-03   1.8729       0.0000     
-   12900.      0.16715E+08  0.30967E-01   6794.2       6024.5      0.21396E-03   1.9230       0.0000     
-   13000.      0.17421E+08  0.30387E-01   7062.5       6124.3      0.20811E-03   1.9722       0.0000     
-   13100.      0.18154E+08  0.29810E-01   7328.6       6223.5      0.20212E-03   2.0203       0.0000     
-   13200.      0.18913E+08  0.29238E-01   7590.7       6322.0      0.19603E-03   2.0870       0.0000     
-   13300.      0.19698E+08  0.28672E-01   7846.9       6419.9      0.18988E-03   2.1122       0.0000     
-   13400.      0.20507E+08  0.28111E-01   8095.2       6517.0      0.18368E-03   2.1556       0.0000     
-   13500.      0.21341E+08  0.27556E-01   8333.6       6613.4      0.17748E-03   2.1970       0.0000     
-   13600.      0.22197E+08  0.27010E-01   8559.9       6709.1      0.17130E-03   2.2362       0.0000     
-   13700.      0.23040E+08  0.26466E-01   8750.6       6804.7      0.16504E-03   2.2684       0.0000     
-   13800.      0.23935E+08  0.25936E-01   8953.9       6898.8      0.15897E-03   2.3028       0.0000     
-   13900.      0.24848E+08  0.25416E-01   9132.1       6992.0      0.15300E-03   2.3345       0.0000     
-   14000.      0.25777E+08  0.24906E-01   9289.8       7084.4      0.14715E-03   2.3633       0.0000     
-   14100.      0.26720E+08  0.24408E-01   9425.2       7175.8      0.14145E-03   2.3892       0.0000     
-   14200.      0.27674E+08  0.23922E-01   9536.4       7266.4      0.13591E-03   2.4121       0.0000     
-   14300.      0.28636E+08  0.23443E-01   9622.0       7355.9      0.13054E-03   2.4320       0.0000     
-   14400.      0.29604E+08  0.22987E-01   9680.8       7444.6      0.12536E-03   2.4488       0.0000     
-   14500.      0.30575E+08  0.22539E-01   9711.8       7532.2      0.12038E-03   2.4625       0.0000     
-   14600.      0.31546E+08  0.22105E-01   9714.5       7618.9      0.11561E-03   2.4733       0.0000     
-   14700.      0.32515E+08  0.21685E-01   9688.8       7704.7      0.11105E-03   2.4813       0.0000     
-   14800.      0.33479E+08  0.21279E-01   9634.8       7789.4      0.10670E-03   2.4866       0.0000     
-   14900.      0.34434E+08  0.20887E-01   9553.1       7873.2      0.10257E-03   2.4894       0.0000     
-   15000.      0.35379E+08  0.20510E-01   9444.7       7956.1      0.98656E-04   2.4899       0.0000     
-   15100.      0.36310E+08  0.20147E-01   9311.1       8038.0      0.94960E-04   2.4884       0.0000     
-   15200.      0.37225E+08  0.19797E-01   9153.8       8118.9      0.91476E-04   2.4851       0.0000     
-   15300.      0.38123E+08  0.19462E-01   8974.8       8199.0      0.88201E-04   2.4803       0.0000     
-   15400.      0.39000E+08  0.19140E-01   8776.2       8278.2      0.85131E-04   2.4742       0.0000     
-   15500.      0.39856E+08  0.18432E-01   8560.5       8356.5      0.82258E-04   2.4671       0.0000     
-   15600.      0.40689E+08  0.18537E-01   8330.2       8434.0      0.79577E-04   2.4593       0.0000     
-   15700.      0.41498E+08  0.18254E-01   8087.6       8510.7      0.77081E-04   2.4511       0.0000     
-   15800.      0.42282E+08  0.17984E-01   7835.3       8586.6      0.74762E-04   2.4427       0.0000     
-   15900.      0.43039E+08  0.17725E-01   7576.0       8661.7      0.72613E-04   2.4343       0.0000     
-   16000.      0.43770E+08  0.17477E-01   7311.9       8736.1      0.70625E-04   2.4262       0.0000     
-   16100.      0.44475E+08  0.17241E-01   7045.3       8809.9      0.68791E-04   2.4186       0.0000     
-   16200.      0.45153E+08  0.17014E-01   6778.3       8882.9      0.67103E-04   2.4116       0.0000     
-   16300.      0.45804E+08  0.16798E-01   6512.9       8955.4      0.65553E-04   2.4054       0.0000     
-   16400.      0.46429E+08  0.16590E-01   6250.7       9027.2      0.64134E-04   2.4000       0.0000     
-   16500.      0.47028E+08  0.16392E-01   5993.3       9098.5      0.62838E-04   2.3958       0.0000     
-   16600.      0.47603E+08  0.16202E-01   5742.1       9169.2      0.61657E-04   2.3926       0.0000     
-   16700.      0.48152E+08  0.16020E-01   5498.1       9239.4      0.60585E-04   2.3906       0.0000     
-   16800.      0.48679E+08  0.15845E-01   5262.1       9309.0      0.59616E-04   2.3898       0.0000     
-   16900.      0.49182E+08  0.15677E-01   5035.3       9378.2      0.58741E-04   2.3902       0.0000     
-   17000.      0.49664E+08  0.15516E-01   4817.8       9447.0      0.57957E-04   2.3920       0.0000     
-   17100.      0.50125E+08  0.15361E-01   4610.4       9515.3      0.57255E-04   2.3950       0.0000     
-   17200.      0.50566E+08  0.15211E-01   4413.2       9583.1      0.56632E-04   2.3993       0.0000     
-   17300.      0.50989E+08  0.15068E-01   4226.5       9650.6      0.56081E-04   2.4048       0.0000     
-   17400.      0.51394E+08  0.14929E-01   4050.3       9717.6      0.55597E-04   2.4116       0.0000     
-   17500.      0.51782E+08  0.14795E-01   3884.6       9784.3      0.55177E-04   2.4197       0.0000     
-   17600.      0.52155E+08  0.14666E-01   3729.5       9850.5      0.54815E-04   2.4288       0.0000     
-   17700.      0.52514E+08  0.14540E-01   3584.8       9916.4      0.54506E-04   2.4392       0.0000     
-   17800.      0.52859E+08  0.14419E-01   3450.3       9981.8      0.54248E-04   2.4506       0.0000     
-   17900.      0.53191E+08  0.14301E-01   3325.8       10047.      0.54035E-04   2.4631       0.0000     
-   18000.      0.53513E+08  0.14187E-01   3211.1       10111.      0.53865E-04   2.4767       0.0000     
-   18100.      0.53823E+08  0.14076E-01   3106.1       10176.      0.53734E-04   2.4912       0.0000     
-   18200.      0.54124E+08  0.13968E-01   3010.5       10240.      0.53639E-04   2.5066       0.0000     
-   18300.      0.54417E+08  0.13863E-01   2924.0       10303.      0.53576E-04   2.5230       0.0000     
-   18400.      0.54701E+08  0.13760E-01   2846.5       10366.      0.53543E-04   2.5402       0.0000     
-   18500.      0.54979E+08  0.13660E-01   2777.7       10428.      0.53537E-04   2.5582       0.0000     
-   18600.      0.55251E+08  0.13562E-01   2717.5       10490.      0.53554E-04   2.5769       0.0000     
-   18700.      0.55517E+08  0.13466E-01   2665.7       10551.      0.53592E-04   2.5964       0.0000     
-   18800.      0.55780E+08  0.13372E-01   2622.1       10612.      0.53649E-04   2.6166       0.0000     
-   18900.      0.56038E+08  0.13280E-01   2586.5       10672.      0.53722E-04   2.6375       0.0000     
-   19000.      0.56273E+08  0.13207E-01   2564.9       10728.      0.54238E-04   2.6584       0.0000     
-   19100.      0.56526E+08  0.13118E-01   2535.3       10787.      0.54333E-04   2.6805       0.0000     
-   19200.      0.56779E+08  0.13030E-01   2523.9       10845.      0.54437E-04   2.7031       0.0000     
-   19300.      0.57031E+08  0.12944E-01   2520.1       10902.      0.54547E-04   2.7263       0.0000     
-   19400.      0.57283E+08  0.12859E-01   2524.0       10958.      0.54662E-04   2.7499       0.0000     
-   19500.      0.57537E+08  0.12775E-01   2535.8       11014.      0.54778E-04   2.7740       0.0000     
-   19600.      0.57792E+08  0.12692E-01   2555.2       11068.      0.54893E-04   2.7986       0.0000     
-   19700.      0.58050E+08  0.12610E-01   2582.5       11122.      0.55005E-04   2.8235       0.0000     
-   19800.      0.58312E+08  0.12529E-01   2617.6       11174.      0.55113E-04   2.8489       0.0000     
-   19900.      0.58578E+08  0.12448E-01   2660.6       11225.      0.55213E-04   2.8746       0.0000     
-   20000.      0.58849E+08  0.12369E-01   2711.6       11275.      0.55304E-04   2.9006       0.0000     
-   20100.      0.59126E+08  0.12289E-01   2770.7       11323.      0.55382E-04   2.9270       0.0000     
-   20200.      0.59410E+08  0.12211E-01   2838.0       11371.      0.55447E-04   2.9536       0.0000     
-   20300.      0.59702E+08  0.12132E-01   2913.6       11416.      0.55496E-04   2.9805       0.0000     
-   20400.      0.60001E+08  0.12054E-01   2997.6       11460.      0.55527E-04   3.0076       0.0000     
-   20500.      0.60310E+08  0.11977E-01   3090.1       11502.      0.55537E-04   3.0350       0.0000     
-   20600.      0.60630E+08  0.11899E-01   3191.2       11543.      0.55525E-04   3.0626       0.0000     
-   20700.      0.60960E+08  0.11822E-01   3301.1       11582.      0.55489E-04   3.0904       0.0000     
-   20800.      0.61302E+08  0.11745E-01   3419.7       11619.      0.55428E-04   3.1183       0.0000     
-   20900.      0.61656E+08  0.11667E-01   3547.2       11654.      0.55338E-04   3.1464       0.0000     
-   21000.      0.62025E+08  0.11590E-01   3683.7       11687.      0.55219E-04   3.1747       0.0000     
-   21100.      0.62408E+08  0.11513E-01   3829.0       11718.      0.55069E-04   3.2030       0.0000     
-   21200.      0.62806E+08  0.11435E-01   3983.3       11746.      0.54888E-04   3.2315       0.0000     
-   21300.      0.63221E+08  0.11357E-01   4146.5       11773.      0.54673E-04   3.2600       0.0000     
-   21400.      0.63652E+08  0.11279E-01   4318.6       11797.      0.54424E-04   3.2886       0.0000     
-   21500.      0.64102E+08  0.11201E-01   4499.4       11819.      0.54140E-04   3.3173       0.0000     
-   21600.      0.64571E+08  0.11122E-01   4688.7       11838.      0.53820E-04   3.3460       0.0000     
-   21700.      0.65060E+08  0.11043E-01   4886.5       11856.      0.53465E-04   3.3747       0.0000     
-   21800.      0.65569E+08  0.10963E-01   5092.4       11871.      0.53074E-04   3.4035       0.0000     
-   21900.      0.66100E+08  0.10883E-01   5306.2       11883.      0.52648E-04   3.4322       0.0000     
-   22000.      0.66653E+08  0.10802E-01   5527.5       11893.      0.52186E-04   3.4610       0.0000     
-   22100.      0.67228E+08  0.10721E-01   5755.9       11901.      0.51690E-04   3.4897       0.0000     
-   22200.      0.67827E+08  0.10640E-01   5991.0       11907.      0.51160E-04   3.5185       0.0000     
-   22300.      0.68450E+08  0.10558E-01   6232.2       11911.      0.50598E-04   3.5472       0.0000     
-   22400.      0.69098E+08  0.10475E-01   6479.1       11912.      0.50005E-04   3.5758       0.0000     
-   22500.      0.69771E+08  0.10392E-01   6730.9       11912.      0.49382E-04   3.6044       0.0000     
-   22600.      0.70470E+08  0.10308E-01   6987.1       11909.      0.48732E-04   3.6330       0.0000     
-   22700.      0.71195E+08  0.10224E-01   7246.8       11905.      0.48056E-04   3.6616       0.0000     
-   22800.      0.71946E+08  0.10140E-01   7509.4       11899.      0.47357E-04   3.6900       0.0000     
-   22900.      0.72723E+08  0.10055E-01   7774.1       11891.      0.46636E-04   3.7185       0.0000     
-   23000.      0.73527E+08  0.99693E-02   8039.9       11882.      0.45896E-04   3.7468       0.0000     
-   23100.      0.74358E+08  0.98835E-02   8305.9       11872.      0.45139E-04   3.7751       0.0000     
-   23200.      0.75215E+08  0.97973E-02   8571.4       11860.      0.44368E-04   3.8034       0.0000     
-   23300.      0.76059E+08  0.97200E-02   8800.0       11841.      0.43898E-04   3.8331       0.0000     
-   23400.      0.76968E+08  0.96331E-02   9091.5       11828.      0.43100E-04   3.8613       0.0000     
-   23500.      0.77903E+08  0.95460E-02   9349.5       11813.      0.42296E-04   3.8895       0.0000     
-   23600.      0.78864E+08  0.94588E-02   9600.0       11798.      0.41487E-04   3.9176       0.0000     
-   23700.      0.79849E+08  0.93716E-02   9850.9       11783.      0.40676E-04   3.9456       0.0000     
-   23800.      0.80858E+08  0.92844E-02   10092.       11767.      0.39864E-04   3.9736       0.0000     
-   23900.      0.81891E+08  0.91973E-02   10327.       11751.      0.39055E-04   4.0016       0.0000     
-   24000.      0.82946E+08  0.91103E-02   10553.       11735.      0.38500E-04   4.0294       0.0000     
+   3000.0      0.14059E+07  0.16226       520.33      0.13214E-03  0.11987E-03  0.93561E-01   3.00E-03     
+   3100.0      0.14580E+07  0.15703       520.33      0.13214E-03  0.12274E-03  0.95798E-01   2.70E-02    
+   3200.0      0.15100E+07  0.15212       520.33      0.30489E-03  0.12557E-03  0.98014E-01   4.30E-02    
+   3300.0      0.15620E+07  0.14751       520.33      0.67299E-03  0.12837E-03  0.10021       5.50E-02 
+   3400.0      0.16141E+07  0.14200       520.33      0.14257E-02  0.13114E-03  0.10240       6.70E-02    
+   3500.0      0.16661E+07  0.13700       520.33      0.29073E-02  0.13389E-03  0.10458       8.10E-02    
+   3600.0      0.17181E+07  0.13522       520.33      0.57210E-02  0.13660E-03  0.10679       1.00E-01     
+   3700.0      0.17702E+07  0.13157       520.33      0.10891E-01  0.13928E-03  0.10904       1.28E-01    
+   3800.0      0.18222E+07  0.12810       520.33      0.20098E-01  0.14193E-03  0.11140       1.67E-01     
+   3900.0      0.18742E+07  0.12482       520.33      0.36037E-01  0.14455E-03  0.11395       2.23E-01     
+   4000.0      0.19263E+07  0.12170       520.33      0.62885E-01  0.14715E-03  0.11682       3.00E-01     
+   4100.0      0.19783E+07  0.11873       520.33      0.10700      0.14972E-03  0.12019       3.55E-01    
+   4200.0      0.20303E+07  0.11590       520.33      0.17783      0.15226E-03  0.12435       4.10E-01     
+   4300.0      0.20824E+07  0.11321       520.33      0.28904      0.15477E-03  0.12570       4.70E-01    
+   4400.0      0.21344E+07  0.11064       520.34      0.46013      0.15726E-03  0.12680       5.40E-01     
+   4500.0      0.21864E+07  0.10818       520.34      0.71816      0.15972E-03  0.12739       6.25E-01   
+   4600.0      0.22385E+07  0.10583       520.35       1.1010      0.16216E-03  0.12853       7.30E-01    
+   4700.0      0.22905E+07  0.10358       520.36       1.6587      0.16458E-03  0.12954       8.60E-01     
+   4800.0      0.23425E+07  0.10142       520.38       2.4584      0.16697E-03  0.13019       1.03E+00    
+   4900.0      0.23946E+07  0.99348E-01   520.41       3.5882      0.16934E-03  0.13175       1.27E+00    
+   5000.0      0.24466E+07  0.97361E-01   520.50       5.1615      0.17169E-03  0.13200       1.80E+00    
+   5100.0      0.24987E+07  0.95452E-01   520.50       7.0610      0.17402E-03  0.13604       2.300E+00     
+   5200.0      0.25507E+07  0.93617E-01   520.57       9.7731      0.17632E-03  0.13793       2.800E+00    
+   5300.0      0.26028E+07  0.91850E-01   520.66       13.321      0.17861E-03  0.13985       3.600E+00     
+   5400.0      0.26549E+07  0.90149E-01   520.79       17.883      0.18088E-03  0.14179       4.500E+00     
+   5500.0      0.27070E+07  0.88510E-01   520.95       23.647      0.18314E-03  0.14378       5.700E+00     
+   5600.0      0.27591E+07  0.86930E-01   521.16       30.805      0.18537E-03  0.14582       7.400E+00     
+   5700.0      0.28112E+07  0.85404E-01   521.43       39.542      0.18759E-03  0.14794       9.900E+00     
+   5800.0      0.28634E+07  0.83932E-01   521.78       50.028      0.18979E-03  0.15015      14.000E+00  
+   5900.0      0.29156E+07  0.82509E-01   522.21       62.412      0.19198E-03  0.15248      19.000E+00     
+   6000.0      0.29679E+07  0.81133E-01   522.76       76.821      0.19415E-03  0.15494      26.000E+00   
+   6100.0      0.30202E+07  0.79803E-01   523.44       93.364      0.19631E-03  0.15756      38.000E+00    
+   6200.0      0.30727E+07  0.78515E-01   524.27       112.14      0.19845E-03  0.16037      58.000E+00    
+   6300.0      0.31252E+07  0.77268E-01   525.29       133.24      0.20056E-03  0.16338      92.000E+00    
+   6400.0      0.31779E+07  0.76059E-01   526.52       156.79      0.20270E-03  0.16663       1.550E+02   
+   6500.0      0.32307E+07  0.74888E-01   528.01       182.90      0.20481E-03  0.17012       2.400E+02     
+   6600.0      0.32836E+07  0.73752E-01   529.80       217.74      0.20690E-03  0.17388       4.000E+02     
+   6700.0      0.33368E+07  0.72649E-01   531.93       243.48      0.20899E-03  0.17793       6.500E+02     
+   6800.0      0.33903E+07  0.71578E-01   534.45       278.31      0.21106E-03  0.18229       1.100E+03     
+   6900.0      0.34440E+07  0.70538E-01   537.42       316.44      0.21312E-03  0.18696       1.750E+03     
+   7000.0      0.34981E+07  0.69527E-01   540.91       358.08      0.21517E-03  0.19199       2.630E+03     
+   7100.0      0.35526E+07  0.68544E-01   544.98       403.42      0.21721E-03  0.19734       4.000E+03   
+   7200.0      0.36076E+07  0.67587E-01   549.71       452.61      0.21925E-03  0.20308       6.000E+03     
+   7300.0      0.36631E+07  0.66656E-01   555.18       505.79      0.22127E-03  0.20922       9.000E+03     
+   7400.0      0.37192E+07  0.65749E-01   561.48       563.04      0.22328E-03  0.21578       1.400E+04     
+   7500.0      0.37761E+07  0.64865E-01   568.59       624.40      0.22529E-03  0.22278       2.000E+04     
+   7600.0      0.38338E+07  0.64003E-01   576.78       689.84      0.22729E-03  0.23026       2.900E+04     
+   7700.0      0.38924E+07  0.63162E-01   585.87       759.30      0.22927E-03  0.23823       4.300E+04     
+   7800.0      0.39520E+07  0.62342E-01   596.54       832.64      0.23125E-03  0.24675       6.100E+04     
+   7900.0      0.40129E+07  0.61540E-01   608.40       909.72      0.23322E-03  0.25586       8.800E+04    
+   8000.0      0.40750E+07  0.60757E-01   621.33       990.34      0.23518E-03  0.26555       0.124E+06     
+   8100.0      0.41386E+07  0.59991E-01   636.55       1074.2      0.23713E-03  0.27592       0.180E+06     
+   8200.0      0.42040E+07  0.59241E-01   653.19       1191.2      0.23906E-03  0.28698       0.250E+06     
+   8300.0      0.42711E+07  0.58507E-01   671.70       1251.0      0.24099E-03  0.29878       0.340E+06     
+   8400.0      0.43405E+07  0.57788E-01   693.15       1343.3      0.24290E-03  0.31142       0.470E+06     
+   8500.0      0.44120E+07  0.57083E-01   715.15       1437.8      0.24480E-03  0.32480       0.640E+06     
+   8600.0      0.44860E+07  0.56391E-01   740.24       1534.3      0.24668E-03  0.33902       0.870E+06     
+   8700.0      0.45628E+07  0.55711E-01   767.84       1632.6      0.24855E-03  0.35411       1.200E+06     
+   8800.0      0.46426E+07  0.55043E-01   798.13       1732.4      0.25040E-03  0.37011       1.700E+06     
+   8900.0      0.47259E+07  0.54387E-01   833.59       1833.6      0.25222E-03  0.38722       2.100E+06  
+   9000.0      0.48127E+07  0.53740E-01   867.85       1935.8      0.25402E-03  0.40512       2.770E+06     
+   9100.0      0.49035E+07  0.53103E-01   907.33       2039.0      0.25579E-03  0.42400       3.700E+06     
+   9200.0      0.49988E+07  0.52476E-01   953.81       2143.0      0.25754E-03  0.44416       4.800E+06     
+   9300.0      0.50986E+07  0.51856E-01   997.24       2247.6      0.25924E-03  0.46510       6.200E+06     
+   9400.0      0.52039E+07  0.51244E-01   1053.0       2352.8      0.26090E-03  0.48746       7.900E+06     
+   9500.0      0.53141E+07  0.50639E-01   1102.7       2458.4      0.26252E-03  0.51052       1.050E+07     
+   9600.0      0.54310E+07  0.50040E-01   1168.7       2564.3      0.26408E-03  0.53517       1.400E+07     
+   9700.0      0.55535E+07  0.49447E-01   1225.4       2670.5      0.26559E-03  0.56042       1.700E+07     
+   9800.0      0.56838E+07  0.48859E-01   1303.0       2776.9      0.26702E-03  0.58741       2.100E+07     
+   9900.0      0.58206E+07  0.48276E-01   1367.1       2883.4      0.26838E-03  0.61489       2.600E+07     
+   10000.      0.59663E+07  0.47696E-01   1457.7       2990.0      0.26965E-03  0.64428       3.170E+07      
+   10100.      0.61193E+07  0.47120E-01   1529.4       3096.6      0.27083E-03  0.67400       3.900E+07     
+   10200.      0.62827E+07  0.46546E-01   1634.5       3203.3      0.27189E-03  0.70582       4.800E+07     
+   10300.      0.64560E+07  0.45975E-01   1733.3       3309.9      0.27284E-03  0.73894       5.800E+07     
+   10400.      0.66376E+07  0.45406E-01   1816.1       3416.5      0.27365E-03  0.77204       7.100E+07     
+   10500.      0.68323E+07  0.44838E-01   1946.9       3523.1      0.27431E-03  0.80759       8.500E+07     
+   10600.      0.70389E+07  0.44271E-01   2065.6       3629.5      0.27481E-03  0.84446       1.010E+08     
+   10700.      0.72548E+07  0.43704E-01   2159.1       3735.9      0.27514E-03  0.88084       1.300E+08     
+   10800.      0.74868E+07  0.43137E-01   2319.8       3842.2      0.27527E-03  0.92007       1.600E+08     
+   10900.      0.77328E+07  0.42570E-01   2460.3       3948.4      0.27519E-03  0.96057       1.800E+08     
+   11000.      0.79937E+07  0.42003E-01   2608.7       4054.4      0.27489E-03   1.0023       2.010E+08     
+   11100.      0.82650E+07  0.41434E-01   2725.2       4160.3      0.27435E-03   1.0428       2.400E+08    
+   11200.      0.85572E+07  0.40864E-01   2922.1       4266.0      0.27355E-03   1.0867       2.800E+08    
+   11300.      0.88666E+07  0.40293E-01   3094.1       4371.6      0.27248E-03   1.1317       3.250E+08    
+   11400.      0.91940E+07  0.39720E-01   3274.5       4477.0      0.27113E-03   1.1779       3.700E+08     
+   11500.      0.95326E+07  0.39145E-01   3455.4       4582.2      0.26947E-03   1.2217       4.250E+08     
+   11600.      0.98976E+07  0.38568E-01   3650.3       4687.2      0.26751E-03   1.2696       4.810E+08     
+   11700.      0.10283E+08  0.37990E-01   3854.8       4792.0      0.26524E-03   1.3184       5.420E+08     
+   11800.      0.10690E+08  0.37410E-01   4067.6       4896.5      0.26265E-03   1.3680       6.120E+08     
+   11900.      0.11119E+08  0.36828E-01   4288.4       5000.8      0.25973E-03   1.4183       6.860E+08     
+   12000.      0.11558E+08  0.36243E-01   4504.2       5104.9      0.25646E-03   1.4650       7.670E+08    
+   12100.      0.12032E+08  0.35658E-01   4739.2       5208.6      0.25289E-03   1.5162       8.500E+08    
+   12200.      0.12530E+08  0.35072E-01   4981.2       5312.0      0.24900E-03   1.5679       9.500E+08     
+   12300.      0.13053E+08  0.34485E-01   5229.8       5415.0      0.24480E-03   1.6198       1.100E+09     
+   12400.      0.13602E+08  0.33897E-01   5484.1       5517.6      0.24030E-03   1.6719       1.300E+09     
+   12500.      0.14176E+08  0.33310E-01   5743.6       5619.9      0.23552E-03   1.7239       1.400E+09     
+   12600.      0.14777E+08  0.32723E-01   6007.3       5721.6      0.23048E-03   1.7758       1.500E+09     
+   12700.      0.15383E+08  0.32134E-01   6204.5       5823.3      0.22516E-03   1.8220       1.600E+09     
+   12800.      0.16036E+08  0.31549E-01   6525.2       5924.2      0.21966E-03   1.8729       1.700E+09     
+   12900.      0.16715E+08  0.30967E-01   6794.2       6024.5      0.21396E-03   1.9230       1.800E+09     
+   13000.      0.17421E+08  0.30387E-01   7062.5       6124.3      0.20811E-03   1.9722       1.914E+09   
+   13100.      0.18154E+08  0.29810E-01   7328.6       6223.5      0.20212E-03   2.0203       2.030E+09    
+   13200.      0.18913E+08  0.29238E-01   7590.7       6322.0      0.19603E-03   2.0870       2.180E+09     
+   13300.      0.19698E+08  0.28672E-01   7846.9       6419.9      0.18988E-03   2.1122       2.330E+09     
+   13400.      0.20507E+08  0.28111E-01   8095.2       6517.0      0.18368E-03   2.1556       2.480E+09     
+   13500.      0.21341E+08  0.27556E-01   8333.6       6613.4      0.17748E-03   2.1970       2.640E+09     
+   13600.      0.22197E+08  0.27010E-01   8559.9       6709.1      0.17130E-03   2.2362       2.800E+09     
+   13700.      0.23040E+08  0.26466E-01   8750.6       6804.7      0.16504E-03   2.2684       2.950E+09     
+   13800.      0.23935E+08  0.25936E-01   8953.9       6898.8      0.15897E-03   2.3028       3.110E+09     
+   13900.      0.24848E+08  0.25416E-01   9132.1       6992.0      0.15300E-03   2.3345       3.250E+09     
+   14000.      0.25777E+08  0.24906E-01   9289.8       7084.4      0.14715E-03   2.3633       3.396E+09    
+   14100.      0.26720E+08  0.24408E-01   9425.2       7175.8      0.14145E-03   2.3892       3.530E+09     
+   14200.      0.27674E+08  0.23922E-01   9536.4       7266.4      0.13591E-03   2.4121       3.670E+09     
+   14300.      0.28636E+08  0.23443E-01   9622.0       7355.9      0.13054E-03   2.4320       3.810E+09     
+   14400.      0.29604E+08  0.22987E-01   9680.8       7444.6      0.12536E-03   2.4488       3.930E+09     
+   14500.      0.30575E+08  0.22539E-01   9711.8       7532.2      0.12038E-03   2.4625       4.070E+09     
+   14600.      0.31546E+08  0.22105E-01   9714.5       7618.9      0.11561E-03   2.4733       4.190E+09     
+   14700.      0.32515E+08  0.21685E-01   9688.8       7704.7      0.11105E-03   2.4813       4.310E+09     
+   14800.      0.33479E+08  0.21279E-01   9634.8       7789.4      0.10670E-03   2.4866       4.430E+09     
+   14900.      0.34434E+08  0.20887E-01   9553.1       7873.2      0.10257E-03   2.4894       4.530E+09     
+   15000.      0.35379E+08  0.20510E-01   9444.7       7956.1      0.98656E-04   2.4899       4.635E+09   
+   15100.      0.36310E+08  0.20147E-01   9311.1       8038.0      0.94960E-04   2.4884       4.720E+09     
+   15200.      0.37225E+08  0.19797E-01   9153.8       8118.9      0.91476E-04   2.4851       4.810E+09     
+   15300.      0.38123E+08  0.19462E-01   8974.8       8199.0      0.88201E-04   2.4803       4.890E+09    
+   15400.      0.39000E+08  0.19140E-01   8776.2       8278.2      0.85131E-04   2.4742       4.970E+09    
+   15500.      0.39856E+08  0.18432E-01   8560.5       8356.5      0.82258E-04   2.4671       5.030E+09    
+   15600.      0.40689E+08  0.18537E-01   8330.2       8434.0      0.79577E-04   2.4593       5.100E+09   
+   15700.      0.41498E+08  0.18254E-01   8087.6       8510.7      0.77081E-04   2.4511       5.160E+09    
+   15800.      0.42282E+08  0.17984E-01   7835.3       8586.6      0.74762E-04   2.4427       5.210E+09  
+   15900.      0.43039E+08  0.17725E-01   7576.0       8661.7      0.72613E-04   2.4343       5.260E+09  
+   16000.      0.43770E+08  0.17477E-01   7311.9       8736.1      0.70625E-04   2.4262       5.309E+09   
+   16100.      0.44475E+08  0.17241E-01   7045.3       8809.9      0.68791E-04   2.4186       5.350E+09     
+   16200.      0.45153E+08  0.17014E-01   6778.3       8882.9      0.67103E-04   2.4116       5.390E+09    
+   16300.      0.45804E+08  0.16798E-01   6512.9       8955.4      0.65553E-04   2.4054       5.410E+09     
+   16400.      0.46429E+08  0.16590E-01   6250.7       9027.2      0.64134E-04   2.4000       5.440E+09     
+   16500.      0.47028E+08  0.16392E-01   5993.3       9098.5      0.62838E-04   2.3958       5.450E+09     
+   16600.      0.47603E+08  0.16202E-01   5742.1       9169.2      0.61657E-04   2.3926       5.470E+09     
+   16700.      0.48152E+08  0.16020E-01   5498.1       9239.4      0.60585E-04   2.3906       5.490E+09     
+   16800.      0.48679E+08  0.15845E-01   5262.1       9309.0      0.59616E-04   2.3898       5.500E+09     
+   16900.      0.49182E+08  0.15677E-01   5035.3       9378.2      0.58741E-04   2.3902       5.510E+09     
+   17000.      0.49664E+08  0.15516E-01   4817.8       9447.0      0.57957E-04   2.3920       5.533E+09    
+   17100.      0.50125E+08  0.15361E-01   4610.4       9515.3      0.57255E-04   2.3950       5.540E+09    
+   17200.      0.50566E+08  0.15211E-01   4413.2       9583.1      0.56632E-04   2.3993       5.550E+09     
+   17300.      0.50989E+08  0.15068E-01   4226.5       9650.6      0.56081E-04   2.4048       5.560E+09     
+   17400.      0.51394E+08  0.14929E-01   4050.3       9717.6      0.55597E-04   2.4116       5.580E+09     
+   17500.      0.51782E+08  0.14795E-01   3884.6       9784.3      0.55177E-04   2.4197       5.590E+09     
+   17600.      0.52155E+08  0.14666E-01   3729.5       9850.5      0.54815E-04   2.4288       5.600E+09    
+   17700.      0.52514E+08  0.14540E-01   3584.8       9916.4      0.54506E-04   2.4392       5.610E+09     
+   17800.      0.52859E+08  0.14419E-01   3450.3       9981.8      0.54248E-04   2.4506       5.630E+09     
+   17900.      0.53191E+08  0.14301E-01   3325.8       10047.      0.54035E-04   2.4631       5.660E+09    
+   18000.      0.53513E+08  0.14187E-01   3211.1       10111.      0.53865E-04   2.4767       5.687E+09    
+   18100.      0.53823E+08  0.14076E-01   3106.1       10176.      0.53734E-04   2.4912       5.700E+09     
+   18200.      0.54124E+08  0.13968E-01   3010.5       10240.      0.53639E-04   2.5066       5.750E+09     
+   18300.      0.54417E+08  0.13863E-01   2924.0       10303.      0.53576E-04   2.5230       5.800E+09     
+   18400.      0.54701E+08  0.13760E-01   2846.5       10366.      0.53543E-04   2.5402       5.840E+09     
+   18500.      0.54979E+08  0.13660E-01   2777.7       10428.      0.53537E-04   2.5582       5.900E+09     
+   18600.      0.55251E+08  0.13562E-01   2717.5       10490.      0.53554E-04   2.5769       5.940E+09     
+   18700.      0.55517E+08  0.13466E-01   2665.7       10551.      0.53592E-04   2.5964       6.000E+09     
+   18800.      0.55780E+08  0.13372E-01   2622.1       10612.      0.53649E-04   2.6166       6.090E+09     
+   18900.      0.56038E+08  0.13280E-01   2586.5       10672.      0.53722E-04   2.6375       6.190E+09     
+   19000.      0.56273E+08  0.13207E-01   2564.9       10728.      0.54238E-04   2.6584       6.292E+09   
+   19100.      0.56526E+08  0.13118E-01   2535.3       10787.      0.54333E-04   2.6805       6.400E+09     
+   19200.      0.56779E+08  0.13030E-01   2523.9       10845.      0.54437E-04   2.7031       6.600E+09
+   19300.      0.57031E+08  0.12944E-01   2520.1       10902.      0.54547E-04   2.7263       6.700E+09
+   19400.      0.57283E+08  0.12859E-01   2524.0       10958.      0.54662E-04   2.7499       6.900E+09
+   19500.      0.57537E+08  0.12775E-01   2535.8       11014.      0.54778E-04   2.7740       7.100E+09  
+   19600.      0.57792E+08  0.12692E-01   2555.2       11068.      0.54893E-04   2.7986       7.300E+09   
+   19700.      0.58050E+08  0.12610E-01   2582.5       11122.      0.55005E-04   2.8235       7.500E+09  
+   19800.      0.58312E+08  0.12529E-01   2617.6       11174.      0.55113E-04   2.8489       7.700E+09  
+   19900.      0.58578E+08  0.12448E-01   2660.6       11225.      0.55213E-04   2.8746       7.900E+09  
+   20000.      0.58849E+08  0.12369E-01   2711.6       11275.      0.55304E-04   2.9006       8.102E+09    
+   20100.      0.59126E+08  0.12289E-01   2770.7       11323.      0.55382E-04   2.9270       8.200E+09     
+   20200.      0.59410E+08  0.12211E-01   2838.0       11371.      0.55447E-04   2.9536       8.500E+09     
+   20300.      0.59702E+08  0.12132E-01   2913.6       11416.      0.55496E-04   2.9805       8.800E+09  
+   20400.      0.60001E+08  0.12054E-01   2997.6       11460.      0.55527E-04   3.0076       9.000E+09  
+   20500.      0.60310E+08  0.11977E-01   3090.1       11502.      0.55537E-04   3.0350       9.100E+09  
+   20600.      0.60630E+08  0.11899E-01   3191.2       11543.      0.55525E-04   3.0626       9.400E+09  
+   20700.      0.60960E+08  0.11822E-01   3301.1       11582.      0.55489E-04   3.0904       9.600E+09  
+   20800.      0.61302E+08  0.11745E-01   3419.7       11619.      0.55428E-04   3.1183       9.900E+09  
+   20900.      0.61656E+08  0.11667E-01   3547.2       11654.      0.55338E-04   3.1464      10.100E+09  
+   21000.      0.62025E+08  0.11590E-01   3683.7       11687.      0.55219E-04   3.1747      10.500E+09 
+   21100.      0.62408E+08  0.11513E-01   3829.0       11718.      0.55069E-04   3.2030      11.000E+09 
+   21200.      0.62806E+08  0.11435E-01   3983.3       11746.      0.54888E-04   3.2315      11.500E+09  
+   21300.      0.63221E+08  0.11357E-01   4146.5       11773.      0.54673E-04   3.2600      12.000E+09   
+   21400.      0.63652E+08  0.11279E-01   4318.6       11797.      0.54424E-04   3.2886      12.500E+09  
+   21500.      0.64102E+08  0.11201E-01   4499.4       11819.      0.54140E-04   3.3173      13.100E+09    
+   21600.      0.64571E+08  0.11122E-01   4688.7       11838.      0.53820E-04   3.3460      13.600E+09     
+   21700.      0.65060E+08  0.11043E-01   4886.5       11856.      0.53465E-04   3.3747      14.100E+09     
+   21800.      0.65569E+08  0.10963E-01   5092.4       11871.      0.53074E-04   3.4035      14.600E+09     
+   21900.      0.66100E+08  0.10883E-01   5306.2       11883.      0.52648E-04   3.4322      15.100E+09     
+   22000.      0.66653E+08  0.10802E-01   5527.5       11893.      0.52186E-04   3.4610      15.600E+09    
+   22100.      0.67228E+08  0.10721E-01   5755.9       11901.      0.51690E-04   3.4897      15.900E+09
+   22200.      0.67827E+08  0.10640E-01   5991.0       11907.      0.51160E-04   3.5185      16.200E+09
+   22300.      0.68450E+08  0.10558E-01   6232.2       11911.      0.50598E-04   3.5472      16.500E+09
+   22400.      0.69098E+08  0.10475E-01   6479.1       11912.      0.50005E-04   3.5758      16.810E+09
+   22500.      0.69771E+08  0.10392E-01   6730.9       11912.      0.49382E-04   3.6044      17.120E+09
+   22600.      0.70470E+08  0.10308E-01   6987.1       11909.      0.48732E-04   3.6330      17.420E+09
+   22700.      0.71195E+08  0.10224E-01   7246.8       11905.      0.48056E-04   3.6616      17.720E+09
+   22800.      0.71946E+08  0.10140E-01   7509.4       11899.      0.47357E-04   3.6900      18.030E+09
+   22900.      0.72723E+08  0.10055E-01   7774.1       11891.      0.46636E-04   3.7185      18.330E+09
+   23000.      0.73527E+08  0.99693E-02   8039.9       11882.      0.45896E-04   3.7468      18.635E+09    
+   23100.      0.74358E+08  0.98835E-02   8305.9       11872.      0.45139E-04   3.7751      18.980E+09    
+   23200.      0.75215E+08  0.97973E-02   8571.4       11860.      0.44368E-04   3.8034      19.320E+09     
+   23300.      0.76059E+08  0.97200E-02   8800.0       11841.      0.43898E-04   3.8331      19.670E+09     
+   23400.      0.76968E+08  0.96331E-02   9091.5       11828.      0.43100E-04   3.8613      20.010E+09     
+   23500.      0.77903E+08  0.95460E-02   9349.5       11813.      0.42296E-04   3.8895      20.360E+09     
+   23600.      0.78864E+08  0.94588E-02   9600.0       11798.      0.41487E-04   3.9176      20.710E+09     
+   23700.      0.79849E+08  0.93716E-02   9850.9       11783.      0.40676E-04   3.9456      21.050E+09     
+   23800.      0.80858E+08  0.92844E-02   10092.       11767.      0.39864E-04   3.9736      21.400E+09
+   23900.      0.81891E+08  0.91973E-02   10327.       11751.      0.39055E-04   4.0016      21.750E+09
+   24000.      0.82946E+08  0.91103E-02   10553.       11735.      0.38500E-04   4.0294      22.094E+09     
+   25000.      0.95072E+08  0.74700E-02   13700.       11650.      0.38000E-04   4.2500      26.013E+09
+   26000.      0.10967E+09  0.68100E-02   15500.       11600.      0.38000E-04   4.5000      30.432E+09
+   27000.      0.12492E+09  0.62000E-02   15000.       11650.      0.38000E-04   4.7500      35.391E+09
+   28000.      0.13892E+09  0.58200E-02   13000.       11700.      0.38000E-04   5.0000      40.932E+09
+   29000.      0.15062E+09  0.54400E-02   10400.       11750.      0.38000E-04   5.2500      47.100E+09
+   30000.      0.16072E+09  0.50000E-02    9800.       11850.      0.38000E-04   5.5000      53.941E+09
+   31000.      0.17062E+09  0.43600E-02   10000.       11950.      0.38000E-04   5.7500      61.501E+09
+   32000.      0.18102E+09  0.38900E-02   10800.       12050.      0.38000E-04   6.0000      69.829E+09
+   33000.      0.19247E+09  0.36100E-02   12100.       12150.      0.38000E-04   6.2500      78.975E+09
+   34000.      0.20537E+09  0.34700E-02   13700.       12250.      0.38000E-04   6.5000      88.992E+09
+   35000.      0.22037E+09  0.33700E-02   16300.       12300.      0.38000E-04   6.7500      99.932E+09
diff --git a/data/thch/meteo b/data/thch/meteo
new file mode 100644
index 0000000..70559bb
--- /dev/null
+++ b/data/thch/meteo
@@ -0,0 +1,55 @@
+/ METEO FILE
+/---------------------------------------------------------
+/ The format of the file is important and is the following:
+/ --------------------------------------------------------
+/ year (integer), quantile (integer), hour (integer), minute (integer), second (dble prec) of the profile
+/ location of the meteo profile in the domaine (x,y) (double precision)
+/ sea level pressure (double precision)
+/ temperature profile: 
+/ number of altitudes (integer)
+/ alt.,temperature  in celcius,humidity in kg/kg (double precision)
+/ wind profile:
+/ number of altitudes (integer)
+/ alt.,u,v,k,eps (double precision)
+/ NO LINE AT THE END OF THE FILE
+/ ---------------------------------------------------------
+/ ---------------------------------------------------------
+/ year, quantile, hour, minute, second of the profile:
+2007, 17, 7, 23 , 8.
+/ location of the meteo profile in the domaine (x,y):
+  0.0000E+00   0.0000E+00
+/Sea level pressure
+100350.
+/temperature profile: number of altitudes,(alt.,T in celcius,H in kg/kg )
+14
+  0.50  14.7000  0.0000
+  2.00  14.7000  0.0000
+  4.00  14.7000  0.0000
+  6.00  14.7000  0.0000
+  8.00  14.7000  0.0000
+ 15.00  14.7000  0.0000
+ 25.00  14.7000  0.0000
+ 35.00  14.7000  0.0000
+ 45.00  14.7000  0.0000
+ 70.00  14.7000  0.0000
+120.00  14.7000  0.0000
+180.00  14.7000  0.0000
+250.00  14.7000  0.0000
+500.00  14.7000  0.0000
+/ wind profile: number  of altitudes,(alt.,u,v,k,eps)
+15
+  0.50   3.882   0.000    2.5040E+00    2.7128E+00
+  1.00   5.196   0.000    2.5040E+00    1.4797E+00
+  2.00   6.597   0.000    2.5040E+00    7.7509E-01
+  4.00   8.047   0.000    2.5040E+00    3.9700E-01
+  6.00   8.907   0.000    2.5040E+00    2.6683E-01
+  8.00   9.522   0.000    2.5040E+00    2.0095E-01
+ 15.00  10.871   0.000    2.5040E+00    1.0779E-01
+ 25.00  11.972   0.000    2.5040E+00    6.4848E-02
+ 35.00  12.699   0.000    2.5040E+00    4.6373E-02
+ 45.00  13.242   0.000    2.5040E+00    3.6091E-02
+ 70.00  14.198   0.000    2.5040E+00    2.3219E-02
+120.00  15.365   0.000    2.5040E+00    1.3553E-02
+180.00  16.242   0.000    2.5040E+00    9.0377E-03
+250.00  16.954   0.000    2.5040E+00    6.5081E-03
+500.00  18.455   0.000    2.5040E+00    3.2547E-03
diff --git a/doc/Makefile.am b/doc/Makefile.am
index ab9889c..0d2218d 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -20,7 +20,8 @@
 #   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #-------------------------------------------------------------------------------
 
-SUBDIRS = howto refcard theory tutorial user
+#SUBDIRS = developper howto install refcard theory tutorial user
+SUBDIRS = refcard theory tutorial user
 
 EXTRA_DIST = \
 style/csdoc.sty \
diff --git a/doc/Makefile.in b/doc/Makefile.in
index cc99897..26c088f 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -37,8 +38,9 @@
 #-------------------------------------------------------------------------------
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -60,6 +62,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -75,6 +78,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -86,10 +90,38 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	ps-recursive uninstall-recursive
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AR = @AR@
@@ -132,6 +164,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -168,11 +202,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -187,15 +219,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -240,7 +275,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -257,8 +293,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -281,7 +320,9 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = howto refcard theory tutorial user
+
+#SUBDIRS = developper howto install refcard theory tutorial user
+SUBDIRS = refcard theory tutorial user
 EXTRA_DIST = \
 style/csdoc.sty \
 style/csindex.sty \
@@ -297,14 +338,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -322,6 +363,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -336,7 +378,7 @@ clean-libtool:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -353,7 +395,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -361,7 +403,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -387,16 +429,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -404,14 +446,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -423,7 +465,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -432,29 +474,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -475,29 +522,44 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
 	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -527,6 +589,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -545,6 +608,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -553,18 +618,28 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -585,8 +660,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-libtool \
@@ -602,6 +677,7 @@ uninstall-am:
 	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
 	uninstall uninstall-am
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/theory/Makefile.am b/doc/developper/Makefile.am
similarity index 82%
copy from doc/theory/Makefile.am
copy to doc/developper/Makefile.am
index 424dab5..3b7d7df 100644
--- a/doc/theory/Makefile.am
+++ b/doc/developper/Makefile.am
@@ -22,42 +22,11 @@
 
 # Main LaTeX document
 
-TEXMAIN = theory.tex
+TEXMAIN = developper.tex
 
 # Other LaTex document
 
-TEXOTHERS = \
-bilsc2.tex \
-cfbase.tex \
-cfener.tex \
-cfmsvl.tex \
-cfqdmv.tex \
-cfxtcl.tex \
-clptrg.tex \
-clptur.tex \
-clsyvt.tex \
-codits.tex \
-combustion.tex \
-condli.tex \
-covofi.tex \
-elbase.tex \
-gradmc.tex \
-gradrc.tex \
-inimas.tex \
-introd.tex \
-itrmas.tex \
-matrix.tex \
-navsto.tex \
-preduv.tex \
-recvmc.tex \
-resolp.tex \
-summary.tex \
-turbke.tex \
-turrij.tex \
-viscfa.tex \
-visort.tex \
-vissec.tex \
-vortex.tex
+TEXOTHERS =
 
 TEXINPUTFILES =
 
diff --git a/doc/refcard/Makefile.in b/doc/developper/Makefile.in
similarity index 81%
copy from doc/refcard/Makefile.in
copy to doc/developper/Makefile.in
index 112635f..b74bacb 100644
--- a/doc/refcard/Makefile.in
+++ b/doc/developper/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Main LaTeX document
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -56,12 +58,13 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = doc/refcard
+subdir = doc/developper
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -88,10 +92,38 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	ps-recursive uninstall-recursive
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AR = @AR@
@@ -134,6 +166,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -170,11 +204,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -189,15 +221,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -242,7 +277,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -259,8 +295,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -283,7 +322,7 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-TEXMAIN = refcard.tex
+TEXMAIN = developper.tex
 
 # Other LaTex document
 TEXOTHERS = 
@@ -313,14 +352,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/refcard/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/refcard/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/developper/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/developper/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -338,6 +377,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -352,7 +392,7 @@ clean-libtool:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -369,7 +409,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -377,7 +417,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -403,16 +443,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -420,14 +460,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -439,7 +479,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -448,29 +488,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -491,29 +536,44 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
 	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -543,6 +603,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -562,6 +623,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -570,12 +633,18 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
@@ -584,6 +653,8 @@ install-pdf-am: install-pdf-local
 
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -604,8 +675,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-libtool \
@@ -640,6 +711,7 @@ install-pdf-local:
 
 distclean-local: clean-local
 	-rm -f $(PDFMAIN)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/developper/developper.tex b/doc/developper/developper.tex
new file mode 100644
index 0000000..8a90590
--- /dev/null
+++ b/doc/developper/developper.tex
@@ -0,0 +1,87 @@
+%-----------------------------------------------------------------------
+%
+%     This file is part of the Code_Saturne Kernel, element of the
+%     Code_Saturne CFD tool.
+%
+%     Copyright (C) 1998-2008 EDF S.A., France
+%
+%     contact: saturne-support at edf.fr
+%
+%     The Code_Saturne Kernel is free software; you can redistribute it
+%     and/or modify it under the terms of the GNU General Public License
+%     as published by the Free Software Foundation; either version 2 of
+%     the License, or (at your option) any later version.
+%
+%     The Code_Saturne Kernel is distributed in the hope that it will be
+%     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+%     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+%     GNU General Public License for more details.
+%
+%     You should have received a copy of the GNU General Public License
+%     along with the Code_Saturne Kernel; if not, write to the
+%     Free Software Foundation, Inc.,
+%     51 Franklin St, Fifth Floor,
+%     Boston, MA  02110-1301  USA
+%
+%-----------------------------------------------------------------------
+\documentclass[a4paper,10pt,twoside]{article}
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% PACKAGES OBLIGATOIRES
+\usepackage{csdoc}
+% MACROS SUPPLEMENTAIRES
+\usepackage{csmacros}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% PACKAGES ET COMMANDES POUR LE DOCUMENTS PDF ET LES HYPERLIENS
+\hypersetup{%
+  pdftitle = {CodeSaturne developper's guide},
+  pdfauthor = {MFEE},
+  pdfpagemode = UseOutlines
+}
+\pdfinfo{/CreationDate (D:20090801000000-01 00 )}
+%
+% To have thumbnails upon opening the document under ACROREAD
+% pdfpagemode = UseThumbs
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% INFO POUR PAGES DE GARDES
+\titreCS{\CS version~\verscs developper's guide}
+
+\docassociesCS{}
+\resumeCS{This document presents some developper's best practice
+guidelines for \CS version~\verscs.
+
+\begin{center}
+\large{WORK IN PROGRESS}
+\end{center}
+}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DEBUT DU DOCUMENT
+\begin{document}
+
+\def\contentsname{\textbf{\normalsize TABLE OF CONTENTS}\pdfbookmark[1]{Table of
+contents}{contents}}
+
+\pdfbookmark[1]{Flyleaf}{pdg}
+\large
+\makepdgCS
+\normalsize
+
+\passepage
+
+\begin{center}\begin{singlespace}
+\tableofcontents
+\end{singlespace}\end{center}
+%
+%
+\end{document}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/doc/user/graphics/Makefile.am b/doc/developper/graphics/Makefile.am
similarity index 89%
copy from doc/user/graphics/Makefile.am
copy to doc/developper/graphics/Makefile.am
index 7a46419..aa1469b 100644
--- a/doc/user/graphics/Makefile.am
+++ b/doc/developper/graphics/Makefile.am
@@ -22,19 +22,7 @@
 
 # Xfig files to process
 
-FIGFILES = \
-cs_components.fig \
-vortex.fig
-
-# Other files
-
-OTHERFILES = \
-halo.pdf \
-rota_perio_parall.jpg
-
-# Distributed files
-
-EXTRA_DIST = $(FIGFILES) $(OTHERFILES)
+FIGFILES =
 
 # Generated documents (pdf files)
 
diff --git a/doc/howto/graphics/Makefile.in b/doc/developper/graphics/Makefile.in
similarity index 89%
copy from doc/howto/graphics/Makefile.in
copy to doc/developper/graphics/Makefile.in
index 526eb97..1824a68 100644
--- a/doc/howto/graphics/Makefile.in
+++ b/doc/developper/graphics/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Xfig files to process
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -56,12 +58,13 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = doc/howto/graphics
+subdir = doc/developper/graphics
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -122,6 +126,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -158,11 +164,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -177,15 +181,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -230,7 +237,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -247,8 +255,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -286,14 +297,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/howto/graphics/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/howto/graphics/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/developper/graphics/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/developper/graphics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -311,6 +322,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -340,13 +352,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -374,6 +390,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -392,6 +409,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -400,18 +419,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -459,6 +488,7 @@ clean-local:
 	-rm -f $(PDF_FIGFILES)
 
 distclean-local: clean-local
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/howto/Makefile.in b/doc/howto/Makefile.in
index 4bdb058..947f429 100644
--- a/doc/howto/Makefile.in
+++ b/doc/howto/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Main LaTeX document
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -62,6 +64,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -88,10 +92,38 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	ps-recursive uninstall-recursive
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AR = @AR@
@@ -134,6 +166,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -170,11 +204,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -189,15 +221,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -242,7 +277,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -259,8 +295,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -313,14 +352,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/howto/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/howto/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/howto/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/howto/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -338,6 +377,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -352,7 +392,7 @@ clean-libtool:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -369,7 +409,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -377,7 +417,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -403,16 +443,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -420,14 +460,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -439,7 +479,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -448,29 +488,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -491,29 +536,44 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
 	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -543,6 +603,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -562,6 +623,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -570,12 +633,18 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
@@ -584,6 +653,8 @@ install-pdf-am: install-pdf-local
 
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -604,8 +675,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-libtool \
@@ -640,6 +711,7 @@ install-pdf-local:
 
 distclean-local: clean-local
 	-rm -f $(PDFMAIN)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/howto/graphics/Makefile.in b/doc/howto/graphics/Makefile.in
index 526eb97..8d2cb1a 100644
--- a/doc/howto/graphics/Makefile.in
+++ b/doc/howto/graphics/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Xfig files to process
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -62,6 +64,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -122,6 +126,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -158,11 +164,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -177,15 +181,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -230,7 +237,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -247,8 +255,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -286,14 +297,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/howto/graphics/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/howto/graphics/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/howto/graphics/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/howto/graphics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -311,6 +322,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -340,13 +352,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -374,6 +390,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -392,6 +409,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -400,18 +419,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -459,6 +488,7 @@ clean-local:
 	-rm -f $(PDF_FIGFILES)
 
 distclean-local: clean-local
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/theory/Makefile.am b/doc/install/Makefile.am
similarity index 80%
copy from doc/theory/Makefile.am
copy to doc/install/Makefile.am
index 424dab5..279a3a6 100644
--- a/doc/theory/Makefile.am
+++ b/doc/install/Makefile.am
@@ -2,7 +2,7 @@
 #   This file is part of the Code_Saturne Kernel, element of the
 #   Code_Saturne CFD tool.
 #
-#   Copyright (C) 2009 EDF S.A., France
+#   Copyright (C) 2010 EDF S.A., France
 #
 #   The Code_Saturne Kernel is free software; you can redistribute it
 #   and/or modify it under the terms of the GNU General Public License
@@ -22,42 +22,11 @@
 
 # Main LaTeX document
 
-TEXMAIN = theory.tex
+TEXMAIN = install.tex
 
 # Other LaTex document
 
-TEXOTHERS = \
-bilsc2.tex \
-cfbase.tex \
-cfener.tex \
-cfmsvl.tex \
-cfqdmv.tex \
-cfxtcl.tex \
-clptrg.tex \
-clptur.tex \
-clsyvt.tex \
-codits.tex \
-combustion.tex \
-condli.tex \
-covofi.tex \
-elbase.tex \
-gradmc.tex \
-gradrc.tex \
-inimas.tex \
-introd.tex \
-itrmas.tex \
-matrix.tex \
-navsto.tex \
-preduv.tex \
-recvmc.tex \
-resolp.tex \
-summary.tex \
-turbke.tex \
-turrij.tex \
-viscfa.tex \
-visort.tex \
-vissec.tex \
-vortex.tex
+TEXOTHERS =
 
 TEXINPUTFILES =
 
@@ -67,7 +36,7 @@ EXTRA_DIST = $(TEXMAIN) $(TEXOTHERS) $(TEXINPUTFILES)
 
 # Subdirectories (order is important)
 
-SUBDIRS = graphics .
+#SUBDIRS = graphics .
 
 # Environment variables for LaTeX
 
diff --git a/doc/user/graphics/Makefile.in b/doc/install/Makefile.in
similarity index 81%
copy from doc/user/graphics/Makefile.in
copy to doc/install/Makefile.in
index 9b816ca..14c561e 100644
--- a/doc/user/graphics/Makefile.in
+++ b/doc/install/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -18,7 +19,7 @@
 #   This file is part of the Code_Saturne Kernel, element of the
 #   Code_Saturne CFD tool.
 #
-#   Copyright (C) 2009 EDF S.A., France
+#   Copyright (C) 2010 EDF S.A., France
 #
 #   The Code_Saturne Kernel is free software; you can redistribute it
 #   and/or modify it under the terms of the GNU General Public License
@@ -36,11 +37,12 @@
 #   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #-------------------------------------------------------------------------------
 
-# Xfig files to process
+# Main LaTeX document
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -56,12 +58,13 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = doc/user/graphics
+subdir = doc/install
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -122,6 +126,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -158,11 +164,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -177,15 +181,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -230,7 +237,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -247,8 +255,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -271,41 +282,45 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-FIGFILES = \
-cs_components.fig \
-vortex.fig
+TEXMAIN = install.tex
 
+# Other LaTex document
+TEXOTHERS = 
+TEXINPUTFILES = 
 
-# Other files
-OTHERFILES = \
-halo.pdf \
-rota_perio_parall.jpg
+# Distributed files
+EXTRA_DIST = $(TEXMAIN) $(TEXOTHERS) $(TEXINPUTFILES)
 
+# Subdirectories (order is important)
 
-# Distributed files
-EXTRA_DIST = $(FIGFILES) $(OTHERFILES)
+#SUBDIRS = graphics .
 
-# Generated documents (pdf files)
-PDF_FIGFILES = $(FIGFILES:.fig=.pdf)
+# Environment variables for LaTeX
+TEXINPUTS = $(top_srcdir)/doc/style/:$(top_builddir)/doc/style/:$(srcdir)//:$(builddir)//:
+BIBINPUTS = $(top_srcdir)/doc/style/:
+BSTINPUTS = $(top_srcdir)/doc/style/:
 
-# New suffixes and targets
-SUFFIXES = .fig .pdf
+# LaTeX commands
+PDFLATEX = export TEXINPUTS="$(TEXINPUTS)"; pdflatex
+BIBTEX = export BIBINPUTS="$(BIBINPUTS)"; bibtex
+
+# Generated documents (pdf and index files)
+PDFMAIN = $(TEXMAIN:.tex=.pdf)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .fig .pdf
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/user/graphics/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/user/graphics/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/install/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/install/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -323,6 +338,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -352,13 +368,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -386,6 +406,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -404,6 +425,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -412,18 +435,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am: install-pdf-local
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -452,25 +485,32 @@ uninstall-am:
 	install install-am install-data install-data-am install-dvi \
 	install-dvi-am install-exec install-exec-am install-html \
 	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am pdf-local \
-	ps ps-am uninstall uninstall-am
+	install-pdf install-pdf-am install-pdf-local install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	pdf-local ps ps-am uninstall uninstall-am
 
 
-.fig.pdf:
-	fig2dev -L pdf $< > $@
-
 # One redefines here the standard pdf targets of automake
 # so that they handle generation from LaTeX documents.
 
-pdf-local: $(PDF_FIGFILES)
+pdf-local:
+	@$(PDFLATEX) $(TEXMAIN)
+	@$(PDFLATEX) $(TEXMAIN)
+	@$(PDFLATEX) $(TEXMAIN)
 
 clean-local:
-	-rm -f $(PDF_FIGFILES)
+	-rm -f *.out *.log *.aux *.toc *.lof *.lot \
+	 *.ilg *.idx *.bbl *.blg *.ind *.sym *.nsy 
+
+install-pdf-local:
+	$(MKDIR_P) "$(DESTDIR)$(pdfdir)"
+	cp -p $(PDFMAIN) $(DESTDIR)$(pdfdir)
 
 distclean-local: clean-local
+	-rm -f $(PDFMAIN)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/install/install.tex b/doc/install/install.tex
new file mode 100644
index 0000000..bad34ad
--- /dev/null
+++ b/doc/install/install.tex
@@ -0,0 +1,86 @@
+%-----------------------------------------------------------------------
+%
+%     This file is part of the Code_Saturne Kernel, element of the
+%     Code_Saturne CFD tool.
+%
+%     Copyright (C) 1998-2010 EDF S.A., France
+%
+%     contact: saturne-support at edf.fr
+%
+%     The Code_Saturne Kernel is free software; you can redistribute it
+%     and/or modify it under the terms of the GNU General Public License
+%     as published by the Free Software Foundation; either version 2 of
+%     the License, or (at your option) any later version.
+%
+%     The Code_Saturne Kernel is distributed in the hope that it will be
+%     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+%     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+%     GNU General Public License for more details.
+%
+%     You should have received a copy of the GNU General Public License
+%     along with the Code_Saturne Kernel; if not, write to the
+%     Free Software Foundation, Inc.,
+%     51 Franklin St, Fifth Floor,
+%     Boston, MA  02110-1301  USA
+%
+%-----------------------------------------------------------------------
+\documentclass[a4paper,10pt,twoside]{article}
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% PACKAGES OBLIGATOIRES
+\usepackage{csdoc}
+% MACROS SUPPLEMENTAIRES
+\usepackage{csmacros}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% PACKAGES ET COMMANDES POUR LE DOCUMENTS PDF ET LES HYPERLIENS
+\hypersetup{%
+  pdftitle = {CodeSaturne installation guide},
+  pdfauthor = {MFEE},
+  pdfpagemode = UseOutlines
+}
+\pdfinfo{/CreationDate (D:20100802000000-01 00 )}
+%
+% To have thumbnails upon opening the document under ACROREAD
+% pdfpagemode = UseThumbs
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% INFO POUR PAGES DE GARDES
+\titreCS{\CS version~\verscs installation guide}
+
+\docassociesCS{}
+\resumeCS{This document presents a guide for \CS installation.
+
+\begin{center}
+\large{WORK IN PROGRESS}
+\end{center}
+}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DEBUT DU DOCUMENT
+\begin{document}
+
+\def\contentsname{\textbf{\normalsize TABLE OF CONTENTS}\pdfbookmark[1]{Table of
+contents}{contents}}
+
+\pdfbookmark[1]{Flyleaf}{pdg}
+\large
+\makepdgCS
+\normalsize
+
+\passepage
+
+\begin{center}\begin{singlespace}
+\tableofcontents
+\end{singlespace}\end{center}
+%
+%
+\end{document}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/doc/manpages/code_saturne.1 b/doc/manpages/code_saturne.1
new file mode 100644
index 0000000..b14a5ae
--- /dev/null
+++ b/doc/manpages/code_saturne.1
@@ -0,0 +1,103 @@
+.\"
+.\"  This file is part of the Code_Saturne Kernel, element of the
+.\"  Code_Saturne CFD tool.
+.\"
+.\"  Copyright (C) 2009 EDF S.A., France
+.\"
+.\"  contact: saturne-support at edf.fr
+.\"
+.\"  The Code_Saturne Kernel is free software; you can redistribute it
+.\"  and/or modify it under the terms of the GNU General Public License
+.\"  as published by the Free Software Foundation; either version 2 of
+.\"  the License, or (at your option) any later version.
+.\"
+.\"  The Code_Saturne Kernel is distributed in the hope that it will be
+.\"  useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+.\"  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\"  GNU General Public License for more details.
+.\"
+.\"  You should have received a copy of the GNU General Public License
+.\"  along with the Code_Saturne Preprocessor; if not, write to the
+.\"  Free Software Foundation, Inc.,
+.\"  51 Franklin St, Fifth Floor,
+.\"  Boston, MA  02110-1301  USA
+.\"
+.TH CODE_SATURNE 1 2009-10-27 "" "Code_Saturne commands"
+.SH NAME
+code_saturne \- Main user script of Code_Saturne.
+.SH SYNOPSIS
+.B code_saturne
+.RI [-h|--help]
+.RI <command>
+.br
+.SH DESCRIPTION
+The
+.B code_saturne
+script is the main user script of Code_Saturne.
+.\"
+.\" Options description
+.SH OPTIONS
+.B
+.IP "-h, --help"
+Help message.
+.\"
+.\" Commands description
+.SH COMMANDS
+Further information will be obtain with
+.B "code_saturne <command> --help"
+.B
+.IP "check_consistency"
+The
+.B "code_saturne check_consistency"
+command checks the consistency between the user files and the Xml file
+(from the Graphical User Interface) provided by the user and, if
+needed, that the chosen options are compatible with parallel
+calculations. Lastly, it prints the chosen specific physics.
+
+.B
+.IP "check_mesh"
+The
+.B "code_saturne check_mesh"
+command verify the quality of a given mesh. The following options will
+be passed to Code_Saturne preprocessor.
+
+.B
+.IP "compile"
+The
+.B "code_saturne compile"
+command can be used to generate the
+.B cs_solver
+executable needed for running a Code_Saturne study.
+
+.B
+.IP "create"
+The
+.B "code_saturne create"
+command sets up a directory structure for a Code_Saturne study or
+case. The different directories created are MESH for meshes, POST for
+user post-processing and a case directory (or several) containing a
+DATA, SRC (to store user files), RESU (to store results) and SCRIPTS
+directory.
+
+.B
+.IP "info"
+The
+.B "code_saturne info"
+command is a wrapper for an easier look at Code_Saturne documentation.
+
+.B
+.IP "plot_probes"
+The
+.B "code_saturne plot_probes"
+command runs
+.B xmgrace -nxy
+command on a Code_Saturne time monitoring file (chronological records)
+after removing the first column (in order to have physical time on the
+X axis).
+.\"
+.\" References
+.SH SEE ALSO
+.BR cs_io_dump (1),
+.BR cs_partition (1),
+.BR cs_preprocess (1),
+.BR cs_solver (1)
diff --git a/doc/manpages/cs_check_consistency.1 b/doc/manpages/cs_check_consistency.1
deleted file mode 100644
index 4c5d8f2..0000000
--- a/doc/manpages/cs_check_consistency.1
+++ /dev/null
@@ -1,58 +0,0 @@
-.\"
-.\"  This file is part of the Code_Saturne Kernel, element of the
-.\"  Code_Saturne CFD tool.
-.\"
-.\"  Copyright (C) 2009 EDF S.A., France
-.\"
-.\"  contact: saturne-support at edf.fr
-.\"
-.\"  The Code_Saturne Kernel is free software; you can redistribute it
-.\"  and/or modify it under the terms of the GNU General Public License
-.\"  as published by the Free Software Foundation; either version 2 of
-.\"  the License, or (at your option) any later version.
-.\"
-.\"  The Code_Saturne Kernel is distributed in the hope that it will be
-.\"  useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-.\"  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-.\"  GNU General Public License for more details.
-.\"
-.\"  You should have received a copy of the GNU General Public License
-.\"  along with the Code_Saturne Preprocessor; if not, write to the
-.\"  Free Software Foundation, Inc.,
-.\"  51 Franklin St, Fifth Floor,
-.\"  Boston, MA  02110-1301  USA
-.\"
-.TH CS_CHECK_CONSISTENCY 1 2009-03-15 "" "Code_Saturne commands"
-.SH NAME
-cs_check_consistency \- Check the consistency of Code_Saturne input data
-(user files, Xml file from the gui).
-.SH SYNOPSIS
-.B cs_check_consistency
-.RI [--source
-.RI <dir>]
-.RI [--param
-.RI <param.xml>]
-.RI [--nproc
-.RI <n_procs>]
-.br
-.SH DESCRIPTION
-The
-.B cs_check_consistency
-script checks the consistency between the user files and the Xml file
-(from the Graphical User Interface) provided by the user and, if
-needed, that the chosen options are compatible with parallel
-calculations. Lastly, it prints the chosen specific physics.
-.SH OPTIONS
-.B
-.IP "-s, --source"
-To specify the directory where the user files are.
-.B
-.IP "-p, --param"
-To specify the name of the Xml file written by the Graphical User
-Interface.
-.B
-.IP "-n, --nproc"
-To specify the number of processors used by the solver.
-.SH SEE ALSO
-.BR cs_check_mesh (1),
-.BR cs_create (1)
diff --git a/doc/manpages/cs_check_mesh.1 b/doc/manpages/cs_check_mesh.1
deleted file mode 100644
index 236fd9f..0000000
--- a/doc/manpages/cs_check_mesh.1
+++ /dev/null
@@ -1,149 +0,0 @@
-.\"
-.\"  This file is part of the Code_Saturne Kernel, element of the
-.\"  Code_Saturne CFD tool.
-.\"
-.\"  Copyright (C) 2009 EDF S.A., France
-.\"
-.\"  contact: saturne-support at edf.fr
-.\"
-.\"  The Code_Saturne Kernel is free software; you can redistribute it
-.\"  and/or modify it under the terms of the GNU General Public License
-.\"  as published by the Free Software Foundation; either version 2 of
-.\"  the License, or (at your option) any later version.
-.\"
-.\"  The Code_Saturne Kernel is distributed in the hope that it will be
-.\"  useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-.\"  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-.\"  GNU General Public License for more details.
-.\"
-.\"  You should have received a copy of the GNU General Public License
-.\"  along with the Code_Saturne Preprocessor; if not, write to the
-.\"  Free Software Foundation, Inc.,
-.\"  51 Franklin St, Fifth Floor,
-.\"  Boston, MA  02110-1301  USA
-.\"
-.TH CS_CHECK_MESH 1 2009-03-15 "" "Code_Saturne commands"
-.SH NAME
-cs_check_mesh \- Launch Code_Saturne preprocessor and solver in
-verification mode on a given mesh.
-.SH SYNOPSIS
-.B cs_check_mesh
-.RI -m
-.RI <file>
-.RI [preprocessor_options]
-.br
-.SH DESCRIPTION
-The
-.B cs_check_mesh
-script verify the quality of a given mesh. The following options will
-be passed to Code_Saturne preprocessor.
-.SH OPTIONS
-.B
-.IP "-m, --mesh <file>"
-Preprocessor input mesh file (mesh file format determined
-automatically by filename extension or forced by
-.B -format
-sub-option)
-
-.PP
-.I General options
-.B
-.IP "-h, --help"
-Print a usage message and exit.
-.B
-.IP "-i, --in [<file>]"
-Command line completed by a file (default file: standard input)
-.B
-.IP "--int-face [<sub-options>]"
-Count and display interior faces these faces may be selected with
-face-selection sub-options
-.B
-.IP "-j, --join [<sub-options>]"
-Join non-conforming faces; select faces to join with face-selection
-sub-options
-.B
-.IP "-p, --perio <sub-options>"
-Mesh periodicity defined by argument; joining sub-options for
-tolerances and selection of periodic faces with face-selection
-sub-options
-.B
-.IP "--reorient"
-If necessary, correct orientation of cells and faces
-
-.PP
-.I Mesh selection sub-options (-m, --mesh)
-.B
-.IP "--format <keyword>"
-Selection of mesh file format
-.B
-.IP "--num <n>"
-Selection of mesh number in file (if the format allows it)
-.B
-.IP "--grp-cel <keyword>"
-Add groups of cells (based on format features/conventions)
-  * based on sections: keyword "section"
-  * based on zones:    keyword "zone"
-.B
-.IP "--grp-fac <keyword>"
-Add groups of faces (based on format features/conventions)
-  * based on sections: keyword "section"
-  * based on zones:    keyword "zone"
-
-.PP
-.I Available mesh formats (-m, --mesh; --format)
-
-                                 Extension      Keyword
-
-   CGNS                          .cgns          cgns     
-   pro-STAR/STAR4                .ngeom         ngeom    
-   EnSight (6 or Gold)           .case          ensight  
-   GAMBIT Neutral                .neu           gambit   
-   GMSH                          .msh           gmsh     
-   NUMECA Hex                    .hex           hex      
-   I-deas universal              .unv           unv      
-   MED                           .med           med      
-   Simail (NOPO)                 .des           des      
-   Meta-mesh file                .mesh          meta     
-
-.PP
-.I Periodicity sub-options (-p, --perio)
-.B
-.IP "--trans <tx ty tz>"
-Translation vector
-.B
-.IP "--rota --angle <alpha> --dir <dx dy dz> [--invpt <px py pz>]"
-Rotation defined by an angle (in degrees) and a direction vector, and
-eventually by an invariant point (origin by default)
-.B
-.IP "--rota --matrix <mij> [--invpt <px py pz>]"
-Rotation defined by the rotation matrix (given line by line), and
-eventually by an invariant point (origin by default)
-
-.PP
-.I Non-conformal face joining sub-options (-j, --join, -p, --perio)
-.B
-.IP "--fraction <real number>"
-Fraction of the length of the smallest edge under which we consider
-that vertices may be fused (default value: 0.1)
-.B
-.IP "--plane <real number>"
-Minimal cosine of the normals of 2 coplanar faces (default value: 0.8)
-.B
-.IP "--semi-conf"
-Fast joining algorithm (allowed if faces already share vertices)
-
-.PP
-.I Face selection sub-options (for joining, selection, and periodicity)
-.B
-.IP "--color <number(s)>"
-Color numbers of faces to select
-.B
-.IP "--group <name(s)>"
-Group names of faces to select
-.B
-.IP "--invsel"
-Invert selection
-.SH SEE ALSO
-.BR cs_check_consistency (1),
-.BR cs_create (1),
-.BR cs_preprocess (1)
diff --git a/doc/manpages/cs_compile.1 b/doc/manpages/cs_compile.1
deleted file mode 100644
index 5efbc0c..0000000
--- a/doc/manpages/cs_compile.1
+++ /dev/null
@@ -1,56 +0,0 @@
-.\"
-.\"  This file is part of the Code_Saturne Kernel, element of the
-.\"  Code_Saturne CFD tool.
-.\"
-.\"  Copyright (C) 2009 EDF S.A., France
-.\"
-.\"  contact: saturne-support at edf.fr
-.\"
-.\"  The Code_Saturne Kernel is free software; you can redistribute it
-.\"  and/or modify it under the terms of the GNU General Public License
-.\"  as published by the Free Software Foundation; either version 2 of
-.\"  the License, or (at your option) any later version.
-.\"
-.\"  The Code_Saturne Kernel is distributed in the hope that it will be
-.\"  useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-.\"  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-.\"  GNU General Public License for more details.
-.\"
-.\"  You should have received a copy of the GNU General Public License
-.\"  along with the Code_Saturne Preprocessor; if not, write to the
-.\"  Free Software Foundation, Inc.,
-.\"  51 Franklin St, Fifth Floor,
-.\"  Boston, MA  02110-1301  USA
-.\"
-.TH CS_COMPILE 1 2009-03-15 "" "Code_Saturne commands"
-.SH NAME
-cs_compile \- Code_Saturne wrapper for user files compilation.
-.SH SYNOPSIS
-.B cs_compile
-.RI [--test]
-.RI [--source=<src_dir>]
-.RI [--dest=<dest_dir>]
-.RI [--opt-libs=<libs>]
-.br
-.SH DESCRIPTION
-The
-.B cs_compile
-script can be used to generate the
-.B cs_solver
-executable needed for running a Code_Saturne study.
-.SH OPTIONS
-.B
-.IP "-t, --test"
-Test only, discard compilation result.
-.B
-.IP "--source"
-Choose source file directory.
-.B
-.IP "--dest"
-Choose executable file directory.
-.B
-.IP "-h, --help"
-Print a usage message and exit.
-.SH SEE ALSO
-.BR cs_create (1),
-.BR cs_solver (1)
diff --git a/doc/manpages/cs_create.1 b/doc/manpages/cs_create.1
deleted file mode 100644
index 24307ce..0000000
--- a/doc/manpages/cs_create.1
+++ /dev/null
@@ -1,70 +0,0 @@
-.\"
-.\"  This file is part of the Code_Saturne Kernel, element of the
-.\"  Code_Saturne CFD tool.
-.\"
-.\"  Copyright (C) 2009 EDF S.A., France
-.\"
-.\"  contact: saturne-support at edf.fr
-.\"
-.\"  The Code_Saturne Kernel is free software; you can redistribute it
-.\"  and/or modify it under the terms of the GNU General Public License
-.\"  as published by the Free Software Foundation; either version 2 of
-.\"  the License, or (at your option) any later version.
-.\"
-.\"  The Code_Saturne Kernel is distributed in the hope that it will be
-.\"  useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-.\"  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-.\"  GNU General Public License for more details.
-.\"
-.\"  You should have received a copy of the GNU General Public License
-.\"  along with the Code_Saturne Kernel; if not, write to the
-.\"  Free Software Foundation, Inc.,
-.\"  51 Franklin St, Fifth Floor,
-.\"  Boston, MA  02110-1301  USA
-.\"
-.TH CS_CREATE 1 2009-03-15 "" "Code_Saturne commands"
-.SH NAME
-cs_create \- Generate a Code_Saturne study/case.
-.SH SYNOPSIS
-.B cs_create
-.RI [--nogui]
-.RI [--study
-.RI <study_name>
-.RI <case_name>]
-.RI [--case
-.RI <case_name>]
-.br
-.SH DESCRIPTION
-The
-.B cs_create
-script sets up a directory structure for a Code_Saturne study or
-case. The different directories created are MESH for meshes, POST for
-user post-processing and a case directory (or several) containing a
-DATA, SRC (to store user files), RESU (to store results) and SCRIPTS
-directory.
-.SH OPTIONS
-.B
-.IP "-s, --study"
-To specify the name of the study when creating a full study.
-.B
-.IP "-c, --case"
-To specify the name(s) of the case(s) when created in an existing
-study.
-.B
-.IP "-n, --nogui"
-To force non use of the Graphical User Interface. This option has to
-be used only once at the beginning or at the end of the option list.
-.B
-.IP -h
-Print a usage message and exit.
-.SH EXAMPLE
-cs_create --study study_name
-.P
-cs_create --study study_name case_name_1 case_name_2
-.P
-cs_create --case case_name_1 case_name2
-.P
-cs_create --nogui --case case_name_1
-.SH SEE ALSO
-.BR cs_check_consistency (1),
-.BR cs_check_mesh (1)
diff --git a/doc/manpages/cs_info.1 b/doc/manpages/cs_info.1
deleted file mode 100644
index 968f82d..0000000
--- a/doc/manpages/cs_info.1
+++ /dev/null
@@ -1,58 +0,0 @@
-.\"
-.\"  This file is part of the Code_Saturne Kernel, element of the
-.\"  Code_Saturne CFD tool.
-.\"
-.\"  Copyright (C) 2009 EDF S.A., France
-.\"
-.\"  contact: saturne-support at edf.fr
-.\"
-.\"  The Code_Saturne Kernel is free software; you can redistribute it
-.\"  and/or modify it under the terms of the GNU General Public License
-.\"  as published by the Free Software Foundation; either version 2 of
-.\"  the License, or (at your option) any later version.
-.\"
-.\"  The Code_Saturne Kernel is distributed in the hope that it will be
-.\"  useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-.\"  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-.\"  GNU General Public License for more details.
-.\"
-.\"  You should have received a copy of the GNU General Public License
-.\"  along with the Code_Saturne Kernel; if not, write to the
-.\"  Free Software Foundation, Inc.,
-.\"  51 Franklin St, Fifth Floor,
-.\"  Boston, MA  02110-1301  USA
-.\"
-.TH CS_INFO 1 2009-03-15 "" "Code_Saturne commands"
-.SH NAME
-cs_info \- Wrapper for Code_Saturne documentation.
-.SH SYNOPSIS
-.B cs_info
-.RI [--version]
-.RI [--reader
-.RI <pdf_reader>]
-.RI [--guide
-.RI <guide>]
-.br
-.SH DESCRIPTION
-The
-.B cs_info
-script is a wrapper for an easier look at Code_Saturne documentation.
-.SH OPTIONS
-.B
-.IP --version
-Print Code_Saturne version (preprocessor, kernel, interface).
-.B
-.IP "-g, --guide <guide>"
-Open a pdf manual amongst: user, theory, tutorial
-.B
-.IP "-r, --reader <pdf_reader>"
-Specify a pdf reader
-.B
-.IP -h
-Print a usage message and exit.
-.SH SEE ALSO
-.BR cs_check_consistency (1),
-.BR cs_check_mesh (1),
-.BR cs_create (1),
-.BR cs_plot_probes (1),
-.BR cs_preprocess (1)
diff --git a/doc/manpages/cs_plot_probes.1 b/doc/manpages/cs_plot_probes.1
deleted file mode 100644
index 5b280a7..0000000
--- a/doc/manpages/cs_plot_probes.1
+++ /dev/null
@@ -1,50 +0,0 @@
-.\"
-.\"  This file is part of the Code_Saturne Kernel, element of the
-.\"  Code_Saturne CFD tool.
-.\"
-.\"  Copyright (C) 2009 EDF S.A., France
-.\"
-.\"  contact: saturne-support at edf.fr
-.\"
-.\"  The Code_Saturne Kernel is free software; you can redistribute it
-.\"  and/or modify it under the terms of the GNU General Public License
-.\"  as published by the Free Software Foundation; either version 2 of
-.\"  the License, or (at your option) any later version.
-.\"
-.\"  The Code_Saturne Kernel is distributed in the hope that it will be
-.\"  useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-.\"  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-.\"  GNU General Public License for more details.
-.\"
-.\"  You should have received a copy of the GNU General Public License
-.\"  along with the Code_Saturne Kernel; if not, write to the
-.\"  Free Software Foundation, Inc.,
-.\"  51 Franklin St, Fifth Floor,
-.\"  Boston, MA  02110-1301  USA
-.\"
-.TH CS_PLOT_PROBES 1 2009-03-15 "" "Code_Saturne commands"
-.SH NAME
-cs_plot_probes \- Wrapper around XmGrace visualization tool to plot
-Code_Saturne variables at monitoring probes.
-.SH SYNOPSIS
-.B cs_plot_probes
-.RI <monitoring_file>
-.br
-.SH DESCRIPTION
-The
-.B cs_plot_probes
-script runs
-.B xmgrace -nxy
-command on a Code_Saturne time monitoring file (chronological records)
-after removing the first column (in order to have physical time on the
-X axis).
-.SH OPTIONS
-.B
-.IP -h
-Print a usage message and exit.
-.SH EXAMPLES
-cs_plot_probes VelocitU.hst
-.SH SEE ALSO
-.BR cs_check_consistency (1),
-.BR cs_check_mesh (1),
-.BR cs_create (1)
diff --git a/doc/refcard/Makefile.in b/doc/refcard/Makefile.in
index 112635f..c60fc78 100644
--- a/doc/refcard/Makefile.in
+++ b/doc/refcard/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Main LaTeX document
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -62,6 +64,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -88,10 +92,38 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	ps-recursive uninstall-recursive
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AR = @AR@
@@ -134,6 +166,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -170,11 +204,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -189,15 +221,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -242,7 +277,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -259,8 +295,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -313,14 +352,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/refcard/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/refcard/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/refcard/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/refcard/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -338,6 +377,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -352,7 +392,7 @@ clean-libtool:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -369,7 +409,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -377,7 +417,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -403,16 +443,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -420,14 +460,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -439,7 +479,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -448,29 +488,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -491,29 +536,44 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
 	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -543,6 +603,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -562,6 +623,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -570,12 +633,18 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
@@ -584,6 +653,8 @@ install-pdf-am: install-pdf-local
 
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -604,8 +675,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-libtool \
@@ -640,6 +711,7 @@ install-pdf-local:
 
 distclean-local: clean-local
 	-rm -f $(PDFMAIN)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/refcard/graphics/Makefile.in b/doc/refcard/graphics/Makefile.in
index 9d537f4..0da9298 100644
--- a/doc/refcard/graphics/Makefile.in
+++ b/doc/refcard/graphics/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Xfig files to process
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -62,6 +64,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -122,6 +126,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -158,11 +164,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -177,15 +181,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -230,7 +237,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -247,8 +255,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -286,14 +297,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/refcard/graphics/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/refcard/graphics/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/refcard/graphics/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/refcard/graphics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -311,6 +322,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -340,13 +352,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -374,6 +390,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -392,6 +409,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -400,18 +419,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -459,6 +488,7 @@ clean-local:
 	-rm -f $(PDF_FIGFILES)
 
 distclean-local: clean-local
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/refcard/refcard.tex b/doc/refcard/refcard.tex
index 596f3e8..c989e78 100644
--- a/doc/refcard/refcard.tex
+++ b/doc/refcard/refcard.tex
@@ -29,41 +29,41 @@
 
 \section*{User scripts}
 
-All \CS commands are available under a single script: \texttt{cs}.
+All \CS commands are available under a single script: \texttt{code\_saturne}.
 Here below are the most useful commands for a \CS user from the study
 creation to the post-processing. Complete information for each
 \texttt{command} can be obtained by typing:\\
-\texttt{cs <command> --help}.\\
+\texttt{code\_saturne <command> --help}.\\
 
 \refword{info}\\
 Get information on \CS. Open the documentation (user, theory,
 tutorial).\\
-\textit{e.g.} \texttt{cs info --guide=\emph{user}}\\
+\textit{e.g.} \texttt{code\_saturne info --guide=\emph{user}}\\
 
 \refword{config}\\
 Get information on the configuration and installation of \CS.\\
-\textit{e.g.} \texttt{cs config}\\
+\textit{e.g.} \texttt{code\_saturne config}\\
 
 \refword{create}\\
 Create a \CS template study or case.\\
-\textit{e.g.} \texttt{cs create --nogui --study=\emph{test}}\\
+\textit{e.g.} \texttt{code\_saturne create --nogui --study=\emph{test}}\\
 
 \refword{gui}\\
 Launch \CS graphical user interface.\\
-\textit{e.g.} \texttt{cs gui --file=\emph{xmlfile}}\\
+\textit{e.g.} \texttt{code\_saturne gui --file=\emph{xmlfile}}\\
 
 \refword{check\_mesh}\\
 Check the mesh quality.\\
-\textit{e.g.} \texttt{cs check\_mesh -m \emph{mesh}}\\
+\textit{e.g.} \texttt{code\_saturne check\_mesh -m \emph{mesh}}\\
 
 \refword{compile}\\
 Create a specific solver executable when some user subroutines are
 present.\\
-\textit{e.g.} \texttt{cs compile --test}\\
+\textit{e.g.} \texttt{code\_saturne compile --test}\\
 
 \refword{plot\_probes}\\
 Wrapper around XmGrace for plotting probes monitoring.\\
-\textit{e.g.} \texttt{cs plot\_probes \emph{VitesseX.hst}}
+\textit{e.g.} \texttt{code\_saturne plot\_probes \emph{VitesseX.hst}}
 
 % User subroutines
 % ----------------
diff --git a/doc/style/csindex.sty b/doc/style/csindex.sty
index 222940d..8e01af3 100644
--- a/doc/style/csindex.sty
+++ b/doc/style/csindex.sty
@@ -27,8 +27,8 @@
 headings_flag 3
 heading_prefix "{\\large \\bf \\hfil--\\ "
 heading_suffix " --\\ \\hfil}\\nopagebreak\n"
-symhead_negative "symboles"
-symhead_positive "Symboles"
+symhead_negative "symbols"
+symhead_positive "Symbols"
 
 delim_0 " \\dotfill \ "
 delim_1 " \\dotfill \ "
diff --git a/doc/style/csmacros.sty b/doc/style/csmacros.sty
index b8e10d9..7454f44 100644
--- a/doc/style/csmacros.sty
+++ b/doc/style/csmacros.sty
@@ -45,6 +45,7 @@
 \newcommand{\paraview}{ParaView\xspace}
 \newcommand{\pcs}{Preprocessor\xspace}
 \newcommand{\salome}{SALOME\xspace}
+\newcommand{\scotch}{SCOTCH\xspace}
 \newcommand{\simail}{S\textsc{IMAIL}\xspace}
 \newcommand{\starcd}{\textbf{STAR-CD}\xspace}
 \newcommand{\starccmp}{\textbf{STAR-CCM+}\xspace}
@@ -85,13 +86,13 @@
 \newcommand{\motcle}[7]{%
    \noindent
    \setbox\tempbox\hbox{\hspace*{2.5cm}}
-   \makebox[2.5cm][l]{#1}\index{#1}\makebox[1.3cm][l]{#2}\makebox[6.cm][l]{#3}%
+   \makebox[2.5cm][l]{\tt #1}\index{#1}\makebox[1.3cm][l]{#2}\makebox[6.cm][l]{#3}%
    \makebox[4.cm][l]{[#4]}#5\hspace{1cm}#6\\
    \hangindent\wd\tempbox\quad\ignorespaces#7\bigskip}
 \newcommand{\motcleb}[7]{%
    \noindent
    \setbox\tempbox\hbox{\hspace*{2.5cm}}
-   \makebox[2.5cm][l]{\bf #1}\index{#1}\makebox[1.3cm][l]{#2}\makebox[6.cm][l]{#3}%
+   \makebox[2.5cm][l]{\tt \bf #1}\index{#1}\makebox[1.3cm][l]{#2}\makebox[6.cm][l]{#3}%
    \makebox[4.cm][l]{[#4]}#5\hspace{1cm}#6\\
    \hangindent\wd\tempbox\quad\ignorespaces#7\bigskip}
 %
@@ -104,6 +105,7 @@
 \newcommand{\variablist}[4]{%
        \setbox\tempbox\hbox{ifacel [e]: }
        \hangindent\wd\tempbox\noindent{{\tt #2\index{#1}} [#3]:\quad}\ignorespaces#4\quad}
+\newcommand{\envvar}[1]{\medskip\noindent{\ttfamily \large #1}}
 %
 % Other useful macros (for \raggedright in tabular, for a Unix tilde)
 %
diff --git a/doc/theory/Makefile.am b/doc/theory/Makefile.am
index 424dab5..21274af 100644
--- a/doc/theory/Makefile.am
+++ b/doc/theory/Makefile.am
@@ -37,7 +37,10 @@ clptrg.tex \
 clptur.tex \
 clsyvt.tex \
 codits.tex \
-combustion.tex \
+combbase.tex \
+combcharb.tex \
+combfuel.tex \
+combgaz.tex \
 condli.tex \
 covofi.tex \
 elbase.tex \
@@ -51,6 +54,7 @@ navsto.tex \
 preduv.tex \
 recvmc.tex \
 resolp.tex \
+thermo.tex \
 summary.tex \
 turbke.tex \
 turrij.tex \
diff --git a/doc/theory/Makefile.in b/doc/theory/Makefile.in
index f70efd3..f4525bf 100644
--- a/doc/theory/Makefile.in
+++ b/doc/theory/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Main LaTeX document
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -62,6 +64,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -88,10 +92,38 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	ps-recursive uninstall-recursive
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AR = @AR@
@@ -134,6 +166,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -170,11 +204,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -189,15 +221,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -242,7 +277,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -259,8 +295,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -297,7 +336,10 @@ clptrg.tex \
 clptur.tex \
 clsyvt.tex \
 codits.tex \
-combustion.tex \
+combbase.tex \
+combcharb.tex \
+combfuel.tex \
+combgaz.tex \
 condli.tex \
 covofi.tex \
 elbase.tex \
@@ -311,6 +353,7 @@ navsto.tex \
 preduv.tex \
 recvmc.tex \
 resolp.tex \
+thermo.tex \
 summary.tex \
 turbke.tex \
 turrij.tex \
@@ -345,14 +388,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/theory/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/theory/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/theory/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/theory/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -370,6 +413,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -384,7 +428,7 @@ clean-libtool:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -401,7 +445,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -409,7 +453,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -435,16 +479,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -452,14 +496,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -471,7 +515,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -480,29 +524,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -523,29 +572,44 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
 	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -575,6 +639,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -594,6 +659,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -602,12 +669,18 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
@@ -616,6 +689,8 @@ install-pdf-am: install-pdf-local
 
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -636,8 +711,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-libtool \
@@ -672,6 +747,7 @@ install-pdf-local:
 
 distclean-local: clean-local
 	-rm -f $(PDFMAIN)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/theory/combbase.tex b/doc/theory/combbase.tex
new file mode 100644
index 0000000..4dbbb19
--- /dev/null
+++ b/doc/theory/combbase.tex
@@ -0,0 +1,208 @@
+\programme{ Introduction}
+{\huge sub-routines : co**, cp**, fu** ...}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Use \& call}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+From a CFD point of view combustion is a ({\small sometimes very})
+complicated way to determine $\rho$.\\ Models needs few extra fields
+of scalar with regular transport equations, some of them with a
+reactive or interfacial source term.\\ Modelling of combustion is able
+to deal with gas phase combustion ({\small diffusion, premix, partial
+premix}), and with solid or liquid fuels.\\ Combustion of condensed
+fuels involves one-way interfacial flux due to phenomena in the
+condensed phase ({\small evaporation or pyrolisis}) and reciprocal
+ones ({\small heterogeneous combustion}). Many of the species injected
+in the gas phase are afterwards involved in gas phase combsution.\\
+That is the reason why many modules are similar for gas, coal and fuel
+combustion modelling. Obviously, the thermodynamical description of
+gas species is similar in every version as close as possible to the
+JANAF rules.\\ All models are developped in both adiabatic and
+unadiabatic ({\small permeatic : heat loss, eg. by radiation})
+version, beyond the standard, the rule to call models is :
+
+IPPMOD(index model)  =  -1     unused
+
+IPPMOD(index model)  =   0     simplest adiabatic version
+
+IPPMOD(index model)  =   1     simplest permeatic version
+
+Eventually
+
+IPPMOD(index model)  =  2.p    P� adiabatic version
+
+IPPMOD(index model)  =  2.p+1  P� permeatic version 
+
+
+Every permeatic version involves the transport of enthalpy ({\small one more variable}). 
+
+%=================================
+\subsection{Gas combustion modelling}
+%=================================
+
+Gas combustion is limited by disponibility ({\small in the same fluid
+particle}) of both fuel and oxidant and by kinetic effects ({\small a
+lot of chemical reactions involved can be described using an Arrhenius
+law with high activation energy}). The mixing of mass ({\small atoms})
+incoming with fuel and oxydant is described by a mixture fraction
+({\small mass fraction of matter incoming with fuel}), this variable
+is not affected by combustion. A progress variable is used to describe
+the transformation of the mixture from fuel and oxydant to products
+({\small carbon dioxyde and so on}).Combustion of gas is,
+traditionnaly, splitted in premix and diffusion regimes.\\
+
+In premix combustion process a first stage of mixing have been
+realised ({\small without blast ...}) and the mixture is introduced in
+the boiler ({\small or combustor can}). In common industrial
+conditions the combustion is mainly limited by the mixing of fresh
+gases ({\small inert}) and burnt ones resulting in the inflammation of
+the first and their conversion to burnt ones ; so an assumption of
+chemistry much faster than mixing induces an intermittent regime. The
+gas flow is constituted of totally fresh and totally burnt gases
+({\small the flamme containing the gases during their transformation
+is "extremely" thin}). With this previous assumptions,
+Spalding \cite{1} established the "Eddy Break Up" model, which allows
+a complete description with only one progress variable ({\small
+mixture fraction is homogeneous}).\\
+
+In diffusion flames the fuel and the oxydant are introduced by two
+({\small at least}) inlets, in common industrial conditions, their
+mixing is the main limitation and the mixture fraction is enough to
+qualify a fluid particle, but in turbulent flows a {\em P}robability
+{\em D}ensity {\em F}unction of the mixture fraction is needed to
+qualify the thermodynamical state of the bulk. So both the mean and
+the variance of the mixture fraction are needed ({\small two
+variables}).\\
+
+Real world's chemistry is not so fast and, unfortunately, the mixing
+can not be so homogeneous as wished. Then industrial combustion occurs
+in partial premix regime. Partial premix occurs if mixing is not
+finished ({\small at molecular level}) when the mixture is introduced,
+or if air or fuel, are staggered, or if a diffusion flame is blown
+off. For these situations, and specifically for lean premix gas
+turbines Libby \& Williams \cite{2} developped a model allowing a
+description of both mixing and chemical limitations. A collaboration
+between the LCD Poitiers \cite{3} and EDF R\&D allows a simpler
+version of their algorithm. Not only the mean and the variance of both
+mixture fraction and progress variable are needed but also their
+covariance ({\small five variables}).
+
+
+%=================================
+\subsection{Coal combustion modelling}
+%=================================
+
+Coal combustion is the main way to produce electricity in the world.
+Coal is a natural product with a very complex composition. During the
+industrial process of milling the raw coal is broken in tiny particles
+of different sizes. After its introduction in the boiler, coal
+particles undergoes drying, devolatilisation ({\small heating of coal
+turn it in a mixture of char and gases}), heterogenous combustion
+({\small of char in carbon monoxide}) leaving ash particles.\\ Each of
+these phenomena are taken into account for some class of particles : a
+class is caracterised by a coal ({\small it is useful to burn mixture
+of coals with differents ranks or mixture of coal with biomasse ...})
+and an initial diameter. For each class, \CS computes the number and
+the mass of particles by unit mass of mixture.\\ The main assumption
+is to solve only one velocity ({\small and pressure}) field : it means
+the discrepancy of velocity between coal particles and gases is
+assumed negligible.\\ Due to the radiation and heterogeneous
+combustion, temperature can be different for gas and different size
+particles : so the specific enthalpy of each particle class is
+solved.\\ The description of coal pyrolysis proposed by Kobayashi \&
+Ubhayakar \cite{4} is used, leading to two source terms for light and
+heavy volatile matters ({\small the moderate temperature reaction
+produces gases with low molecular mass, the high temperature reaction
+produces heavier gases and less char}) represented by two passive
+scalars : mixture fractions.  The description of the heterogeneous
+reaction ({\small which produce carbon monoxide}) produces a source
+term for the carbon : a mixture fraction who can't be greater than the
+results of stoechiometric oxidation of char by air ({\small carbon
+can't be free in gas phase, it is always linked in an oxide}).\\ The
+retained model for the gas phase combustion is the assumption of
+diffusion flammelets surrounding each particle, so the previous
+gaseous fuels are mixed in a local mean fuel and the mixing with air
+is represented by a pdf between air and the mean local fuel
+constructed with the variance of a passive scalar linked with air
+({\small interfacial mass flux produce a source term for this
+scalar}).
+ 
+
+
+
+%=================================
+\subsection{Heavy Fuel Oil combustion modelling}
+%=================================
+
+Heavy fuel oil combustion have been hugely used to produced electrical
+energy. Environmental regulation turning it more difficult and less
+acceptable, a focus is needed on pollutant emission mainly sulphur
+oxide and particles ({\small condensation of sulphuric acid can
+aggregate soot}).\\ The description of fuel evaporation is done with
+respect to its heaviness : after a minimum temperature is reached, the
+gain of enthalpy is splitted between heating and evaporation. This way
+the evaporation takes place on a range of temperature ({\small which
+can be large}). The "total" evaporation is common for light ({\small
+domestic}) oil but impossible for heavy ones : at high temperature,
+during the last evaporation, a crakink reaction appears : so a
+particle similar to char leaves. The heterogeneous oxydation of this
+char particle is very similar to coal char ones.\\ Fuel injection is
+described ({\small 2006 version}) with only one class of particles
+({\small i.e. initial diameter}), the number, mass and specific
+enthalpy of particles are calculated eveywhere. So three variables are
+used to describe the condensed phase. In the same way as for coal,
+only one velocity field is computed.\\ The model for gas combustion is
+very similar to coal one but a special attention is paid to sulphur
+({\small assumed to leave the particle as H2S during evaporation and
+to be converted to SO2 during gas combustion}).
+
+
+%==================================
+%==================================
+\section{Bibliography}
+%==================================
+%==================================
+\begin{thebibliography}{4}
+
+
+\bibitem{1}
+{\sc Spalding, D.B., {\em et al.}},\\
+{\em Mixing and chemical reaction in steady confined turbulent turbulent flames},\\
+13th Int.Symp. on Combustion , pp. 649-657, (1971).
+
+\bibitem{2}
+{\sc Libby, P.A. and Williams, F.A.},\\
+{\em A presumed PDF analysis of lean partially premixed turbulent combustion},\\
+Combust. Sci. Technol., 161, pp. 351-390, (2000)
+
+\bibitem{3}
+{\sc Ribert, G. ; Champion, M. and Plion, P.},\\
+{\em Modeling turbulent reactive flows with variable equivalence ratio : application to the calculation of a reactive shear layer},\\
+Combust. Sci. Technol., 176, pp. 907-923, (2004)
+
+\bibitem{4}
+{\sc Kobayashi, H. {\em et al.}},\\
+16th Int.Symp. on Combustion , pp. 425-441, (1976).
+
+
+
+
+
+\end{thebibliography}
+\newpage
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Discr\'etisation}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+On se reportera aux sections relatives aux sous-programmes 
+\fort{cfmsvl} (masse volumique), \fort{cfqdmv} 
+(quantit\'e de mouvement) et \fort{cfener} (\'energie). 
+La documentation du sous-programme 
+\fort{cfxtcl} fournit des \'el\'ements relatifs aux 
+conditions
+aux limites. 
diff --git a/doc/theory/combcharb.tex b/doc/theory/combcharb.tex
new file mode 100644
index 0000000..a0f38cb
--- /dev/null
+++ b/doc/theory/combcharb.tex
@@ -0,0 +1,289 @@
+\programme{cpbase}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Function}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+Pulverised coal combustion is described ({\small excluding grid
+burning}) allowing the use of mixture of coals ({\small or of coal and
+biomass}) and a description of granulometry ({\small as many classes
+of initial diameter as wished}). After a particle enters the furnace,
+radiation increases its temperature.
+\begin{enumerate}
+  \item As particle's temperature increases, evaporation of free water
+  ({\small if any}) begins. During evaporation, the vapor pressure
+  gradient extract some water from the particle. The interfacial mass
+  flux brings some mass, water and enthalpy ({\small computed for
+  water vapour}) then latent heath is taken from the particle's
+  enthalpy so the heating is slowed ({\small during evaporation, the
+  water can't reach the boiling point}).
+\item After drying is achevied, the temperature  reachs higher level, allowing pyrolysis to take place. The pyrolysis is described by two competitive reactions : the first one with a moderate activation energy is able to free peripherals atoms group from skeleton leaving to light gases and a big amount of char ; the second one with an higher activation enrgy is able to break links deeper in the skeleton leaving to heavier gases ({\small or tar}) and less char ({\small more porous}. So a  [...]
+\\
+\centerline{$Coal =(k01, T01)=> Y1. light volatiles + (1-Y1).char$}\\
+\centerline{$Coal =(k02, T02)=> Y2. heavy volatiles + (1-Y2).char$}\\
+\\ Where Y1, the partitionning ({\small or selectivity}) factor of the "{\em low temperature}" reaction is less than Y2, the "{\em high temperature}" one. A practical rule is to consider that the same hydrogen and oxygen can bring twice more carbon by the second reaction than by the first one.\\
+
+
+When ultimate analysis are available both for coal and for char, it is
+ releavant to check partioning coefficient ({\small $Y_{i}$}) and
+ composition of volatiles matters ({\small mainly ratio of Carbon
+ monoxide and C$/$H in the hydrocarbon fraction}) : assumptions on
+ volatiles composition gives partitionning coefficients ; assumptions
+ on $Y_{i}$ determine volatiles equivalent formulae. Pyrolisis
+ interfacial mass flux brings energy of volatile gases ({\small
+ computed at the particle's temperature}) in wich the formation of
+ enthalpy of gaseous species differs from the coal one's, as a result
+ the enthalpy for pyrolisis reaction ({\small the most ofen, moderate})
+ is taken from particle energy.  \item After pyrolysis, when every
+ volatiles are burnt, oxygen is able to reach the surface of the char
+ particle. So heterogenous combustion can take place : diffusion of
+ oxygen from bulk, heterogeneous reaction ({\small kinetically
+ limited}) and back diffusion of carbone monoxide. The heterogeneous
+ oxidation interfacial mass flux is the difference of an incoming
+ oxygen flux and an outcoming carbon monoxide mass flux, each of them
+ at their own temperature. The incoming oxygen has a zero valued
+ formation enthalpy ({\small reference state}) and the outcoming
+ carbon monoxide has a negative formation enthalpy, as a result the
+ enthalpy liberated by the first oxidation of carbon is leaked in the
+ particle energy, contributiong to its heating. The heterogenous
+ combustion is achieved if all the carbon of the char particle is
+ converted, leaving an ash particle. Unburnt carbon can leave the
+ boiler as flying particle. The heterogeneous reaction is wrotten
+ : \\ \centerline{$Char + \frac{1}{2} 0_{2} =(k0het, T0het)=> CO$}
+\end{enumerate}
+
+The $2006$ version is able to deal with many class of particles
+\fort{NCLA}, each class beeing described by an initial diameter and a
+constituting char. Every char, among \fort{NCHAR} is described by a
+complete set of parameters : immediate and ultimate analysis, low
+heating value ({\small at user choice on raw, dry or pure}) and
+kinetic parameters ({\em for both the two competitive pyrolysis
+reaction and for heterogeneous reaction}). This allows to describe the
+combustion of a mixture or coals or of coal and every material
+describable by such evolution kinetics ({\small woods chips ...}). It
+is, obviously, possible to mix fuels with ({\small very}) different
+proximate analysis, like dry hard coal and wet biomass.
+
+
+\newpage
+%=================================
+\subsection{Notations}
+%=================================
+
+\begin{table}[h!]
+\begin{tabular}{ccp{10,5cm}}
+
+{\bf Symbol} & {\bf Unit} & {\bf Meaning}\\
+
+
+$H$ 		& $J/kg$ 	& specific enthalpy \\
+$K$ 		& $kg/(m.\,s)$ 	& thermal diffusivity\\
+$\lambda$ 	& $W/(m.\,K)$ 	& thermal conductivity\\
+$\mu$	 	& $kg/(m.\,s)$ 	& dynamical viscosity\\
+$\rho$ 		& $kg/m^3$ 	& density\\
+$M$, $M_i$ 	& $kg/mol$ 	& molar mass ($M_i$ for  $i$� constituant)\\
+$P$ 		& $Pa$ 		& pressure\\
+$R$ 		& $J/(mol.\,K)$ & perfect gas constant\\
+$T$ 		& $K$ 		& temperature ($>0$)\\
+$Y_i$ 		& 		& mass fraction of constituant $i$ 
+					($0 \leqslant Y_i \leqslant 1$)\\
+$D^{t}$         & $kg/(m.\,s)$  & turbulent viscosity \\
+$\alpha_{i}$    & 		& mass fraction of phase k \\
+$t$ 		& $s$ 		& time\\
+\end{tabular}
+\end{table}
+
+\clearpage
+
+%=================================
+\subsection{Budget Equations}
+%=================================
+
+The bulk, done of gases and particles, is assumed to be describable
+with only one pressure and velocity. The slipping velocitiy between
+particles and gases is supposed negligible compared to this mean
+velocity.  Scalars for the bulk are :
+\vspace{0.5cm}
+\begin{itemize}
+  \item Bulk density 
+     \begin{equation} 
+        \rho_{m} = \alpha_{1}\rho_{1} + \alpha_{2}\rho_{2}
+     \end{equation} 
+  \item Bulk velocity 
+     \begin{equation} 
+       U_{m} = \frac{ \alpha_{1}\rho_{1} U_{1} 
+                    + \alpha_{2}\rho_{2} U_{2} }{\rho_{m}}
+     \end{equation} 
+  \item Bulk enthalpy 
+     \begin{equation} 
+        H_{m} = \frac{ \alpha_{1}\rho_{1} H_{1} 
+                     + \alpha_{2}\rho_{2} H_{2} }{\rho_{m}}
+     \end{equation} 
+  \item Bulk pressure 
+     \begin{equation} 
+       P_{m} = P_{1}
+     \end{equation} 
+\end{itemize}  
+
+Mass fractions of gaseous medium ($Y_{1}^{*}$) and of partciles are defined by :
+\begin{eqnarray}
+  Y_{1}^{*} = \frac{\alpha_{1}\rho_{1}}{\rho_{m}} &\\
+  Y_{2}^{*} = \frac{\alpha_{2}\rho_{2}}{\rho_{m}} &
+\end{eqnarray}
+
+So budget equations for the bulk can be written :
+
+\begin{equation}
+  \frac{\partial}{\partial t    } \rho_{m}
+ +\frac{\partial}{\partial x_{j}} (\rho_{m}U_{m,j}) = 0 
+\end{equation}
+
+\begin{equation}
+  \frac{\partial}{\partial t    } (\rho_{m}U_{m,i})
+ +\frac{\partial}{\partial x_{j}} (\rho_{m}U_{m,i}U_{m,j})
+       =  \frac{\partial}{\partial x_{j}}
+              \left[ \rho_{m} \left[ D_{m}^{t}( \frac{\partial U_{m,i}}{\partial x_{j}}
+                                  +\frac{\partial U_{m,i}}{\partial x_{j}} ) \\
+                      -\frac{2}{3}\delta_{ij}
+                            ( q_{m}^{2}
+                             +D_{m}^{t}\frac{\partial U_{m,l}}{\partial x_{l}}) \right]  \right]
+           - \frac{\partial P_{m}}{\partial x_{i}}+\rho_{m}g_{i}
+\end{equation}
+
+\begin{equation}
+  \frac{\partial}{\partial t    } (\rho_{m} H_{m})
+ +\frac{\partial}{\partial x_{j}} (\rho_{m}U_{m,j}H_{m})
+              = \frac{\partial}{\partial x_{j}} 
+                       (\rho_{m}D_{m}^{t} \frac{\partial H_{m}}{\partial x_{j}})
+               +S_{m,R}
+\end{equation}
+ 
+With the ({\small velocity}) homogeneity assumption, mainly budget
+equation for bulk caracteristic are pertinent. So transport equation
+for the scalar $\Phi_{k}$, where k is the phase, can be written :
+
+\begin{equation}
+  \frac{\partial}{\partial t    } (\rho_{m} Y_{k}^{*}\Phi_{k})
+ +\frac{\partial}{\partial x_{j}} (\rho_{m} U_{m,j} Y_{k}^{*} \Phi_{k})
+              = \frac{\partial}{\partial x_{j}} 
+                       (\rho_{m}D_{m}^{t} \frac{\partial Y_{k}^{*} \Phi_{k}}{\partial x_{j}})
+               +S_{\Phi_{k}}+\Gamma_{\Phi_{k}}
+\end{equation}
+
+%=================================
+\subsection{Coal combustion scalars}
+%=================================
+
+\subsubsection{Bulk enthalpy : $H_{m}$ }
+Budget equation for the specific enthalpy of the mixture ({\small gas
++ particles}) admits only one source term for radiative effects
+$S_{m,R}$ :
+\begin{equation}
+    S_{m,R}= S_{1,R}+ S_{2,R}
+\end{equation}
+With contributions of each phases liable to be described by different
+models ({\small eg : wide band for gases, black body for particles}).
+
+\subsubsection{Particles enthalpy : $Y_{2}^{*}H_{2}$ }
+Enthalpy of droplets ({\small J in particles/kg bulk}) is the product
+of solid phase mass fraction ({\small kg liq/kg bulk}) by the specific
+enthalpy of solid ({\small kg solid/kg bulk}). So the budget equation
+for liquid enthalpy has six source terms : :
+\begin{equation}
+     \Pi_{2}^{'}+S_{2,R}-\Gamma_{evap}H_{H2Ovap}(T_{2})-\Gamma_{devol1}H_{MV1}(T_{2})-\Gamma_{devol2}H_{MV2}(T_{2})
+                        +\Gamma_{het}\left( \frac{M_{O}}{M_{C}}H_{O_{2}}(T_{1})
+                                      -\frac{M_{CO   }}{M_{C}}H_{CO   }(T_{2})\right) 
+\end{equation}
+with
+\begin{itemize}
+  \item $\Pi_{2}^{'}$ : heat flux between phases
+  \item $S_{2,R}$ : radiative source term for droplets
+  \item $\Gamma_{evap}H_{H2Ovap}(T_{2})$ the vapor flux leaves at particle temperature ($H_{vap}$ includes latent heat)
+\item $\Gamma_{dvol1}H_{MV1}(T_{2})$ the light volatile matter flux leaves at particle temperature ($H_{vap}$ includes latent heat)
+\item $\Gamma_{dvol2}H_{MV2}(T_{2})$ the heavy volatile matter flux leaves at particle temperature ($H_{vap}$ includes latent heat)
+   \item $\Gamma_{het}(...)$ heterogenous combustion induces reciprocal mass flux : oxygen arriving at gas temperature and carbone monoxide leaving at char particle one.
+
+\end{itemize}
+
+\subsubsection{Dispersed phase mass fraction : $Y_{2}^{*}$}
+In budget equation for the mass fraction of the dispersed phase
+({\small first droplets, then char particles, at last ashes}) the
+source terms are interfacial mass fluxes ({\small first evaporation,
+then net flux for heterogeneous combustion}):
+
+\begin{equation}
+     -\Gamma_{evap}-\Gamma_{het}
+\end{equation}
+          
+\subsubsection{Number of particles : $N_{p}^{*}$}
+No source term in the budget equation for number of droplets : a
+droplet became a particle ({\small eventually a tiny flying ash}) but
+never vanish ({\small particles it have to get out}).
+
+                                
+\subsubsection{Mean of the passive scalar for light volatile : $F_{1}$}  
+This scalar represent the amount of matter which have leaved the
+particle as fuel vapour, whatever it happens after. It's a mass
+fraction of gaseous matter ({\small in hydrocarbon form or carbon
+oxide ones}). So the source term in its budget is only evaporation
+mass flux :
+\begin{equation}
+   \Gamma_{evap}
+\end{equation}     
+
+\subsubsection{ Variance of $F_{1}$ : $F_{1}^{'2}$}
+Budget equation for $F_{1}^{'2}$ have three source term :
+\begin{equation}
+   \Gamma_{F_{1}^{'2}}
+   -2\rho_{m}Y_{1}^{*}\frac{F_{1}^{'2}}{\tau_{\chi_{F_{1}^{'2}}}} 
+   + \rho_{m}Y_{1}^{*}D_{m}^{t}\frac{\partial F_{1}}{\partial x_{j}} 
+                               \frac{\partial F_{1}}{\partial x_{j}}
+\end{equation} 
+where $\Gamma_{F_{1}^{'2}}$ is due to interfacial mass fluxes ({\small
+every interfacial mass fluxes impact gaseous phase variances}).
+                                                 
+\subsubsection{Mean of the passive scalar for carbon from char : $F_{3}$}  
+Budget equation for $F_{3}$ have for lone source term the mass flux
+due to heterogeneous combsution ({\small mass flux of carbon monoxide
+minus oxygene mass flux}). As for $F_{1}$ oxidation in the gaseous
+phase does not modifiy this {\em passive} scalar :
+\begin{equation}
+   \Gamma_{het}
+\end{equation}   
+         
+                       
+\subsubsection{ Variance of the passive scalar for air : $F_{4}^{'2}$} 
+ 
+This passive scalar incomes with air but is'nt destroyed by any
+({\small in gaseous phase or heterogeneous}). No budget equation
+needed for it, $F_{4}$ can be determined from the wholeness
+relation.\\
+
+Budget equation for $F_{4}^{'2}$ have, like other passive scalar
+variance budget equaiton, four source terms :
+\begin{equation} 
+    \Gamma_{F_{4}^{'2}}
+   -2\rho_{m}Y_{1}^{*}\frac{F_{4}^{'2}}{\tau_{\chi_{F_{4}^{'2}}}} 
+   + \rho_{m}Y_{1}^{*}D_{m}^{t}\frac{\partial F_{4}}{\partial x_{j}} 
+                               \frac{\partial F_{4}}{\partial x_{j}}
+\end{equation} 
+where $\Gamma_{F_{4}^{'2}}$ is due to interfacial mass fluxes ({\small every interfacial mass fluxes impact gaseous phase variances}).
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Discr\'etisation}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+On se reportera aux sections relatives aux sous-programmes
+\fort{cfmsvl} (masse volumique), \fort{cfqdmv} 
+(quantit\'e de mouvement) et \fort{cfener} (\'energie).  La
+documentation du sous-programme
+\fort{cfxtcl} fournit des \'el\'ements relatifs aux 
+conditions
+aux limites. 
diff --git a/doc/theory/combfuel.tex b/doc/theory/combfuel.tex
new file mode 100644
index 0000000..b1fe1d5
--- /dev/null
+++ b/doc/theory/combfuel.tex
@@ -0,0 +1,263 @@
+\programme{fubase}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Function}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+The combustion of heavy fuel oil is described. After a droplet enters
+the furnace, its temperature increases reaching an evaporating range
+({\small heavy fuel oil is'nt a specy with a well defined boiling
+point}):
+\begin{enumerate}
+  \item As droplet's temperature reachs the begin of evaporating
+          range, vapour begins to be given off. Gazeous hydrocarbons
+          are then involved in a diffusion flame surrouding each
+          droplet. The heavy fuel oil beeing constitued of long
+          hydrocarbons molecules, cracking mays occur and char is
+          leaved. So the complex chemistry inside the droplet is
+          summarized by : \\ Heavy fuel oil $\longrightarrow$ gazeous
+          hydrocarbons + char
+ 
+  \item After evaporation, when the whole vapour are burnt, oxygen is
+  able to reach the surface of the char particle. So heterogenous
+  combustion can take place. It is very similar to the oxydation of
+  coal char : diffusion of oxygen from bulk, heterogeneous reaction
+  ({\small kinetically limited}) and back diffusion of carbone
+  monoxide. The heterogenous combustion is achieved if all the carbon
+  of the char particle is converted, leaving an ash particle ({\small
+  heavy fuel oil can contain inerts, some of which beeing heavy
+  metals}). Unburnt carbon can leave the boiler as flying
+  particle. The heterogeneous reaction is wrotten : \\
+\centerline{$Char + \frac{1}{2} 0_{2} =(k0het, T0het)=> CO$} 
+\end{enumerate}
+
+\vspace{0.5cm}
+\noindent{} Fuel jet combsution strongly depends on injection conditions and namely on mean diameter of drops (size distribution). In the first (2006) version \CS take in account only one diameter : monodisperse injection.
+
+
+\vspace{0.5cm}
+
+\noindent{} For heavy fuel oil, like for coal, the french reference [1] can be useful :
+ 
+\noindent{\bf [1]} Escaich, Alain~: ``Mise en oeuvre dans Code\_Saturne des
+mod�lisations physiques particuli�res. Tome 2 : Combustion du charbon
+pulv�ris�.'', HI-81/02/09/A, Rapport EDF, 2002.
+
+\newpage
+%=================================
+\subsection{Notations}
+%=================================
+
+\begin{table}[h!]
+\begin{tabular}{ccp{10,5cm}}
+
+{\bf Symbol} & {\bf Unit} & {\bf Meaning}\\
+
+
+$H$ 		& $J/kg$ 	& specific enthalpy \\
+$K$ 		& $kg/(m.\,s)$ 	& thermal diffusivity\\
+$\lambda$ 	& $W/(m.\,K)$ 	& thermal conductivity\\
+$\mu$	 	& $kg/(m.\,s)$ 	& dynamical viscosity\\
+$\rho$ 		& $kg/m^3$ 	& density\\
+$M$, $M_i$ 	& $kg/mol$ 	& molar mass ($M_i$ for  $i$� constituant)\\
+$P$ 		& $Pa$ 		& pressure\\
+$R$ 		& $J/(mol.\,K)$ & perfect gas constant\\
+$T$ 		& $K$ 		& temperature ($>0$)\\
+$Y_i$ 		& 		& mass fraction of constituant $i$ 
+					($0 \leqslant Y_i \leqslant 1$)\\
+$D^{t}$         & $kg/(m.\,s)$  & turbulent viscosity \\
+$\alpha_{i}$    & 		& mass fraction of phase k \\
+$t$ 		& $s$ 		& time\\
+\end{tabular}
+\end{table}
+
+\clearpage
+
+%=================================
+\subsection{Budget Equations}
+%=================================
+
+The bulk, done of gases and droplets, is assumed to be describable
+with only one pressure and velocity. The slipping velocitiy between
+droplets and gases is supposed negligible compared to this mean
+velocity.  Scalars for the bulk are :
+\vspace{0.5cm}
+\begin{itemize}
+  \item Bulk density 
+     \begin{equation} 
+        \rho_{m} = \alpha_{1}\rho_{1} + \alpha_{2}\rho_{2}
+     \end{equation} 
+  \item Bulk velocity 
+     \begin{equation} 
+       U_{m} = \frac{ \alpha_{1}\rho_{1} U_{1} 
+                    + \alpha_{2}\rho_{2} U_{2} }{\rho_{m}}
+     \end{equation} 
+  \item Bulk enthalpy 
+     \begin{equation} 
+        H_{m} = \frac{ \alpha_{1}\rho_{1} H_{1} 
+                     + \alpha_{2}\rho_{2} H_{2} }{\rho_{m}}
+     \end{equation} 
+  \item Bulk pressure 
+     \begin{equation} 
+       P_{m} = P_{1}
+     \end{equation} 
+\end{itemize}  
+
+Mass fractions of gaseous medium ($Y_{1}^{*}$) and of droplets are defined by :
+\begin{eqnarray}
+  Y_{1}^{*} = \frac{\alpha_{1}\rho_{1}}{\rho_{m}} &\\
+  Y_{2}^{*} = \frac{\alpha_{2}\rho_{2}}{\rho_{m}} &
+\end{eqnarray}
+
+So budget equations for the bulk can be written :
+
+\begin{equation}
+  \frac{\partial}{\partial t    } \rho_{m}
+ +\frac{\partial}{\partial x_{j}} (\rho_{m}U_{m,j}) = 0 
+\end{equation}
+
+\begin{equation}
+  \frac{\partial}{\partial t    } (\rho_{m}U_{m,i})
+ +\frac{\partial}{\partial x_{j}} (\rho_{m}U_{m,i}U_{m,j})
+       =  \frac{\partial}{\partial x_{j}}
+              \left[ \rho_{m} \left[ D_{m}^{t}( \frac{\partial U_{m,i}}{\partial x_{j}}
+                                  +\frac{\partial U_{m,i}}{\partial x_{j}} ) \\
+                      -\frac{2}{3}\delta_{ij}
+                            ( q_{m}^{2}
+                             +D_{m}^{t}\frac{\partial U_{m,l}}{\partial x_{l}}) \right]  \right]
+           - \frac{\partial P_{m}}{\partial x_{i}}+\rho_{m}g_{i}
+\end{equation}
+
+\begin{equation}
+  \frac{\partial}{\partial t    } (\rho_{m} H_{m})
+ +\frac{\partial}{\partial x_{j}} (\rho_{m}U_{m,j}H_{m})
+              = \frac{\partial}{\partial x_{j}} 
+                       (\rho_{m}D_{m}^{t} \frac{\partial H_{m}}{\partial x_{j}})
+               +S_{m,R}
+\end{equation}
+ 
+With the ({\small velocity}) homogeneity assumption, mainly budget equation for bulk caracteristic  are pertinent. So transport equation for the scalar $\Phi_{k}$, where k is the phase, can be written :
+
+\begin{equation}
+  \frac{\partial}{\partial t    } (\rho_{m} Y_{k}^{*}\Phi_{k})
+ +\frac{\partial}{\partial x_{j}} (\rho_{m} U_{m,j} Y_{k}^{*} \Phi_{k})
+              = \frac{\partial}{\partial x_{j}} 
+                       (\rho_{m}D_{m}^{t} \frac{\partial Y_{k}^{*} \Phi_{k}}{\partial x_{j}})
+               +S_{\Phi_{k}}+\Gamma_{\Phi_{k}}
+\end{equation}
+
+%=================================
+\subsection{Fuel combustion scalars}
+%=================================
+
+\subsubsection{Bulk enthalpy : $H_{m}$ }
+Budget equation for the specific enthalpy of the mixture ({\small gas
++ droplets}) admits only one source term for radiative effects
+$S_{m,R}$ :
+\begin{equation}
+    S_{m,R}= S_{1,R}+ S_{2,R}
+\end{equation}
+With contributions of each phases liable to be described by different
+models ({\small eg : wide band for gases, black body for particles}).
+
+\subsubsection{Droplets enthalpy : $Y_{2}^{*}H_{2}$ }
+Enthalpy of droplets ({\small J in droplets/kg bulk}) is the product
+of liquid phase mass fraction ({\small kg liq/kg bulk}) by the
+specific enthalpy of liquid ({\small kg liq/kg bulk}). So the budget
+equation for liquid enthalpy has four source terms : :
+\begin{equation}
+     \Pi_{2}^{'}+S_{2,R}-\Gamma_{evap}H_{vap}(T_{2})
+                        +\Gamma_{het}\left( \frac{M_{O}}{M_{C}}H_{O_{2}}(T_{1})
+                                      -\frac{M_{CO   }}{M_{C}}H_{CO   }(T_{2})\right) 
+\end{equation}
+with
+\begin{itemize}
+  \item $\Pi_{2}^{'}$ : heat flux between phases
+  \item $S_{2,R}$ : radiative source term for droplets
+  \item $\Gamma_{evap}H_{vap}(T_{2})$ the vapor flux leaves at droplet temperature ($H_{vap}$ includes latent heat)
+   \item $\Gamma_{het}(...)$ heterogenous combustion induces reciprocal mass flux : oxygen arriving at gas temperature and carbone monoxide leaving at char particle one.
+
+\end{itemize}
+    
+\subsubsection{Dispersed phase mass fraction : $Y_{2}^{*}$}
+In budget equation for the mass fraction of the dispersed phase
+({\small first droplets, then char particles, at last ashes}) the
+source terms are interfacial mass fluxes ({\small first evaporation,
+then net flux for heterogeneous combustion}):
+
+\begin{equation}
+     -\Gamma_{evap}-\Gamma_{het}
+\end{equation}
+          
+\subsubsection{Number of droplets : $N_{p}^{*}$}
+No source term in the budget equation for number of droplets : a
+droplet became a particle ({\small eventually a tiny flying ash}) but
+never vanish ({\small particles it have to get out}).
+
+                                
+\subsubsection{Mean of the passive scalar for fuel vapor : $F_{1}$}  
+This scalar represent the amount of matter which have leaved the
+particle as fuel vapour, whatever it happens after. It's a mass
+fraction of gaseous matter ({\small in hydrocarbon form or carbon
+oxide ones}). So the source term in its budget is only evaporation
+mass flux :
+\begin{equation}
+   \Gamma_{evap}
+\end{equation}     
+
+\subsubsection{ Variance of $F_{1}$ : $F_{1}^{'2}$}
+Budget equation for $F_{1}^{'2}$ have three source term :
+\begin{equation}
+   \Gamma_{F_{1}^{'2}}
+   -2\rho_{m}Y_{1}^{*}\frac{F_{1}^{'2}}{\tau_{\chi_{F_{1}^{'2}}}} 
+   + \rho_{m}Y_{1}^{*}D_{m}^{t}\frac{\partial F_{1}}{\partial x_{j}} 
+                               \frac{\partial F_{1}}{\partial x_{j}}
+\end{equation} 
+where $\Gamma_{F_{1}^{'2}}$ is due to interfacial mass fluxes ({\small
+every interfacial mass fluxes impact gaseous phase variances}).
+                                                 
+\subsubsection{Mean of the passive scalar for carbon from char : $F_{3}$}  
+Budget equation for $F_{3}$ have for lone source term the mass flux
+due to heterogeneous combsution ({\small mass flux of carbon monoxide
+minus oxygene mass flux}). As for $F_{1}$ oxidation in the gaseous
+phase does not modifiy this {\em passive} scalar :
+\begin{equation}
+   \Gamma_{het}
+\end{equation}   
+         
+                       
+\subsubsection{ Variance of the passive scalar for air : $F_{4}^{'2}$} 
+ 
+This passive scalar incomes with air but is'nt destroyed by any
+({\small in gaseous phase or heterogeneous}). No budget equation
+needed for it, $F_{4}$ can be determined from the wholeness
+relation.\\
+
+Budget equation for $F_{4}^{'2}$ have, like other passive scalar
+variance budget equaiton, four source terms :
+\begin{equation} 
+    \Gamma_{F_{4}^{'2}}
+   -2\rho_{m}Y_{1}^{*}\frac{F_{4}^{'2}}{\tau_{\chi_{F_{4}^{'2}}}} 
+   + \rho_{m}Y_{1}^{*}D_{m}^{t}\frac{\partial F_{4}}{\partial x_{j}} 
+                               \frac{\partial F_{4}}{\partial x_{j}}
+\end{equation} 
+where $\Gamma_{F_{4}^{'2}}$ is due to interfacial mass fluxes ({\small
+every interfacial mass fluxes impact gaseous phase variances}).
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Discretisation}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+The discretisation of equation are not problematic. Details are in
+sections : \fort{fuflux} (interfacial fluxes of mass and energy),
+\fort{futssc} (source term for fuel specific scalars)
+and \fort{fucym1} (gas phase combustion). 
diff --git a/doc/theory/combgaz.tex b/doc/theory/combgaz.tex
new file mode 100644
index 0000000..82cea5e
--- /dev/null
+++ b/doc/theory/combgaz.tex
@@ -0,0 +1,514 @@
+\programme{ Gas combustion}
+{\huge subroutines : co** and d3p*, ebu*, lwc*, pdf*}
+
+Flames with gaseous fuels can be categorized in premix, diffusion or
+partial-premix.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Premix : Eddy Break Up}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+The original Spalding model \cite{1} was written for a situation where
+the whole boiler is full with the same mixture ({\small only one
+inlet}) ; the key-word of which is {\em"If it mixes, it burns"}.\\
+
+If the chemistry is fast, vs. mixing, fluid particles are made of
+fresh gases or of burned ones. This situation is described by a
+progress variable ({\small valued 0 in fresh gases and 1 in burnt
+ones}) with a source term : the reaction one. The mixture of totally
+fresh or totally burnt gases, called intermittency, leads to a maximal
+variance of the progress variable determined by the mean value of the
+progress variable.\\
+\begin{equation}
+C"^{2} max = (Cmoy -Cmin).(Cmax-Cmoy) = Cmoy . (1-Cmoy)
+\end{equation}
+
+
+The mixing of fresh and burnt gases is the dissipation of this
+variance and it induces the conversion of fresh gases in burnt
+ones. So the source term for the ({\small mean}) progress variable is
+the dissipation of its ({\small algebraic}) variance.\\
+
+In \CS the progress variable chosen is the mass fraction of fresh
+gases, so :\\
+\begin{equation}
+S(Ygf) = - Cebu . \rho . \frac{\epsilon}{k} . Ygf . (1-Ygf)
+\end{equation}
+
+Where Cebu is a constant, supposedly "universal", fitted around 1.6
+({\small only advanced users can adjust this value}).\\
+
+
+Some improvements have been proposed, and largely used, for situations
+with mixture fraction gradient ({\small staggering of reactant(s)})
+but are not theorically funded. The simplest extension is available
+({\small options 2 and 3 }) in \CS with one extra equation solved for
+f the mean of mixture fraction : the corresponding hypothesis is "no
+variance for mixture fraction" ... a little bit surprising in an EBU
+context ({\small maximal variance for progress variable}). The choice
+of the fresh gas mass fraction appears now quite pertinent : the
+computation of species mass fraction can be done, with respect to the
+mean mixture fraction, both in fresh ({\small the mass fraction of
+which is Ygf}) and burnt gases ({\small the mass fraction of which is
+(1-Ygf)}).\\
+\begin{equation}
+Y_{Fuel} = Y_{gf}.f + (1-Y_{gf}) . Max(0 ; \frac{f-fs}{1-fs})
+\end{equation}
+\begin{equation}
+Y_{Ox} = Y_{gf}.(1-f) + (1-Y_{gf}) . Max(0 ; \frac{fs-f}{fs})
+\end{equation}
+\begin{equation}
+Y_{Prod} = (1-Y_{gf}) . Min( \frac{f}{fs} ; \frac{1-f}{1-fs} )
+\end{equation}
+Where fs is the stoechiometric mixture fraction.\\
+
+In adiabatic conditions the specific enthalpy of gases ({\small in
+every combustion model the considered enthalpy contains formation one
+and heat content, but no terms for velocity or pressure}) is directly
+related to the mixture fraction ({\small as long as the inlet
+temperature for air and fuel is known}). When heat losses, like
+radiation, are taken in account, an equation has to be solved for the
+mean enthalpy ({\small such an equation is needed so when some entries
+have different temperatures -partial preheat- enthalpy is then used as
+an extra passive scalar}). In industrial processes, the aim is often
+to transfer the heat from burnt gases to wall ; even for heat loss the
+wall temperature is near to fresh gases temperature and the main heat
+flux takes place between burnt gases and wall. So in \CS the specific
+enthalpy of the fresh gases is supposed to be related to mixture
+fraction and the specific enthalpy of burnt gases is locally computed
+to reach the mean specific enthalpy. This way every heat loss removed
+from the mean enthalpy is "paid" by the hottest gases.\\
+
+\begin{equation}
+hmean = Ygf.hgf(f) + (1-Ygf).hbg => hbg
+= \frac{hmean-Ygf.hgf(f)}{1-Ygf}
+\end{equation}
+
+Where f ({\small in hgf(f)}) is the local mean of the mixture fraction
+or a constant value ({\small in regular EBU model}).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Diffusion : PDF with 3 points chemistry}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+In diffusion model, the combustion is supposed limited only by mixing
+({\small between air and fuel}), so the reaction is assumed to reach
+instantaneously its equilibrium state and the temperature and
+concentrations can be computed for every value of the mixture
+fraction. In \CS the implemented version uses an extra hypothesis :
+the reaction is complete ; so if the mixture is stoechiometric, the
+burnt gases contains only final products ({\small none unburnt like
+CO...}). As a consequence, every concentration is a piecewise linear
+function of the mixture fraction (subroutines : \fort{D3PPHY, D3PINT,
+CPCYM,FUCYM}) .\\
+\begin{equation}
+0<f<fs => Yi(f) = Yair + \frac{f}{fs} . (Ys-Yair)
+\end{equation}
+\begin{equation}
+fs<f<1 => Yi(f) = Ys + \frac{f-fs}{1-fs} . (Yfuel-Ys)
+\end{equation}\\
+\begin{figure}[h]
+%\centerline{\includegraphics[height=3cm]{../Comb/Cogz/Images/Yf.pdf}}
+\caption{mass fraction of global species are piecewise linear with mixture fraction}
+\end{figure}
+Where fs is the stoechiometric mixture fraction, Yair and Yfuel are
+concentrations in ({\small supposed unable to react : inert}) initial
+reactant, Ys concentrations in products of the complete reaction of a
+stoechiometric mixture ({\small in such products, the chemical
+reaction is no more possible : inert}).\\
+
+The diffusion model uses two equations for the mixture fraction and
+its variance both of them having no reaction term. The mean and the
+variance of the mixture fraction are used to presume the Probability
+Density Function for the mixture fraction. In \CS the shape proposed
+by Borghi \cite{4} with a rectangle and Dirac's peak is used
+(subroutines \fort{COPDF, CPPDF, FUPDF}).\\
+
+\begin{figure}[h]
+%\centerline{\includegraphics[height=4cm]{../Comb/Cogz/Images/Pf.pdf}}
+%\centerline{\includegraphics[height=2.5cm]{../Comb/Cogz/Images/Pf2.pdf}}
+\caption{Examples of presumed PDF : cheapest form}
+\end{figure}
+The determination of mean concentration is done by integration the
+local concentration weighted by the probability density function. As a
+matter of fact, integrate the product of a piecewise linear function
+by a constant ({\small height of the rectangle}) is a very simple
+exercise : analytic solution are available ({\small the original
+Borghi formulation \cite{3} wich uses $\beta$ function was much more
+computationaly expensive}).
+
+In adiabatic condition, the specific enthalpy of the mixture is a
+linear function of the mixture fraction ({\small the enthalpy is not
+modified by the reaction}). As for premix combustion, an assumption is
+done "the hotter the gases, the worse the heat losses", so the
+enthalpy of pure oxidiser and fuel are supposed not to be modified in
+permeatic conditions, the enthalpy of products hs ({\small at the
+stoechimodtric mixture fraction}) is an unknown or auxiliary
+variable. The enthalpy of the mixture is supposed linear piecewise
+with f ({\small like concentrations but with an unkwnon at fs}) and
+the resulting mean enthalpy ({\small weighted by PDF}is linear in
+hs. Fitting with the equation for the mean enthalpy ({\small wich
+takes in account radiation and other heat fluxes}), hs is determined
+and, consequently the temperature at fs and the mean temperature can
+be computed.
+
+\begin{figure}[h]
+%\centerline{\includegraphics[height=4cm]{../Comb/Cogz/Images/hf.pdf}}
+\caption{Enthalpy of products is determined to account for heat losses }
+\end{figure}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Partial premix : Libby Williams models}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\CS has been the test-bed for some versions of Libby-Williams model \cite{2}, like inplemented then incremented by Ribert \cite{5} and Robin \cite{6}.
+
+The Libby \& Williams model have been developped to address the
+description of the combustor can of gas turbine in regime allowing a
+reduction of NOx production using ({\small sometimes very}) lean
+premix : by this way, the combustion occurs at moderate temperatures
+avoiding the hot spots which are favourable to thermal NOx
+production. As a consequence of the moderate temperatures, the
+chemistry is no more so fast and the stability is questionnable. To
+ensure it a diffusion flame called pilot takes place in the center of
+the combustor. So, if the main flow is premixed, both pure fuel and
+pure oxidiser are introduced in the combsutor leading to continuous
+variation of the equivalence ratio ({\small always the mixture
+fraction}). This situation is clearly out of the range of both EBU and
+PDF models, moreover the limitation by the chemistry is needed
+({\small for stability studies}).\\
+
+Originally, Libby \& Williams proposed a presumed PDF made of two
+Dirac's peak, Ribert showed that this PDF can be determined with only
+the mean and the variance of the mixture fraction and a reactive
+variable ({\small by now, the mass fraction of fuel is used}). Then
+some undeterminations seem awkward and Robin \& al. propose a four
+Dirac's peak PDF whose parameters are determined with the same
+variables and the solved ({\small transported}) covariance ({\small of
+the reactive variable and the mixture fraction}) as an extra solved
+field. With the condition corresponding to every Dirac's peak a global
+chemistry description is used ({\small source term for every variables
+is a weighting of the reaction fluxes}).\\ With two peaks
+distribution, the two-variable PDF is restricted to one line, crossing
+the mean state and the slope of which is the ratio of variances
+({\small chose of the sign is user free, ... but relevant : expertise
+is needed}). The correlation between variables is unity.\\ On this
+line the distribution is supposed to obey a modified Curl
+model \cite{7}.\\
+\begin{figure}[h]
+%\centerline{\includegraphics[height=5cm]{../Comb/Cogz/Images/LW2.pdf}}
+\caption{PDF recommended by Libby \& Williams : still undetermined}
+\end{figure}
+With three or four peaks distribution, the whole concentration space
+is available and the determination of the covariance allows evolution
+of the correlation ({\small with f and Yf, it have been shown that the
+correlation is positive in mixing layer and can become negative across
+flame : the particle nearer of stoechiometry being able to burn -then
+destroy Yf- faster than poor ones}). \\
+\begin{figure}[h]
+%\centerline{\includegraphics[height=5cm]{../Comb/Cogz/Images/LW4.pdf}}
+\caption{PDF form in LWP approach : succesive modified Curl distributions}
+\end{figure}
+In adiabatic conditions, the temperature can be computed for every
+pair (f,Yfuel), allowing the determination of the kinetic constant.\\
+As previously, with heat losses, it is assumed that the hottest gases
+have lost the more, the enthalpy of the products at stoechiometric
+point (fs,0) is an auxiliary variable, the enthaply being considered
+as a piecewise bilinear function. Fitting mean transported enthalpy
+and integrated ones, allows to determine the enthalpy of
+stoechiometric products, then the enthalpy and temperature in the
+peaks conditions and, ({\em in fine}) the reactions fluxes.
+
+
+
+
+%==================================
+%==================================
+\section{Bibliography}
+%==================================
+%==================================
+\begin{thebibliography}{7}
+
+\bibitem{1}
+{\sc Spalding, D.B., {\em et al.}},\\
+{\em Mixing and chemical reaction in steady confined turbulent turbulent flames},\\
+13th Int.Symp. on Combustion , pp. 649-657, (1971).
+
+\bibitem{2}
+{\sc Borghi, R. {\em et } Moreau, P.},\\
+{\em Turbulent combustion in a premixed flow},\\
+Acta Astronautica, 4, pp. 321-341, (1977)
+
+\bibitem{3}
+{\sc Borghi, R. {\em et } Dutoya, D.},\\
+{\em On the scale of the fluctuation in turbulent combustion},\\
+17th Int.Symp. on Combustion, (1978).
+
+\bibitem{4}
+{\sc Libby, P.A. {\em et } Willimas, F.A.},\\
+{\em A presumed PDF analysis of lean partially premixed turbulent combustion},\\
+Comb. Sci. Technol., 161 , pp. 351-390, (2000).
+
+\bibitem{5}
+{\sc Ribert, G. {\em et al.}},\\
+{\em Modeling turbulent reactive flows with variable equivalence ratio : application to the calculation of a reactive shear layer},\\
+Comb. Sci. Technol., 176 , pp. 907-923, (2004).
+
+\bibitem{6}
+{\sc Robin, V. {\em et al.}},\\
+{\em Relevance of approximated PDF shapes for turbulent combustion modeling with variable equivalence ratio},\\
+ICDERS, (2005) to be published.
+
+\bibitem{7}
+{\sc Curl, R.L.},\\
+{\em Dispersed phase mixing : theory and effects in simple reactors},\\
+AIChE J., 9 , pp. 175-181 (1963).
+
+
+
+
+\end{thebibliography}
+\newpage
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Discretisation}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Some applied mathematics are involved in pdf parameters determination
+({\small rectangle and modified Curl}) and for integration ({\small
+species mass fraction, temperature, density and so on}).\\
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Rectangle and Dirac's peaks probability density function}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+This type of pdf is used in diffusion flames both for gas combustion
+or dispersed fuel ones ({\small coal and heavy fuel oil}). In gas
+mixture, the pdf is build for an equivalence ratio for fuel ({\small
+inert scalar variable}) ranging on [0, 1]. For disperse fuel, due to
+vaporisation, or pyrolysis, and heterogeneous combustion two or three
+gaseous fuels are taken in account, each of them having its own inert
+scalar, so the PDF is build for an inert scalar incoming with air and
+ranging from a minimum value and one ; the minimum value for air
+tracker is due to heterogeneous combustion : some air is needed to
+allow heterogeneous combsution and carbon releasing ({\small as carbon
+monoxide}) ; after some heteregenous reaction took place, air is
+lacking for gas combustion ({\small at the bottom stone mile of the
+range allowed for the inert scalar associated with air, oxygen
+concentration is zero valued}). The algorithm for pdf parameters
+determination, can be wrotten in a general form on every variable's
+range.\\
+
+If the allowed range for the variable is [$f_{min} ; f_{max}$],
+knowing the mean and variance of the variable allow to determine first
+the shape ({\small alone rectangle, rectangle and one Dirac's peak at
+one boundary, two Dirac's peak at boundaries and rectangle}) and then
+the three pertinent parameters ({\small three conditions given by
+momenta $m_{0}=1, m_{1}=mean, m_{2}=mean^{2}+variance$}).\\
+
+- for a lonesome rectangle Dirac's peak intensity is null, the three
+  parameters are : the begin and end values of the rectangle and its
+  heigth\\
+
+- for a rectangle with a Dirac's peak at one boundary ({\small which
+  is determined during the choose of shape}), one of the rectangle
+  hedge is fixed at this boundary, so the three parameters are : the
+  other rectangle hedge, height of rectangle, intensity of the Dirac's
+  peak\\
+
+- for a two Dirac's peak distribution, both rectangle hedges are at
+   the boudaries, so the parameters are the rectangle height and the
+   Dirac's peak intensity.\\
+
+Quite complicated tests ({\small computationnaly expensive}) can be
+done to determine only the relevant parameters, and therefore spare
+computations, or general computaions of parameters can be done and
+afterwards tested ({\small if rectangle too large then attempt with
+one Dirac's peak. If too large again then two peaks would be
+convenient}).
+ 
+ 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Composition in total turbulent reaction assumption}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+With the above Probability Density Function and assumption of
+concentrations piecewise linear vs. the variable, it is quite easy to
+integrate and found the mean concentrations. For gas diffusion flame
+this is done by \fort{D3PPHY, D3PINT}, it seems more relevant to
+explain the algorithm in a more complicated case : for heavy fuel
+oil \fort{FYUCYM} or for coal \fort{CPCYM} three reactions are
+considered. \\
+
+- Coal is assumed to undergoes two competitve pyrolysis reactions, the
+  first releasing organic compound summarized as $CH_{x1}$, the second
+  releasing $CH_{x2}$ ({\small with $x1 > x2$}), both of them
+  releasing $CO$. Then the heterogeneous combustion of char release
+  $CO$. So three reactions are supposed to succed ({\small both in
+  time and in priority to access to oxygen}). First of all partial
+  dehydrogenation ({\small lowering saturation}) of $CH_{x1}$ to
+  produce water vapor and $CH_{x2}$. Then the $CH_{x2}$ ({\small
+  produced by pyrolisis or by $CH_{x1}$ partial oxydation}) is
+  converted to water vapor and carbon monoxide. Last, carbon monoxide
+  $CO$ is converted to carbon dioxide $CO_{2}$.\\
+
+- Heavy fuel oil is supposed to undergoes a progressive evaporation,
+  releasing a fuel vapor $CH_{x}$, $CO$, $H_{2}S$ and a char
+  particle. Then heterogenous oxidation of char releases $CO$. Three
+  reactions are supposed to succeed. First, the conversion of $CH_{x}$
+  to water vapor and $CO$. Then the oxidation of $H_{2}S$ to water
+  vapor and $SO_{2}$. Last, carbon monoxide is fully oxidised.\\
+
+Both for coal and heavy fuel oil, the assumption of a diffusion
+flamelet surrounding particles is done. All of the reducing gases are
+supposed mixed ({\small to constitue a local mean fuel}) and the
+diffusion flammelet take place between this mixture and pure oxidiser
+({\small but for solid particles introduced wet, when a first drying
+process releases water vapor which is mixed with air}) and the
+composition is described with respect to the inert scalar introduced
+with air : \fort{f4}.\\
+
+For the description of compositions ({\small as piecewise linear
+functions}) the composition is computed in some remarkable points :
+the local mean fuel \fort{CL}, the oxidiser \fort{F4} and the three
+mixture ratio corresponding to the stoechiometry of the three
+successive reactions.\\ Before reaction between gases, only exist
+species coming from entries or interfacial source term :\\
+\begin{figure}[h]
+%\centerline{\includegraphics[height=6cm]{../Comb/Cogz/Images/YF0f.pdf}}
+\caption{Heavy Fuel Oil before any gas combustion} 
+\end{figure}
+{\centerline {\em Caution : axis for f4 is reverted, so fuel is on the
+right side like in a scheme with a mixture fraction direct axis}}}\\
+
+The oxygen and the hydrocarbon vapor have concentrations linear in f4
+on [CL, 1], as long as the stoechiometry of the reaction is known, a
+simple equation allows to determine f4s1 the stoechiometric point for
+the first reaction ({\small where both oxygen and hydrocarbon
+vanish}).  The first reaction is the conversion of some hydrocarbon
+vapor to carbon monixide and water vapor ({\small not plotted in an
+optimistic attempt to lighten the sketch}).\\
+\\
+\centerline{$CH_{x} + \frac{2+x}{4} O_{2} => CO + \frac{x}{2} H_{2}O $}\\
+\\
+\begin{figure}[h!]
+%\centerline{\includegraphics[height=6cm]{../Comb/Cogz/Images/YF1f.pdf}}
+\caption{Heavy Fuel Oil after hydrocarbon conversion}
+\end{figure}
+\\
+Then the rich area can't undergo any reaction ({\small no oxygen
+available}) if the PDF(f4) is not zero before F4s1, then some $CH_{x}$
+is unburnt.\\
+
+Some $H_{2}S$ can be converted to $SO_{2}$, the carbon monoxide
+existing between F4cl and F4s2 is protected from oxidation ({\small
+the two first reactions have destroyed free oxygen}). Like previously,
+oxygen and hydrogen sulphide have concentrations linear in f4 on
+[f4s1, 1] as long as the stoechiometry of the reaction is known, a
+simple equation allows to determine f4s2 the stoechiometric point for
+the second reaction ({\small where both oxygen and hydrogen sulphide
+vanish}).\\
+\\
+\centerline{$H_{2}S + \frac{3}{2} O_{2} => SO_{2} + H_{2}O $ }\\
+\\
+\begin{figure}[h!]
+%\centerline{\includegraphics[height=6cm]{../Comb/Cogz/Images/YF2f.pdf}}
+\caption{Heavy Fuel Oil after H2S oxidation}
+\end{figure}
+\\
+Now oxygen and carbon monoxide have concentrations linear in f4 on
+[f4s2, 1], and f4s3 ({\small the point wher the whole oxygne and
+carbon monoxide are converted to carbon dioxide}) is easy to
+compute.\\
+\\
+\centerline{$CO + \frac{1}{2} O_{2} => CO_{2} $ }\\
+\\
+\begin{figure}[h!]
+%\centerline{\includegraphics[height=6cm]{../Comb/Cogz/Images/YF3f.pdf}}
+\caption{Heavy Fuel Oil after final carbon oxidation}
+\end{figure}
+\\
+To have not any unburnt, the PDF may be zero valued for F4 $<$ F4s3 :
+every gas particle may have an F4 greater than F4s3.\\
+
+During pulverised coal combustion, two kinds of volatile matters are
+considered and the sketch of concentrations during the three
+successive reactions is quite similar.\\
+
+The first reaction is a partial dehydrogenation of the light volatile
+$CH_{x1}$ to form the species caracteristic of heavy volatile
+$CH_{x2}$ : in f4s1, all of $CH_{x1}$ ({\small issued from the low
+temperature pyrolisis reaction}) is converted, and the $CH_{x2}$
+({\small issued from the high temperature pyrolisis reaction}) is
+incremented.\\
+\\
+\centerline{$CH_{x1} + \frac{x1-x2}{4} O_{2} => CH_{x2} + \frac{x1-x2}{2} H_{2}O $}\\
+\\
+The second reaction is the conversion of this unsaturated hydrocarbon
+to carbon monoxide and water.\\
+\\
+\centerline{$CH_{x2} + \frac{2+x2}{4} O_{2} => CO + \frac{x2}{2} H_{2}O $}\\
+\\
+And the last ({\small not the least from an energetic point of view})
+is the same final oxidation of carbon monoxide to carbon dioxide.\\
+\\
+Comparisons of the PDF rectangle hedges [$f_{deb} , f_{fin}$] and
+remarkable composition points [CL, f4s1, f4s2, f4s3, F4] allows a
+simple integration : 1) Dirac's peak intensity are used to weight
+composition at boundaries, 2) the piece linear part is integrated with
+analytical formulae on each band :\\
+\begin{enumerate}
+\item rich range, here exists species with the higher calorific value : $CH_{x}$ ({\small in fuel case}) or $CH_{x2}$ ({\small in coal case }) :\\  \centerline{[Max($f_{deb}$,CL) ; Min($f_{fin}$,f4s1)]}\\
+\item middle-class range $H_{2}S$ or $CH_{x1}$ conversion :\\
+ \centerline{[Max($f_{deb}$ , f4s1 ); Min ($f_{fin}$ , f4s2 )]}\\
+\item working range, carbon monoxide consumption frees enthalpy :\\ \centerline{ [Max($f_{deb}$ ,f4s2 ); Min ($f_{fin}$ , f4s3 )]}\\
+\item poor range, only products and oxidisers :\\ \centerline{ [Max($f_{deb}$ , f4s3 ); Min ($f_{fin}$ , 1)]}\\
+\end{enumerate}
+
+For each band (eg. [f4si , f4sj]) concentrations can be written :\\
+\centerline{$Ye = Ye(f4si) + \frac{f4-f4si}{f4sj-f4si} . \left( Ye(f4sj)-Ye(f4si) \right) $}\\ 
+Integration on the band [b1 , b2] ({\small obviously b1$\geq$f4si \&
+b2$\leq$f4sj}) gives the increment :\\
+\centerline{$Ye := Ye + h_{rec}.(b2-b1) + \left[ \frac{Ye(f4si).f4sj-Ye(f4sj).f4si}{f4sj-f4si}+\frac{Ye(f4sj)-Ye(f4si)}{f4sj-f4si}.\frac{b1+b2}{2} \right] $}\\
+Where $h_{rec}$ is the height of the PDF's rectangle. 
+
+ 
+ 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Composition in partial turbulent reaction assumption for CO}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+If the final oxidation of carbon monoxide, can't be assumed fast in
+respect to mixing ; the main limitation in the kinetic one. So the
+above process of concentrations determination is stopped after the two
+first reactions ; the resulting, high, content in carbon monoxide
+({\small and oxygen}) is the molar sum of both carbon monoxide and
+carbon dioxyde. With an extra budget equation for carbon dioxide, the
+effective concentrations of carbon monoxide ({\small difference
+between "turbulent" integration and transported "already" consumed }),
+oxygen and carbon dioxide can be computed, then a reactive source term
+for oxidation ({\small of carbon monoxide}) and dissociation ({\small
+of carbon dioxide}).
+
+\newpage
+
+
+
+
diff --git a/doc/theory/combustion.tex b/doc/theory/combustion.tex
deleted file mode 100644
index 903cb0f..0000000
--- a/doc/theory/combustion.tex
+++ /dev/null
@@ -1,196 +0,0 @@
-%-----------------------------------------------------------------------
-%
-%     This file is part of the Code_Saturne Kernel, element of the
-%     Code_Saturne CFD tool.
-%
-%     Copyright (C) 1998-2008 EDF S.A., France
-%
-%     contact: saturne-support at edf.fr
-%
-%     The Code_Saturne Kernel is free software; you can redistribute it
-%     and/or modify it under the terms of the GNU General Public License
-%     as published by the Free Software Foundation; either version 2 of
-%     the License, or (at your option) any later version.
-%
-%     The Code_Saturne Kernel is distributed in the hope that it will be
-%     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-%     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-%     GNU General Public License for more details.
-%
-%     You should have received a copy of the GNU General Public License
-%     along with the Code_Saturne Kernel; if not, write to the
-%     Free Software Foundation, Inc.,
-%     51 Franklin St, Fifth Floor,
-%     Boston, MA  02110-1301  USA
-%
-%-----------------------------------------------------------------------
-%
-\programme{co**, cp**, fu** and so ... d3p*, ebu*, lwc*, pdf*}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{Fonction}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-From a CFD point of vue combustion is a (somestimes very) complicated
-way to determine $\rho$.  Models needs few extra fields of scalar with
-regular transport equation, somes of them with a reactive or
-interfacial source term.
-
-Modeling of combustion is able to deal with gaz phase combustion
-(diffusion, premix, partial premix), and with solid or liquid fuels.
-
-Combustion of condensed fuels involves one-way interfacial flux due to
-phenomenon in the condensed phase (evaporation or pyrolisis) and
-reciprocal ones (heterogeneous combustion). Many of the species
-injected in the gaz phase are afterwards involved in gaz phase
-combsution.
-
-That is the reason why a lot of modules are similar for gaz, coal and
-fuel combusiton modelling. Obviously, the thermodynamical description
-of gaz species is similar in every version as close as possible of the
-JANAF rules.
-
-Every models are developped in both an adiabatic version and an
-undiabatic (permeatic) one, so in addition with standard, the rule to
-call models is :
-IPPMOd(index model) = -1   unused
-IPPMOD(index model) =  0   simplest adiabatic version
-IPPMOD(index model) =  1   simplest permeatic version
-Eventually
-IPPMOD(index model) = 2.p   p� adiabatic version
-IPPMOD(index model) = 2.p+1  P� permeatic version
-
-Every permeatic version involves the transport of enthalpy (one more variable).
-
-%=================================
-\subsection{Gaz combustion modelling}
-%=================================
-
-Combustion of gaz is limited by disponibility (in the same fluid
-particle) of both fuel and oxidant and by kinetic effects (a lot of
-chemical reactions involved can be described using an Arrhenius law
-with an high activation energy). The mixing of mass (atoms) incoming
-with fuel and oxydant is described by a mixture fraction (mass
-fraction of mass incoming with fuel), this variable is not affected by
-combustion. A progress variabl is used to describe the transformation
-of the mixture from fuel and oxydant to product (carbon dioxyde and so
-on).
-
-Combsution of gaz is, traditionnaly, splitted in premix and diffusion.
-In premix combustion process a first stage of mixing have been
-realised (without blast ...) and the mixture is introduced in the
-boiler (or combustion can). In industrial common conditions the
-combustion is mainly limited by the mixing of fresh gaz (inert) and
-burnt ones resulting in the inflammation of the first and their
-conversion to burnt ones ; so an assumption of chemistry much faster
-than mixing induces an intermittent regime. The gaz flow is
-constituted of totally fresh and totally burnt gaz (the flamme
-containing the gaz during their transformation) is "extremuly"
-%thin. With previous assumptions, Spalding \ref{Comb} have established
-thin. With previous assumptions, Spalding have established
-the "Eddy Break Up" model, wich allows a complete descrition with only
-one progress variable (mixture fraction is homogeneous).  In diffusion
-flame the fuel and the oxydant are introduced by two (at least)
-inlets, in common industiral conditions, their mixing is the main
-limitation and the mixture fraction is enough to qualify a fluid
-particle, but in turbulent flow a probability density function of the
-mixture fraction is needed to qualify the thermodynamical state of the
-bulk. So both the mean and the variance of the mixture fraction are
-needed (two variables).
-
-In the real world the chemistry is not so fast and, often, the mixing
-is not as homogeneous as wished. Then the industrial combustion occurs
-in partial premix combsution. Partial premix occurs if the mixing is
-not finished (at molecular level) when the mixing is introduced, or if
-air, or fuel, are staggered, or if a diffusion flame is blowed
-off. For these situations, and specifically for lean premix gaz
-%turbines Libby \& Williams \ref{Comb} have developped a model allowing
-turbines Libby \& Williams have developped a model allowing
-a descirption of both mixing and chemical limitations. A collaboration
-%between the LCD Poitiers \ref {Comb} and EDF R\&D allows a simpler
-between the LCD Poitiers and EDF R\&D allows a simpler
-version of their algorithm. Not only the mean and the variance of both
-mixture fraction and progress variable are needed but so the
-covariance (five variables).
-
-
-%=================================
-\subsection{Coal combustion modelling}
-%=================================
-
-Combustion of coal is the main way to produce electricity in the
-world.  The coal is a natural product with a very complex composition,
-during the industrial process of milling the raw coal is broken in
-tiny particles of different sizes. After its introduction in the
-boiler, the caol particles undergoes drying, devolatilisation (heating
-of coal turn it in a mixture of char and gases), heterogenous
-combustion (of char leaving to carbone monoxide) leaving an ash
-particle. Each of therse phenomena are taken in account for some class
-of particles : a class is caracterised by a coal (it is useful to burn
-mixture of coals with differents ranks or mixture of coal with
-biomasse ...) and an initla diameter. For each class, \CS computes the
-number and the mass of particles by unit mass of mixture.  The main
-assumption is to solve only one speed (and pressure) field : it means
-the discrepancy of speed between coal particles and gases is supposed
-negligible.  Due to the radiation and heterogeneous combustion,
-temperature can be different for gas and different size particles : so
-the specific enthalpy of each particle class is solved.  The
-%description of coal pyrolisis proposed by Kobayashi \cite{Comb} and
-%bhayakar \cite{Comb} is used, leaving at two source terms for light
-descripton of coal pyrolisis proposed by Kobayashi and
-bhayakar is used, leaving at two source terms for light
-and heavy volatile matters (the moderate temperature reaction produces
-gases with low molecular mass, the high temperature reaction produces
-heavier gases and less char) represented by passive scalar : mixture
-fraction.  The description of heterogeneous reaction (who produce
-carbon monoxide) leads to a source term for the carbon : a mixture
-fraction who can't be greater than the results of stoechiometric
-oxydation of char by air.  The retained model for the gaz phase
-combusiton is diffusion flammelets surrounding each particle, so the
-previous gaseous fuels are mixed in a local mean fuel and the mixing
-with air is represented by a pdf between air and mean local fuel
-constructed with the variance of a passive scalar linked with air
-(interfacial mass flux produce a source term for this scalar).
-
-
-
-
-%=================================
-\subsection{Heavy Fuel Oil combustion modelling}
-%=================================
-
-Combustion of heavy fuel oil have been hugely used to produced
-electrical energy. Environemental regulation turns it more difficult
-and less acceptable, a focus is needed on pollutant emission mainly
-soulphur oxide and particles (condensation of sulphuric acid can
-aggregate soot).  The description of fuel evaporation is done with
-respect of its heaviness : after a minimum temperature is reached, the
-gain of enthalpy is distributed between heating and evaporation. This
-way the evaporation takes place on a range of temperature (which can
-be large). The "total" evaporation is common for light oil but
-impossible for heavy ones, so a particle similar to char is leaved ;
-the heterogeneous oxydation of this char particle is very similar to
-coal char ones.  Injection of fuel is described (2006 version) with
-only one class of particle, the number and mass of particles is
-calculated eveywhere. And so the enthalpy. So three variables are used
-to describe the condensed pahse. Like for coal, only one speed field
-is solved.  The model for gas combustion is very similar to coal ones
-but a special is paid to sulphur (assumed to leave the particle as H2S
-during evaporation and to be converted to SO2 during gas combustion).
-
-
-%==================================
-%==================================
-%\section{Bibliography}
-%==================================
-%==================================
-%\begin{thebibliography}{3}
-
-%\bibitem{Comb} {\sc Plion P., {\em et al.}},\\
-%{\em Le titre},\\
-%Les r�f�rence.
-
-
-%\end{thebibliography}
diff --git a/doc/theory/graphics/Makefile.in b/doc/theory/graphics/Makefile.in
index 1b38079..0007117 100644
--- a/doc/theory/graphics/Makefile.in
+++ b/doc/theory/graphics/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Xfig files to process
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -62,6 +64,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -122,6 +126,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -158,11 +164,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -177,15 +181,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -230,7 +237,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -247,8 +255,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -305,14 +316,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/theory/graphics/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/theory/graphics/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/theory/graphics/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/theory/graphics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -330,6 +341,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -359,13 +371,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -393,6 +409,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -411,6 +428,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -419,18 +438,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -478,6 +507,7 @@ clean-local:
 	-rm -f $(PDF_FIGFILES)
 
 distclean-local: clean-local
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/theory/theory.tex b/doc/theory/theory.tex
index 4f40df9..db57ecd 100644
--- a/doc/theory/theory.tex
+++ b/doc/theory/theory.tex
@@ -150,7 +150,11 @@ commande d'information g\'en\'erale \texttt{info\_cs [theory]}.}
 \part{Module �lectrique}
 \include{elbase}
 \part{Module combustion}
-\include{combustion}
+\include{combbase}
+\include{combgaz}
+\include{combcharb}
+\include{combfuel}
+\include{thermo}
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % FIN DU DOCUMENT
diff --git a/doc/theory/thermo.tex b/doc/theory/thermo.tex
new file mode 100644
index 0000000..bd75b86
--- /dev/null
+++ b/doc/theory/thermo.tex
@@ -0,0 +1,29 @@
+\programme{Thermodynamics}
+{\huge sub-routines : pptbht, cothht, colecd, cplecd, fulecd ...}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Function}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+The description of the thermodynamical of gases mixture is as close as possible of the JANAF standard. The gases mixture is, often, considered as composed of some {\em global} species ({\small eg. oxidizer, products, fuel}) each of them beeing a mixture ({\small with known ratio}) of {\em elementary} species ({\small oxygen, nitrogen, carbon dioxide, ...}).\\
+ A tabulation of the enthalpy of both elementary and global species for some temperatures is constructed ({\small using JANAF polynoms}) or read ({\small if the user found useful to define a global specie not simply related to elementary ones ; eg. unspecified hydrocarbon known by C, H, O, N, S analysis and heating value.}).\\ 
+The thermodynamic properties of condensed phase are more simple : formation enthalpy is computed using properties of gaseous products of combustion with air ({\small formation enthalpy of wich is zero valued as O2 and N2 are reference state}) and the lower heating value. The heat capacity of condensed phase is assumed constant and it is a data the user have to type ({\small in the corresponding data file dp\_FCP or dp\_FUE}).
+
+
+%d
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Gases enthalpy discretisation}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+A table of gases ({\small both elementary species and global ones}) enthalpy for some temperatures ({\small user choses number of points, temperature in dp\_*** file}) is computed ({\small enthalpy of elementary species is computed using JANAF polynomia ; enthalpy for global species are computed by weighting of elementary ones})or read ({\small subroutine PPTBHT}). Then the entahlpy is supposed to be linear vs. temperature in each temperature gap ({\small i.e. continuous piece wise linea [...]
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Particles enthalpy discretisation}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Enthalpy of condensed material are rarely known. Commonly, the thermal power and ultimate analysis are determined. So, using simple assumptions and the enthalpy of known released species ({\small after burning with air}) the formation enthalpy of coal or heavy oil can be computed. Assuming the thermal capacity is constant for every condensed material a table can be build with ... two temperatures, allowing the use of the same simple algorithm for temperature-enthalpy conversion. When int [...]
diff --git a/doc/tutorial/Makefile.in b/doc/tutorial/Makefile.in
index f8678e4..69226a7 100644
--- a/doc/tutorial/Makefile.in
+++ b/doc/tutorial/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Main LaTeX document
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -62,6 +64,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -88,10 +92,38 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	ps-recursive uninstall-recursive
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AR = @AR@
@@ -134,6 +166,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -170,11 +204,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -189,15 +221,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -242,7 +277,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -259,8 +295,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -329,14 +368,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/tutorial/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/tutorial/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/tutorial/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/tutorial/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -354,6 +393,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -368,7 +408,7 @@ clean-libtool:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -385,7 +425,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -393,7 +433,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -419,16 +459,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -436,14 +476,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -455,7 +495,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -464,29 +504,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -507,29 +552,44 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
 	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -562,6 +622,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -581,6 +642,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -589,12 +652,18 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
@@ -603,6 +672,8 @@ install-pdf-am: install-pdf-local
 
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -623,8 +694,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-libtool \
@@ -663,6 +734,7 @@ distclean-local: clean-local
 
 dist-hook:
 	-rm -rf `find $(distdir)/test_cases -name .svn`
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/tutorial/graphics/Makefile.in b/doc/tutorial/graphics/Makefile.in
index fba0c5e..923f15f 100644
--- a/doc/tutorial/graphics/Makefile.in
+++ b/doc/tutorial/graphics/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Xfig files to process
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -62,6 +64,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -122,6 +126,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -158,11 +164,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -177,15 +181,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -230,7 +237,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -247,8 +255,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -329,14 +340,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/tutorial/graphics/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/tutorial/graphics/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/tutorial/graphics/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/tutorial/graphics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -354,6 +365,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -383,13 +395,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -417,6 +433,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -435,6 +452,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -443,18 +462,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -502,6 +531,7 @@ clean-local:
 	-rm -f $(PDF_FIGFILES)
 
 distclean-local: clean-local
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/user/Makefile.in b/doc/user/Makefile.in
index a30950b..f95a992 100644
--- a/doc/user/Makefile.in
+++ b/doc/user/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Main LaTeX document
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -62,6 +64,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -88,10 +92,38 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	ps-recursive uninstall-recursive
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AR = @AR@
@@ -134,6 +166,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -170,11 +204,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -189,15 +221,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -242,7 +277,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -259,8 +295,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -326,14 +365,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/user/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/user/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/user/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/user/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -351,6 +390,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -365,7 +405,7 @@ clean-libtool:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -382,7 +422,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -390,7 +430,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -416,16 +456,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -433,14 +473,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -452,7 +492,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -461,29 +501,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -504,29 +549,44 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
 	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -556,6 +616,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -575,6 +636,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -583,12 +646,18 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
@@ -597,6 +666,8 @@ install-pdf-am: install-pdf-local
 
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -617,8 +688,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-libtool \
@@ -655,6 +726,7 @@ install-pdf-local:
 
 distclean-local: clean-local
 	-rm -f $(PDFMAIN)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/user/graphics/Makefile.am b/doc/user/graphics/Makefile.am
index 7a46419..0e29409 100644
--- a/doc/user/graphics/Makefile.am
+++ b/doc/user/graphics/Makefile.am
@@ -24,6 +24,8 @@
 
 FIGFILES = \
 cs_components.fig \
+join_periodic.fig \
+join_tolerance.fig \
 vortex.fig
 
 # Other files
diff --git a/doc/user/graphics/Makefile.in b/doc/user/graphics/Makefile.in
index 9b816ca..9cfc8af 100644
--- a/doc/user/graphics/Makefile.in
+++ b/doc/user/graphics/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -39,8 +40,9 @@
 # Xfig files to process
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -62,6 +64,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -122,6 +126,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -158,11 +164,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -177,15 +181,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -230,7 +237,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -247,8 +255,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -273,6 +284,8 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 FIGFILES = \
 cs_components.fig \
+join_periodic.fig \
+join_tolerance.fig \
 vortex.fig
 
 
@@ -298,14 +311,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/user/graphics/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  doc/user/graphics/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/user/graphics/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/user/graphics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -323,6 +336,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -352,13 +366,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -386,6 +404,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -404,6 +423,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -412,18 +433,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -471,6 +502,7 @@ clean-local:
 	-rm -f $(PDF_FIGFILES)
 
 distclean-local: clean-local
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/doc/user/graphics/join_periodic.fig b/doc/user/graphics/join_periodic.fig
new file mode 100644
index 0000000..2f18fb6
--- /dev/null
+++ b/doc/user/graphics/join_periodic.fig
@@ -0,0 +1,97 @@
+#FIG 3.2  Produced by xfig version 3.2.5
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+0 32 #dfdbd7
+6 2115 495 6570 2430
+6 4320 900 6570 2115
+2 1 0 2 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4365 945 4365 2070
+2 1 0 2 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 6525 945 6525 2070
+2 2 0 1 0 32 51 0 20 0.000 0 0 -1 0 0 5
+	 4365 945 6525 945 6525 2070 4365 2070 4365 945
+-6
+6 2700 495 4095 945
+4 0 0 50 0 0 12 0.0000 4 195 1245 2700 675 duplicated and\001
+4 0 0 50 0 0 12 0.0000 4 150 1365 2700 915 translated faces\001
+-6
+2 1 1 1 0 32 50 0 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5805 720 6480 1265
+2 1 1 1 0 32 50 0 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5130 765 4316 1445
+2 1 1 1 0 32 50 0 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 2610 810 2250 1215
+2 1 0 2 1 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4320 945 4320 2070
+2 1 0 2 1 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 2160 945 2160 2070
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 4365 2205 2160 2205
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 1 2
+	0 0 1.00 60.00 120.00
+	 4365 1755 2160 1755
+2 1 1 1 0 32 50 0 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 3780 810 4275 1350
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 1 2
+	0 0 1.00 60.00 120.00
+	 6480 1620 4365 1620
+4 0 0 50 0 0 12 0.0000 4 150 1230 4815 675 selected faces\001
+4 0 0 50 0 0 12 0.0000 4 195 1320 2655 1710 relation (origin)\001
+4 0 0 50 0 0 12 0.0000 4 195 1320 4905 1575 relation (origin)\001
+4 0 0 50 0 0 12 0.0000 4 195 1095 2610 2385 periodic step\001
+-6
+2 1 0 2 21 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4320 4815 4320 5940
+2 1 0 2 21 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 6480 4815 6480 5940
+2 1 1 1 0 32 50 0 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 3600 5805 4230 5715
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 1 2
+	0 0 1.00 60.00 120.00
+	 6435 5625 4365 5625
+2 2 0 1 0 32 51 0 20 0.000 0 0 -1 0 0 5
+	 4320 4815 6480 4815 6480 5940 4320 5940 4320 4815
+2 1 0 2 1 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 2160 2835 2160 3960
+2 1 0 2 21 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4320 2835 4320 3960
+2 1 0 2 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 6480 2835 6480 3960
+2 2 0 1 0 32 51 0 20 0.000 0 0 -1 0 0 5
+	 4320 2835 6480 2835 6480 3960 4320 3960 4320 2835
+2 1 1 1 0 32 50 0 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 2565 3645 2205 3510
+2 1 1 1 0 32 50 0 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 3780 3060 4275 3375
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 1 2
+	0 0 1.00 60.00 120.00
+	 6435 3645 4365 3645
+2 1 1 1 0 32 50 0 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 3960 5175 6435 5175
+4 0 0 50 0 0 12 0.0000 4 195 1740 4770 5805 relation (periodicity)\001
+4 0 0 50 0 0 12 0.0000 4 150 1890 2160 5235 based on their relation\001
+4 0 0 50 0 0 12 0.0000 4 195 1455 2160 5475 with joined faces\001
+4 0 0 50 0 0 12 0.0000 4 150 1425 2160 4995 faces subdivided\001
+4 0 0 50 0 0 12 0.0000 4 195 1035 2475 5850 joined faces\001
+4 0 0 50 0 -1 14 0.0000 4 225 675 495 1125 stage 1\001
+4 0 0 50 0 -1 14 0.0000 4 225 675 495 2970 stage 2\001
+4 0 0 50 0 -1 14 0.0000 4 225 675 495 4950 stage 3\001
+4 0 0 50 0 0 12 0.0000 4 195 1320 4770 3825 relation (origin)\001
+4 0 0 50 0 0 12 0.0000 4 195 1245 2610 3600 duplicated and\001
+4 0 0 50 0 0 12 0.0000 4 195 1410 2610 3840 non-joined faces\001
+4 0 0 50 0 0 12 0.0000 4 195 1035 2880 2970 joined faces\001
diff --git a/doc/user/graphics/join_tolerance.fig b/doc/user/graphics/join_tolerance.fig
new file mode 100644
index 0000000..cdb736d
--- /dev/null
+++ b/doc/user/graphics/join_tolerance.fig
@@ -0,0 +1,129 @@
+#FIG 3.2  Produced by xfig version 3.2.5
+Portrait
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+6 5172 585 9405 2925
+5 1 1 1 0 7 50 0 -1 4.000 0 0 0 0 6734.039 2696.221 5435 1216 5987 874 6986 743
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 7380 1295 59 59 7380 1295 7440 1295
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 7749 1716 59 59 7749 1716 7808 1716
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 8958 1716 59 59 8958 1716 9017 1716
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 8642 2267 59 59 8642 2267 8702 2267
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 7512 2267 59 59 7512 2267 7571 2267
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 6854 1847 59 59 6854 1847 6914 1847
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 6460 1453 59 59 6460 1453 6519 1453
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 6276 2031 59 59 6276 2031 6335 2031
+2 1 0 2 4 7 100 0 -1 0.000 0 0 -1 0 0 7
+	 6328 1820 6460 1453 6565 1243 7380 1295 8012 1374 7723 1716
+	 7591 1952
+2 1 0 2 4 7 100 0 -1 0.000 0 0 -1 0 0 4
+	 8012 1374 9353 1847 8984 2373 7591 1952
+2 3 0 2 4 7 100 0 -1 0.000 0 0 -1 0 0 8
+	 6328 1820 6276 2031 6224 2399 7459 2557 7512 2267 7591 1952
+	 6854 1847 6328 1820
+2 1 0 2 4 7 100 0 -1 0.000 0 0 -1 0 0 4
+	 7459 2557 8826 2898 8984 2373 7591 1952
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 7
+	 7118 1505 6723 2057 6276 2031 5435 1978 5567 1374 6460 1453
+	 7118 1505
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+	 6723 2057 7118 1505
+2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 0 0 1
+	 5435 1980
+2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 0 0 1
+	 6723 2059
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 1
+	 8747 2084
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 1
+	 8537 2609
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 1
+	 8747 2084
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 1
+	 8537 2609
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 8
+	 8747 2084 8642 2267 8537 2609 7512 2267 6723 2057 7118 1505
+	 7749 1716 8747 2084
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 3
+	 9116 1558 8958 1716 8747 2084
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 4
+	 7118 1505 7355 1295 7749 1085 9116 1558
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 1
+	 7118 1505
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 3
+	 7749 1085 6040 980 5593 1374
+2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 0 0 1
+	 7118 1505
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+	1 0 1.00 35.06 70.11
+	 8773 1742 8117 1505
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+	1 0 1.00 35.06 70.11
+	 7959 1716 8616 1952
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+	1 0 1.00 35.06 70.11
+	 8695 2005 8800 1794
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+	1 0 1.00 35.06 70.11
+	 8038 1479 7854 1690
+2 1 3 1 4 7 50 0 -1 6.000 0 0 -1 1 0 2
+	1 0 1.00 61.35 87.64
+	 7118 1611 7065 585
+2 1 4 1 0 7 50 0 -1 4.500 0 0 -1 1 0 2
+	1 0 1.00 61.35 87.64
+	 6132 1690 5172 1085
+2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 0 0 3
+	 7749 1085 6040 980 5593 1374
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 35.06 70.11
+	 8458 1059 8327 1663
+4 0 0 50 0 0 9 0.0000 4 132 1393 5540 874 angle between two faces\001
+4 0 0 50 0 0 9 0.0000 4 96 1043 8353 980 reconstructed face\001
+-6
+6 180 900 4950 2565
+6 180 1530 720 2115
+1 3 1 1 0 7 50 0 -1 3.000 1 0.0000 443 1828 259 259 443 1828 701 1828
+-6
+1 3 0 1 0 0 100 0 20 0.000 1 0.0000 434 1819 29 29 434 1819 462 1819
+1 3 0 1 0 0 100 0 20 0.000 1 0.0000 2788 1244 29 29 2788 1244 2817 1244
+1 3 0 1 0 0 100 0 20 0.000 1 0.0000 1956 1446 29 29 1956 1446 1984 1446
+1 3 0 2 4 4 100 0 20 0.000 1 0.0000 3908 2249 29 29 3908 2249 3938 2249
+1 3 0 2 4 4 100 0 20 0.000 1 0.0000 864 1273 29 29 864 1273 893 1273
+1 3 0 2 4 4 100 0 20 0.000 1 0.0000 1926 1618 29 29 1926 1618 1956 1618
+1 1 1 1 0 7 50 0 -1 4.000 1 0.0000 864 1273 356 355 864 1273 1219 1273
+1 3 1 1 0 7 50 0 -1 4.000 1 0.0000 3908 2249 305 305 3908 2249 4214 2249
+1 3 1 1 0 7 50 0 -1 3.000 1 0.0000 2788 1244 331 331 2788 1244 3119 1244
+1 1 2 1 1 7 50 0 -1 3.000 1 0.0000 1965 1455 300 301 1965 1455 2266 1455
+1 3 2 1 1 7 50 0 -1 3.000 1 0.0000 1918 1627 342 342 1918 1627 2260 1627
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+	 434 1819 2817 1244
+2 1 1 1 1 7 100 0 -1 2.000 0 0 -1 0 0 2
+	 1956 1446 1926 1618
+2 1 0 2 4 7 100 0 -1 0.000 0 0 -1 0 0 2
+	 864 1273 3938 2249
+2 1 1 1 0 7 100 0 -1 2.000 0 0 -1 0 1 2
+	0 0 1.00 38.28 76.57
+	 2042 1474 3679 1388
+2 1 1 1 0 7 100 0 -1 2.000 0 0 -1 0 1 2
+	0 0 1.00 38.28 76.57
+	 2013 1589 3679 1388
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+	 941 929 4013 1952
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+	 701 1598 3822 2546
+2 1 1 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 329 1598 2721 919
+2 1 1 1 0 7 100 0 -1 2.000 0 0 -1 0 1 2
+	0 0 1.00 38.28 76.57
+	 1592 1770 1430 2403
+2 1 1 1 0 7 100 0 -1 2.000 0 0 -1 0 1 2
+	0 0 1.00 38.28 76.57
+	 1812 1742 1515 2412
+2 1 1 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 491 2087 2865 1560
+4 0 0 100 0 0 10 0.0000 4 150 1170 3736 1416 Intersection points\001
+4 0 0 100 0 0 10 0.0000 4 105 2010 673 2536 Maximum intersection distances\001
+-6
diff --git a/doc/user/saturne1.tex b/doc/user/saturne1.tex
index 05d3a42..e94d84d 100644
--- a/doc/user/saturne1.tex
+++ b/doc/user/saturne1.tex
@@ -37,7 +37,7 @@ designed for the simulation of flows which may be steady or
 unsteady, laminar or turbulent, incompressible or potentially dilatable,
 isothermal or not. Scalars and turbulent fluctuations of scalars can be taken into
 account. The code includes specific modules, referred to as ``specific physics'',
-for the treatment of lagrangian particle tracking, semi-transparent radiative transfer,
+for the treatment of Lagrangian particle tracking, semi-transparent radiative transfer,
 gas combustion, pulverised coal combustion,
 electricity effects (Joule effect and electric arcs) and compressible flows.
 The code also includes an engineering module, Matisse, for the simulation of
@@ -130,38 +130,23 @@ the document for easier consultation.
 %==================================
 \subsubsection{Preliminary settings}
 %==================================
-\label{prg_environnementCS}
-At the install procedure of \CS, a directory is dedicated to the code and
-its components. It is stored in the environment variable \texttt{PATHCS}.
-It is usually the root of a specific account \texttt{/home/saturne}.
-For installs outside EDF R\&D, please refer to the administrator who
-installed the code for the \texttt{PATHCS} location.
+\label{prg_environementCS}
 
-The current version of \CS (\verscs) is located in the directory
-\texttt{\$PATHCS/Code\_Saturne/\verscs}.
+In order to use \CS, every user must add the following line (in their
+\texttt{.profile}, or equivalent, depending on the environment):
 
-In order to use \CS, every user must add the following line in their file
-``\texttt{.profile}''\footnote{or \texttt{.monprofile} if the
- modifications of the \texttt{.profile} file are reserved for the
- administrators, as is the case in the MFEE department of EDF}:
+\hspace*{1cm}\texttt{export PATH=\{prefix\}/bin:\$PATH}\\
 
-\hspace*{2cm}\texttt{export PATH=/path/to/saturne/\verscs/bin:\$PATH}\\
-where \texttt{xxxxxxx} represents the PATHCS directory where
-\CS and its components have been installed (refer to the administrator
-responsible for \CS).
+or define the following alias (in their \texttt{.bashrc}, or
+ equivalent, or \texttt{.alias} file, depending on the environment):
 
-After adding this line to the \texttt{.profile}, it is necessary to
-logout of the session and relog in (simply reading the file by typing
-``\texttt{. \tildeunix/.profile}'' is usually not enough and might not
-set the \texttt{PATH} variable correctly for the whole session).
-
-{\em WARNING: Other pieces of information related
-to \CS must not be included in \texttt{.profile}. In particular,
-lines referring to previous versions of the code must be suppressed}
+\hspace*{1cm}\texttt{alias cs='\{prefix\}/bin/cs'}\\
 
+where \texttt{prefix} is the base directory where
+\CS and its components have been installed\footnote{At EDF R\&D, \texttt{/home/saturne/Code\_Saturne/\verscs} is used}.
 
 %==================================
-\subsubsection{Standard architecture of the directories}
+\subsubsection{Standard directory hierarchy}
 %==================================
 \label{prg_architecture}%
 The standard architecture for the simulation studies is:
@@ -269,8 +254,8 @@ directory \texttt{RESU}.
 &        \texttt{syrthes.env}                &\syrthes configuration file\\
 \multicolumn{2}{l}{\texttt{STUDY/CASE1/SRC:}}&{\bf \CS user subroutines }\\
 &        \texttt{REFERENCE}                   &        examples of a user subroutines\\
-&        \texttt{usclim.F}                  &user subroutines used for the present the calculation\\
-&        \texttt{usini1.F}  &\\
+&        \texttt{usclim.f90}                 &user subroutines used for the present the calculation\\
+&        \texttt{usini1.f90} &\\
 \multicolumn{2}{l}{\texttt{STUDY/CASE1/RESU:}}&{\bf results}\\
 &        \texttt{CHR.ENSIGHT.08211921}              &directory containing the \CS
                                            post-processing results\\
@@ -289,7 +274,7 @@ directory \texttt{RESU}.
 &        \texttt{RES\_USERS.08211921}  &optional directory containing the
                                      user results files\\
 &        \texttt{RESTART.08211921}       &directory containing the \CS restart files \\
-&        \texttt{compil.log.08211921}  &compilation report\\
+&        \texttt{compile.log.08211921}  &compilation report\\
 &     \texttt{study.xml.08211921}   &Graphical User Interface parameter file
                                     used for the\\
 &                                   &calculation 08211921\\
@@ -330,56 +315,36 @@ the
 \subsubsection{\CS Kernel library files}
 %==================================
 \label{prg_library}%
-Below are given information about the content of the \CS base directories. They
-are not of vital interest for the user, but given only as general
-information. Indeed, the case preparer \texttt{cs\_create} automatically extracts the
+Information about the content of the \CS base directories is given below. It
+is not of vital interest for the user, but given only as general
+information. Indeed, the case preparer command \texttt{cs~create} automatically extracts the
 necessary files and prepares the launch script without the user having to go
 directly into the \CS base directories (see \S\ref{prg_cscreate}).
-The \texttt{cs\_info} gives direct
+The \texttt{cs~info} command gives direct
 access to the most needed information (especially the user and programmer's
 guides and the tutorial) without the user having to look for them in the \CS
 directories.
 
-
-The subdirectory \texttt{arch} contains the libraries and compiled
-executables, followed by a subdirectory allowing to distinguished the
-architectures (named as referenced here after):
-\begin{list}{$\bullet$}{}
-\item\texttt{Blue\_Gene\_L} for the EDF BlueGene/L machine
-\item\texttt{Blue\_Gene\_P} for the EDF BlueGene/P machine
-\item\texttt{Linux} for general 32-bit Intel or AMD machines under Linux
-\item\texttt{Linux\_x86\_64} for general 64-bit Intel or AMD machines under Linux
-\item\texttt{Linux\_Ch} for the Chatou cluster
-\item\texttt{Linux\_IA64} for Itanium clusters (Platine cluster at the CCRT)
-\end{list}
-
-For each architecture, a subdirectory (named after \texttt{NOM\_ARCH})
-stores the compiled library (\texttt{libsaturne.so} in \texttt{lib}
-and executable in
-\texttt{bin}\footnote{This executable is used only for standalone mesh
-analysis or when no user routines are defined. In a standard \CS run,
-the executable is recompiled to allow for user routines to be taken
-into account.}).
+The subdirectories \texttt{\{prefix\}/lib} and \texttt{\{prefix\}/bin }
+contain the libraries and compiled executables respectively.
 
 The data files (for instance thermochemical data) are located in the
 directory \texttt{data}.
 
-The source files, when available, are stored in the directory \texttt{src},
-under subdirectories corresponding to each module: \texttt{base} (general
-routines), \texttt{cfbl} (compressible flows),
+The user subroutines are available in the directory \texttt{users},
+under subdirectories corresponding to each module:
+\texttt{base} (general routines),
+\texttt{cfbl} (compressible flows),
 \texttt{cogz} (gas combustion),
-\texttt{cplv} (pulverised coal combustion), \texttt{elec} (electric module),
+\texttt{cplv} (pulverised coal combustion),
+\texttt{ctwr} (cooling towers modelling),
+\texttt{elec} (electric module),
 \texttt{fuel} (heavy fuel oil combustion module),
-\texttt{lagr} (lagrangian module,
+\texttt{lagr} (Lagrangian module,
 \texttt{mati} (Matisse module),
-\texttt{pprt} (general specific physics routines) and \texttt{rayt} (radiative heat
-transfer).
-
-The user subroutines are available in the directory \texttt{users},
-under similar subdirectories corresponding to each module: \texttt{base},
-\texttt{cfbl}, \texttt{cogz}, \texttt{cplv}, \texttt{elec},
-\texttt{fuel}, \texttt{lagr}, \texttt{pprt} and \texttt{rayt}.
-The case preparer \texttt{cs\_create} copies all these files in the
+\texttt{pprt} (general specific physics routines) and
+\texttt{rayt} (radiative heat transfer).
+The case preparer command \texttt{cs~create} copies all these files in the
 user directory \texttt{SRC/REFERENCE} during the case preparation.
 
 The ``include'' files are available in the directory
@@ -404,14 +369,14 @@ prepare and run a standard case:
 \begin{list}{$\bullet$}{}
 
 \item Check the version of \CS set for use in the environment variables
-(\texttt{cs info --version}). If it does not correspond to the desired version,
+(\texttt{cs~info --version}). If it does not correspond to the desired version,
 update the \texttt{.profile} file to set the environment
 variables correctly. Log out of the session and
 log in again to take the modifications into account properly (cf.
-\S\ref{prg_environnementCS}).
+\S\ref{prg_environementCS}).
 
-\item Prepare the different directories using \texttt{cs create}(see
-\S\ref{prg_cscreate}) and, when needed, add the directories \texttt{DATA\_SYR}
+\item Prepare the different directories using the \texttt{cs~create} command
+(see \S\ref{prg_cscreate}) and, when needed, add the directories \texttt{DATA\_SYR}
 and \texttt{SRC\_SYR} which are required to accomodate the \syrthes files.
 
 \item Place the mesh(es) in the directory \texttt{MESH}. Make sure they are
@@ -451,7 +416,7 @@ compulsory.
 
   \item{\bf For the specific physics ``gas combustion'':}
 
-(not compliant with the Graphical User Interface in version \verscs)
+(not accessible through the Graphical User Interface in version \verscs)
     \begin{list}{}{}
         \item {\em compulsory:}
         \begin{list}{-}{}
@@ -509,9 +474,9 @@ compulsory.
     \end{list}
 
      \item{\bf For the specific physics ``electric module''
-      (Joule effect and electric arc):}
+      (Joule effect and electric arcs):}
 
-(not compliant with the Graphical User Interface in version \verscs)
+(not accessible through the Graphical User Interface in version \verscs)
     \begin{list}{}{}
        \item {\em compulsory:}
         \begin{list}{-}{}
@@ -540,9 +505,9 @@ compulsory.
         \end{list}
     \end{list}
 
-     \item{\bf For the specific physics ``heavy fuel oil combustion module'':)}
+     \item{\bf For the specific physics ``heavy fuel oil combustion module'':}
 
-(not compliant with the Graphical User Interface in version \verscs)
+(not accessible through the Graphical User Interface in version \verscs)
     \begin{list}{}{}
         \item {\em compulsory:}
         \begin{list}{-}{}
@@ -572,7 +537,7 @@ compulsory.
 
 (the continuous phase is managed in the same way as for a case of standard
 physics)\\
-(the Lagrangian module is not compliant with the Graphical User Interface in
+(the Lagrangian module is not accessible through the Graphical User Interface in
 version \verscs)
     \begin{list}{}{}
         \item {\em compulsory:}
@@ -593,11 +558,11 @@ version \verscs)
 
    \item {\bf For the compressible module:}
 
-(not compliant with the Graphical User Interface in version \verscs)
+(not accessible through the Graphical User Interface in version \verscs)
     \begin{list}{}{}
         \item {\em compulsory:}
         \begin{list}{-}{}
-            \item \texttt{uscfx1} et \texttt{uscfx2} to manage the
+            \item \texttt{uscfx1} and \texttt{uscfx2} to manage the
                   calculation parameters
 
             \item \texttt{uscfcl} to manage the boundary conditions
@@ -728,21 +693,21 @@ way whenever they wish.
 \subsection{Case preparer}
 %==================================
 \label{prg_cscreate}%
-The case preparer \texttt{cs create} automatically creates a
+The case preparer command \texttt{cs~create} automatically creates a
 study directory according to the typical architecture and copies and
 pre-fills an example of calculation launch script.
 
-The syntax of \texttt{cs create} is as follows:
+The syntax of \texttt{cs~create} is as follows:
 
 \noindent
-\texttt{cs create --study STUDY CASE\_NAME1 CASE\_NAME2...}\\
+\texttt{cs~create --study STUDY CASE\_NAME1 CASE\_NAME2...}\\
 creates a study directory \texttt{STUDY} with case subdirectories
 \texttt{CASE\_NAME1} and \texttt{CASE\_NAME2}...
 If no case name is given, a default case directory called \texttt{CASE1} is
 created.
 
 \noindent
-\texttt{cs create --case DEBIT3 --case DEBIT4}\\
+\texttt{cs~create --case DEBIT3 --case DEBIT4}\\
 executed in the directory \texttt{STUDY} adds the case directories
 \texttt{DEBIT3} and \texttt{DEBIT4}.
 
@@ -750,18 +715,18 @@ An option \texttt{--nogui} is available for the use of \CS
 without Graphic Interface (see \S\ref{prg_gui}). This option must
 be either the first or the last argument and appear only once.
 
-In the directory \texttt{DATA}, \texttt{cs create} places a
+In the directory \texttt{DATA}, the \texttt{cs~create} command places a
 subdirectory \texttt{THCH} containing examples of thermochemical data
 files used for pulverised coal combustion,
 gas combustion or electric arc. The file to be used for the calculation must be
 copied directly in the \texttt{DATA} directory and its name must be referenced
 in the launch script in the variable THERMOCHEMISTRY\_DATA. All other files in
 the \texttt{DATA} or in the \texttt{THCH} will be ignored.\\
-\texttt{cs create} also places in the directory \texttt{DATA} the launch script
-for the Graphical User Interface:  \texttt{SaturneGUI}.
+The \texttt{cs~create} command also places in the directory \texttt{DATA}
+the launch script for the Graphical User Interface: \texttt{SaturneGUI}.
 
 
-In the directory \texttt{SRC}, \texttt{cs create} creates a
+In the directory \texttt{SRC}, the \texttt{cs~create} command creates a
 subdirectory \texttt{REFERENCE} containing all the user subroutines,
 classified by module type:  \texttt{base},
 \texttt{cfbl}, \texttt{cogz}, \texttt{cplv}, \texttt{elec}, \texttt{fuel},
@@ -769,8 +734,8 @@ classified by module type:  \texttt{base},
 Only the user subroutines placed directly under
 the directory \texttt{SRC} will be considered. The others will be ignored.
 
-In the directory \texttt{SCRIPTS}, \texttt{cs create} copies and pre-fills an
-example of the launch script: \texttt{runcase}.
+In the directory \texttt{SCRIPTS}, the \texttt{cs~create} command copies and
+pre-fills an example of the launch script: \texttt{runcase}.
 The study, case and user name are filled
 automatically in the launch script, as are the paths leading to the
 different directories. Other parameters must be specified in the script
@@ -809,18 +774,18 @@ each other. The following formats are currently supported by \CS:
 These formats are described in greater detail in the following sections.
 Unless a specific option is used, the \pcs determines the mesh format directly
 from the file suffix: %
-{\em``\texttt{.case}''} for the \ensight (6 or Gold),
+{\em``\texttt{.case}''} for \ensight (6 or Gold),
 {\em``\texttt{.ccm}''} for STAR-CCM+,
 {\em``\texttt{.cgns}''} for CGNS,
 {\em``\texttt{.des}''} for \simail,
-{\em``\texttt{.hex}''} fot IGG/Hexa,
+{\em``\texttt{.hex}''} for IGG/Hexa,
 {\em``\texttt{.med}''} for \med,
 {\em``\texttt{.msh}''} for \gmsh,
 {\em``\texttt{.neu}''} for \gambit neutral,
 {\em``\texttt{.ngeom}''} for pro-STAR/STAR4,
 {\em``\texttt{.unv}''} for I-deas universal.
 
-Note that the preprocessor can read zipped mesh files directly (for Formats
+Note that the preprocessor can read gzipped mesh files directly (for Formats
 other than MED or CGNS, which use specific external libraries) on most machines.
 
 %==================================
@@ -830,9 +795,9 @@ other than MED or CGNS, which use specific external libraries) on most machines.
 \subsubsubsection{NOPO/\simail (INRIA/SIMULOG)%
 \label{fmtdesc:des}}
 
-This format output by \simail is still heavily used at MFEE. We do not
-currently handle cylindrical or spherical coordinate, but it seems that
-\simail always outputs meshes in cartesian coordinates, even if points
+This format output by \simail is still heavily used at EDF. We do not
+currently handle cylindrical or spherical coordinates, but it seems that
+\simail always outputs meshes in Cartesian coordinates, even if points
 have been defined in another system. Most ``classical'' element types
 are usable, except for pyramids.
 
@@ -864,7 +829,7 @@ Zone selection:    & element face references and volume sub-domains\\
                    & (interpreted as numbered colors)\\
 \hline
 Compatibility:     & all files of this type as long as the coordinate
-                     system used is cartesian and not cylindrical or
+                     system used is Cartesian and not cylindrical or
                      spherical\\
 \hline
 Documentation:     & Simail user documentation and release notes or
@@ -878,7 +843,7 @@ Documentation:     & Simail user documentation and release notes or
 \subsubsubsection{\ideas universal file%
 \label{fmtdesc:unv}}
 
-This format was heavily used in the 1990's and early 2000's, and though
+This format was very popular in the 1990's and early 2000's, and though
 the I-deas tool has not focused on the CFD (or even meshing) market since
 many years, it is handled (at least in part) by many tools, and may
 be considered as a major ``legacy'' format. It may contain many different
@@ -955,7 +920,7 @@ Documentation:     & GAMBIT on-line documentation\\
 \label{fmtdesc:ngeom}}
 
 This polyhedral format from CD-Adapco seems to be usable both with the
-\starcd et \starccmp tools, and the \textbf{pro-STAR} tool should be able to
+\starcd and \starccmp tools, and the \textbf{pro-STAR} tool should be able to
 generate it. The test meshes we have were generated by the
 \textbf{Comet-Design} tool, which has since been replaced by other
 CD-Adapco tools, especially \starcd V4 and \starccmp. The available
@@ -993,8 +958,10 @@ Documentation:     & documentation accompanying and source code provided by CD-a
 \label{fmtdesc:ccm}}
 
 This polyhedral format is the current CD-Adapco format, and is based on
-CD-Adapco's libccmio, which also requires a modified ADF library (ADF
-is the low-level file format used by CGNS prior to the shift to HDF-5).
+CD-Adapco's libccmio, which is based on ADF (the low-level file format
+used by CGNS prior to the shift to HDF-5). libccmio comes with a version
+of ADF modified for performance, but also works with a standard version
+from CGNS.
 
 Currently, geometric entity numbers are converted to ``color'' numbers,
 with the corresponding names printed to the \pcs log. Depending on whether
@@ -1002,8 +969,7 @@ the names were generated automatically or set by the user, it would be
 preferable to interpret such sets as named ``groups'' rather than numbered
 ``colors''.
 
-The CCMIO library may also be downloaded through the VisIt visualization
-tool's third party library at \url{https://wci.llnl.gov/codes/visit/source.html}.
+The CCMIO library is distributed freely by CD-Adapco upon demand.
 
 \smallskip \noindent
 \begin{tabular}[top]{|p{4.5cm}%
@@ -1029,24 +995,22 @@ Documentation:     & documentation and source code provided by CD-adapco\\
 \subsubsubsection{\ensight 6%
 \label{fmtdesc:ensight6}}
 
-This format is used for output by the \emph{Harpoon} meshing tool, developed
+This format is used for output by the \harpoon meshing tool, developed
 by Sharc Ltd (also the distributor of \ensight for the United Kingdom).
-It is also the default output format for some older tools developed or used
-at MFEE (including versions 1.0 and 1.1 of \CS).
 This format may represent all ``classical'' element types.
 
-Designed for post processing, it does not explicit handle the definition
+Designed for post processing, it does not explicitely handle the definition
 of surface patches or volume zones, but allows the use of many \emph{parts}
 (i.e. groups of elements) which use a common vertex list.
-A possible convention (used at least by \emph{Harpoon}) is to add surface
+A possible convention (used at least by \harpoon) is to add surface
 elements to the volume mesh, using one \emph{part} per group. The volume
 mesh may also be separated into several \emph{parts} so as to identify
 different zones. As \emph{part} names may contain up to 80 characters,
 we do not transform them into groups (whose names could be unwieldy),
 so we simply interpret their number as a color.
 
-Also note that files produced by \emph{Harpoon} may contain badly oriented
-prisms, so the Preprocessor orientation correction option
+Also note that files produced by \harpoon may contain badly oriented
+prisms, so the \pcs orientation correction option
 (\texttt{--reorient})may need to be used. Meshes built by this tool also
 contain hanging nodes, with non-conforming elements sharing some vertices.
 The \texttt{--join --semi-conf} preprocessor option must thus be used.
@@ -1088,9 +1052,9 @@ tool. This tool has both meshing and post-processing functionality,
 but \CS only imports meshes.
 
 Note that some meshes produced by\gmsh man contain some badly oriented
-elements, so the Preprocessor's \texttt{-reorient} option may be necessary.
+elements, so the \pcs's \texttt{-reorient} option may be necessary.
 
-The Preprocessor handles versions 1 and 2 of this array. In version 1,
+The \pcs handles versions 1 and 2 of this array. In version 1,
 two labels are associated with each element: the first defines the
 element's physical entity  number, the second defines it' elementary
 entity number. Using version 2, it is possible to associate an
@@ -1115,7 +1079,7 @@ entities could lead to a high number of colors.
 \hline
 Default extension: & {\tt .msh}\\
 \hline
-Type de fichier~:  & text or binary file\\
+File type:         & text or binary file\\
 \hline
 Surface elements:  & triangles, quadrangles\\
 \hline
@@ -1202,8 +1166,8 @@ do not necessarily support the whole format specification.
 Especially, VTK does not support material types, and has only recently
 added support for polyhedral elements in \ensightg files (interpreted
 as convex point sets, and not true polyhedra, but at least usable).
-Also, both \ensightg 8.2 and VTK allow for automatic distribution, reducing
-the usefulness of pre-distributed meshes with per-processor files.
+Also, both \ensightg (8.2 and above) and VTK allow for automatic distribution,
+reducing the usefulness of pre-distributed meshes with per-processor files.
 
 This format may be used as an input format, similar to \ensight 6.
 Compared to the latter, each \emph{part} has its own coordinates and vertex
@@ -1231,7 +1195,7 @@ Zone selection:    & possibility of defining element materials (not used), or
                      interpret part number as color number if vertex IDs are
                      given\\
 \hline
-Compatibility:     & files readable by \ensight 7.4 to 8.2, as well as tools
+Compatibility:     & files readable by \ensight 7.4 to 9.0, as well as tools
                      based on the \href{http://www.vtk.org}{\vtk} library,
                      especially \paraview\ (\url{http://www.paraview.org})\\
 \hline
@@ -1249,8 +1213,8 @@ a \med working group comprising members of EDF R\&D and CEA (the \CS team
 being represented). This is the reference format for the
 \href{http://www.opencascade.org/SALOME/Salome.html}{\emph SALOME} environment.
 This format is quite complete, allowing the definition of all ``classical''
-element types, in nodal or descending connectivity. Since \med 2.2 in the
-autumn of 2003, this format may handle polygonal faces and polyhedral cells,
+element types, in nodal or descending connectivity. Since \med 2.2 in 2003,
+this format may handle polygonal faces and polyhedral cells,
 as well as the definition of structured meshes.
 
 This format, which requires a library also depending on the free HDF5 library,
@@ -1259,9 +1223,11 @@ color/attribute and group combinations), as well as handling calculation data,
 with the possibility (unused by \CS) of defining variables only on a subset
 (``profile'') of a mesh.
 
-The \med library is available under a \href{http://www.gnu.org}{LGPL} licence
-since version 2.1.5, and is even packaged in some Linux distributions
-(at least Debian and Ubuntu).
+The \med library is available under a \href{http://www.gnu.org}{LGPL} licence,
+and is even packaged in some Linux distributions
+(at least Debian and Ubuntu). Versions 2.3.5 and older require HDF5 1.6,
+version 2.3.6 may compile with either HDF5 1.6 or HDF5 1.8 (if the latter
+has HDF5 1.6 compatibility enabled).
 
 \smallskip \noindent
 \begin{tabular}[top]{|p{4.5cm}%
@@ -1281,8 +1247,7 @@ Zone selection:    & element families ({\it i.e.} colors and groups)\\
 Compatibility:     & all versions of \med 2.2 or 2.3 (only unstructured
                      nodal connectivity is supported)\\
 \hline
-Documentation:     & online documentation of EDF \med (intranet) site:
-                     \url{http://pal.der.edf.fr/pal/projets/pal/med}\\
+Documentation:     & online documentation. Download link at \url{http://files.opencascade.com/Salome/Salome5.1.2/med-fichier_2.3.5.tar.gz}\\
 \hline
 \end{tabular}
 
@@ -1350,7 +1315,8 @@ Regarding support of polygons (\emph{ngons} in the CGNS standard), even the
 verification tools published alongside the CGNS library are unable
 to handle them, and report errors in valid files containing such elements.
 VisIt 1.11.1 reports an error when a mesh contains such faces, while
-\ensightg 8 ignores them.
+\ensightg 8 ignores them. CGNS 3 should improve this situation,
+allowing for polyhedra, but it is still in beta stage as of August 2009.
 
 \smallskip \noindent
 \begin{tabular}[top]{|p{4.5cm}%
@@ -1443,7 +1409,7 @@ which can export meshes to both the \ideas universal and CGNS formats
 
 Traditionally, users exported files to the \ideas universal format,
 but it does not handle pyramid elements, which are often used by these
-tools to transition from hexahedral to tetralhedral cells in the case
+tools to transition from hexahedral to tetrahedral cells in the case
 of hybrid meshes. The user is encouraged to export to CGNS, which
 does not have this limitation.
 
@@ -1452,14 +1418,14 @@ Tools related to the \salome platform should preferably use
 also possible, but has some limitations).
 
 The use of files of the ``Common Solver'' type\footnote{File type specifically
-developped for the early prototype versions of \CS (\texttt{tlc}) extension}
+developed for the early prototype versions of \CS (\texttt{tlc}) extension}
 is still possible but is deprecated. Such files are read directly from the
-Kernel, without the Preprocessor.
+Kernel, without the \pcs.
 The variable SOLCOM must
  be set to 1 in the launch scripts. Many potentialities of \CS are not
 usable with this file format (mesh joining with hanging nodes, periodicity,
 parallel computing, ...).
-For all the other formats, the Preprocessor must be used (SOLCOM=0).
+For all the other formats, the \pcs must be used (SOLCOM=0).
 
 %==================================
 \subsubsection{Meshing remarks}
@@ -1476,34 +1442,9 @@ be false (particularly if thermal phenomena are involved). For more details
 on these constraints, see the keyword \texttt{ITURB}.
 
 %==================================
-\subsection{Preprocessing}
-%==================================
-The Preprocessor module of \CS reads the
-mesh file(s) (under any supported format) and transfers the necessary
-information to the Kernel. Mesh joining and domain partitioning for parallel
-calculations are made during this phase. In case of periodic boundary
-conditions, the Preprocessor module also identifies the boundary faces that are
-related through periodicity and creates the corresponding connectivity table.
-
-For a complete information on the Preprocessor module, please refer to the
-corresponding user's guide \cite{ecsuser}.
-
-%==================================
-\subsubsection{Preprocessor command line options}
+\subsection{Preprocessor command line options}
 %==================================
 \label{prg_optappelecs}%
-A complete description of the Preprocessor command line options can be found in
-\cite{ecsmu}. The executable of the Preprocessor module is \texttt{cs\_preprocess},
-accessible directly once the environment variables of \CS are set
-properly. A summary of the command line options is also given by the
-command \texttt{cs\_preprocess --help}.
-
-For the main options, the launch script \texttt{runcase} contains
-corresponding environment variables at its beginning, that are used
-later when the executable is called. This way, the user only has to
-fill these variables and doesn't need to search deep in the script for
-the Preprocessor command line.
-
 The main options are:
 \begin{list}{$\bullet$}{}
 \item \texttt{--help}: gives a summary of the different command line options
@@ -1514,8 +1455,8 @@ used. The launch script automatically calls the Preprocessor with the option
 specified the different meshes to be used.
 
 \item \texttt{--join}: triggers the mesh joining functions. If nothing more is
-specified, every area of contact between two meshes will be pasted together. The
-joining can be limited to certain selected faces. For instance, to paste only
+specified, every area of contact between two meshes will be joined together. The
+joining can be limited to certain selected faces. For instance, to join only
 the faces of colors 6 and 7, the full option will be \mbox{\texttt{--join --color
 6 7}}. These options are to be specified in the \texttt{COMMAND\_JOIN} variable in
 the launch script, to be automatically passed to the command line.
@@ -1578,7 +1519,7 @@ restrictions).\\
 This option is triggered by the \texttt{SOLCOM} variable in the launch
 script. If \texttt{SOLCOM} is set to 1, the \texttt{-solcom} option is
 automatically added to the Kernel command line. The variable
-IFOENV\index{IFOENV} in the FORTRAN code will be set to 0 if the
+\texttt{ifoenv\index{ifoenv}} in the Fortran code will be set to 0 if the
 \texttt{--solcom} option has been used, otherwise it will be set to 1.
 
 \item \texttt{--mpi}: specifies that the calculation is running
@@ -1627,7 +1568,7 @@ This command is to be placed in the \texttt{ARG\_CS\_VERIF} variable
 in the launch script to be added automatically to the Kernel command line.
 
 \item \texttt{--log n}: specifies the destination of the output for a
-monoprocessor calculation or for the processor of rank 0 in a parallel
+single-processor calculation or for the processor of rank 0 in a parallel
 calculation.\\
 \hspace*{0.5cm}\texttt{n=0}: output directed towards the standard output\\
 \hspace*{0.5cm}\texttt{n=1}: output redirected towards a file \texttt{listing}
@@ -1665,7 +1606,7 @@ command line options.
 %==================================
 \label{prg_runcase}%
 
-The case preparer \texttt{cs create} places an example of launch script,
+The case preparer command \texttt{cs~create} places an example of launch script,
 \texttt{runcase}, in the \texttt{SCRIPTS} directory. This script is quite general
 and known to work on every architecture \CS has been tested on. The beginning
 if the script contains the definition of certain parameters (environment
@@ -1700,10 +1641,10 @@ Kernel (see \ref{prg_optappelnoy})
 
 \begin{list}{$\bullet$}{}
 \item \texttt{STUDY}: name of the study directory (automatically set by
-\texttt{cs create}, see \S\ref{prg_architecture})
+\texttt{cs~create}, see \S\ref{prg_architecture})
 
 \item \texttt{CASE}: name of the case directory (automatically set by
-\texttt{cs create}, see \S\ref{prg_architecture})
+\texttt{cs~create}, see \S\ref{prg_architecture})
 
 \item \texttt{PARAM}: name of the Interface parameter file, if necessary (see
 \ref{prg_optappelnoy})
@@ -1805,23 +1746,23 @@ adaptation with the software Homard. This option is still under development and
 restricted to developpers use.
 
 \item \texttt{CASEDIR}: root directory of the calculation. This variable is
-automatically set by \texttt{cs create} and should not be changed.
+automatically set by \texttt{cs~create} and should not be changed.
 
 \item \texttt{DATA}: DATA directory of the case (see \ref{prg_architecture}).
-This variable is automatically set by \texttt{cs create} and should not be
+This variable is automatically set by \texttt{cs~create} and should not be
 changed.
 
 \item \texttt{RESU}: RESU directory of the case (see \ref{prg_architecture}).
-This variable is automatically set by \texttt{cs create} and should not be
+This variable is automatically set by \texttt{cs~create} and should not be
 changed.
 
 \item \texttt{SRC}: SRC directory of the case (see \ref{prg_architecture}).
-This variable is automatically set by \texttt{cs create} and should not be
+This variable is automatically set by \texttt{cs~create} and should not be
 changed.
 
 \item \texttt{SCRIPTS}: SCRIPTS directory of the case (see
 \ref{prg_architecture}). This variable is automatically set by
-\texttt{cs create} and should not be changed.
+\texttt{cs~create} and should not be changed.
 
 \item \texttt{RESTART\_IN}: directory containing the files for calculation
 restart.
@@ -1830,7 +1771,7 @@ restart.
 
 \item \texttt{MESHDIR}: directory containing the mesh files (see
 \ref{prg_architecture}). This variable is automatically set by
-\texttt{cs create} and should generally not be changed.
+\texttt{cs~create} and should generally not be changed.
 
 \item \texttt{DATA\_SYR}: directory for the \syrthes data. This directory has
 to be created by the user. It is advised to keep the location proposed
@@ -1877,7 +1818,7 @@ transfers. The other specific
 physics are not yet managed by the Graphical
 Interface. In these particular cases, user subroutines have to be completed.
 
-The Interface is optionnal. Every data that can be specified through the
+The Interface is optional. Every data that can be specified through the
 Interface can also still be specified in the user subroutines. In case of
 conflict, all calculation parameters, initialisation value or boundary condition
 set directly in the user subroutines will prevail over what is defined by the
@@ -1890,7 +1831,7 @@ There are some limitations to the changes that can be made between the Interface
 and the user routines. In particular, it is not possible to specify a certain
 number of solved variables in the Interface and change it in the user routines
 (for example, it is not possible to specify the use of a $k-\varepsilon$ model
-in the Interface and change it to $R_{ij}-\varepsilon$ in \texttt{usini1.F}, or
+in the Interface and change it to $R_{ij}-\varepsilon$ in \texttt{usini1.f90}, or
 to define additional scalars in \texttt{usini1} with respect to the
 Interface). Also, all boundaries should be referenced in the Interface, even if
 the associated conditions are intended to be modified in \texttt{usclim}, and
@@ -1965,20 +1906,20 @@ Prepare batch analysis), the PARAM section is filled automatically as are the
 other parameters specified through the Interface.
 
 
-\minititre{Note: option \texttt{--nogui} of cs create}
+\minititre{Note: option \texttt{--nogui} of the \texttt{cs~create} command}
 When a calculation is using the Interface but, for some reason, some extra
 parameters need to be specified in the subroutine \texttt{usini1}, the latter
 must be placed in the directory \texttt{SRC}. But, while doing this, all the
 parameters appearing in \texttt{usini1} will also be taken into account. In
 order to prevent the user from having to respecify in \texttt{usini1} all that
-he has already specified through the Interface, \texttt{cs create} automatically
+he has already specified through the Interface, \texttt{cs~create} automatically
 comments out the examples in \texttt{usini1} (\texttt{Cex} at the beginning of
 each line) while copying it in the directory \texttt{REFERENCE}. Therefore, the user
 only needs to uncomment the specific parts of \texttt{usini1} he wants to modify,
 and the rest of the examples will be ignored.\\
 On the contrary, if the Interface will not be used, then all the parameters in
 \texttt{usini1} have to be specified. In that case, using the \texttt{--nogui}
-option of \texttt{cs create} will prevent it from commenting \texttt{usini1}
+option of \texttt{cs~create} will prevent it from commenting \texttt{usini1}
 out, thus saving the user the tedious task of uncommenting all the lines (and
 the risk of skipping some of them).
 
@@ -1991,7 +1932,7 @@ the risk of skipping some of them).
 The mesh entities may be referenced by the user during the mesh
 creation. These references may then be used to mark out some mesh entities
 according to the need (specification of boundary conditions, pressure
-drop zones ...). The references are generally of one of the two
+drop zones, ...). The references are generally of one of the two
 following types:
 \begin{list}{$\bullet$}{}
 \item color.
@@ -2161,6 +2102,574 @@ Heavy use of many selection criteria containing geometric functions
 may thus lead to reduced performance.
 
 %==================================
+\section{Preprocessing}
+%==================================
+
+The \pcs module of \CS reads the
+mesh file(s) (under any supported format) and translates the necessary
+information into a Kernel input file. Mesh joining and domain partitioning for parallel
+calculations are done at this stage. In case of periodic boundary
+conditions, the \pcs module also identifies the boundary faces that are
+related through periodicity and generates the corresponding connectivity.
+
+The executable of the \pcs module is \texttt{cs\_preprocess},
+and the most useful options and sub-options are described briefly here.
+To obtain a complete and up-to-date list of options and environment
+variables, use the following command:
+\texttt{cs\_preprocess~-h} or \texttt{cs\_preprocess~--help}. Many options,
+such as this one, accept a short and a long version.
+
+For the main options, the launch script \texttt{runcase} contains
+corresponding variables, that are used to define options for the
+\pcs. This way, the user only has to define these variables
+and does not detailed knowledge of the \pcs command line.
+
+Nonetheless, it may be useful to call the \pcs manually
+in certain situations, especially for frequent verification when
+building a mesh, so its use is described here. Verification
+may also be done using the \texttt{cs~check\_mesh} command,
+which takes a subset of the same command-line arguments.
+
+The \pcs is controlled using command-line arguments, some of these
+accepting sub-arguments. It is possible to complete the command-line
+with a file, using the same syntax as the command-line, but also
+allowing multiple lines and comments. A few environment variables
+allow an expert user to modify some behaviors or to obtain
+a trace of memory management.
+
+%==================================
+\subsection{\pcs options and sub-options\label{sec:optpcs_ssopt}}
+%==================================
+
+Main choices are done using command-line options. Sub-option arguments
+must directly follow the one activating the corresponding option, and
+the definition of sub-options ends with the first argument which does
+not match the same sub-option. Some options may be applied multiple
+times. For example, \texttt{-j} being the option which activates
+face joining, \texttt{--fraction} the sub-option modifying the
+default tolerance, and  \texttt{--color} a face selection sub-option:
+
+\texttt{cs\_preprocess -m fluid.msh -j --fraction 0.2 --color 2 --color 3 -j}
+
+\noindent means that we apply a joining to boundary faces of
+color $2$ or $3$ of mesh \texttt{fluid.msh} with a tolerance of $0.2$,
+then that we apply a second joining to all remaining boundary faces
+(with default parameters), while:
+
+\texttt{cs\_preprocess -m fluid.msh -j --fraction 0.2 -color 2 -j --color 3}
+
+\noindent means that we apply a joining to boundary faces of
+color $2$ of mesh \texttt{fluid.msh} with a tolerance of $0.2$,
+then that we apply a second joining to boundary faces of color $3$
+(with default values for other parameters).
+
+\subsubsection{Option files\label{sec:optpcs:input}}
+
+It is possible to complete the command-line with a file, using the same
+syntax as the command-line, but allowing the addition of arbitrary line
+jumps and comments. On a given line, anything that follows a\texttt{\#}
+character until the end of the line is ignored in such a file.
+The use of such a file is activated by the argument \texttt{-i}.
+If for example a file \texttt{pp\_cmd} contains the following
+lines:
+
+\noindent
+\begin{tabular}{l l}
+\texttt{--ensight} & \texttt{\# activate EnSight output}\\
+\texttt{--med}     & \texttt{\# activate MED output}\\
+\end{tabular}
+
+\noindent
+\begin{tabular}{l l}
+then command:     & \texttt{cs\_preprocess -i pp\_cmd -m mesh.unv}\\
+is equivalent to: & \texttt{cs\_preprocess -m mesh.unv --ensight --med}\\
+\end{tabular}
+
+The use of option files may circumvent command-line length limits
+(now rarely an issue), and allows easier manipulation and better
+readability of complex option combinations.
+
+\subsubsection{Mesh selection\label{sec:optpcs:mesh}}
+
+Any use of the preprocessor requires one or several meshes (except for
+\texttt{cs\_preprocess} and \texttt{cs\_preprocess~-h} which respectively
+print the version number and list of options).
+They are selected using the \texttt{--mesh} or \texttt{-m} option, followed
+by th list of meshes to read. The file format is usually automatically
+determined based on its extension (c.f. \ref{sec:formats_in}
+page~\pageref{sec:formats_in}) but this option also allows a \texttt{--format}
+sub-option, to force the format choice of selected files.
+
+For formats allowing multiple meshes in a single file, the
+\texttt{--num} sub-option followed by a strictly positive integer allows
+selection of a specific mesh; by default, the first mesh is selected.
+
+For meshes in CGNS format, we may in addition use the \texttt{--grp-cel}
+or \texttt{--grp-fac} sub-options, followed by the \texttt{section}
+or \texttt{zone} keywords, to define additional groups of cell or faces
+based on the organization of the mesh in sections or zones. The sub-options
+have no effect on meshes of other formats.
+
+We may define as many mesh selections as we wish. Meshes are read and
+automatically compounded (but not joined) in the order of their appearance.
+For example:
+
+\noindent
+\texttt{cs\_preprocess -m file.1 file.2 --format ideas -m branch.cgns --grp-cel section}
+
+\noindent
+reads mesh files \texttt{file.1} and \texttt{file.2} as \ideas files,
+and appends the first mesh from the \texttt{branch.cgns} file,
+on which additional groups of cells corresponding to the CGNS section
+names to which cells belong.
+
+\subsubsection{Post-processing output\label{sec:optpcs:post}}
+
+By default, the \pcs does not generate any post-processor output.
+By adding \texttt{--ensight}, \texttt{--med}, or \texttt{--cgns} to
+the command-line arguments, the output of the mesh to the indicated format
+is provoked. It is possible to generate output to different formats
+simultaneously. Note that we will obtain additional surface meshes
+corresponding to the calculation domain boundary, to faces joined
+or modified by joinings or periodicity, etc. Note also that
+periodic faces are not considered to be part of the domain boundary.
+\footnote{Periodicity is interpreted as a ``geometric'' condition
+rather than a classical boundary condition.}
+
+We consider 4 types of output: the volume mesh (output before possible
+joinings), the boundary mesh, informational meshes (such as faces
+stemming from or modified by a joining of periodicity, or
+selected interior faces), and meshes outlining to zones with errors.
+By default, all types of meshes are output. If one or several of
+the three filtering sub-options is used , only the meshes of the
+requested types will be output, as well as meshes corresponding to
+zones with errors (non-filterable). The filtering sub-options
+are: \texttt{--volume}, \texttt{--boundary}, and \texttt{--info}.
+
+One may also optionally avoid outputting polygons or polyhedra
+by adding the \texttt{--discard-poly} sub-option.
+This allow working around bugs or limited polyhedron support
+in visualization tools or limitations of the CGNS 2 format.
+In this case, the post-processing output will be incomplete,
+but at least readable.
+
+In the case of \emph{EnSight Gold} output, we may use the
+\texttt{--simple} sub-option to avoid splitting the output in
+several \emph{parts} corresponding to different attributes
+(colors and groups) borne by this mesh.
+
+Still in the case of the \emph{EnSight Gold} output, we may
+force the output in text mode using the \texttt{--text} sub-option,
+or force binary output to ``big-endian'' variant using the
+\texttt{--big-endian} sub-option. By default, the output is native
+binary.
+
+Finally, in the case of output in the \emph{MED} format, we may
+force the conversion of attributes (colors) to groups using
+the \texttt{--color-to-group} sub-option.
+
+\subsubsection{Faces selection\label{sec:optpcs:select}}
+
+Selection of faces occurs at several levels, especially for conforming
+joining.
+
+It is also possible to select a set of interior faces bearing attributes
+(colors or groups) for verification purposes using the option
+\texttt{--int-face}. The \pcs prints the number of interior faces
+matching a selection criterion, and if in addition post-processing
+output is activated, a surface mesh corresponding to the selected faces
+will be generated.
+
+\pcs selection criteria are more limited than those
+used by th kernel, and are generated using the following sub-options:
+
+\noindent
+\begin{tabular}{l l}
+\texttt{--color} $c_1$ $c_2$ ... $c_n$~ &
+to select faces of the indicated color numbers\\
+\texttt{--group} $g_1$ $g_2$ ... $g_n$~ &
+to select faces of the groups named\\
+\texttt{--invsel} &
+to use the complement of the indicated colors and groups\\
+\end{tabular}
+
+The same selection sub-options are used for conforming joining, periodicity,
+and interior faces verification. In the case of joining and periodicity,
+the selection is automatically restricted to boundary faces, while
+in the case of interior face verification, it is restricted to
+interior faces bearing attributes.
+
+For example, to select all interior faces of mesh \texttt{example.des}
+which bear an attribute (color or group), but are not of color 2 and do not
+belong to group ``inlet'', with output of an \emph{Ensight Gold} part
+and with no kernel output (using \texttt{-sc}), we use the following
+command line (the \verb=\= character marks line continuation):
+
+\noindent
+\begin{tabular}{l l l}
+\texttt{cs\_preprocess} & \texttt{-m example.des -sc --ensight } \verb=\= \\
+         & \texttt{--int-face --group entree --color 2 --invsel}\\
+\end{tabular}
+
+\subsubsection{Joining of non-conforming meshes\label{sec:optpcs:join}}
+
+Conforming joining of possibly non-conforming meshes is one of the
+\pcs's main functions. To activate it, use the \texttt{--join} or
+\texttt{-j} command-line options, possibly followed by face selection
+criteria and sub-options controlling associated tolerance parameters.
+
+For a simple mesh, it is rarely useful to specify face selection
+criteria, as joining is sufficiently automated to detect which faces
+may actually be joined. For a more complex mesh, or a mesh with thin
+walls which we want to avoid transforming into interior faces, it is
+recommended to filter boundary faces that may be joined by using
+face selection sub-arguments (see \S\ref{sec:formats_in}). This has the
+additional advantage of reducing the number of faces to test for
+in the intersection/overlap search, and thus reduced to time
+required by the joining algorithm.
+
+One may also modify tolerance criteria using 2 sub-options:
+
+\noindent
+\begin{tabular}[top]{p{3.0cm}%
+                     >{\PreserveBackslash\raggedright\hspace{0pt}}p{12.0cm}}
+\texttt{--fraction} $r$  &
+assigns value $r$ (where $0 < r < 0,49$) to the maximum
+intersection distance multiplier ($0,1$ by default). The maximum
+intersection distance for a given vertex is based on the length of
+the shortest incident edge, multiplied by $r$. The maximum intersection
+at a given point along an edge is interpolated from that at its
+vertices, as shown on the left of figure \ref{fig_join_tolerance}; \\
+\texttt{--plane} $c$ &
+assigns the minimum cosine between normals for two faces to be
+considered coplanar ($0,8$ by default, which corresponds to almost 37�);
+this parameter is used in the second stage of the algorithm, to
+reconstruct conforming faces, as shown on the right of figure
+\ref{fig_join_tolerance}.\\
+\end{tabular}
+
+\begin{figure}[hp]
+\centerline{
+\includegraphics*[width=14cm]{join_tolerance}}
+\caption{Maximum intersection tolerance and faces normal angle
+\label{fig_join_tolerance}}
+\end{figure}
+
+In practice, we are sometimes led to increase the maximum intersection
+distance multiplier to $0.2$ or even $0.3$ when joining curved surfaces,
+so that all intersection are detected. As this influences merging
+of vertices and thus simplification of reconstructed faces, but also
+deformation of ``lateral'' faces, it is recommended only to modify it
+if necessary. As for the \texttt{--plane} sub-option, its use has
+only been necessary on a few meshes up to now, and always in the
+sense of reducing the tolerance (i.e. bringing the minimum cosine closer
+to 1) so that face reconstruction does not try to generate faces
+from initial faces on different surfaces.
+
+As an example, to join faces with color $2$ of the mesh \texttt{mesh.des}
+with an intersection distance multiplier of  $0.15$, then joining all
+remaining joinable boundary faces with a default parameter of $0.1$,
+we may use the following command:
+
+\texttt{cs\_preprocess -m mesh.des -j --fraction 0.15 --color 2 -j}
+
+In cases where any two faces to join always have at least one common vertex
+(which is the case with meshes containing hanging nodes generated by
+tools such as \harpoon), we may use the \texttt{--semi-conf}
+sub-option, for a much faster edge intersection search than with
+the usual algorithm.
+
+\subsubsection{Periodicity\label{sec:optpcs:period}}
+
+Handling of periodicity is based on an extension of conforming joining,
+as shown on figure \ref{fig_join_periodic}. It is thus not necessary
+that periodic faces be conforming (though it usually leads to better
+mesh quality). All sub-options relative to conforming joining of
+non-conforming faces also apply to periodicity. Note also that
+once pre-processed, 2 periodic faces have the same orientation
+(possibly adjusted by periodicity of rotation).
+
+\begin{figure}[hp]
+\centerline{
+\includegraphics*[height=8cm]{join_periodic}}
+\caption{Matching of periodic faces
+\label{fig_join_periodic}}
+\end{figure}
+
+The sub-option for a translation-type periodicity is \texttt{--trans} followed
+by the three translation vector components $(tx, ty, tz)$.
+The sub-option for a rotation-type periodicity is \texttt{--rota}, 
+which must be completed either by:
+
+\noindent
+\texttt{--angle} $\alpha$ \texttt{--dir} $dx$ $dy$ $dz$
+
+\noindent
+where $\alpha$ is the rotation angle in degrees and $(dx, dy, dz)$ defines
+the rotation axis (using the trigonometric orientation), or by:
+
+\noindent
+\texttt{--matrix} $m11$ $m12$ $m13$ $m21$ $m22$ $m23$ $m31$ $m32$ $m33$
+
+\noindent
+where 
+\begin{math}
+  \left( \begin{smallmatrix}
+     m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33}
+  \end{smallmatrix} \right)
+\end{math}
+ defines the rotation matrix.
+
+In either case, we may define an invariant point different from $(0, 0, 0)$
+by adding the rotation sub-option \texttt{--invpt} $px$ $py$ $pz$.
+A translation and a rotation may be combined: in this case, the composite
+transformation is always $R \circ T$, independently of the order in which
+the translation and rotation are defined.
+
+The orientation of the transformations has no importance (but in the
+case of a composite transformation $R \circ T$, $R$ and $T$ must be
+consistent).
+As with joining, it is recommended to filter boundary faces to process
+using a selection criterion. As many periodicities may be built as desired,
+as long as boundary faces are present. One a periodicity is handled,
+faces having periodic matches do not appear as boundary faces, but as
+interior faces, and are thus not available anymore for other
+periodicities.
+
+We finish with the example of a periodicity of rotation of $90$ degrees around
+an axis of direction $(0, 0, 1)$ passing through $(1, 0, 0)$,
+for faces of group ``perio\_1'' and with a joining tolerance of $20\%$ (the
+\verb=\= character marks line continuation):
+
+\noindent
+\begin{tabular}{l l l}
+\texttt{--perio} & \texttt{--rota --angle 90 --dir 0 0 1 --invpt 1 0 0} \verb=\= \\
+ & \texttt{--fraction 0.2 --group perio\_1}\\
+\end{tabular}
+
+\subsubsection{Element orientation correction\label{sec:optpcs:orient}}
+
+We may active the possible element orientation correction using the
+\texttt{--reorient} option.
+
+Note that we cannot guarantee correction (or even detection) of a bad
+orientation in all cases.
+Not all local numbering possibilities of elements are tested,
+as we focus on ``usual'' numbering permutations. Moreover,
+the algorithms used may produce false positives or fail to find
+a correct renumbering in the case of highly non convex elements.
+In this case, nothing may be done short of modifying the mesh, as
+without a convexity hypothesis, it is not always possible to choose
+between two possible definitions starting from a point set.
+
+With a post-processing option such as \texttt{--ensight},
+visualizable meshes of corrected elements as well as remaining
+badly oriented elements are generated.
+
+\subsection{Environment variables\label{sec:envvpcs}}
+
+Setting a few environment variables specific to the \pcs allows modifying
+its default behavior. In general, if a given behavior is modifiable
+through an environment variable rather than by a command-line option,
+it has little interest for a non-developer, or its modification is
+potentially hazardous. The environment variables used by the \pcs
+are described here:
+
+\envvar{CS\_PREPROCESS\_MEM\_LOG}
+
+Allows defining a file name in which memory allocation, reallocation,
+and freeing is logged.
+
+\envvar{CS\_PREPROCESS\_MIN\_EDGE\_LEN}
+
+Under the indicated length ($10^{-15}$ by default), an edge is considered
+to be degenerate and its vertices will be merged after the transformation
+to descending connectivity. Degenerate edges and faces will thus be
+removed. Hence, the post-processed element does not change, but the
+Kernel may handle a prism where the preprocessor input contained a
+hexahedron with two identical vertex couples (and thus a face of zero
+surface). If the \pcs does not print any information relative to this
+type of correction, it means that it has not been necessary. To completely
+deactivate this automatic correction, a negative value may be assigned
+to this environment variable.
+
+\envvar{CS\_PREPROCESS\_IGNORE\_IDEAS\_COO\_SYS}
+
+If this variable is defined and is a strictly positive integer, coordinate
+systems in \ideas universal format files will be ignored. The behavior
+of the \pcs will thus be the same as that of versions 1.0 and 1.1.
+Note that in any case, non Cartesian coordinate systems are not handled yet.
+
+\envvar{CS\_PREPROCESS\_JOIN\_MAX\_SUB\_FACES}
+
+Defines the number of new faces originating from an initial face ($100$
+by default) above which we consider that the joining reconstruction has
+probably entered an infinite loop and has thus failed.
+This criterion is the last to intervene in the detection of errors and
+only comes into play in pathological cases probably related to excessive
+deformation of faces to join (and thus a too large tolerance factor).
+It should not be necessary to increase it for a mesh really intended for
+a calculation, as $100$ faces correspond to a refinement ratio of $10$
+in each direction for joined cells, which is excessive from a numerical
+standpoint.
+
+\subsubsection{System environment variables\label{sec:envpcs:sys}}
+
+Some system environment variables may also modify the behavior of
+the \pcs. For example, if the \pcs was compiled with \med support
+on an architecture allowing shared (dynamic) libraries, the
+\texttt {LD\_PRELOAD} environment variable may be used to define a
+``prioritary'' path to load \med or HDF5 libraries, and thus experiment
+with another version of these libraries without recompiling the \pcs.
+To determine which shared libraries are used by an executable file, use
+the following command: \texttt{ldd~\{executable\_path\}}.
+
+\subsection{Optional functionality\label{sec:pcs:lib_opt}}
+
+Some functions of the \pcs are based on external libraries,
+which may not always be available. It is thus possible to configure
+and compile the \pcs so as not to use these libraries.
+When running the \pcs, the supported options are printed.
+The following optional libraries may be used:
+
+\begin{itemize}
+
+\item CGNS library. In its absence, \hyperref[fmtdesc:cgns]{CGNS}
+      format support is deactivated.
+
+\item \med-file library. In its absence, \hyperref[fmtdesc:med]{\med}
+      format is simply deactivated.
+
+\item Read compressed files using Zlib. With this option, it is
+      possible to diretly read mesh files compressed with a
+      \emph{gzip} type algorithm and bearing a \emph{.gz} extension.
+      This is limited to formats not already based on an external
+      library (i.e. it is not usable with CGNS or \med files),
+      and has memory and CPU time overhead, but may be practical.
+      Without this library, files must be uncompressed before use.
+
+\end{itemize}
+
+\subsection{General remarks}
+
+Note that the \pcs is in general capable of reading all ``classical''
+element types present in mesh files (triangles, quadrangles, tetrahedra,
+pyramids, prisms, and hexahedra).
+Quadratic or cubic elements are converted upon reading into their
+linear counterparts. Vertices referenced by no element (isolated vertices
+or centers of higher-degree elements) are discarded. Meshes are read
+in the order defined by the user and are appended, vertex and element
+indices being incremented appropriately.
+\footnote{Possible entity labels are not maintained, as they would
+probably not be unique when appending multiple meshes.}
+
+At this stage, volume elements are sorted by type, and the fluid domain
+post-processing output is generated if required. Conforming joining,
+which may transform cells into general polyhedra only occurs
+after this. This allows bypassing a limitation of most post-processing
+tools, which do not handle polyhedral elements.
+\emph{It is possible to require the simultaneous output with
+multiple formats.}
+
+In general, colors or groups assigned to vertices are ignored.
+selections are thus based on faces or cells. with tools such
+as \simail, faces of volume elements may be referenced directly, while
+with \ideas or SALOME, a layer of surface elements bearing the required
+colors and groups must be added. Internally, the \pcs always considers
+that a layer of surface elements is added (i.e. when reading a \simail
+mesh, additional faces are generated to bear cell face colors.
+When building the descending connectivity, all faces with the
+same topology are merged: the initial presence of two layers of identical
+surface elements bearing different colors would thus lead to
+a calculation mesh with faces bearing two colors.
+
+\subsection{Files passed to the Kernel\label{sec:pcs:mode_comm}}
+
+Data passed to the Kernel by the \pcs is transmitted using a
+binary file, using ``big endian'' data representation, named
+\texttt{preprocessor\_output}.
+
+When using the \pcs for mesh verification, data for the Kernel
+is usually not needed. In this case, the \texttt{-sc} option may be
+used to simulate output, without creation of a {\tt preprocessor\_output}
+file.
+
+%==================================
+\section{Partitioning for parallel runs\label{sec:parall}}
+%==================================
+
+Graph partitioning (using one of the optional \metis or
+\scotch libraries) is done using a secondary executable,\\
+\texttt{cs\_partition},
+which reads the file produced by the \pcs and builds one or
+several ``cell $\rightarrow$ domain'' distribution files, named
+{\tt domain\_number\_\it{p}} for a partitioning on $p$ sub-domains.
+
+This separation leads to extra work for the Kernel, which must
+redistribute data read in the  {\tt preprocessor\_output} file
+based on the associated partitioning, but avoids requiring
+re-running the \pcs whenever running on a different number of
+files. This useful mainly for large files (20 to 100 million
+cells, for which running the \pcs may require several hours and
+a machine with a very large memory capacity. Simple domain
+partitioning requires much less time, and in general slightly
+less memory than the \pcs.
+
+Without partitioning (for example if neither \metis nor
+\scotch is available, or the partitioner has not been run
+for the required number of sub-domains), the Kernel will
+use a built-in partitioning using a space-filling curve
+(Z-curve) technique. This usually leads to partitionings
+of lower quality than with graph partitioning, but parallel
+performance remains reasonable.
+
+\subsection{Options\label{sec:optcmd:parall}}
+
+To list the partitioner's options, use the following command:
+{\tt cs\_partition~-h} 
+
+We provide the list of required partitionings an optionally additional
+options. For example, to simulate a partitioning for calculations on
+64 and 128 processes with no output, we may use the following command:
+
+\texttt{cs\_partition 64 128 --no-write}
+
+\subsubsection{Ignore periodicity\label{sec:optcmdpart:noperiod}}
+
+By default, face periodicity relations are taken into account when building
+the ``cell $\rightarrow$ cell'' connectivity graph used for partitioning.
+This allows better partitioning optimization, but increases the probability
+of having groups of cells at opposite sides of the domain in a same
+sub-domain. This is not an issue for standard calculations, but may
+degrade performance of search algorithms based on bounding boxes.
+It is thus possible to ignore periodicity when partitioning a mesh
+using the \texttt{--no-perio} option.
+
+Note that nothing guarantees that a graph partitioner will not place
+disjoint cells in the same sub-domain independently of this option,
+but this behavior is rare.
+
+\subsubsection{Partitioner choice\label{sec:optpart:partlib}}
+
+If the Partitioner has been configured with both \metis and
+\scotch libaries, using the \texttt{--metis} or \texttt{--scotch}
+option allows choosing between either library. By default, \emph{metis} is
+used if both choices are available.
+
+\subsubsection{Simulation mode\label{sec:optpart:nowrite}}
+
+Using the \texttt{--no-write} option, we can tell the partitioner
+not to output a {\tt domain\_number\_\it{p}} file.
+Partitioning is thus computed, but not saved.
+
+\subsubsection{Environment variables\label{sec:optpart:envvar}}
+
+\envvar{CS\_PARTITION\_MEM\_LOG}
+
+Allows defining a file name in which memory allocations, reallocations,
+and frees will be logged.
+
+%==================================
 \section{Main variables}
 %==================================
 
@@ -2482,71 +2991,73 @@ multidimensional arrays listed below. In some paricular subroutines,
 some variables may be given a more explicit name, in order to ease the
 comprehension.
 
-\variab{PROPCE}{PROPCE(NCELET,NPROCE)}{RA}{Properties defined at the
-cell centers. For instance: density, viscosity ...}
+\variab{propce}{propce(ncelet,nproce)}{ra}{Properties defined at the
+cell centers. For instance: density, viscosity, ...}
 
-\variab{PROPFA}{PROPFA(NFAC,NPROFA)}{RA}{Properties defined at the
+\variab{propfa}{propfa(nfac,nprofa)}{ra}{Properties defined at the
 internal faces. For instance: mass flow across internal faces}
 
-\variab{PROPFB}{PROPFB(NFABOR,NPROFB)}{RA}{Properties defined at the
+\variab{propfb}{propfb(nfabor,nprofb)}{ra}{Properties defined at the
 boundary faces. For instance: mass flow across boundary faces, density
-at boundary faces ...}
+at boundary faces, ...}
 
-\variab{RTP}{RTP(NCELET,NVAR)}{RA}{Array storing the values of the solved
+\variab{rtp}{rtp(ncelet,nvar)}{ra}{Array storing the values of the solved
 variables at the current time step}
 
-\variab{RTPA}{RTPA(NCELET,NVAR)}{RA}{Array storing the values of the solved
+\variab{rtpa}{rtpa(ncelet,nvar)}{ra}{Array storing the values of the solved
 variables at the previous time step}
 
 \bigskip
 
-\underline{Concerning RTP and RTPA}
+\underline{About \texttt{rtp} and \texttt{rtpa}}
 
 The indexes allowing to mark out the different variables (from 1 to
-NVAR) are integers available in a ``common'' file called
+\texttt{nvar}) are integers available in a ``common'' file called
 \texttt{numvar.h}. Some solved variables (pressure, velocity, turbulence)
 depend on the considered phase, and the index which refers to it is then a
-array of size NPHSMX, the maximum number of phases.
+array of size \texttt{nphsmx}, the maximum number of phases.
 
-For example, IPR(IPHAS) refers to the variable ``pressure'' of the phase
-IPHAS (with 1$\leqslant$IPHAS$\leqslant$NPHAS): the pressure of the
-phase IPHAS in the cell IEL at the current time step is therefore
-RTP(IEL,IPR(IPHAS)).
+For example, \texttt{ipr(iphas)} refers to the variable ``pressure'' of
+the phase \texttt{iphas} (with 1$\leqslant$iphas$\leqslant$nphas):
+the pressure of the phase \texttt{iphas} in the cell \texttt{iel}
+at the current time step is therefore \texttt{rtp(iel,ipr(iphas))}.
 
 The list of integers referring to solved variables is given below. These
-variable index-numbers are not only used for the RTP and RTPA arrays, but also
-for some arrays of variable associated options (for instance, BLENCV(IK(IPHAS))
-is the percentage of second-order convective scheme for the turbulent energy of
-the phase IPHAS when a corresponding turbulent model is used).
+variable index-numbers are not only used for the \texttt{rtp} and
+\texttt{rtpa} arrays, but also for some arrays of variable associated options
+(for instance, \texttt{blencv(ik(iphas))} is the percentage of second-order
+convective scheme for the turbulent energy of
+the phase \texttt{iphas} when a corresponding turbulent model is used).
 
 \begin{list}{$\bullet$}{}
-\item IPR(IPHAS)\index{IPR}: pressure\footnote{IPR(IPHAS) corresponds to a
+\item \texttt{ipr(iphas)}\index{\texttt{ipr}}: pressure
+\footnote{\texttt{ipr(iphas)} corresponds to a
 reduced pressure, from which the standard hydrostatic pressure has be
 deduced. The total pressure is stored in the PROPCE array}.
-\item IU(IPHAS)\index{IU}: velocity along the X axis.
-\item IV(IPHAS)\index{IV}: velocity along the Y axis.
-\item IW(IPHAS)\index{IW}: velocity along the Z axis.
-\item IK(IPHAS)\index{IK}: turbulent energy, in $k-\varepsilon$,
+\item \texttt{iu(iphas)}\index{\texttt{iu}}: velocity along the X axis.
+\item \texttt{iv(iphas)}\index{\texttt{iv}}: velocity along the Y axis.
+\item \texttt{iw(iphas)}\index{\texttt{iw}}: velocity along the Z axis.
+\item \texttt{ik(iphas)}\index{\texttt{ik}}: turbulent energy, in $k-\varepsilon$,
 $k-\omega$ modeling or v2f ($\varphi$-model) modeling.
-\item IR11(IPHAS)\index{IR11}: Reynolds stress R11, in
+\item \texttt{ir11(iphas)}\index{\texttt{ir11}}: Reynolds stress R11, in
       $R_{ij}-\varepsilon$ or SSG modeling.
-\item IR22(IPHAS)\index{IR22}: Reynolds stress R22, in
+\item \texttt{ir22(iphas)}\index{\texttt{ir22}}: Reynolds stress R22, in
       $R_{ij}-\varepsilon$ or SSG modeling.
-\item IR33(IPHAS)\index{IR33}: Reynolds stress R33, in
+\item \texttt{ir33(iphas)}\index{\texttt{ir33}}: Reynolds stress R33, in
       $R_{ij}-\varepsilon$ modeling.
-\item IR12(IPHAS)\index{IR12}: Reynolds stress R12, in
+\item \texttt{ir12(iphas)}\index{\texttt{ir12}}: Reynolds stress R12, in
       $R_{ij}-\varepsilon$ modeling.
-\item IR13(IPHAS)\index{IR13}: Reynolds stress R13, in
+\item \texttt{ir13(iphas)}\index{\texttt{ir13}}: Reynolds stress R13, in
       $R_{ij}-\varepsilon$ modeling.
-\item IR23(IPHAS)\index{IR23}: Reynolds stress R23, in
+\item \texttt{ir23(iphas)}\index{\texttt{ir23}}: Reynolds stress R23, in
       $R_{ij}-\varepsilon$ modeling.
-\item IEP(IPHAS)\index{IEP}: turbulent dissipation in $k-\varepsilon$,
+\item \texttt{iep(iphas)}\index{\texttt{iep}}: turbulent dissipation in $k-\varepsilon$,
 $R_{ij}-\varepsilon$ or v2f ($\varphi$-model) modeling.
-\item IOMG(IPHAS)\index{IOMG}: Specific dissipation rate $\omega$, in
+\item \texttt{iomg(iphas)}\index{\texttt{iomg}}: Specific dissipation rate $\omega$, in
 $k-\omega$ SST modeling.
-\item IPHI(IPHAS)\index{IPHI}: variable $\varphi=\overline{v^2}/k$ in v2f ($\varphi$-model).
-\item IFB(IPHAS)\index{IFB}: variable $\overline{f}$ in v2f ($\varphi$-model).
-\item ISCA(J)\index{ISCA}: scalar J (1$\leqslant$J$\leqslant$NSCAL).
+\item \texttt{iphi(iphas)}\index{\texttt{iphi}}: variable $\varphi=\overline{v^2}/k$ in v2f ($\varphi$-model).
+\item \texttt{ifb(iphas)}\index{\texttt{ifb}}: variable $\overline{f}$ in v2f ($\varphi$-model).
+\item \texttt{isca(j)}\index{\texttt{isca}}: scalar j(1$\leqslant$j$\leqslant$nscal).
 \end{list}
 
 \bigskip
@@ -2562,54 +3073,61 @@ $\overline{f}$), the following are highly important:
       which may be passive or not, ``user'' or not. The mean value of
       the square of the fluctuations of a ``scalar'' is a
       ``scalar'', too. The scalars may be divided into two groups:
-      NSCAUS ``user'' scalars and NSCAPP ``specific physics'' scalars, with
-      NSCAL=NSCAUS+NSCAPP. NSCAL must be inferior or equal to NSCAMX.
-\item The phase related to the scalar J is IPHSCA(J)\index{IPHSCA}.
-\item The J$^{\text{th}}$ user scalar is, in
-      the whole list of the NSCAL scalars, the scalar number
-      J. In the list of the NVAR solved variables, it
-      corresponds to the variable number ISCA(J),
-      its value in the cell IEL at the current time step is given by
-      RTP(IEL,ISCA(J)).
-\item The J$^{\text{th}}$ scalar related to a specific physics is, in
-      the whole list of the NSCAL scalars, the scalar number
-      ISCAPP(J). In the list of the NVAR solved variables, it
-      corresponds to the variable number ISCA(ISCAPP(J))\index{ISCAPP},
-      its value in the cell IEL at the current time step is given by
-      RTP(IEL,ISCA(ISCAPP(J))).
+      \texttt{nscaus} ``user'' scalars and \texttt{nscapp}
+      ``specific physics'' scalars, with
+      \texttt{nscal=nscaus+nscapp}. \texttt{nscal} must be inferior or
+       equal to \texttt{nscamx}.
+\item The phase related to the scalar \texttt{j} is
+      \texttt{iphsca(j)}\index{\texttt{iphsca}}.
+\item The \texttt{j}$^{\text{th}}$ user scalar is, in
+      the whole list of the \texttt{nscal} scalars, the scalar number
+      \texttt{j}. In the list of the \texttt{nvar} solved variables, it
+      corresponds to the variable number \texttt{isca(j)},
+      its value in the cell \texttt{iel} at the current time step is given by
+      \texttt{rtp(iel,isca(j)}).
+\item The \texttt{j}$^{\text{th}}$ scalar related to a specific physics is, in
+      the whole list of the \texttt{nscal} scalars, the scalar number
+      \texttt{iscapp(j)}. In the list of the \texttt{nvar} solved variables, it
+      corresponds to the variable number
+      \texttt{isca(iscapp(j)})\index{\texttt{iscapp}},
+      its value in the cell \texttt{iel} at the current time step is given by
+      \texttt{rtp(iel,isca(iscapp(j)))}.
 
 \item The temperature (or the enthalpy) is the scalar number
-      ISCALT(IPHAS)\index{ISCALT} in the list of the NSCAL scalars. It
-      corresponds to the variable number ISCA(ISCALT(IPHAS)) and its
-      value in the cell IEL is RTP(IEL,ISCA(ISCALT(IPHAS))). If there is no
-      thermal scalar, ISCALT(IPHAS) is equal to -1.
-\item A ``user'' scalar number J may represent the average of the square of the
-      fluctuations of a scalar K ({\em i.e.} the average
+      \texttt{iscalt(iphas)}\index{iscalt} in the list of the \texttt{nscal}
+      scalars. It corresponds to the variable number \texttt{isca(iscalt(iphas))}
+      and its value in the cell \texttt{iel} is
+      \texttt{rtp(iel,isca(iscalt(iphas)))}. if there is no thermal scalar,
+      \texttt{iscalt(iphas)} is equal to -1.
+\item A ``user'' scalar number \texttt{j} may represent the average of the
+      square of the fluctuations of a scalar \texttt{k} ({\em i.e.} the average
       $\overline{\varphi^\prime\varphi^\prime}$ for a fluctuating scalar
       $\varphi$ ). This can be made either {\em via} the
-      interface or by indicating ISCAVR(J)=K\index{ISCAVR} in
+      interface or by indicating \texttt{iscavr(j)=k}\index{\texttt{iscavr}} in
       \texttt{usini1} (if the scalar in question is not a ``user''
-      scalar, the selection is made automatically). For instance, if J
-      and K are ``user'' scalars, the variable $\varphi$ corresponding
-      to K is the variable number ISCA(K)=ISCA(ISCAVR(J)), and its value
-      in the cell IEL is \\ RTP(IEL,ISCA(K))=RTP(IEL,ISCA(ISCAVR(J))). \\
+      scalar, the selection is made automatically). For instance, if \texttt{j}
+      and \texttt{k} are ``user'' scalars, the variable $\varphi$ corresponding
+      to \texttt{k} is the variable number \texttt{isca(k)=isca(iscavr(j))},
+      and its value in the cell \texttt{iel} is \\
+      \texttt{rtp(iel,isca(k))=rtp(iel,isca(iscavr(j)))}. \\
 The variable corresponding to the mean value of the square of the
       fluctuations\footnote{it is really
       $\overline{\varphi^\prime\varphi^\prime}$, and not
       $\displaystyle\sqrt{\overline{\varphi^\prime\varphi^\prime}}$} is
-      the variable number ISCA(J) and its value in the cell IEL is
-      RTP(IEL,ISCA(J)).
+      the variable number \texttt{isca(j)} and its value in the cell \texttt{iel}
+      is \texttt{rtp(iel,isca(j))}.
 \end{list}
 
 \bigskip
 
-\underline{Concerning PROPCE, PROPFA and PROPFB}
+\underline{About \texttt{propce}, \texttt{propfa} and \texttt{propfb}}
 In \CS, the physical properties\footnote{other variables are stored in the
-arrays PROPCE, PROPFA and PROPFB. They are not ``physical properties'' strictly
-speaking, but it is convenient to have them in the same array as the proper
-physical properties} are stored in the arrays PROPCE, PROPFA and
-PROPFB. Some properties, like the density, are only stored for cells and boundary
-faces. Some, like the mass flux, are only stored at the internal and boundary
+arrays \texttt{propce}, \texttt{propfa} and \texttt{propfb}. They are not
+``physical properties'' strictly speaking, but it is convenient to have them
+in the same array as the proper physical properties} are stored in the
+\texttt{propce}, \texttt{propfa} and \texttt{propfb} arrays.
+Some properties, like the density, are only stored for cells and boundary
+faces. Some, like the mass flux, are only stored at the interior and boundary
 faces. To avoid having different index numbers for a physical property,
 depending on the array it is used in, the following structure is used in \CS:
 
@@ -2620,104 +3138,105 @@ given automatically by the code and stored in an integer or an integer array
 (its size may be the maximum number of phases, the maximum
 number of scalars or the maximum number of variables).
 
-\item The indexes referring  to the different properties stored in the PROPxx
-arrays are given respectively by the following integer arrays:
+\item The indexes referring  to the different properties stored in the
+\texttt{prop{\bf xx}} arrays are given respectively by the following integer arrays:
 
-\variab{IPPROC}{IPPROC(NPROMX)}{IA}{Rank I in PROPCE(.,I) of the
+\variab{ipproc}{ipproc(npromx)}{ia}{Rank \texttt{i} in \texttt{propce(.,i)} of the
 properties defined at the cell centers}
 
-\variab{IPPROF}{IPPROF(NPROMX)}{IA}{Rank I in PROPFA(.,I) of the
+\variab{ipprof}{ipprof(npromx)}{ia}{Rank \texttt{i} in \texttt{propfa(.,i)} of the
 properties defined at the internal faces}
 
-\variab{IPPROB}{IPPROB(NPROMX)}{IA}{Rank I in PROPFB(.,I) of the
+\variab{ipprob}{ipprob(npromx)}{ia}{Rank \texttt{i} in \texttt{propfb(.,i)} of the
 properties defined at the boundary faces}
 
 \end{list}
 
 For instance, the index number corresponding to the density of the phase
-IPHAS is IROM(IPHAS).\\
+\texttt{iphas} is \texttt{irom(iphas)}.\\
 In the list of the properties defined at the cell center, the density of
-the phase IPHAS is therefore the IPPROC(IROM(IPHAS))$^{\text{th}}$
-property: its value at the center of the cell IEL is given by \\
-PROP{\bf CE}(IEL,IPPRO{\bf C}(IROM(IPHAS)))\\
+the phase \texttt{iphas} is therefore the \texttt{ipproc(irom(iphas))}$^{\text{th}}$
+property: its value at the center of the cell \texttt{iel} is given by \\
+\texttt{prop{\bf ce}(iel,ippro{\bf c}(irom(iphas)))}.\\
 In the same way, in the list of the properties defined at the boundary
-faces, the density of the phase IPHAS is the
-IPPROB(IROM(IPHAS)))$^{\text{th}}$ property: its value at the boundary
+faces, the density of the phase \texttt{iphas} is the
+\texttt{ipprob(irom(iphas)))}$^{\text{th}}$ property: its value at the boundary
 face is given by \\
-PROP{\bf FB}(IEL,IPPRO{\bf B}(IROM(IPHAS)))
+\texttt{prop{\bf fb}(iel,ippro{\bf b}(irom(iphas)))}
 
 The list of properties accessible in the PROPxx arrays is given below (this does
 not include the properties linked to the specific physics modules):
 
-\variab{IROM}{IROM(NPHSMX)}{IA}{For each phase, property number
+\variab{irom}{irom(nphsmx)}{ia}{For each phase, property number
 corresponding to the density ({\em i.e.} $\rho$ in $kg.m^{-3}$)\\
 stored at the cells and the boundary faces}
 
-\variab{IROMA}{IROMA(NPHSMX)}{IA}{For each phase, property number
+\variab{iroma}{iroma(nphsmx)}{ia}{For each phase, property number
 corresponding to the density ({\em i.e.} $\rho$ in $kg.m^{-3}$) at the
 previous time step, in the case of a second-order extrapolation in time\\
 stored at the cells and the boundary faces}
 
-\variab{IVISCL}{IVISCL(NPHSMX)}{IA}{For each phase, property number
+\variab{iviscl}{iviscl(nphsmx)}{ia}{For each phase, property number
 corresponding to the fluid molecular dynamic viscosity ({\em i.e.} $\mu$ in
 $kg.m^{-1}.s^{-1}$)\\
 stored at the cells}
 
-\variab{IVISLA}{IVISLA(NPHSMX)}{IA}{For each phase, property number
+\variab{ivisla}{ivisla(nphsmx)}{ia}{For each phase, property number
 corresponding to the fluid molecular dynamic viscosity ({\em i.e.} $\mu$
 in $kg.m^{-1}.s^{-1}$) at the previous time step, in the case of a
 second-order extrapolation in time\\
 stored at the cells}
 
-\variab{IVISCT}{IVISCT(NPHSMX)}{IA}{For each phase, property number
+\variab{ivisct}{ivisct(nphsmx)}{ia}{For each phase, property number
 corresponding to the fluid turbulent dynamic viscosity ({\em i.e.}
 $\mu_t$ in $kg.m^{-1}.s^{-1}$)\\
 stored at the cells}
 
-\variab{IVISTA}{IVISTA(NPHSMX)}{IA}{For each phase, property number
+\variab{ivista}{ivista(nphsmx)}{ia}{For each phase, property number
 corresponding to the fluid turbulent dynamic viscosity ({\em i.e.}
 $\mu_t$ in $kg.m^{-1}.s^{-1}$) at the previous time step, in the case of a
 second-order extrapolation in time\\
 stored at the cells}
 
-\variab{ICP}{ICP(NPHSMX)}{IA}{For each phase,  property number
+\variab{icp}{icp(nphsmx)}{ia}{For each phase,  property number
 corresponding to the specific heat, in case where it is variable
 ({\em i.e.} $C_p$ in $m^2.s^{-2}.K^{-1}$). See note below\\
 stored at the cells}
 
-\variab{ICPA}{ICPA(NPHSMX)}{IA}{For each phase,  property number
+\variab{icpa}{icpa(nphsmx)}{ia}{For each phase,  property number
 corresponding to the specific heat, in case where it is variable
 ({\em i.e.} $C_p$ in $m^2.s^{-2}.K^{-1}$), at the previous time step,
 in the case of a second-order extrapolation in time. See note below\\
 stored at the cells}
 
-\variab{ITSNSA}{ITSNSA(NPHSMX)}{IA}{For each phase, in the case of a
+\variab{itsnsa}{itsnsa(nphsmx)}{ia}{For each phase, in the case of a
 calculation run with a second-order discretisation in time with
 extrapolation of the source terms, property number corresponding to the
 source term of Navier-Stokes at the previous time step ($kg.m^{-1}.s^{-2}$)\\
 stored at the cells}
 
-\variab{ITSTUA}{ITSTUA(NPHSMX)}{IA}{For each phase, in the case of a
+\variab{itstua}{itstua(nphsmx)}{ia}{For each phase, in the case of a
 calculation run with a second-order discretisation in time with
 extrapolation of the source terms, property number corresponding to the
 source terms of the turbulence at the previous time step\\
 stored at the cells}
 
-\variab{ITSSCA}{ITSSCA(NPHSMX)}{IA}{For each phase, in the case of a
+\variab{itssca}{itssca(nphsmx)}{ia}{For each phase, in the case of a
 calculation run with a second-order discretisation in time with
 extrapolation of the source terms, property number corresponding to the
 source terms of the equations solved for the scalars at the previous
 time step ($kg.m^{-1}.s^{-2}$)\\
 stored at the cells}
 
-\variab{IESTIM}{IESTIM(NESTMX,NPHSMX)}{IA}{For each phase, property
-number for the NESTMX error estimators for Navier-Stokes. The estimators
-currently available are IESTIM(IESPRE\index{IESPRE},IPHAS),
-IESTIM(IESDER\index{IESDER},IPHAS), IESTIM(IESCOR\index{IESCOR},IPHAS),
-IESTIM(IESTOT\index{IESTOT},IPHAS)\\
+\variab{iestim}{iestim(nestmx,nphsmx)}{ia}{For each phase, property
+number for the \texttt{nestmx} error estimators for Navier-Stokes. The estimators
+currently available are \texttt{iestim(iespre\index{iespre},iphas)},\\
+\texttt{iestim(iesder\index{iesder},iphas)},
+\texttt{iestim(iescor\index{iescor},iphas)},
+\texttt{iestim(iestot\index{iestot},iphas)}
 stored at the cells}
 
-\variab{IFLUMA}{IFLUMA(NVARMX)}{IA}{Property number corresponding to the
+\variab{ifluma}{ifluma(nvarmx)}{ia}{Property number corresponding to the
 mass flow associated with each variable ({\em i.e.} for each face
 of surface $S$, $\rho \vect{u} \,.\,\vect{S}$ in $kg.s^{-1}$). It
 must be noticed that the mass flows are associated with the
@@ -2725,58 +3244,58 @@ variables and not with the phases. This allows to have a distinct
 convective flow for each scalar.\\
 stored at the internal faces and boundary faces}
 
-\variab{IFLUAA}{IFLUAA(NVARMX)}{IA}{Property number corresponding to the
+\variab{ifluaa}{ifluaa(nvarmx)}{ia}{Property number corresponding to the
 mass flow associated with each variable at
 the previous time step, in the case of a second-order extrapolation in time\\
 stored at the internal faces and boundary faces}
 
-\variab{IVISLS}{IVISLS(NSCAMX)}{IA}{Property number corresponding to the
+\variab{ivisls}{ivisls(nscamx)}{ia}{Property number corresponding to the
 diffusivity of scalars for which it is variable ({\em i.e.}$\displaystyle
 \frac{\lambda}{C_p}$ for the temperature, in $kg.m^{-1}.s^{-1}$). It must
 be noticed that the diffusivity is associated with the scalars rather
 than with the variables. See note below\\
 stored at the cells}
 
-\variab{IVISSA}{IVISSA(NSCAMX)}{IA}{Property number corresponding to the
+\variab{ivissa}{ivissa(nscamx)}{ia}{Property number corresponding to the
 diffusivity of scalars for which it is variable ({\em i.e.}$\displaystyle
 \frac{\lambda}{C_p}$ for the temperature, in $kg.m^{-1}.s^{-1}$) at the
 previous time step, in the case of a second-order extrapolation in time\\
 stored at the cells}
 
-\variab{ISMAGO}{ISMAGO(NPHSMX)}{IA}{For each phase, property number
+\variab{ismago}{ismago(nphsmx)}{ia}{For each phase, property number
 corresponding to the variable $C$ of the dynamic model, {\em i.e}
 so that $\mu_t=\rho C\overline{\Delta}^2\sqrt{2S_{ij}S_{ij}}$ (with the
 notations of \cite{benhamadouche01}). $C$ corresponds to $C_s^2$ in the
 classical model of Smagorinsky\\
 stored at the cells}
 
-\variab{ICOUR}{ICOUR(NPHSMX)}{IA}{For each phase, CFL number in each cell at the
+\variab{icour}{icour(nphsmx)}{ia}{For each phase, CFL number in each cell at the
 present time step\\
 stored at the cells}
 
-\variab{IFOUR}{IFOUR(NPHSMX)}{IA}{For each phase, Fourier number in each cell at
+\variab{ifour}{ifour(nphsmx)}{ia}{For each phase, Fourier number in each cell at
 the present time step\\
 stored at the cells}
 
-\variab{IPRTOT}{IPRTOT(NPHSMX)}{IA}{For each phase\footnote{Although the data
+\variab{iprtot}{iprtot(nphsmx)}{ia}{For each phase\footnote{Although the data
 structure of \CS allows multi-phase variables,  the algorithm does not allow
 more than one pressure}, total pressure in each cell\\
 stored at the cells}
 
-\variab{IVISMA}{IVISMA(1 or 3)}{IA}{When the ALE method for deformable meshes is
-activated, IVISMA corresponds to the ``mesh viscosity'', allowing to limit
+\variab{ivisma}{ivisma(1 or 3)}{ia}{When the ALE method for deformable meshes is
+activated, \texttt{ivisma} corresponds to the ``mesh viscosity'', allowing to limit
 the deformation in certain areas. This mesh viscosity can be isotropic or be
 taken as a diagonal tensor (depending on the value of the parameter
-IORTVM\index{IORTVM}.\\
+\texttt{iortvm}\index{\texttt{iortvm}}.\\
 stored at the cells}
 
-\variab{ICMOME}{ICMOME(NBMOMX)}{IA}{Property number corresponding to
+\variab{icmome}{icmome(nbmomx)}{ia}{Property number corresponding to
 the time averages defined by the user. More precisely, it is not the time
 average that is stored, but a summation over time (the division by the cumulated
 duration is done just before the results are written)\\
 stored at the cells}
 
-\variab{ICDTMO}{ICDTMO(NBMOMX)}{IA}{Property number corresponding to the
+\variab{icdtmo}{icdtmo(nbmomx)}{ia}{Property number corresponding to the
 cumulated duration associated with each time average defined by the
 user, when this duration is not spatially uniform (see note below)\\
 stored at the cells}
@@ -2791,29 +3310,29 @@ array of reals.
 \begin{list}{$\bullet$}{}
 \item It is the case for the specific heat $C_p$.
 \begin{list}{-}{}
-\item If $C_p$ is constant for the phase IPHAS, it can be specified in
-        the interface or by indicating ICP(IPHAS)=0 in \texttt{usini1},
-        and the property will be stored in the real number CP0(IPHAS).
+\item If $C_p$ is constant for the phase \texttt{iphas}, it can be specified in
+      the interface or by indicating \texttt{icp(iphas)=0} in \texttt{usini1},
+      and the property will be stored in the real number \texttt{cp0(iphas)}.
 \item If $C_p$ is variable, it can be specified in the interface or by
-      indicating ICP(IPHAS)=1 in \texttt{usini1}. The code will then
-      modify this value to make ICP(IPHAS) refer to the effective
+      indicating \texttt{icp(iphas)=1} in \texttt{usini1}. The code will then
+      modify this value to make \texttt{icp(iphas)} refer to the effective
       property number corresponding to the specific heat of the phase
-      IPHAS, in a way which is transparent for the user. For each cell
-      IEL, the value of $C_p$ is then given in \texttt{usphyv} and
-      stored in the array PROPCE(IEL,IPPROC(ICP(IPHAS))).
+      \texttt{iphas}, in a way which is transparent for the user. For each cell
+      \texttt{iel}, the value of $C_p$ is then given in \texttt{usphyv} and
+      stored in the array \texttt{propce(iel,ipproc(icp(iphas)))}.
 \end{list}
-\item It is the same for the diffusivity $K$ of each scalar ISCAL.
+\item It is the same for the diffusivity $K$ of each scalar \texttt{iscal}.
 \begin{list}{-}{}
-\item If $K$ is constant, it can be specified in the interface or by
-        indicating IVISLS(ISCAL)=0 in \texttt{usini1}, and the property
-        will be stored in the real number VISLS0(ISCAL).
-\item If $K$ is variable, it can be specified in the interface or by
-      indicating  IVISLS(ISCAL)=1 in \texttt{usini1}. The code will then
-      modify this value to make IVISLS(ISCAL) refer to the effective
+\item If $k$ is constant, it can be specified in the interface or by
+      indicating \texttt{ivisls(iscal)=0} in \texttt{usini1}, and the property
+      will be stored in the real number \texttt{visls0(iscal)}.
+\item If $k$ is variable, it can be specified in the interface or by
+      indicating \texttt{ivisls(iscal)=1} in \texttt{usini1}. The code will then
+      modify this value to make \texttt{ivisls(iscal)} refer to the effective
       property number corresponding to the diffusivity of the scalar
-      ISCAL, in a way which is transparent for the user. For each cell
-      IEL, the value of $K$ is then given in \texttt{usphyv} and stored
-      in the array PROPCE(IEL,IPPROC(IVISLS(ISCAL))).
+      \texttt{iscal}, in a way which is transparent for the user. For each cell
+      \texttt{iel}, the value of $k$ is then given in \texttt{usphyv} and stored
+      in the \texttt{propce(iel,ipproc(ivisls(iscal)))} array.
 \end{list}
 \end{list}
 
@@ -2822,43 +3341,43 @@ array of reals.
 defined by the user}\label{prg_moyennes}
 The cumulated duration associated with the calculation of a time averages
 defined by the user is often a spatially uniform value. In this case, it
-is stored in a simple real number: for the mean value IMOM, it is the
-real number DTCMOM(-IDTMOM(IMOM))\index{DTCMOM}\index{IDTMOM} (IDTMOM(IMOM) is
-negative in this case).\\
+is stored in a simple real number: for the mean value \texttt{imom}, it is the
+real number \texttt{dtcmom(-idtmom(imom))}\index{\texttt{dtcmom}}%
+\index{\texttt{idtmom}} (\texttt{idtmom(imom)} is negative in this case).\\
 When this cumulated duration is not spatially uniform (for instance in the case
-of a spatially variable time step), it is stored in PROPCE. It must be
+of a spatially variable time step), it is stored in \texttt{propce}. It must be
 noted that the cumulated duration associated with the calculation of
-the average IMOM is variable in space if IDTMOM(IMOM) is strictly
-positive. The number of the associated property in PROPCE is then
-ICDTMO(IDTMOM(IMOM))\index{ICDTMO}. For instance, for the average IMOM, the
-cumulated duration in the cell IEL will be
-PROPCE(IEL,ICDTMO(IDTMOM(IMOM))).\\
+the average \texttt{imom} is variable in space if \texttt{idtmom(imom)} is strictly
+positive. The number of the associated property in \texttt{propce} is then
+\texttt{icdtmo(idtmom(imom))}\index{\texttt{icdtmo}}. For instance, for the
+average \texttt{imom}, the cumulated duration in the cell \texttt{iel} will be
+\texttt{propce(iel,icdtmo(idtmom(imom)))}.\\
 The user may have a look to the example given in \texttt{usproj} to know
 how to calculate a time averages in a particular cases (printing of extreme
 values, writing of results, ...).
 
 \bigskip
 
-Two other variables, HBORD and TBORD, should be noted here, although they are
-relatively local (they appear only in the treatment of the boundary conditions)
-and are used only by developers.
+Two other variables, \texttt{hbord} and \texttt{tbord}, should be noted here,
+although they are relatively local (they appear only in the treatment of the
+boundary conditions) and are used only by developers.
 
-\variab{HBORD}{HBORD(NFABOR)}{RA}{Array of the exchange coefficient for
+\variab{hbord}{hbord(nfabor)}{ra}{Array of the exchange coefficient for
 temperature (or enthalpy) at the boundary faces. The table is allocated only if
-ISVHB\index{ISVHB} is set to 1 in \texttt{tridim}, which is done automatically
-but only if the coupling with \syrthes or the 1D thermal wall module are
-activated.}
+\texttt{isvhb}\index{\texttt{isvhb}} is set to 1 in \texttt{tridim}, which is
+done automatically, but only if the coupling with \syrthes or the 1D thermal
+wall module are activated.}
 
-\variab{TBORD}{TBORD(NFABOR)}{RA}{Temperature (or enthalpy) at the boundary
- faces\footnote{It is the physical temeprature at the boundary faces, not the
+\variab{tbord}{tbord(nfabor)}{ra}{Temperature (or enthalpy) at the boundary
+faces\footnote{It is the physical temeprature at the boundary faces, not the
 boundary condition for temperature. See \cite{theory} for more details on
 boundary conditions}. The table is allocated only if
-ISVTB\index{ISVTB} is set to 1 in \texttt{tridim}, which is done automatically
-but only if the coupling with \syrthes or the 1D thermal wall module are
-activated.}
+\texttt{isvtb}\index{\texttt{isvtb}} is set to 1 in \texttt{tridim}, which is
+done automatically but only if the coupling with \syrthes or the 1D thermal
+wall module are activated.}
 
-Tables HBORD and TBORD are of size NFABOR, although they concern only the wall
-boundary faces.
+Tables \texttt{hbord} and \texttt{tbord} are of size \texttt{nfabor},
+although they concern only the wall boundary faces.
 
 
 
@@ -2879,187 +3398,196 @@ displayed below.
 
 \minititre{Boundary conditions}
 
-\variab{COEFA}{COEFA(NFABOR,*)}{RA}{Boundary conditions: see note 2}
-
-\variab{COEFB}{COEFB(NFABOR,*)}{RA}{Boundary conditions: see note 2}
+\variab{coefa}{coefa(nfabor,*)}{ra}{Boundary conditions: see note 2}
 
-\variab{ICLRTP}{ICLRTP(NVARMX,2)}{IA}{For each variable IVAR
-(1$\leqslant$IVAR$\leqslant$NVAR$\leqslant$ NVARMX), rank in COEFA and
-COEFB of the boundary conditions. See note 2}
+\variab{coefb}{coefb(nfabor,*)}{ra}{Boundary conditions: see note 2}
 
-\variab{ICOEF}{ICOEF}{I}{Rank in ICLRTP of the rank in COEFA and COEFB
-of the ``standard'' boundary conditions. See note 2}
+\variab{iclrtp}{iclrtp(nvarmx,2)}{ia}{For each variable \texttt{ivar}
+(1$\leqslant$ivar$\leqslant$nvar$\leqslant$nvarmx), rank in \texttt{coefa} and
+\texttt{coefb} of the boundary conditions. See note 2}
 
-\variab{ICOEFF}{ICOEFF}{I}{Rank in ICLRTP of the rank in COEFA and COEFB of the
-``flow'' type boundary conditions, reserved for developers. See note 2}
+\variab{icoef}{icoef}{i}{Rank in \texttt{iclrtp} of the rank in \texttt{coefa}
+and \texttt{coefb} of the ``standard'' boundary conditions. See note 2}
 
+\variab{icoeff}{icoeff}{i}{Rank in \texttt{iclrtp} of the rank in \texttt{coefa}
+and \texttt{coefb} of the ``flow'' type boundary conditions, reserved for
+developers. See note 2}
 
-\variab{IFMFBR}{IFMFBR(NFABOR)}{IA}{Family number of the boundary
+\variab{ifmfbr}{ifmfbr(nfabor)}{ia}{Family number of the boundary
 faces. See note 1}
 
-\variab{IPRFML}{IPRFML(NFML,NPRFML)}{IA}{Properties of the
+\variab{iprfml}{iprfml(nfml,nprfml)}{ia}{Properties of the
 families of referenced entities. See note 1}
 
-
-\variab{IISYMP}{IISYMP}{I}{Integer giving the rank in IA of the first
-element of the section allowing to mark out the ``wall'' (ITYPFB=IPAROI or IPARUG)
-or ``symmetry'' (ITYPFB=ISYMET) boundary faces in order to prevent the
+\variab{iisymp}{iisymp}{i}{Integer giving the rank in \texttt{ia} of the first
+element of the section allowing to mark out the ``wall'' (\texttt{itypfb=iparoi}
+or \texttt{iparug})
+or ``symmetry'' (\texttt{itypfb=isymet}) boundary faces in order to prevent the
 mass flow (these faces are impermeable). For instance, for the phase
-IPHAS, if the face IFAC is a wall or symmetry face, IA(IISMPH+IFAC-1)=0 (with
-IISMPH=IISYMP+NFABOR*(IPHAS-1)).\\
-Otherwise IA(IISYMP+IFAC-1)=1. \\
-In some subroutines, an array called ISYMPA(NFABOR)\index{ISYMPA} allows
-to simplify the coding with ISYMPA(IFAC)=IA(IISMPH+IFAC-1)}
+\texttt{iphas}, if the face \texttt{ifac} is a wall or symmetry face,
+\texttt{ia(iismph+ifac-1)=0} (with \texttt{iismph=iisymp+nfabor*(iphas-1))}.\\
+Otherwise \texttt{ia(iisymp+ifac-1)=1}. \\
+In some subroutines, an array called \texttt{isympa(nfabor)}\index{\texttt{isympa}}
+allows to simplify the coding with \texttt{isympa(ifac)=ia(iismph+ifac-1)}}
 
-\variab{IITRIF}{IITRIF}{I}{In IA, pointer to ITRIFB}
+\variab{iitrif}{iitrif}{i}{In \texttt{ia}, pointer to \texttt{itrifb}}
 
-\variab{IITYPF}{IITYPF}{I}{In IA, pointer to ITYPFB}
+\variab{iitypf}{iitypf}{i}{In \texttt{ia}, pointer to \texttt{itypfb}}
 
-\variab{ITRIFB}{ITRIFB(NFABOR,NPHAS)}{IA}{Indirection array allowing to
-sort the boundary faces according to their boundary condition type ITYPFB}
+\variab{itrifb}{itrifb(nfabor,nphas)}{ia}{Indirection array allowing to
+sort the boundary faces according to their boundary condition type \texttt{itypfb}}
 
-\variab{ITYPFB}{ITYPFB(NFABOR,NPHAS)}{IA}{Boundary condition type at the
-boundary face IFAC for the phase IPHAS (see user subroutine
+\variab{itypfb}{itypfb(nfabor,nphas)}{ia}{Boundary condition type at the
+boundary face \texttt{ifac} for the phase \texttt{iphas} (see user subroutine
 \texttt{usclim})}
 
-\variab{IUETBO}{IUETBO}{I}{In RA, pointer to UETBOR, used to store the friction
-velocity at the wall, in the case of a LES calculation with van
+\variab{iuetbo}{iuetbo}{i}{In \texttt{ra}, pointer to \texttt{uetbor}, used to
+store the friction velocity at the wall, in the case of a LES calculation with van
 Driest-wall damping}
 
 \minititre{Distance to the wall}
 
-\variab{IIFAPA}{IIFAPA(NPHSMX)}{IA}{For each phase, the pointer in IA which
- marks out the number of the wall face(type ITYPFB=IPAROI or IPARUG) which is closest
- to the center of a given volume when necessary ($R_{ij}-\varepsilon$ with
- wall echo, LES with van Driest-wall damping,
-or SST $k-\omega$ turbulence model) and when ICDPAR=2. The number of the wall
-face (for the phase IPHAS) which is the closest to the center of the
-cell IEL is therefore IA(IIFAPA(IPHAS)+IEL-1). This calculation method
-is not compatible with parallelism and periodicity}
+\variab{iifapa}{iifapa(nphsmx)}{ia}{For each phase, the pointer in \texttt{ia}
+which  marks out the number of the wall face(type \texttt{itypfb=iparoi} or
+\texttt{iparug}) which is closest  to the center of a given volume when necessary
+($R_{ij}-\varepsilon$ with wall echo, LES with van Driest-wall damping,
+or SST $k-\omega$ turbulence model) and when \texttt{icdpar=2}.
+The number of the wall face (for the phase \texttt{iphas}) which is the closest to
+the center of the cell \texttt{iel} is therefore \texttt{ia(iifapa(iphas)+iel-1)}. This calculation method is not compatible with parallelism and periodicity}
 
-\variab{IDIPAR}{IDIPAR}{I}{For each phase, pointer in RA to the section
+\variab{idipar}{idipar}{i}{For each phase, pointer in \texttt{ra} to the section
 allowing to mark out the distance between the center of a given volume and the
 closest wall, when it is necessary ($R_{ij}-\varepsilon$ with wall echo,
 LES with van Driest-wall damping, or SST $k-\omega$ turbulence model)
-and when ICDPAR=1. The distance between the center of the cell IEL and the
-closest wall is therefore  RA(IDIPAR+IEL-1)}
+and when \texttt{icdpar=1}. The distance between the center of the cell
+\texttt{iel} and the closest wall is therefore \texttt{ra(idipar+iel-1)}}
 
-\variab{IYPPAR}{IYPPAR}{I}{For each phase, pointer in RA to the section
+\variab{iyppar}{iyppar}{i}{For each phase, pointer in \texttt{ra} to the section
 allowing to mark out the adimensional distance $y^+$ between a given
 volume and the closest wall, when it is necessary (LES with van
-Driest-wall damping) and when ICDPAR=1. The adimensional distance $y^+$
-between the center of the cell IEL and the closest wall is therefore
-RA(IYPPAR+IEL-1)}
+Driest-wall damping) and when \texttt{icdpar=1}. The adimensional distance $y^+$
+between the center of the cell \texttt{iel} and the closest wall is therefore
+\texttt{ra(iyppar+iel-1)}}
 
 \minititre{Pressure drops}
 
-\variab{IICEPD}{IICEPD(NPHSMX)}{IA}{For each phase IPHAS, pointer in IA to \\
-ICEPDC(NCEPDC(IPHAS)), array allowing to mark out the index-numbers of the \\
-NCEPDC(IPHAS) cells in which a pressure drop is imposed. \\
-The number of these cells is therefore given by ICEPDC(II)=IA(IICEPD(IPHAS)+II-1), with 1$\leqslant$II$\leqslant$NCEPDC(IPHAS). See the user subroutine
+\variab{iicepd}{iicepd(nphsmx)}{ia}{For each phase \texttt{iphas}, pointer in
+\texttt{ia} to \\
+\texttt{icepdc(ncepdc(iphas))}, array allowing to mark out the index-numbers of
+the \\
+\texttt{ncepdc(iphas)} cells in which a pressure drop is imposed. \\
+The number of these cells is therefore given by
+\texttt{icepdc(ii)=ia(iicepd(iphas)+ii-1)}, with
+1$\leqslant$\texttt{ii}$\leqslant$\texttt{ncepdc(iphas)}. See the user subroutine
 \texttt{uskpdc}}
 
-\variab{ICEPDC}{ICEPDC(NCEPDC(IPHAS))}{IA}{Number of the NCEPDC(IPHAS)
-cells in which a pressure drop is imposed. See IICEPD and the user
+\variab{icepdc}{icepdc(ncepdc(iphas))}{ia}{Number of the \texttt{ncepdc(iphas)}
+cells in which a pressure drop is imposed. See \texttt{iicepd} and the user
 subroutine \texttt{uskpdc}}
 
-\variab{ICKUPD}{ICKUPD(NPHSMX)}{IA}{For each phase IPHAS, pointer in RA to \\
-CKUPDC(NCEPDC(IPHAS),6), array allowing to mark out the\\
+\variab{ickupd}{ickupd(nphsmx)}{ia}{For each phase \texttt{iphas}, pointer in
+\texttt{ra} to \\
+\texttt{ckupdc(ncepdc(iphas),6)}, array allowing to mark out the\\
 coefficients of the pressure drop tensor of the
-NCEPDC(IPHAS) cells in which a pressure drop is imposed. See the user
+\texttt{ncepdc(iphas)} cells in which a pressure drop is imposed. See the user
 subroutine \texttt{uskpdc}}
 
-\variab{CKUPDC}{CKUPDC(NCEPDC(IPHAS),6)}{RA}{Value of the
+\variab{ckupdc}{ckupdc(ncepdc(iphas),6)}{ra}{Value of the
 coefficients of the pressure drop tensor of the
-NCEPDC(IPHAS) cells in which a pressure drop is imposed. See ICKPDC and
-the user subroutine \texttt{uskpdc}}
+\texttt{ncepdc(iphas)} cells in which a pressure drop is imposed.
+See \texttt{ickpdc} and the user subroutine \texttt{uskpdc}}
 
-\variab{NCEPDC}{NCEPDC(NPHSMX)}{IA}{For each phase, number of cells in
+\variab{ncepdc}{ncepdc(nphsmx)}{ia}{For each phase, number of cells in
 which a pressure drop is imposed. See the user subroutine \texttt{uskpdc}}
 
 
 \minititre{Mass sources}
 
-\variab{IICESM}{IICESM(NPHSMX)}{IA}{For each phase IPHAS, pointer in IA
-to \\ ICETSM(NCETSM(IPHAS), array allowing to mark out the numbers of the \\
-NCETSM(IPHAS) cells in which a source of mass is imposed. The number of
-these cells is therefore given by ICETSM(II)=IA(IICESM(IPHAS)+II-1), with
-1$\leqslant$II$\leqslant$NCETSM(IPHAS). See the user subroutine
+\variab{iicesm}{iicesm(nphsmx)}{ia}{For each phase \texttt{iphas}, pointer in
+\texttt{ia} to \\
+\texttt{icetsm(ncetsm(iphas)}, array allowing to mark out the numbers of the \\
+\texttt{ncetsm(iphas)} cells in which a source of mass is imposed. The number of
+these cells is therefore given by \texttt{icetsm(ii)=ia(iicesm(iphas)+ii-1)}, with
+1$\leqslant$\texttt{ii}$\leqslant$\texttt{ncetsm(iphas)}. See the user subroutine
 \texttt{ustsma}}
 
-\variab{IITPSM}{IITPSM(NPHSMX)}{IA}{For each phase IPHAS, pointer in IA
-to ITYPSM (type of mass source for each variable). See ITYPSM and the
-user subroutine \texttt{ustsma}}
+\variab{iitpsm}{iitpsm(nphsmx)}{ia}{For each phase \texttt{iphas}, pointer in
+\texttt{ia} to \texttt{itypsm} (type of mass source for each variable).
+See \texttt{itypsm} and the user subroutine \texttt{ustsma}}
 
-\variab{ICETSM}{ICETSM(NCETSM(IPHAS))}{IA}{Number of the NCETSM(IPHAS)
-cells in which a mass source term is imposed. See IICESM and the user
+\variab{icetsm}{icetsm(ncetsm(iphas))}{ia}{Number of the \texttt{ncetsm(iphas)}
+cells in which a mass source term is imposed. See \texttt{iicesm} and the user
 subroutine \texttt{ustsma}}
 
-\variab{ISMACE}{ISMACE(NPHSMX)}{IA}{For each phase IPHAS, pointer in RA
-to SMACEL (mass source term and if necessary injection value for every
-variable apart from pressure). See SMACEL and the user subroutine
+\variab{ismace}{ismace(nphsmx)}{ia}{For each phase \texttt{iphas}, pointer in
+\texttt{ra} to \texttt{smacel} (mass source term and if necessary injection value
+for every variable apart from pressure). See \texttt{smacel} and the user subroutine
 \texttt{ustsma}}
 
-\variab{ITYPSM}{ITYPSM(NCETSM(IPHAS),NVAR)}{IA}{Type of mass source term
+\variab{itypsm}{itypsm(ncetsm(iphas),nvar)}{ia}{Type of mass source term
 for each variable (0 for an injection at ambient value, 1 for an
 injection at imposed value). See the user subroutine \texttt{ustsma}}
 
-\variab{NCETSM}{NCETSM(NPHSMX)}{IA}{For each phase, number of cells with
+\variab{ncetsm}{ncetsm(nphsmx)}{ia}{For each phase, number of cells with
 mass sources. See the user subroutine \texttt{ustsma}}
 
-\variab{SMACEL}{SMACEL(NCETSM(IPHAS),NVAR)}{RA}{Value of the mass source
+\variab{smacel}{smacel(ncetsm(iphas),nvar)}{ra}{Value of the mass source
 term for pressure. For the other variables, eventual imposed injection
 value. See the user subroutine \texttt{ustsma}}
 
 \minititre{Wall 1D thermal module}
 
-\variab{NFPT1D}{NFPT1D}{I}{Number of boundary faces which are coupled
+\variab{nfpt1d}{nfpt1d}{i}{Number of boundary faces which are coupled
 with a wall 1D thermal module. See the user subroutine \texttt{uspt1d}}
 
-\variab{IIFPT1}{IIFPT1}{I} {In IA, pointer to IFPT1D(NFPT1D), array allowing to
-mark out the numbers of the NFPT1D boundary faces which are coupled with
-a wall 1D thermal module. The number of these boundary faces is
-therefore given by IFPT1D(II)=IA(IIFPT1+II-1), with
-1$\leqslant$II$\leqslant$NFPT1D. See the user subroutine \texttt{uspt1d}}
+\variab{iifpt1}{iifpt1}{i} {In \texttt{ia}, pointer to \texttt{ifpt1d(nfpt1d)},
+array allowing to mark out the numbers of the \texttt{nfpt1d} boundary faces
+which are coupled with a wall 1D thermal module. The number of these boundary
+faces is therefore given by \texttt{ifpt1d(ii)=ia(iifpt1+ii-1)}, with
+1$\leqslant$\texttt{ii}$\leqslant$\texttt{nfpt1d}.
+See the user subroutine \texttt{uspt1d}}
 
-\variab{INPPT1}{INPPT1}{I}{In IA, pointer to NPPT1D(NFPT1D), array
-giving the number of discretisation cells in the 1D wall for the NFPT1D
-boundary faces which are coupled with a wall 1D thermal module. The
+\variab{inppt1}{inppt1}{i}{In \texttt{ia}, pointer to \texttt{nppt1d(nfpt1d)},
+array giving the number of discretisation cells in the 1D wall for the
+\texttt{nfpt1d} boundary faces which are coupled with a wall 1D thermal module. The
 number of cells for these boundary faces is therefore given by
-NPPT1D(II)=IA(INPPT1+II-1), with  1$\leqslant$II$\leqslant$NFPT1D. See
+\texttt{nppt1d(ii)=ia(inppt1+ii-1)}, with
+1$\leqslant$\texttt{ii}$\leqslant$\texttt{nfpt1d}. See
 the user subroutine \texttt{uspt1d}}
 
-\variab{IEPPT1}{IEPPT1}{I}{In IA, pointer to EPPT1D(NFPT1D), array
-giving the thickness of the 1D wall for the NFPT1D boundary faces which
-are coupled with a wall 1D thermal module. The wall thickness for these
-boundary faces is therefore given by EPPT1D(II)=IA(IEPPT1+II-1), with
-1$\leqslant$II$\leqslant$NFPT1D. See the user subroutine \texttt{uspt1d}}
+\variab{ieppt1}{ieppt1}{i}{In \texttt{ia}, pointer to \texttt{eppt1d(nfpt1d)},
+array giving the thickness of the 1D wall for the \texttt{nfpt1d} boundary faces
+which are coupled with a wall 1D thermal module. The wall thickness for these
+boundary faces is therefore given by \texttt{eppt1d(ii)=ia(ieppt1+ii-1)}, with
+1$\leqslant$\texttt{ii}$\leqslant$\texttt{nfpt1d}. See the user subroutine
+\texttt{uspt1d}}
 
 \minititre{Others}
 
-\variab{DT}{DT(NCELET)}{RA}{Value of the time step}
+\variab{dt}{dt(ncelet)}{ra}{Value of the time step}
 
-\variab{IFMCEL}{IFMCEL(NCELET)}{IA}{Family number of the elements. See note 1}
+\variab{ifmcel}{ifmcel(ncelet)}{ia}{Family number of the elements. See note 1}
 
-\variab{IS2KW}{IS2KW(NPHSMX)}{IA}{For each phase IPHAS, pointer in RA to
-the section storing the square of the norm of the deformation
-rate tensor. In the cell IEL, for the phase IPHAS, $S^2=2S_{ij}S_{ij}$
-is therefore given by RA(IS2KW(IPHAS)+IEL-1). This array is defined only
-when the phase IPHASE is treated with the SST $k-\omega$ turbulence model}
+\variab{is2kw}{is2kw(nphsmx)}{ia}{For each phase \texttt{iphas}, pointer in
+\texttt{ra} to the section storing the square of the norm of the deformation
+rate tensor. In the cell \texttt{iel}, for the phase \texttt{iphas},
+$S^2=2S_{ij}S_{ij}$
+is therefore given by \texttt{ra(is2kw(iphas)+iel-1)}. This array is defined only
+when the phase \texttt{iphas} is treated with the SST $k-\omega$ turbulence model}
 
-\variab{IDVUKW}{IDVUKW(NPHSMX)}{IA}{For each phase IPHAS, pointer in RA
-to the section storing the divergence of the velocity. In the
-cell IEL, for the phase IPHAS, $div(\vect{u})$ is therefore given by
-RA(IDVUKW(IPHAS)+IEL-1). This array is defined only when the phase
-IPHASE is treated with the SST $k-\omega$ turbulence model (because in
-this case it may be calculated at the same time as $S^2$)}
+\variab{idvukw}{idvukw(nphsmx)}{ia}{For each phase \texttt{iphas}, pointer in
+\texttt{ra} to the section storing the divergence of the velocity. In the
+cell \texttt{iel}, for the phase \texttt{iphas}, $div(\vect{u})$ is therefore
+given by \texttt{ra(idvukw(iphas)+iel-1)}. This array is defined only when the
+phase \texttt{iphas} is treated with the SST $k-\omega$ turbulence model
+(because in this case it may be calculated at the same time as $S^2$)}
 
-\variab{NGRMMX}{NGRMMX}{I}{upper limit of the number of grid levels
-in the case of a multigrid solving (see NGRMAX)}
+\variab{ngrmmx}{ngrmmx}{i}{upper limit of the number of grid levels
+in the case of a multigrid solving (see \texttt{ngrmax})}
 
-\variab{IA}{IA(LONGIA)}{IA}{Integer work array}
+\variab{ia}{ia(longia)}{ia}{Integer work array}
 
-\variab{RA}{RA(LONGRA)}{RA}{Real work array}
+\variab{ra}{ra(longra)}{ra}{Real work array}
 
 
 \minititre{Note: boundary conditions}
@@ -3069,22 +3597,22 @@ value expressed as a function of $\phi_{I'}$, value of $\phi$ in I',
 projection of the center of the adjacent cell on the straight line
 perpendicular to the boundary face and crossing its center:
 $\phi_f=A_{\phi,f}+B_{\phi,f}\phi_{I'}$.  \\
-For a face IFAC, the pair of coefficients $A_{\phi,f},B_{\phi,f}$ is
-stored in COEFA(IFAC,ICLVAR) and
-COEFB(IFAC,ICLVAR), where the integer ICLVAR=ICLRTP(IVAR,IJCL)
-determines the rank in COEFA and COEFB of the set of boundary conditions
-of the variable IVAR. \\
-The second index of the array ICLRTP allows to have several sets of
+For a face \texttt{ifac}, the pair of coefficients $A_{\phi,f},B_{\phi,f}$ is
+stored in \texttt{coefa(ifac,iclvar)} and
+\texttt{coefb(ifac,iclvar)}, where the integer \texttt{iclvar=iclrtp(ivar,ijcl)}
+determines the rank in \texttt{coefa} and \texttt{coefb} of the set of boundary
+conditions of the variable \texttt{ivar}. \\
+The second index of the array \texttt{iclrtp} allows to have several sets of
 boundary conditions for each variable. The ``standard'' boundary
-conditions are determined by IJCL=ICOEF, where ICOEF is a parameter which
-is fixed automatically by the code, and can be accessed to in the
+conditions are determined by \texttt{ijcl=icoef}, where \texttt{icoef} is a
+parameter which is fixed automatically by the code, and can be accessed to in the
 ``common'' file \texttt{numvar.h}. More specificic or advanced boundary
-conditions can be accessed to with IJCL=ICOEFF. \\
-In practice, for a variable IVAR whose value $\phi_{I'}$ in a
+conditions can be accessed to with \texttt{ijcl=icoeff}. \\
+In practice, for a variable \texttt{ivar} whose value $\phi_{I'}$ in a
 boundary cell is known, the value at the corresponding boundary face
-IFAC is: \\
-\mbox{$\phi_f$=COEFA(IFAC,ICLVAR)+COEFB(IFAC,ICLVAR) $\phi_{I'}$}
-with ICLVAR=ICLRTP(IVAR,ICOEF)
+\texttt{ifac} is: \\
+\mbox{$\phi_f$=\texttt{coefa(ifac,iclvar)+coefb(ifac,iclvar)} $\phi_{I'}$}
+with \texttt{iclvar=iclrtp(ivar,icoef)}
 
 
 %==================================
@@ -3098,33 +3626,33 @@ the determination of the physical properties (user subroutine
 \texttt{usphyv}) may be stored in these arrays and sent to the
 post-processor at the end of the time step (user subroutine \texttt{usvpst}).
 
-\variab{NITUSE}{NITUSE}{I}{Size of the user integer array}
+\variab{nituse}{nituse}{i}{Size of the user integer array}
 
-\variab{NRTUSE}{NRTUSE}{I}{Size of the user real array}
+\variab{nrtuse}{nrtuse}{i}{Size of the user real array}
 
-\variab{ITUSER}{ITUSER(NITUSE)}{IA}{User integer array}
+\variab{ituser}{ituser(nituse)}{ia}{User integer array}
 
-\variab{RTUSER}{RTUSER(NRTUSE)}{RA}{User real array}
+\variab{rtuser}{rtuser(nrtuse)}{ra}{User real array}
 
 %==================================
 \subsection{Developer arrays}
 %==================================
 The code allows to define two developer arrays (similar to the user
-arrays ITUSER and RTUSER), one integer array a one real array. The
-default size of these arrays is zero, and may be changed in
+arrays \texttt{ituser} and \texttt{rtuser}), one integer array a one real array.
+The default size of these arrays is zero, and may be changed in
 \texttt{ustbus}. The two arrays are then passed as arguments in the rest
 of the code. They are designed to be used during the transitory
 development phases, in order to ease the tests (transfer of pieces of
 informations without consequence on the arguments of the subroutines).
 
-\variab{NIDEVE}{NIDEVE}{I}{Size of the developer integer array}
+\variab{nideve}{nideve}{i}{Size of the developer integer array}
 
-\variab{NRDEVE}{NRDEVE}{I}{Size of the developer real array}
+\variab{nrdeve}{nrdeve}{i}{Size of the developer real array}
 
-\variab{IDEVEL}{IDEVEL(NIDEVE)}{IA}{Complementary integer array, used
+\variab{idevel}{idevel(nideve)}{ia}{Complementary integer array, used
 during development and test phases}
 
-\variab{RDEVEL}{RDEVEL(NRDEVE)}{RA}{Complementary real array, used
+\variab{rdevel}{rdevel(nrdeve)}{ra}{Complementary real array, used
 during development and test phases}
 
 %==================================
@@ -3252,14 +3780,14 @@ in the standard cases:
 
 The user can notice in a subroutine
 \begin{list}{-}{}
-\item that the presence of periodicity is tested with the variable IPERIO
-      (=1 if periodicity is activated);
+\item that the presence of periodicity is tested with the variable
+      \texttt{iperio} (=1 if periodicity is activated);
 \item that the presence of rotation periodicities is tested with the variable
-      IPEROT (number of rotation periodicities);
+      \texttt{iperot} (number of rotation periodicities);
 \item that running of a calculation in parallel is tested for with the
-      variable IRANGP (IRANGP is worth -1 in the case of a non-parallel
-      calculation and N-1 in the case of a parallel calculation, N being
-      the number of the current processor)
+      variable \texttt{irangp} (\texttt{irangp} is worth -1 in the case of a
+      non-parallel calculation and $p-1$ in the case of a parallel calculation,
+      $p$ being the number of the current processor)
 \end{list}
 Attention must be paid to the coding of the user subroutines. If
 conventionnal subroutines like \texttt{usini1} or \texttt{usclim}
@@ -3286,7 +3814,7 @@ It is in particular the case when the following operations are made on a
 \begin{list}{-}{}
 \item calculation of the gradient of $A$ (use of \texttt{grdcel});
 \item calculation of an internal face value from the values of $A$  in
-      the neighboring cells (use of IFACEL).
+      the neighboring cells (use of \texttt{ifacel}).
 \end{list}
 The variable $A$ needs to be exchanged before these operations can be
       made: to allow it, the subroutines \texttt{parcom} and
@@ -3322,15 +3850,15 @@ Care should be taken with the fact that the boundaries between
       processor only in parallel mode}.\\
 In parallel mode, the user must pay attention during the writing of
       pieces of information. Writing to the ``listing'' can be done
-      simply by using the NFECRA logical unit (each processor will write
+      simply by using the \texttt{nfecra} logical unit (each processor will write
       to its own ``listing'' file): use
-      \texttt{WRITE(NFECRA,...}. \\
+      \texttt{write(nfecra,...}. \\
 If the user wants an operation to be done by only one processor (for
       example, open or write a file), the associated instructions must
-      be included inside a test on the value of IRANGP (generally it is
+      be included inside a test on the value of \texttt{irangp} (generally it is
       the processor 0 which realises these actions, and we want the
-      subroutine to work in non-parallel mode, too: \texttt{IF
-      (IRANGP.LE.0) THEN ...}).
+      subroutine to work in non-parallel mode, too: \texttt{if
+      (irangp.le.0) then ...}).
 \end{list}
 
 
@@ -3341,7 +3869,7 @@ Some particular points should be reminded:
 \item rotation periodicity is incompatible with
   \begin{list}{-}{}
   \item semi-transparent radiation,
-  \item reinforced velocity-pressure coupling (IPUCOU=1).
+  \item reinforced velocity-pressure coupling (\texttt{ipucou=1)}.
   \end{list}
 \item although it has not been the case so far, potential problems might be met
       in the case of rotation periodicity with the LRR $R_{ij}-\varepsilon$
@@ -3351,11 +3879,11 @@ Some particular points should be reminded:
 
 %==================================
 \subsection{Geometry and particule  arrays
-      related to lagrangian modeling}
+      related to Lagrangian modeling}
 %==================================
 
 In this section is given a non-exhaustive list of the main variables
-which may be seen by the user in the lagrangian module. Most of them
+which may be seen by the user in the Lagrangian module. Most of them
 should not be modified by the user. They are calculated automatically
 from the data. However it may be useful to know their meaning.
 
@@ -3364,212 +3892,215 @@ These variables are listed in the alphabetical index in the end of this
 document.
 
 \noindent
-The type of each variable is given: integer [I], real number [R],
-integer array [IA], real array [RA].
+The type of each variable is given: integer [i], real number [r],
+integer array [ia], real array [ra].
 
-\minititre{Size of the lagrangian arrays}
+\minititre{Size of the Lagrangian arrays}
 
-\variab{LNDNOD}{LNDNOD}{I}{Size of the array ICOCEL concerning the cells-faces
-connectivity (the faces-nodes connectivity needs to be given to allow
-the construction of this connectivity. See note 3 of section
-\ref{prg_dimensions})}
+\variab{lndnod}{lndnod}{i}{Size of the array \texttt{icocel} concerning the
+cells $\rightarrow$ faces connectivity (the faces $\rightarrow$ nodes connectivity
+needs to be given to allow the construction of this connectivity. See note 3
+of section \ref{prg_dimensions})}
 
-\variab{NBPMAX}{NBPMAX}{I}{Maximum number of particles
+\variab{nbpmax}{nbpmax}{i}{Maximum number of particles
 simultaneously acceptable in the calculation domain}
 
-\variab{NVP}{NVP}{I}{Number of variables describing the particles for
+\variab{nvp}{nvp}{i}{Number of variables describing the particles for
 which a stochastic differential equation (SDE) is solved}
 
-\variab{NVLS}{NVLS}{I}{Number of variables describing the supplementary
+\variab{nvls}{nvls}{i}{Number of variables describing the supplementary
 user particles for which a SDE is solved}
 
-\variab{NVEP}{NVEP}{I}{Number of real state variables describing the particles}
+\variab{nvep}{nvep}{i}{Number of real state variables describing the particles}
 
-\variab{NIVEP}{NIVEP}{I}{Number of integer state variables describing the particles}
+\variab{nivep}{nivep}{i}{Number of integer state variables describing the particles}
 
-\variab{NTERSL}{NTERSL}{I}{Number of source terms representing the backward
+\variab{ntersl}{ntersl}{i}{Number of source terms representing the backward
 coupling of the dispersed phase on the continuous phase}
 
-\variab{NVLSTA}{NVLSTA}{I}{Number of volumetric statistical variables }
+\variab{nvlsta}{nvlsta}{i}{Number of volumetric statistical variables }
 
-\variab{NVLSTS}{NVLSTS}{I}{Number of supplementary user volumetric
+\variab{nvlsts}{nvlsts}{i}{Number of supplementary user volumetric
 statistical variables}
 
-\variab{NVISBR}{NVISBR}{I}{Number of boundary statistical variables}
+\variab{nvisbr}{nvisbr}{i}{Number of boundary statistical variables}
 
-\variab{NUSBOR}{NUSBOR}{I}{Number of supplementary user boundary statistical
+\variab{nusbor}{nusbor}{i}{Number of supplementary user boundary statistical
 variables}
 
-\variab{NVGAUS}{NVGAUS}{I}{Number of gaussian random variables}
+\variab{nvgaus}{nvgaus}{i}{Number of gaussian random variables}
 
 \minititre{Note: continuous eulerian phase number}
-The current version of lagrangian module is planned to work with only one
+The current version of Lagrangian module is planned to work with only one
 eulerian phase. This phase carries inclusions, and source terms of
 backward coupling are applied to it, if necessary. The number of this
-phase is stored in the variable ILPHAS\index{ILPHAS}. The standard value
-is ILPHAS = 1.
+phase is stored in the variable \texttt{ilphas}\index{\texttt{ilphas}}.
+The standard value is \texttt{ilphas = 1}.
 
 \minititre{Lagrangian arrays}
 
-\variab{ICOCEL}{ICOCEL(LNDNOD)}{IA}{Cells - internal/boundary faces
-connectivity. The numbers of the boundary faces are marked out in ICOCEL
+\variab{icocel}{icocel(lndnod)}{ia}{Cells $rightarrow$ internal/boundary faces
+connectivity. The numbers of the boundary faces are marked out in \texttt{icocel}
 with a negative sign}
 
-\variab{ITYCEL}{ITYCEL(NCELET+1)}{IA}{Array containing the position of
-the first face surrounding every cell in the array ICOCEL (see subroutine
+\variab{itycel}{itycel(ncelet+1)}{ia}{Array containing the position of
+the first face surrounding every cell in the array \texttt{icocel} (see subroutine
 \texttt{lagdeb} for more details)}
 
-\variablist{ETTP}{ETTP(NBPMAX,NVP)}{RA}
+\variablist{ettp}{ettp(nbpmax,nvp)}{ra}
 {Variables forming the state vector related to the particles: either at
-the current stage if the lagrangian scheme is a second-order, or at the
+the current stage if the Lagrangian scheme is a second-order, or at the
 current time step if the scheme is a first-order. These variables are
-marked out by ``pointers'' whose value can vary between 1 and NVP:
+marked out by ``pointers'' whose value can vary between 1 and \texttt{nvp}:
 \begin{list}{$\rightarrow$}{}
-\item JMP: particle mass
-\item JDP: particle diameter
-\item JXP, JYP, JZP: particle coordinates
-\item JUP, JVP, JWP: particle velocity components
-\item JUF, JVF, JWF: locally undisturbed fluid flow velocity components
-\item JTP, JTF: particle and locally undisturbed fluid flow temperature
-      (\degresC)
-\item JCP: particle specific heat
-\item JHP: coal particle temperature (\degresC)
-\item JMCH: mass of reactive coal of the coal particle
-\item JMCK: mass of coke of the coal particle
-\item JVLS(II): II\textit{th} supplementary user variable
+\item \texttt{jmp}: particle mass
+\item \texttt{jdp}: particle diameter
+\item \texttt{jxp}, \texttt{jyp}, \texttt{jzp}: particle coordinates
+\item \texttt{jup}, \texttt{jvp}, \texttt{jwp}: particle velocity components
+\item \texttt{juf}, \texttt{jvf}, \texttt{jwf}: locally undisturbed fluid flow
+      velocity components
+\item \texttt{jtp}, \texttt{jtf}: particle and locally undisturbed fluid flow
+      temperature (\degresC)
+\item \texttt{jcp}: particle specific heat
+\item \texttt{jhp}: coal particle temperature (\degresC)
+\item \texttt{jmch}: mass of reactive coal of the coal particle
+\item \texttt{jmck}: mass of coke of the coal particle
+\item \texttt{jvls(ii): ii\textit{th}} supplementary user variable
 \end{list}
 }
 
-\variab{ETTPA}{ETTPA(NBPMAX,NVP)}{RA}{Variables forming the state vector
-related to the particles: either at the previous stage if the lagrangian
-scheme is a second-order, or at the previous time step if the lagrangian
+\variab{ettpa}{ettpa(nbpmax,nvp)}{ra}{Variables forming the state vector
+related to the particles: either at the previous stage if the Lagrangian
+scheme is a second-order, or at the previous time step if the Lagrangian
 scheme is a first-order}
 
-\variablist{ITEPA}{ITEPA(NBPMAX,NIVEP)}{IA}{Integer state variables
+\variablist{itepa}{itepa(nbpmax,nivep)}{ia}{Integer state variables
 related to the particles. They are marked out by the following ``pointers'':
 \begin{list}{$\rightarrow$}{}
-\item JISOR: Number of the current cell containing the particle; this
+\item \texttt{jisor}: Number of the current cell containing the particle; this
       number is reactualised during the trajectography step
-\item JINCH: Number of the coal particle
+\item \texttt{jinch}: Number of the coal particle
 \end{list}
 }
 
-\variablist{TEPA}{TEPA(NBPMAX,NVEP)}{RA}{Real state variables
+\variablist{tepa}{tepa(nbpmax,nvep)}{ra}{Real state variables
 related to the particles. They are marked out by the following ``pointers'':
 \begin{list}{$\rightarrow$}{}
-\item JRTSP: particle residence time
-\item JRPOI: particle statistic weight
-\item JRDCK: coal particle shrinking core diameter
-\item JRD0P: coal particle initial diameter
-\item JRR0P: coal particle initial density
+\item \texttt{jrtsp}: particle residence time
+\item \texttt{jrpoi}: particle statistic weight
+\item \texttt{jrdck}: coal particle shrinking core diameter
+\item \texttt{jrd0p}: coal particle initial diameter
+\item \texttt{jrr0p}: coal particle initial density
 \end{list}
 }
 
-\variab{INDEP}{INDEP(NBPMAX)}{IA}{Storage of the cell number of every
-particle at the beginning of a lagrangian iteration ; this data is not
+\variab{indep}{indep(nbpmax)}{ia}{Storage of the cell number of every
+particle at the beginning of a Lagrangian iteration; this data is not
 modified during the iteration}
 
-\variab{VITPAR}{VITPAR(NBPMAX,3)}{RA}{At the beginning of the
-trajectography, VITPAR contains the particle velocity vector components;
+\variab{vitpar}{vitpar(nbpmax,3)}{ra}{At the beginning of the
+trajectography, \texttt{vitpar} contains the particle velocity vector components;
 the modifications of the particle velocity following every
-particle/boundary interaction are saved in this array ; after the
-trajectography and backward coupling steps, ETTP is updated with VITPAR}
+particle/boundary interaction are saved in this array; after the
+trajectography and backward coupling steps, \texttt{ettp} is updated with
+\texttt{vitpar}}
 
-\variab{VITFLU}{VITFLU(NBPMAX,3)}{RA}{At the beginning of the
-trajectography, VITFLU contains the locally undisturbed fluid flow
+\variab{vitflu}{vitflu(nbpmax,3)}{ra}{At the beginning of the
+trajectography, \texttt{vitflu} contains the locally undisturbed fluid flow
 velocity vector components;
 the modifications of the locally undisturbed fluid flow velocity
 following every
-particle/boundary interaction are saved in this array ; after the
-trajectography and backward coupling steps, ETTP is updated with VITFLU}
+particle/boundary interaction are saved in this array; after the
+trajectography and backward coupling steps, \texttt{ettp} is updated with
+\texttt{vitflu}}
 
-\variab{GRADPR}{GRADPR(NCELET,3)}{RA}{Pressure gradient of the
+\variab{gradpr}{gradpr(ncelet,3)}{ra}{Pressure gradient of the
 continuous phase}
 
-\variab{GRADVF}{GRADVF(NCELET,9)}{RA}{Gradient of the continuous phase
-fluid velocity (useful if the complete model is activated: see MODCPL)}
+\variab{gradvf}{gradvf(ncelet,9)}{ra}{Gradient of the continuous phase
+fluid velocity (useful if the complete model is activated: see \texttt{modcpl})}
 
-\variab{CPGD1}{CPGD1(NBPMAX)}{RA}{First devolatilisation term (light
+\variab{cpgd1}{cpgd1(nbpmax)}{ra}{First devolatilisation term (light
 volatile matters) of the coal particles (useful in the case of backward
 coupling on the continuous phase)}
 
-\variab{CPGD2}{CPGD2(NBPMAX)}{RA}{Second devolatilisation term (heavy
+\variab{cpgd2}{cpgd2(nbpmax)}{ra}{Second devolatilisation term (heavy
 volatile matters) of the coal particles (useful in the case of backward
 coupling on the continuous phase)}
 
-\variab{CPGHT}{CPGHT(NBPMAX)}{RA}{Heterogeneous combustion term of the
+\variab{cpght}{cpght(nbpmax)}{ra}{Heterogeneous combustion term of the
 coal particles (useful in the case of backward coupling on the
 continuous phase)}
 
-\variablist{STATIS}{STATIS(NCELET,NVLSTA)}{RA}{Volumetric statistics
+\variablist{statis}{statis(ncelet,nvlsta)}{ra}{Volumetric statistics
 related to the dispersed phase; these statistics are the kind of results
-expected with the lagrangian module. It is from these statistics that we
+expected with the Lagrangian module. It is from these statistics that we
 obtain information concerning the particle cloud (the particle
 trajectories should only be observed on ``pedagogical'' account); they
 are marked out by the following ``pointers'':
 \begin{list}{$\rightarrow$}{}
-\item ILVX,ILVY,ILVZ: mean dispersed phase velocity
-\item ILVX2,ILVY2,ILVZ2: dispersed phase velocity standard deviation
-\item ILFV: dispersed phase volumetric concentration
-\item ILPD: sum of the statistical weights
-\item ILTP: dispersed phase temperature (\degresC)
-\item ILDP: dispersed phase mean diameter
-\item ILMP: dispersed phase mean mass
-\item ILHP: temperature of the coal particle cloud (\degresC)
-\item ILMCH: mass of reactive coal of the coal particle cloud
-\item ILMCK: mass of coke of the coal particle cloud
-\item ILMDK: shrinking core diameter of the coal particle cloud
-\item ILVU(II): II\textit{th} supplementary user volumetric statistics
+\item \texttt{ilvx,ilvy,ilvz}: mean dispersed phase velocity
+\item \texttt{ilvx2,ilvy2,ilvz2}: dispersed phase velocity standard deviation
+\item \texttt{ilfv}: dispersed phase volumetric concentration
+\item \texttt{ilpd}: sum of the statistical weights
+\item \texttt{iltp}: dispersed phase temperature (\degresC)
+\item \texttt{ildp}: dispersed phase mean diameter
+\item \texttt{ilmp}: dispersed phase mean mass
+\item \texttt{ilhp}: temperature of the coal particle cloud (\degresC)
+\item \texttt{ilmch}: mass of reactive coal of the coal particle cloud
+\item \texttt{ilmck}: mass of coke of the coal particle cloud
+\item \texttt{ilmdk}: shrinking core diameter of the coal particle cloud
+\item \texttt{ilvu(ii): ii\textit{th}} supplementary user volumetric statistics
 \end{list}
 }
 
-\variablist{PARBOR}{PARBOR(NFABOR,NVISBR)}{RA}{Boundary statistics
-related the dispersed phase ; after every particle/boundary
-interaction it is possible to save some data and to calculate averages ;
+\variablist{parbor}{parbor(nfabor,nvisbr)}{ra}{Boundary statistics
+related the dispersed phase; after every particle/boundary
+interaction it is possible to save some data and to calculate averages;
 the boundary statistics are marked out by the following ``pointers'':
 \begin{list}{$\rightarrow$}{}
-\item INBR: number of particle/boundary interactions
-\item IFLM: particle mass flow at the boundary faces
-\item IANG: mean interaction angle with the boundary faces (see example
+\item \texttt{inbr}: number of particle/boundary interactions
+\item \texttt{iflm}: particle mass flow at the boundary faces
+\item \texttt{iang}: mean interaction angle with the boundary faces (see example
       in \texttt{uslabo})
-\item IVIT: mean interaction velocity with the boundary faces
-\item IENC: mass of coal deposit at the walls
-\item IUSB(II): II\textit{th} supplementary user boundary statistics
+\item \texttt{ivit}: mean interaction velocity with the boundary faces
+\item \texttt{ienc}: mass of coal deposit at the walls
+\item \texttt{iusb(ii): ii\textit{th}} supplementary user boundary statistics
 \end{list}}
 
-\variablist{TSLAGR}{TSLAGR(NCELET,NTERSL)}{RA}{Source terms
+\variablist{tslagr}{tslagr(ncelet,ntersl)}{ra}{Source terms
 corresponding to the backward coupling of the dispersed phase on the
 continuous phase. These source terms are marked out by the following
 ``pointers'':
 \begin{list}{$\rightarrow$}{}
-\item ITSVX, ITSVY, ITSVZ: explicit source terms for the continuous
-      phase velocity
-\item ITSLI: implicit source term for the continuous phase velocity and for the
-      turbulent energy if the $k-\varepsilon$ model is used
-\item ITSKE: explicit source term for the turbulent dissipation and the
+\item \texttt{itsvx}, \texttt{itsvy}, \texttt{itsvz}:
+      explicit source terms for the continuous phase velocity
+\item \texttt{itsli}: implicit source term for the continuous phase velocity and
+      for the turbulent energy if the $k-\varepsilon$ model is used
+\item \texttt{itske}: explicit source term for the turbulent dissipation and the
       turbulent energy if the $k-\varepsilon$ turbulence model is used for the
       continuous phase
-\item ITSR11,... ITSR33: source terms for the Reynolds stress and the turbulent
-      dissipation if the $R_{ij}-\varepsilon$ turbulence model is used
-      for the continuous phase
-\item ITSMAS: mass source term
-\item ITSTE, ITSTI: explicit and implicit thermal source terms for the
-      thermal scalar of the continuous phase
-\item ITSMV1(ICHA), ITSMV2(ICHA): source terms respectively for the
-      light and heavy volatile matters
-\item ITSCO: source term for the carbon released during
+\item \texttt{itsr11},... \texttt{itsr33}: source terms for the Reynolds stress
+      and the turbulent dissipation if the $R_{ij}-\varepsilon$ turbulence model
+      is used for the continuous phase
+\item \texttt{itsmas}: mass source term
+\item \texttt{itste}, \texttt{itsti}: explicit and implicit thermal source terms
+      for the thermal scalar of the continuous phase
+\item \texttt{itsmv1(icha)}, \texttt{itsmv2(icha)}: source terms respectively
+      for the light and heavy volatile matters
+\item \texttt{itsco}: source term for the carbon released during
       heterogeneous combustion
-\item ITSF: source term for the air variance (not used at the
+\item \texttt{itsf}: source term for the air variance (not used at the
       present time)
 \end{list}}
 
-\variab{CROULE}{CROULE(NCELET)}{TR}{Importance function for the
+\variab{croule}{croule(ncelet)}{ra}{Importance function for the
 technique of variance reduction (cloning/fusion of particles)}
 
-\variab{VAGAUS}{VAGAUS(NBPMAX,NVGAUS)}{RA}{Vectors of gaussian random
+\variab{vagaus}{vagaus(nbpmax,nvgaus)}{ra}{Vectors of gaussian random
 variables}
 
-\variab{AUXL}{AUXL(NBPMAX,3)}{RA}{Auxiliary work array}
+\variab{auxl}{auxl(nbpmax,3)}{ra}{Auxiliary work array}
 
 
 %==================================
@@ -3579,13 +4110,15 @@ variables}
 The directory \texttt{RESTART*} contains:
 \begin{list}{-}{}
 \item \texttt{suiava}: main restart file,
-\item \texttt{suiavx}: auxiliary restart file (see ILEAUX\index{ILEAUX}, IECAUX\index{IECAUX}),
+\item \texttt{suiavx}: auxiliary restart file (see \texttt{ileaux\index{ileaux}},
+                       \texttt{iecaux\index{iecaux}}),
 \item \texttt{rayava}: restart file for the radiation module,
-\item \texttt{lagava}: main restart file for the lagrangian module,
-\item \texttt{lasava}: auxiliary restart file for the lagrangian module (mainly
+\item \texttt{lagava}: main restart file for the Lagrangian module,
+\item \texttt{lasava}: auxiliary restart file for the Lagrangian module (mainly
                        for the statistics),
 \item \texttt{t1dava}: restart file for the 1D wall thermal module,
-\item \texttt{vorava}: restart file for the vortex method (see IVRTEX\index{IVRTEX}).
+\item \texttt{vorava}: restart file for the vortex method (see
+                       \texttt{ivrtex\index{ivrtex}}).
 \end{list}
 
 The main restart file contains the values in every cell of the mesh for
@@ -3624,7 +4157,8 @@ time step, and also at the previous time step if required by the time scheme),
 \item number of time-averages, and values at the cells of the associated
 cumulated values,
 \item for each cell, distance to the wall when it is required (and
-index-number of the nearest boundary face, depending on ICDPAR\index{ICDPAR}),
+index-number of the nearest boundary face, depending on \texttt{icdpar}%
+\index{\texttt{icdpar}}),
 \item values at the cells of the external forces in balance with a part
 of the pressure (hydrostatic, in general),
 \item for the D3P gas combustion model: massic enthalpies and temperatures at entry,
@@ -3636,10 +4170,13 @@ zones, entry indicators, temperatures and mixing rates at entry,
 density functions for enthalpy and mixing rate, types of boundary
 zones, entry indicators, temperatures and mixing rates at entry,
 \item for the pulverised coal combustion: coal density,  types of boundary
-zones, variables IENTAT, IENTCP, TIMPAT, X20 (in case of coupling
-with the lagrangian module, IENCP and X20 are not saved),
-\item for the electric module: the tuned potential difference DPOT\index{DPOT}
-and, for the electric arc module, the tuning coefficient COEJOU\index{COEJOU}
+zones, variables \texttt{ientat}, \texttt{ientcp}, \texttt{timpat}, \texttt{x20}
+(in case of coupling with the Lagrangian module, \texttt{iencp} and \texttt{x20}
+are not saved),
+\item for the electric module: the tuned potential difference \texttt{dpot}%
+\index{\texttt{dpot}}
+and, for the electric arc module, the tuning coefficient \texttt{coejou}%
+\index{\texttt{coejou}}
 (when the boundary conditions are tuned), the Joule source term for the enthalpy
 (with the Joule effect is activated) and the Laplace forces (with the electric
 arc module).
@@ -3655,7 +4192,7 @@ file only when they are extrapolated in time, or with the Joule effect for the
 specific heat).
 
 Apart from \texttt{vorava} which has a different structure and is
-always in ASCII format, all the restart files are binary
+always in text format, all the restart files are binary
 files. Nonetheless, they may be dumped by the \texttt{cs\_io\_dump}
 tool provided with the Preprocessor.
 
@@ -3712,7 +4249,7 @@ subroutine. In the case that a parameter is specified in the interface
  and in the user subroutine, it is the value in the user subroutine that
  is taken into acount. It is for that reason that all the examples of
  user subroutines are placed in the \texttt{REFERENCE} directory by the
- case preparer \texttt{cs create}.
+ case preparer \texttt{cs~create}.
 
 
 
@@ -3735,7 +4272,7 @@ define a subset of the mesh, for example:
 \end{list}
 
 This section explains how to define surface or volume sections,
-in the form of lists \texttt{LSTELT} of \texttt{NLELT} elements
+in the form of lists \texttt{lstelt} of \texttt{nlelt} elements
 (internal faces, boundary faces or cells).
 For each type of element, the user calls the appropriate Fortran
 subroutine: \texttt{getfbr}
@@ -3745,8 +4282,8 @@ the three following arguments:
 \begin{list}{-}{}
 \item the character string which contains the selection
       criterion (see some examples below), 
-\item the returned number of elements \texttt{NLELT}, 
-\item the returned list of elements \texttt{LSTELT}. 
+\item the returned number of elements \texttt{nlelt}, 
+\item the returned list of elements \texttt{lstelt}. 
 \end{list}
 
 Several examples of possible selections are given here:
@@ -3797,14 +4334,13 @@ for example), the user must first determine the family to which it
 belongs. \\
 For instance, let's consider a mesh whose boundary faces have all been
 given one color (for example using SIMAIL). The family of the boundary
-face IFAC is IFML=IFMFBR(IFAC). The first (and only) property of this
-family is the color ICOUL, obtained for the face IFAC with
-ICOUL=IPRFML(IFML,1). In order to know the property number corresponding
-to a group, the user may refer to the listing of the Preprocessor
-(not forgetting to use the negative of the number in this case), or use
-the utility function \texttt{NUMGRP(NOMGRP, LNGNOM)} (with a name
-\texttt{NOMGRP} of the type \texttt{CHARACTER*} and its lenght
-\texttt{LNGNOM} of the type \texttt{INTEGER}).
+face \texttt{ifac} is \texttt{ifml=ifmfbr(ifac)}. The first (and only)
+property of this family is the color \texttt{icoul}, obtained for the face
+\texttt{ifac} with \texttt{icoul=iprfml(ifml,1)}. In order to know the
+property number corresponding to a group, the utility function
+\texttt{numgrp(nomgrp, lngnom)} (with a name
+\texttt{nomgrp} of the type \texttt{character*} and its lenght
+\texttt{lngnom} of the type \texttt{integer}) may be used.
 
 
 
@@ -3827,50 +4363,56 @@ subroutine is compulsory and all the headings must be completed.
 For more details about the different parameters, please refer to the key
 word list (\S\ref{prg_motscles}).
 
-\texttt{usini1.F} is in fact a gouping of 6 sperate subroutines:  \texttt{usipph},
+\texttt{usini1.f90} is in fact a gouping of 6 sperate subroutines:  \texttt{usipph},
  \texttt{usinsc}, \texttt{usipsc}, \texttt{usipgl},
 \texttt{usipsu}and \texttt{usipes}. Each one controls the management of various
  specific parameters. The key words that dont' feature in the supplied example
-can be provided by the user in  \texttt{SRC/REFERENCE/base}; in this case, understanding
- of the comments is needed to add the key words in the appropriate subroutine (the most
- widely used is IPHAS, it will assure that the value has been well defined ).
-The modifiable parameters in each of the subroutines of \texttt{usini1.F} are:
+can be provided by the user in  \texttt{SRC/REFERENCE/base}; in this case,
+understanding of the comments is needed to add the key words in the appropriate
+subroutine (the most widely used is \texttt{iphas}, it will assure that the value
+has been well defined). The modifiable parameters in each of the subroutines of
+\texttt{usini1.f90} are:
 
 \begin{list}{$\bullet$}{}
-\item \texttt{usipph}: ITURB and ICP (don't modify these parameters anywhere else)
-\item \texttt{usinsc}: NSCAUS (don't modify these parameters anywhere else)
-\item \texttt{usipsc}: ISCAVR and IVISLS (don't modify these parameters anywhere else)
-\item \texttt{usipgl}: IDTVAR, IPUCOU, IPHYDR and the parameters related to the error
-estimators(don't modify these parameters anywhere else).
-\item \texttt{usipsu}: physical parameters of the calculation ( thermal scalar, physical
- properties,...), numeric parameters (time steps, number of iterations,..),definition of the time averages.
-\item \texttt{usipes}: post treatment display parameters (periodicity, variable names,
- position of probes,...)
+\item \texttt{usipph}: \texttt{iturb} and \texttt{icp} (don't modify these
+      parameters anywhere else)
+\item \texttt{usinsc}: \texttt{nscaus} (don't modify these parameters anywhere
+      else)
+\item \texttt{usipsc}: \texttt{iscavr} and \texttt{ivisls} (don't modify these
+      parameters anywhere else)
+\item \texttt{usipgl}: \texttt{idtvar}, \texttt{ipucou}, \texttt{iphydr} and the
+      parameters related to the error estimators(don't modify these parameters
+      anywhere else).
+\item \texttt{usipsu}: physical parameters of the calculation (thermal scalar, physical
+      properties,...), numeric parameters (time steps, number of iterations, ...),
+      definition of the time averages.
+\item \texttt{usipes}: post processing output parameters (periodicity, variable names,
+      probe positions,...)
 \end{list}
 
 For more details of the different parameters, see the list of key words  (\S\ref{prg_motscles}).
  The names of the key words can also be seen in the helps sections of the interface.
 
 \minititre{Notes}
-$\bullet\ $ Determined in the list of NSCAUS user scalars, representing
- the mean square fluctuations of another whilst informing the ISCAVR
+$\bullet\ $ Determined in the list of \texttt{nscaus} user scalars, representing
+ the mean square fluctuations of another whilst informing the \texttt{iscavr}
 array (warning, this was not the case in version 1.0). For
-the other scalars, ISCAVR does not need to be completed (by default,
-ISCAVR(II)$\leqslant$0). For instance, if the scalar JJ represents the
-average of the square of the fluctuations of the scalar KK, the user
-must indicate ISCAVR(JJ)=KK
-(1$\leqslant$KK$\leqslant$NSCAUS).
+the other scalars, \texttt{iscavr} does not need to be completed (by default,
+\texttt{iscavr(ii)}$\leqslant$0). For instance, if the scalar \texttt{jj}
+represents the average of the square of the fluctuations of the scalar \texttt{kk},
+the user must indicate \texttt{iscavr(jj)=kk}
+(1$\leqslant$\texttt{kk}$\leqslant$\texttt{nscaus}).
 
 \noindent
 $\bullet\ $ When using the interface, only the
 supplementary parameters (which can not be defined in the interface)
 should appear in \texttt{usini1}. To spare the user the necessity to
 delete the other parameters appearing as examples in the subroutine, the
-utility program \texttt{cs create} comments automatically all the
+utility program \texttt{cs~create} comments automatically all the
 example lines of \texttt{usini1} with a code \texttt{!ex}. The user
 needs then only to uncomment the lines which are useful in his
 case. This function of
-\texttt{cs create} can be inactivated with
+\texttt{cs~create} can be inactivated with
 the option \texttt{--nogui} (useful if the user knows that he will not
 use the interface).
 
@@ -3889,64 +4431,70 @@ boundary conditions (input profiles, conditions varying in time, ...)
 which could not be specified by means of the interface, and only these
 need to be defined. In the case of a calculation launched without the
 interface, all the boundary conditions must appear in \texttt{usclim}.\\
-\texttt{usclim} is essentially constituted of a loop on the boundary
-faces. Several sequences 
-of \verb+CALL GETFBR+ \verb+('criterion', NLELT, LSTELT)+ (cf.
-\S\ref{fvm_selector}) allows to differentiate 
+\texttt{usclim} is essentially constituted of loops on boundary
+face subsets. Several sequences 
+of \verb+call getfbr+ \verb+('criterion', nlelt, lstelt)+ (cf.
+\S\ref{fvm_selector}) allow to differentiate 
 the boundary faces according to their group(s), their
-color(s) or geometrical criterion(s). If needed, disposal geometric and
-physical variables are also available to the user, these allow him to differentiate the boundary
-faces using other criterions.
+color(s) or geometric criteria. If needed, geometric and
+physical variables are also available to the user, these allow him
+to differentiate the boundary faces using other criteria.
 
 For more details about the treatment of boundary conditions, the user
 may refer to the theoretical and computer documentation \cite{theory} of
 the subroutine \texttt{condli} (for the wall conditions, see
 \texttt{clptur}) (to access to this document on a workstation, use
-\mbox{\texttt{cs info --guide theory}}).
+\mbox{\texttt{cs~info --guide theory}}).
 
 From the user point of view, the boundary conditions are totally
-determined by three arrays\footnote{except with Lagrangien}~: ITYPFB(NFABOR,NPHAS)\index{ITYPFB},
-ICODCL(NFABOR,NVAR)\index{ICODCL} and RCODCL(NFABOR,NVAR,3)\index{RCODCL}.
+determined by three arrays\footnote{except with Lagrangian}:
+\texttt{itypfb(nfabor,nphas)}\index{\texttt{itypfb}},
+\texttt{icodcl(nfabor,nvar)}\index{\texttt{icodcl}} and
+\texttt{rcodcl(nfabor,nvar,3)}\index{\texttt{rcodcl}}.
 \begin{list}{-}{}
-\item ITYPFB(IFAC,IPHAS) defines the type of the face IFAC (input, wall
-      ...) for the phase IPHAS.
-\item ICODCL(IFAC,IVAR) defines the type of boundary
-      condition for the variable IVAR at the face IFAC (Dirichlet, flux ...).
-\item RCODCL(IFAC,IVAR,.) gives the numerical values associated with the
+\item \texttt{itypfb(ifac,iphas)} defines the type of the face \texttt{ifac}
+      (input, wall, ...) for the phase \texttt{iphas}.
+\item \texttt{icodcl(ifac,ivar)} defines the type of boundary
+      condition for the variable \texttt{ivar} at the face \texttt{ifac}
+      (Dirichlet, flux ...).
+\item \texttt{rcodcl(ifac,ivar,.)} gives the numerical values associated with the
       type of boundary condition (value of the Dirichlet, of the flux ...).
 \end{list}
 
 In the case of standard boundary conditions (see
-\S\ref{prg_clstandard}), it is enough to complete ITYPFB(IFAC,IPHAS) and
-some boxes of the array RCODCL, the array ICODCL and most of the boxes
-of RCODCL are completed automatically. For non-standard boundary
-conditions (see \S\ref{prg_clnonstandard}), the arrays ICODCL and RCODCL
-must be totally completed.
+\S\ref{prg_clstandard}), it is enough to complete \texttt{itypfb(ifac,iphas)} and
+some boxes of the array \texttt{rcodcl}, the array \texttt{icodcl} and most of the
+boxes of \texttt{rcodcl} are completed automatically. For non-standard boundary
+conditions (see \S\ref{prg_clnonstandard}), the arrays \texttt{icodcl} and
+\texttt{rcodcl} must be totally completed.
 
 %==================================
 \subsubsection{Coding of standard boundary conditions}
 %==================================
 \label{prg_clstandard}%
-The standard values taken by the indicator ITYPFB are:
-IENTRE\index{IENTRE}, IPAROI\index{IPAROI}, IPARUG\index{IPARUG},
-ISYMET\index{ISYMET}, ISOLIB\index{ISOLIB} and IINDEF\index{IINDEF}.
+The standard values taken by the indicator \texttt{itypfb} are:
+\texttt{ientre\index{ientre}}, \texttt{iparoi\index{iparoi}},
+\texttt{iparug\index{iparug}}, \texttt{isymet\index{isymet}},
+\texttt{isolib\index{isolib}} and \texttt{iindef\index{iindef}}.
 
 \begin{list}{$\bullet$}{}
-\item If ITYPFB=IENTRE: inlet face.
+\item If \texttt{itypfb=ientre}: inlet face.
 
 \begin{list}{$\rightarrow$}{}
 \item Zero-flux condition for pressure and Dirichlet condition for all
       other variables. The value of the Dirichlet must be given in
-      RCODCL(IFAC,IVAR,1) for every value of IVAR, apart from
-      IVAR=IPR(IPHAS). The other boxes of RCODCL and ICODCL are completed automatically.
+      \texttt{rcodcl(ifac,ivar,1)} for every value of \texttt{ivar}, apart from
+      \texttt{ivar=ipr(iphas)}. The other values of \texttt{rcodcl} and
+      \texttt{icodcl} are completed automatically.
 \end{list}
 
-\item If ITYPFB=IPAROI: smooth solid wall face, impermeable and with friction.
+\item If \texttt{itypfb=iparoi}: smooth solid wall face, impermeable and with friction.
 
 \begin{list}{$\rightarrow$}{}
 \item the eventual moving velocity of the wall tangent to the face is
-      given by RCODCL(IFAC,IVAR,1) (IVAR being IU(IPHAS), IV(IPHAS) or
-      IW(IPHAS)). The initial value of RCODCL(IFAC,IVAR,1) is zero for
+      given by \texttt{rcodcl(ifac,ivar,1)} (\texttt{ivar} being
+      \texttt{iu(iphas)}, \texttt{iv(iphas)} or \texttt{iw(iphas))}. The initial
+      value of \texttt{rcodcl(ifac,ivar,1)} is zero for
       the three velocity components (and therefore needs to be specified
       only in the case of the existence of a slipping velocity). \\
 {\em WARNING: the wall moving velocity must be in the boundary face
@@ -3959,24 +4507,25 @@ ISYMET\index{ISYMET}, ISOLIB\index{ISOLIB} and IINDEF\index{IINDEF}.
       defined:
 \begin{list}{$\rightsquigarrow$}{}
 \item Imposed value at the wall. The user must write\\
-\hspace*{1cm}ICODCL(IFAC,IVAR)=5\\
-\hspace*{1cm}RCODCL(IFAC,IVAR,1)=imposed value\\
+\hspace*{1cm}\texttt{icodcl(ifac,ivar)}=5\\
+\hspace*{1cm}\texttt{rcodcl(ifac,ivar,1)}=imposed value\\
 \item Imposed flux at the wall. The user must write\\
-\hspace*{1cm}ICODCL(IFAC,IVAR)=3\\
-\hspace*{1cm}RCODCL(IFAC,IVAR,3)=flux imposed value (for the flux
+\hspace*{1cm}\texttt{icodcl(ifac,ivar)}=3\\
+\hspace*{1cm}\texttt{rcodcl(ifac,ivar,3)}=flux imposed value (for the flux
       definition according to the variable, the user may refer to the
-      case ICODCL=3 of the paragraph \ref{prg_clnonstandard}).
+      case \texttt{icodcl}=3 of the paragraph \ref{prg_clnonstandard}).
 \item If the user does not complete these arrays, the default condition
       is zero flux.
 \end{list}
 \end{list}
 
-\item If ITYPFB=IPARUG: rough solid wall face, impermeable and with friction.
+\item If \texttt{itypfb=iparug}: rough solid wall face, impermeable and with friction.
 
 \begin{list}{$\rightarrow$}{}
 \item the eventual moving velocity of the wall tangent to the face is
-      given by RCODCL(IFAC,IVAR,1) (IVAR being IU(IPHAS), IV(IPHAS) or
-      IW(IPHAS)). The initial value of RCODCL(IFAC,IVAR,1) is zero for
+      given by \texttt{rcodcl(ifac,ivar,1)} (\texttt{ivar} being
+      \texttt{iu(iphas)}, \texttt{iv(iphas)} or \texttt{iw(iphas)}). The initial
+      value of \texttt{rcodcl(ifac,ivar,1)} is zero for
       the three velocity components (and therefore needs to be specified
       only in the case of the existence of a slipping velocity). \\
 {\em WARNING: the wall moving velocity must be in the boundary face
@@ -3984,21 +4533,20 @@ ISYMET\index{ISYMET}, ISOLIB\index{ISOLIB} and IINDEF\index{IINDEF}.
       velocity on the face. As a consequence, if the velocity specified
       by the user is not in the face plane, the wall moving velocity really
       taken into account will be different.}
-\item The dynamic roughness must be specified in RCDOCL(IFAC,IU(IPHAS),3).
-      The value of RCDOCL(IFAC,IV(IPHAS),3) and RCDOCL(IFAC,IW(IPHAS),3)
-      are not used.
-\item Concerning the scalars, two kinds of boundary conditions can be
-      defined:
+\item The dynamic roughness must be specified in \texttt{rcdocl(ifac,iu(iphas),3)}.
+      The values of \texttt{rcdocl(ifac,iv(iphas),3)} and
+      \texttt{rcdocl(ifac,iw(iphas),3)} are not used.
+\item For scalars, two kinds of boundary conditions can be defined:
 \begin{list}{$\rightsquigarrow$}{}
 \item Imposed value at the wall. The user must write\\
-\hspace*{1cm}ICODCL(IFAC,IVAR)=6\\
-\hspace*{1cm}RCODCL(IFAC,IVAR,1)=imposed value\\
-\hspace*{1cm}RCODCL(IFAC,IVAR,3)=thermal roughness value\\
+\hspace*{1cm}\texttt{icodcl(ifac,ivar)}=6\\
+\hspace*{1cm}\texttt{rcodcl(ifac,ivar,1)}=imposed value\\
+\hspace*{1cm}\texttt{rcodcl(ifac,ivar,3)}=thermal roughness value\\
 \item Imposed flux at the wall. The user must write\\
-\hspace*{1cm}ICODCL(IFAC,IVAR)=3\\
-\hspace*{1cm}RCODCL(IFAC,IVAR,3)=flux imposed value (for the flux
+\hspace*{1cm}\texttt{icodcl(ifac,ivar)}=3\\
+\hspace*{1cm}\texttt{rcodcl(ifac,ivar,3)}=flux imposed value (for the flux
       definition according to the variable, the user may refer to the
-      case ICODCL=3 of the paragraph \ref{prg_clnonstandard}).
+      case \texttt{icodcl}=3 of the paragraph \ref{prg_clnonstandard}).
 \item If the user does not complete these arrays, the default condition
       is zero flux.
 \end{list}
@@ -4006,17 +4554,17 @@ ISYMET\index{ISYMET}, ISOLIB\index{ISOLIB} and IINDEF\index{IINDEF}.
 
 
 
-\item If ITYPFB=ISYMET: symmetry face (or wall without friction)
+\item If \texttt{itypfb=isymet}: symmetry face (or wall without friction)
 \begin{list}{$\rightarrow$}{}
-\item Nothing to write in ICODCL and  RCODCL.
+\item Nothing to write in \texttt{icodcl} and  \texttt{rcodcl}.
 \end{list}
 
-\item If ITYPFB=ISOLIB: free outlet face (or more precisely free inlet/outlet
-      with forced pressure)
+\item If \texttt{itypfb=isolib}: free outlet face (or more precisely free 
+      inlet/outlet with forced pressure)
 \begin{list}{$\rightarrow$}{}
 \item The pressure is always treated with a Dirichlet condition, calculated
       in order to have $\displaystyle \frac{d}{dn}\left(\frac{dP}{d\tau}\right)=0$.
-      The pressure is given the value $P_0$ at the first face ISOLIB met.
+      The pressure is given the value $P_0$ at the first face \texttt{isolib} met.
       The pressure drop is always linked to just one face, even if there are
       several outlets.
 \item If the mass flow is coming in, the ``infinite'' velocity is retained
@@ -4024,32 +4572,32 @@ ISYMET\index{ISYMET}, ISOLIB\index{ISOLIB} and IINDEF\index{IINDEF}.
       (or zero-flux condition if no Dirichlet value has been specified).
 \item If the mass flow is going out, zero-flux condition for the velocity,
       the scalars and the turbulent quantities.
-\item Nothing to write in ICODCL or RCODCL for the pressure or the velocity.
-      An optional Dirichlet condition can be specified for the scalars and turbulent
-      quantities.
+\item Nothing to write in \texttt{icodcl} or \texttt{rcodcl} for pressure or
+      velocity. An optional Dirichlet condition can be specified for the scalars
+      and turbulent quantities.
 \end{list}
 
-\item Si ITYPFB=IINDEF: non-defined type face (non-standard case)
+\item If \texttt{itypfb=iindef}: non-defined type face (non-standard case)
 \begin{list}{$\rightarrow$}{}
-\item The coding is done by completing every array RCODCL and ICODCL
-      (see \S\ref{prg_clnonstandard}).
+\item The coding is done by completing every array \texttt{rcodcl} and
+      \texttt{icodcl} (see \S\ref{prg_clnonstandard}).
 \end{list}
 \end{list}
 
 \minititre{Notes}
-$\bullet\ $ Whatever the value of the indicator ITYPFB(IFAC,IPHAS), if
-the array ICODCL(IFAC,IVAR) is modified by the user ({\em i.e.} filled
+$\bullet\ $ Whatever the value of the indicator \texttt{itypfb(ifac,iphas)}, if
+the array \texttt{icodcl(ifac,ivar)} is modified by the user ({\em i.e.} filled
 in by a value different from zero), the code will not use the default
-conditions for the variable IVAR at the face IFAC, but will take into
-account the values of ICODCL and RCODCL given by the user (these arrays
-must then be totally completed, like in the non-standard case). \\
+conditions for the variable \texttt{ivar} at the face \texttt{ifac}, but will
+take into account the values of \texttt{icodcl} and \texttt{rcodcl} given by the
+user (these arrays must then be totally completed, like in the non-standard case). \\
 For instance, for a symmetry face at which the scalar 1 is given a
 Dirichlet condition equal to 23.8 (with an infinite exchange
 coefficient):\\
-\hspace*{2cm}\texttt{ITYPFB(IFAC,IPHAS)=ISYMET}\\
-\hspace*{2cm}\texttt{ICODCL(IFAC,ISCA(1))=1}\\
-\hspace*{2cm}\texttt{RCODCL(IFAC,ISCA(1),1)=23.8D0}\\
-(\texttt{RCODCL(IFAC,ISCA(1),2)=RINFIN} is the default value, so it is
+\hspace*{2cm}\texttt{itypfb(ifac,iphas)=isymet}\\
+\hspace*{2cm}\texttt{icodcl(ifac,isca(1))=1}\\
+\hspace*{2cm}\texttt{rcodcl(ifac,isca(1),1)=23.8}\\
+(\texttt{rcodcl(ifac,isca(1),2)=rinfin} is the default value, so it is
 not necessary to specify it)\\
 The boundary conditions for the other variables are still automatically
 defined.
@@ -4059,39 +4607,41 @@ $\bullet\ $The user may define new types of wall faces. He only needs to
 choose a value $N$ and to specify completely the boundary conditions
 corresponding to this new wall face type (see
 \S\ref{prg_clnonstandard}). He must then specify
-ITYPFB(IFAC,IPHAS)=$N$. The value of $N$ must be between 1 and
-NTYPMX\index{NTYPMX} (maximum number of boundary face types), and of
-course different from the values IENTRE, IPAROI, IPARUG, ISYMET, ISOLIB
-and IINDEF (the value of these variables is given in the file
-\texttt{paramx.h}). This allows to isolate easily some boundary faces,
-in order to calculate balances.
+\texttt{itypfb(ifac,iphas)}=$N$. The value of $N$ must be between 1 and
+\texttt{ntypmx\index{ntypmx}} (maximum number of boundary face types), and of
+course different from the values \texttt{ientre}, \texttt{iparoi},
+\texttt{iparug}, \texttt{isymet}, \texttt{isolib} and \texttt{iindef} (the value
+of these variables is given in the file \texttt{paramx.h}). This allows to
+easily isolate some boundary faces, in order to calculate balances.
 
 %==================================
 \subsubsection{Coding of non-standard boundary conditions}
 %==================================
 \label{prg_clnonstandard}%
 In the case of a face not corresponding to a standard type, the user
-must complete all of the arrays ITYPFB, ICODCL and
-RCODCL. ITYPFB(IFAC,IPHAS) is then worth IINDEF or another value defined
-by the user (see note in the end of paragraph \ref{prg_clstandard}). The
-arrays ICODCL and RCODCL must be completed as follows:
+must complete all of the arrays \texttt{itypfb}, \texttt{icodcl} and
+\texttt{rcodcl}. \texttt{itypfb(ifac,iphas)} is then worth \texttt{iindef}
+or another value defined by the user (see note in the end of paragraph
+\ref{prg_clstandard}). The arrays \texttt{icodcl} and \texttt{rcodcl}
+must be completed as follows:
 
 \begin{list}{$\bullet$}{}
-\item If ICODCL(IFAC,IVAR)=1: Dirichlet condition at the face IFAC for
-      the variable IVAR.
+\item If \texttt{icodcl(ifac,ivar)}=1: Dirichlet condition at the face
+      \texttt{ifac} for the variable \texttt{ivar}.
 
 \begin{list}{$\rightarrow$}{}
-\item RCODCL(IFAC,IVAR,1) is the value of the variable IVAR at the face IFAC.
+\item \texttt{rcodcl(ifac,ivar,1)} is the value of the variable \texttt{ivar}
+      at the face \texttt{ifac}.
 
-\item RCODCL(IFAC,IVAR,2) is the value of the exchange coefficient
-      between the outside and the fluid for the variable IVAR. An
-      infinite value (\texttt{RCODCL(IFAC,IVAR,2)=RINFIN}) indicates a
+\item \texttt{rcodcl(ifac,ivar,2)} is the value of the exchange coefficient
+      between the outside and the fluid for the variable \texttt{ivar}. An
+      infinite value (\texttt{rcodcl(ifac,ivar,2)=rinfin}) indicates a
       perfect transfer between the outside and the fluid (default case).
 
-\item RCODCL(IFAC,IVAR,3) is not used.
+\item \texttt{rcodcl(ifac,ivar,3)} is not used.
 
-\item RCODCL(IFAC,IVAR,1) is expressed in the unit of the variable
-      IVAR, {\em i.e.}:
+\item \texttt{rcodcl(ifac,ivar,1)} is expressed in the unit of the variable
+      \texttt{ivar}, {\em i.e.}:
 \begin{list}{$\rightsquigarrow$}{}
 \item $m/s$ for the velocity
 
@@ -4110,9 +4660,10 @@ arrays ICODCL and RCODCL must be completed as follows:
 \item $J^2.kg^{-2}$ for the enthalpy fluctuations
 \end{list}
 
-\item RCODCL(IFAC,IVAR,2) is expressed in the following unit (defined so
+\item \texttt{rcodcl(ifac,ivar,2)} is expressed in the following unit (defined so
       that by multiplying the exchange coefficient and the variable, the
-      obtained flux has the same unit as the flux defined below for ICODCL=3):
+      obtained flux has the same unit as the flux defined below for
+      \texttt{icodcl=3)}:
 
 \begin{list}{$\rightsquigarrow$}{}
 \item $kg.m^{-2}.s^{-1}$ for the velocity
@@ -4128,14 +4679,14 @@ arrays ICODCL and RCODCL must be completed as follows:
 
 \end{list}
 
-\item If ICODCL(IFAC,IVAR)=3: flux condition at the face IFAC for the
-      variable IVAR.
+\item If \texttt{icodcl(ifac,ivar)=3}: flux condition at the face \texttt{ifac}
+      for the variable \texttt{ivar}.
 
 \begin{list}{$\rightarrow$}{}
-\item RCODCL(IFAC,IVAR,1) and RCODCL(IFAC,IVAR,2) are not used.
+\item \texttt{rcodcl(ifac,ivar,1)} and \texttt{rcodcl(ifac,ivar,2)} are not used.
 
-\item RCODCL(IFAC,IVAR,3) is the flux value of IVAR at the wall. This
-      flux is negative if it is a source for the fluid. It corresponds to:
+\item \texttt{rcodcl(ifac,ivar,3)} is the flux value of \texttt{ivar} at the
+      wall. This flux is negative if it is a source for the fluid. It corresponds to:
 \begin{list}{$\rightsquigarrow$}{}
 \item
 $\displaystyle -C_p(\frac{\lambda_T}{C_p}+\frac{\mu_t}{\sigma_T})\grad T\cdot\vect{n}$ in the case of a temperature (in $W/m^2$).
@@ -4154,91 +4705,95 @@ $\displaystyle -(\lambda_\varphi+\frac{\mu_t}{\sigma_\varphi})\grad\varphi\cdot\
 
 \end{list}
 
-\item If ICODCL(IFAC,IVAR)=4: symmetry condition, for the symmetry
+\item If \texttt{icodcl(ifac,ivar)}=4: symmetry condition, for the symmetry
       faces or wall faces without friction. This condition can only be
       used for the velocity components ($\vect{U}\cdot\vect{n}=0$) and
       the $R_{ij}$ tensor components (for the other variables, a zero-flux
       condition type is generally used).\\
 
-\item If ICODCL(IFAC,IVAR)=5: friction condition, for the smooth-wall faces
+\item If \texttt{icodcl(ifac,ivar)}=5: friction condition, for the smooth-wall faces
       with friction. This condition can not be applied to the pressure.
 \begin{list}{$\rightsquigarrow$}{}
 \item For the velocity and (if necessary) the turbulent variables, the
       values at the wall are calculated from theoretical profiles. In
       the case of a moving wall, the three components of the slipping
-      velocity are given by (RCODCL(IFAC,IU(IPHAS),1),
-      RCODCL(IFAC,IV(IPHAS),1), and RCODCL(IFAC,IW(IPHAS),1)).\\
+      velocity are given by (\texttt{rcodcl(ifac,iu(iphas),1)},
+      \texttt{rcodcl(ifac,iv(iphas),1)}, and \texttt{rcodcl(ifac,iw(iphas),1)}).\\
 {\em WARNING: the wall moving velocity must be in the boundary face
       plane. By security, the code uses only the projection of this
       velocity on the face. As a consequence, if the velocity specified
       by the user is not in the face plane, the wall moving velocity really
       taken into account will be different.}
 
-\item For the other scalars, the condition ICODCL=5 is similar to
-      ICODCL=1, but with a wall exchange coefficient calculated from a
-      theoretical law. The values of RCODCL(IFAC,IVAR,1) and
-      RCODCL(IFAC,IVAR,2) must therefore be specified: see \cite{theory}.
+\item For the other scalars, the condition \texttt{icodcl}=5 is similar to
+      \texttt{icodcl=1}, but with a wall exchange coefficient calculated from a
+      theoretical law. The values of \texttt{rcodcl(ifac,ivar,1)} and
+      \texttt{rcodcl(ifac,ivar,2)} must therefore be specified: see \cite{theory}.
 \end{list}
 
-\item If ICODCL(IFAC,IVAR)=6: friction condition, for the rough-wall faces
+\item If \texttt{icodcl(ifac,ivar)}=6: friction condition, for the rough-wall faces
       with friction. This condition can not be applied to the pressure.
 \begin{list}{$\rightsquigarrow$}{}
 \item For the velocity and (if necessary) the turbulent variables, the
       values at the wall are calculated from theoretical profiles. In
       the case of a moving wall, the three components of the slipping
-      velocity are given by (RCODCL(IFAC,IU(IPHAS),1),
-      RCODCL(IFAC,IV(IPHAS),1), and RCODCL(IFAC,IW(IPHAS),1)).\\
+      velocity are given by (\texttt{rcodcl(ifac,iu(iphas),1)},
+      \texttt{rcodcl(ifac,iv(iphas),1)}, and \texttt{rcodcl(ifac,iw(iphas),1)}).\\
 {\em WARNING: the wall moving velocity must be in the boundary face
       plane. By security, the code uses only the projection of this
       velocity on the face. As a consequence, if the velocity specified
       by the user is not in the face plane, the wall moving velocity really
       taken into account will be different.}\\
-      The dynamic roughness height is given by RCODCL(IFAC,IU(IPHAS),3) only.
+      The dynamic roughness height is given by \texttt{rcodcl(ifac,iu(iphas),3)} only.
 
-\item For the other scalars, the condition ICODCL=6 is similar to
-      ICODCL=1, but with a wall exchange coefficient calculated from a
-      theoretical law. The values of RCODCL(IFAC,IVAR,1) and
-      RCODCL(IFAC,IVAR,2) must therefore be specified: see \cite{theory}.
-      The thermal roughness height is then given by RCODCL(IFAC,IVAR,3).
+\item For the other scalars, the condition \texttt{icodcl}=6 is similar to
+      \texttt{icodcl}=1, but with a wall exchange coefficient calculated from a
+      theoretical law. The values of \texttt{rcodcl(ifac,ivar,1)} and
+      \texttt{rcodcl(ifac,ivar,2)} must therefore be specified: see \cite{theory}.
+      The thermal roughness height is then given by \texttt{rcodcl(ifac,ivar,3)}.
 \end{list}
 
-\item If ICODCL(IFAC,IVAR)=9: free outlet condition for the
+\item If \texttt{icodcl(ifac,ivar)}=9: free outlet condition for the
       velocity. This condition can only be applied to the velocity
       components.\\
 If the mass flow at the face is going out, this condition is equivalent
       to a zero-flux condition.\\
 If the mass flow at the face is coming in, the value zero is imposed to
       the velocity at the face (but not to the mass flow).\\
-RCODCL is not used.
+\texttt{rcodcl} is not used.
 
 \end{list}
 
 \minititre{Note}
-$\bullet\ $A standard ISOLIB outlet face amounts to a Dirichlet
-condition (ICODCL=1) for the pressure, a free outlet condition
-(ICODCL=9) for the velocity and a Dirichlet condition (ICODCL=1) if
-the user has specified a Dirichlet value or a zero-flux condition
-(ICODCL=3) for the other variables.\\
+$\bullet\ $A standard \texttt{isolib} outlet face amounts to a Dirichlet
+condition (\texttt{icodcl}=1) for the pressure, a free outlet condition
+(\texttt{icodcl}=9) for the velocity and a Dirichlet condition
+(\texttt{icodcl}=1) if the user has specified a Dirichlet value or a zero-flux
+condition (\texttt{icodcl}=3) for the other variables.\\
 
 %==================================
 \subsubsection{Checking of the boundary conditions}
 %==================================
 
-The code checks itself the main compatibilities between the boundary
+The code checks the main compatibilities between the boundary
 conditions. In particular, the following rules must be respected: \\
 $\bullet\ $On each face, the three components of the velocity
 must belong to the same type. The same must be true for the different
 components of the $R_{ij}$ tensor.\\
 $\bullet\ $If the boundary conditions for the velocity belong to the
-``slipping'' type (ICODCL=4), the conditions for $R_{ij}$ must belong to
-the ``symmetry'' type (ICODCL=4), and vice versa.\\
+``slipping'' type (\texttt{icodcl}=4), the conditions for $R_{ij}$ must belong to
+the ``symmetry'' type (\texttt{icodcl}=4), and vice versa.\\
 $\bullet\ $If the boundary conditions for the velocity belong to the
-``friction'' type (ICODCL=5 or 6), the conditions for the turbulent variables
+``friction'' type (\texttt{icodcl}=5 or 6), the conditions for the turbulent variables
 must belong to the ``friction'' type, too.\\
 $\bullet\ $If the boundary condition for a scalar belongs to the
 ``friction'' type, the boundary condition for the velocity must belong to
 the ``friction'' type, too.
 
+In case of error, if post-processing output is activated (which is the default),
+a special error output to the same mesh format occurs, so as to help
+correcting boundary condition definitions.
+
 %==================================
 \subsubsection{Sorting of the boundary faces}
 %==================================
@@ -4246,29 +4801,29 @@ the ``friction'' type, too.
 In the code, it may be necessary to have access to all the boundary
 faces of a given type. In order to ease this kind of search, an array of
 sorted faces is automatically completed (and updated at every time step)
-for each phase IPHAS: ITRIFB(NFABOR,IPHAS)\index{ITRIFB}.\\
-IFAC=ITRIFB(n,IPHAS) is the number of the n$^{\text{th}}$  face of type
+for each phase \texttt{iphas}: \texttt{itrifb(nfabor,iphas)\index{itrifb}}.\\
+\texttt{ifac=itrifb(i,iphas)} is the number of the i$^{\text{th}}$  face of type
 1.\\
-IFAC=ITRIFB(n+N,IPHAS) is the number of the n$^{\text{th}}$ face de type
-2, if there are N faces of type 1.\\
+\texttt{ifac=itrifb(i+n,iphas)} is the number of the i$^{\text{th}}$ face de type
+2, if there are $n$ faces of type 1.\\
 ... etc.
 
-Two auxiliary arrays of size NTYPMX are also defined.\\
-IDEBTY(ITYP,IPHAS)\index{IDEBTY} is the number of the first box
+Two auxiliary arrays of size \texttt{ntypmx} are also defined.\\
+\texttt{idebty(ityp,iphas)\index{idebty}} is the number of the first box
 corresponding to the
-faces of type ITYP in the array ITRIFB.\\
-IFINTY(ITYP,IPHAS)\index{IFINTY} is the number of the last box
+faces of type \texttt{ityp} in the array \texttt{itrifb}.\\
+\texttt{ifinty(ityp,iphas)\index{ifinty}} is the number of the last box
 corresponding to the
-faces of type ITYP in the array ITRIFB.
+faces of type \texttt{ityp} in the array \texttt{itrifb}.
 
-Therefore, a number IFAC0 between IDEBTY(ITYP,IPHAS) and
-IFINTY(ITYP,IPHAS) corresponds to each face of type
-ITYP=ITYPFB(IFAC,IPHAS), so that IFAC=ITRIFB(IFAC0,IPHAS).
+Therefore, a number \texttt{ifac0} between \texttt{idebty(ityp,iphas)} and
+\texttt{ifinty(ityp,iphas)} corresponds to each face of type
+\texttt{ityp=itypfb(ifac,iphas)}, so that \texttt{ifac=itrifb(ifac0,iphas)}.
 
-If there is no face of type ITYP, the code imposes \\
-IFINTY(ITYP,IPHAS)=IDEBTY(ITYP,IPHAS)-1,\\
-which allows to bypass, for all the missing ITYP, the loops like \\
-\texttt{DO II=IDEBTY(ITYP,IPHAS),IFINTY(ITYP,IPHAS)}.
+If there is no face of type \texttt{ityp}, the code imposes \\
+\texttt{ifinty(ityp,iphas)=idebty(ityp,iphas)-1},\\
+which allows to bypass, for all the missing \texttt{ityp}, the loops like \\
+\texttt{do ii=idebty(ityp,iphas),ifinty(ityp,iphas)}.
 
 The values of all these indicators are displayed in the beginning of the
 code execution listing.
@@ -4295,27 +4850,28 @@ The subroutine \texttt{usvort} contains 3 seperate parts:
 
 \begin{list}{-}{}
 \item The 1st part defines the number of inlets concerned with the vortex
-method(NNENTT\index{NNENT}) and the number of vortex for each inlet (NVORT\index{NVORT}),
-where IENT represents the number of inlets.
-\item The 2nd part (IAPPEL=1) defines the boundary faces at which the vortex method
- is applicable. The IREPVO\index{IREPVO} array is informed by IENT which defines
- the number of inlets concerned with the vortex (essentially, the vortex
- method can be applied with many independant inlets).
+method (\texttt{nnentt\index{nnent}}) and the number of vortex for each inlet
+(\texttt{nvort\index{nvort}}), where \texttt{ient} represents the number of inlets.
+\item The 2nd part (\texttt{iappel=1}) defines the boundary faces at which the
+      vortex method is applicable. The \texttt{irepvo\index{irepvo}} array is informed
+      by \texttt{ient} which defines the number of inlets concerned with the vortex
+(essentially, the vortex method can be applied with many independant inlets).
 \item The 3rd section defines the main parameters of the method at each inlet.
- With the complexity of any given geometry, 4 cases are distinguished
-( the first 3 use the data file FICDAT and in the final case only 1
-initial velocity and energy are imposed.):
+      With the complexity of any given geometry, 4 cases are distinguished
+      (the first 3 use the data file \texttt{ficvor} and in the final case only 1
+      initial velocity and energy are imposed.):
 
 \begin{list}{*}{}
-\item ICAS=1, For the outlet of a rectangluar pipe; 1 boundary condition is defined
+\item \texttt{icas}=1, For the outlet of a rectangluar pipe; 1 boundary condition is defined
 for each side of the rectangle taking into account their interaction
 with the vortex.
-\item ICAS=2, For the outlet of a circular pipe; the entry face is considered as a
+\item \texttt{icas}=2, For the outlet of a circular pipe; the entry face is considered as a
  wall (as far as interaction with the vortex is concerned)
-\item ICAS=3, For inlets of any geometry; no boundary conditions are defined at the
+\item \texttt{icas}=3, For inlets of any geometry; no boundary conditions are defined at the
  inlet face (i.e no specific treatment on the interation between the
  vortex and the boundary)
-\item ICAS=4, similar to ICAS=3 except the data file is not used (FIDCAT); the outflow
+\item \texttt{icas}=4, similar to \texttt{icas}=3 except the data file is not
+ used (\texttt{ficvor}); the outflow
  parameters are estimated by the code from the global data (initial
  velocity, level of turbulence and dissipation), information which is
  supplied by the user.
@@ -4325,106 +4881,128 @@ When the geometry allows, cases 1 and 2 are used. Case 4 is only used
  if it is not possible to use the other 3.
 
 In the first 3 cases, the 2 base vectors in the plane of each inlet
-must be defined (vectors DIR1 and DIR2). The 3rd vector is
-automatically calculated by the code, defined as a product of DIR1 and
-DIR2. DIR1 and DIR2 must be chosen imperatively to give (CEN, DIR1,
-DIR2) an orthogonal reference of the inlet plane and so DIR3 is
-orientated in the entry domain.If ICAS=2, the position CEN has to be
-the center of gravity of the rectangle or disc.
-
-The reference points (CEN, DIR1, DIR2, DIR3) wihch define the values
-of the variable in the FIDCAT file.\\
-In the case where ICAS=4, the vectors DIR1 and DIR2 are generated by
-the code.
-
-If ICAS=1, the boundary conditions at the rectangle's edges must be
+must be defined (vectors \texttt{dir1} and \texttt{dir2}). The 3rd vector is
+automatically calculated by the code, defined as a product of \texttt{dir1} and
+\texttt{dir2}. \texttt{dir1} and \texttt{dir2} must be chosen imperatively to
+give (\texttt{cen}, \texttt{dir1}, \texttt{dir2}) an orthogonal reference of the
+inlet plane and so \texttt{dir3} is oriented in the entry domain. If
+\texttt{icas}=2, the \texttt{cen} position must be the center of gravity of the
+rectangle or disc.
+
+The reference points (\texttt{cen}, \texttt{dir1}, \texttt{dir2}, \texttt{dir3})
+which define the values of the variable in the \texttt{ficvor} file.\\
+In the case where \texttt{icas}=4, the vectors \texttt{dir1} and \texttt{dir2}
+are generated by the code.
+
+If \texttt{icas}=1, the boundary conditions at the rectangle's edges must be
 defined. They are defined in the array
-ICLVOR\index{ICLVOR}. ICLVOR(II,IENT) represents the standard boundary
+\texttt{iclvor\index{iclvor}}. \texttt{iclvor(ii,ient)} represents the standard boundary
 conditions at the edge II(1$\leqslant$II$\leqslant$4) of the inlet
-IENT. The code for the boundary conditions is as follows:
+\texttt{ient}. The code for the boundary conditions is as follows:
 \begin{list}{*}{}
-\item ICLVOR=1 for a wall
-\item ICLVOR=2 for symmetry
-\item ICLVOR=3 for periodicity of translation (the face corresponding to periodicity will
-automatically be taken as 3)
+\item \texttt{iclvor}=1 for a wall
+\item \texttt{iclvor}=2 for symmetry
+\item \texttt{iclvor}=3 for periodicity of translation (the face corresponding
+      to periodicity will automatically be taken as 3)
 \end{list}
-The 4 edges are numbered relative to the directions DIR1 and DIR2 as shown in figue \ref{Fig_vortex}:
+The 4 edges are numbered relative to the directions \texttt{dir1} and
+\texttt{dir2} as shown in figure \ref{Fig_vortex}:
 
 \begin{figure}[hp]
 \centerline{
 \includegraphics*[width=8cm]{vortex}}
-\caption{Numbering of the edges of a rectangular inlet(ICAS=1)
+\caption{Numbering of the edges of a rectangular inlet(\texttt{icas}=1)
  treated by the vortex method}\label{Fig_vortex}
 \end{figure}
 
-If ICAS=1, the user must define LLX and LLY which give the lengths of the rectangular
- pipe in the directions DIR1 and dir2.\\
-If ICAS=2, LLD represents the diameter of the circular pipe.
-If ICAS=4, UDEBIT,KDEBIT and EDEBIT are defined for each inlet, these give respectively,
+If \texttt{icas}=1, the user must define \texttt{llx} and \texttt{lly} which give
+the lengths of the rectangular pipe in the directions \texttt{dir1} and \texttt{dir2}.\\
+If \texttt{icas}=2, \texttt{lld} represents the diameter of the circular pipe.
+If \texttt{icas}=4, \texttt{udebit} ,\texttt{kdebit} and \texttt{edebit} are
+defined for each inlet, these give respectively,
 initial speed, turbulent energy level and the dissipation level. These can be used to
  obtain their magnitude using the correlations in the user routine \texttt{usclim} for
  fully developed flow in a pipe.
 
- The parameter not case dependant are defined as follows:
+ The case independant parameters are defined as follows:
 \begin{list}{*}{}
-\item ITMPL represents the indicator of the advancement in time of the vortex. If ITMPLI=1,
-the vortex will be regenerated after a fixed time of TMPLIM second (defined as ITMPLI=1).
- If ITMPLI=2, following hte data indicated in FIDCAT file, the vortex will have a variable
-life span equal to $5 \displaystyle C_\mu \displaystyle \frac{k^{\frac{3}{2}}}{\varepsilon U}$ ,
-where $C_\mu=0,09$ and $k$, $\varepsilon$ and $U$  represent respectively, turbulent energy,
-turbulent dissipation and the convective velocity in the direction normal to the inlet plane.
-
-\item XSIGMA represents the support functions used in the vortex method. They are representative
- of the eddy sizes entered in the vortex method. ISIGMA is used to define their size: if ISIGMA=1,nction with the co-ordinates XDAT and YDAT (given in the FIDCAT file). Note that using an indicator III to accelerate the calculations
- XSIGMA will be constant across the inlet face and is defined in \texttt{usvort}, if ISIGMA=2,
-nction with the co-ordinates XDAT and YDAT (given in the FIDCAT file). Note that using an indicator III to accelerate the calculations, XSIGMA will be variable and equal to the mixing length of the standard $k-\varepsilon$ model
-($\displaystyle {C_\mu}^{\frac{3}{4}} \displaystyle \frac{k^{\frac{3}{2}}}{\varepsilon}$), if
- ISIGMA=3, XSIGMA will be equal to the maximum of $L_t$ et $L_K$ where $L_t$ and $L_K$ are the $\displaystyle \frac{\partial U}{\partial y}$  $\displaystyle \frac{\partial U}{\partial y}$
- Taylor and Kolmogrov co-efficients
-($\displaystyle L_T=(5 \nu \frac{k}{\displaystyle \varepsilon})^{\frac{1}{2}}$,
-$\displaystyle L_K= 200 (\frac{\nu^3}{\varepsilon})^{\frac{1}{4}}$).
-
-\item IDELPA gives the vortex displacement method in the 2D inlet plane (the vortex method
-is a langrangian method in which the eddy centers are replaced by a set velocity). If IDELPA=1,
-the velocity displacement referred to by UD which is the vortex following a random sampling
-(a sample number r, is taken for each vortex, at each time step and for each direction and
- the center of the vortex is replaced by the 2 principle directions, $r \mbox{UD} \Delta t$ where
-$\Delta t$ is the time step of the calcualtion). If IDEPLA=2, the vortex will be convected by itself
-( with the speed given by the time step before the vortex method)
+\item \texttt{itmpl} represents the indicator of the advancement in time of the
+  vortex. If \texttt{itmpli}=1, the vortex will be regenerated after a fixed
+  time of
+  \texttt{tmplim} second (defined as \texttt{itmpli}=1).
+  If \texttt{itmpli}=2, following the data indicated in \texttt{ficvor} file,
+  the vortex will have a variable life span equal to
+  $5 \displaystyle C_\mu \displaystyle \frac{k^{\frac{3}{2}}}{\varepsilon U}$ ,
+  where $C_\mu=0,09$ and $k$, $\varepsilon$ and $U$  represent respectively, turbulent energy,
+  turbulent dissipation and the convective velocity in the direction normal to the inlet plane.
+
+\item \texttt{xsgmvo} represents the support functions used in the vortex
+  method. They are representative of the eddy sizes entered in the vortex
+  method.
+  \texttt{isgmvo} is used to define their size: if \texttt{isgmvo}=1,
+  \texttt{xsgmvo} will be constant across the inlet face and is defined in
+  \texttt{usvort}, if \texttt{isgmvo}=2, \texttt{xsgmvo} will be variable and
+  equal to the mixing length of the standard $k-\varepsilon$ model
+  ($\displaystyle {C_\mu}^{\frac{3}{4}} \displaystyle \frac{k^{\frac{3}{2}}}{\varepsilon}$), if
+  \texttt{isgmvo}=3, \texttt{xsgmvo} will be equal to the maximum of $L_t$ et
+  $L_K$ where $L_t$ and $L_K$ are the $\displaystyle \frac{\partial U}{\partial y}$
+  $\displaystyle \frac{\partial U}{\partial y}$
+  Taylor and Kolmogrov co-efficients
+  ($\displaystyle L_T=(5 \nu \frac{k}{\displaystyle \varepsilon})^{\frac{1}{2}}$,
+  $\displaystyle L_K= 200 (\frac{\nu^3}{\varepsilon})^{\frac{1}{4}}$).
+
+\item \texttt{idepvo} gives the vortex displacement method in the 2D inlet plane
+  (the vortex method is a langrangian method in which the eddy centers are
+  replaced by a set velocity). If \texttt{idepvo}=1, the velocity displacement
+  referred to by \texttt{ud} which is the vortex following a random sampling
+  (a sample number r, is taken for each vortex, at each time step and for each direction and
+  the center of the vortex is replaced by the 2 principle directions,
+  $r \mbox{ud} \Delta t$ where $\Delta t$ is the time step of the calcualtion).
+  If \texttt{idepvo}=2, the vortex will be convected by itself (with the speed
+  given by the time step before the vortex method)
 \end{list}
 
-A data file, FIDCAT, must be defined in the cases of ICAS=1,2,3, for each inlet. The data file
- must contain the following data in order ($x$, $y$, $U$, $\displaystyle \frac{\partial U}
-{\partial y}$, $k$, $\varepsilon$). The number of lines of the file is given by the integer
- NDAT. $x$ and $y$ are the co-ordinates in the inlet plane defined by the vectors DIR1 and
-DIR2. $U$, $k$ and $\varepsilon$ are respectively, the average speed normal to the inlet,
+A data file, \texttt{ficvor}, must be defined in the cases of
+\texttt{icas}=1,2,3, for each inlet. The data file must contain the following
+data in order ($x$, $y$, $U$, $\displaystyle \frac{\partial U}
+{\partial y}$, $k$, $\varepsilon$). The number of lines of the file is given by
+the integer \texttt{ndat}. $x$ and $y$ are the co-ordinates in the inlet plane
+defined by the vectors \texttt{dir1} and \texttt{dir2}. $U$, $k$ and
+$\varepsilon$ are respectively, the average speed normal to the inlet,
 the turbulent energy and the turbulent dissipation.
 $\displaystyle \frac{\partial U}{\partial y}
 $ is the derivative in the direction normal to the
- inlet boundary in the cases , ICAS=1, ICAS=2.
- Where ICAS=3 and ICAS=4 this variable is not applied (it is given the value 0)so the
- Langevin equations, used to generate fluctuations normal to the inlet plane, is de-activated
- (the flucutations normal to the inlet is 0 on both these cases). Note that the application of
- many different test of the Langevin
- equation doesn't have a notable influence on the results and that, by contrast it simply
-increases the computing time per iteration and so it decreases the random sampling which slows
- down the pressure solver. The interpolation used in the vortex method is defined by the function
- PHIDAT. An example is given at the end of \texttt{usvort} where the user can define the
-interpolation required. In the PHIDAT function, XX and YY are the co-ordinates by which the valu
-e of PHIDAT is calculated. XDAT and YDAT are the co-ordinates in the FIDCAT file. VARDAT is the
-value of the PHIDAT function with the co-ordinates XDAT and YDAT (given in the FIDCAT file). Note
- that using an indicator III accelerates the calculations(the user need not modify or delete).
- The user must also define the parameter ISUIVO wich indicates if the vortex were started at 0
- or if the file must be re-read (FICMVO).
+ inlet boundary in the cases, \texttt{icas}=1, \texttt{icas}=2.
+ Where \texttt{icas}=3 and \texttt{icas}=4 this variable is not applied
+ (it is given the value 0) so the Langevin equations, used to generate
+ fluctuations normal to the inlet plane, is de-activated
+ (the flucutations normal to the inlet is 0 on both these cases).
+ Note that the application of
+ many different test of the Langevin equation doesn't have a notable influence
+ on the results and that, by contrast it simply increases the computing time per
+ iteration and so it decreases the random sampling which slows down the pressure
+ solver. The interpolation used in the vortex method is defined by the function
+ \texttt{phidat}. An example is given at the end of \texttt{usvort} where the
+ user can define the interpolation required. In the \texttt{phidat} function,
+ \texttt{xx} and \texttt{yy} are the co-ordinates by which the value of
+ \texttt{phidat} is calculated. \texttt{xdat} and \texttt{ydat} are the
+ co-ordinates in the \texttt{ficvor} file. \texttt{vardat} is the
+ value of the \texttt{phidat} function with the co-ordinates \texttt{xdat}
+ and \texttt{ydat} (given in the \texttt{ficvor} file). Note that using an
+ indicator \texttt{iii} accelerates the calculations (the user need not modify or delete).
+ The user must also define the parameter \texttt{isuivo} which indicates if the
+ vortex were started at 0 or if the file must be re-read (\texttt{ficmvo}).
 
 \end{list}
 
 {\bf \underline{WARNING}}
 \begin{list}{$\bullet$}{}
-\item Be sure that the FIDCAT file and  the interpolation in the user function PHIDAT are
-compatible (in particular that all the entry region is covered by FIDCAT)
-\item If the user wants to use a 1D profile in the DIR2 direction, set $x$ =0 in the FIDCAT
- file and define the interpolation in PHIDAT.
+\item Be sure that the \texttt{ficvor} file and  the interpolation in the user
+  function \texttt{phidat} are compatible (in particular that all the entry
+  region is covered by \texttt{ficvor})
+\item If the user wants to use a 1D profile in the \texttt{dir2} direction,
+ set $x$ =0 in the \texttt{ficvor} file and define the interpolation in
+ \texttt{phidat}.
 \end{list}
 
 
@@ -4437,7 +5015,7 @@ compatible (in particular that all the entry region is covered by FIDCAT)
 \textit{Subroutine called every time step.}
 
 If necessary, all the variation laws related to the fluid physical
-parameters (density, viscosity, thermal diffusivity ...) are written in this
+parameters (density, viscosity, thermal diffusivity, ...) are written in this
 subroutine.
 
 The validity of the variation laws must be checked, particularly when
@@ -4448,53 +5026,56 @@ may produce negative density values).
 \begin{list}{$\bullet$}{}
 \item If one wishes to impose a density or viscosity variable in
       \texttt{usphyv}, it can be done either in the interface or in
-      \texttt{usini1}(IROVAR(IPHAS)=1, IVIVAR(IPHAS)=1).
+      \texttt{usini1}(\texttt{irovar(iphas)}=1, \texttt{ivivar(iphas)}=1).
 \item In order to impose a physical property ($\rho$, $\mu$,
       $\lambda$, $C_p$)\footnote{except for some specific physics} a reference
       value must be inputted to the interface or in \texttt{usini1}(in
       particular for $\rho$, the pressure will contain 1 part as $\rho_0 gz$)
-\item By default, the $C_p$ coefficient of the phase IPHAS and the
-      diffusivity of the scalars ISCAL ($\lambda/C_p$ for the
+\item By default, the $C_p$ coefficient of the phase \texttt{iphas} and the
+      diffusivity of the scalars \texttt{iscal} ($\lambda/C_p$ for the
       temperature) are considered as constant in time and uniform in
-      space, with the values CP0(IPHAS) and VISLS0(ISCAL) specified in
-      the interface or in \texttt{usini1}.\\
+      space, with the values \texttt{cp0(iphas)} and \texttt{visls0(iscal)}
+      specified in the interface or in \texttt{usini1}.\\
 To give a variable value to $C_p$, the user must specify it in the
-      interface or give the value 1 to ICP(IPHAS) in \texttt{usini1},
-      and complete for each cell IEL the array PROPCE(IEL,IPCCP) in
-      \texttt{usphyv}. Completing the array PROPCE(IEL,IPCCP) while
-      ICP(IPHAS)=0 induces array overwriting problems and produces wrong
-      results.
+      interface or give the value 1 to \texttt{icp(iphas)} in \texttt{usini1},
+      and complete for each cell \texttt{iel} the array
+      \texttt{propce(iel,ipccp)} in \texttt{usphyv}. Completing the array
+      \texttt{propce(iel,ipccp)} while \texttt{icp(iphas)=0} induces array
+      overwriting problems and produces wrong results.
 
 \item In the same way, to have variable diffusivities for the scalars
-      ISCAL, the user must specify it in the interface or give the value
-      1 to IVISLS(ISCAL) in \texttt{usini1}, and complete for each cell
-      IEL the array  PROPCE(IEL,IPCVSL) in \texttt{usphyv}. Completing
-      PROPCE(IEL,IPCVSL) while IVISLS(ISCAL)=0 induces memory overwriting
-      problems and produces wrong results.\\
+      \texttt{iscal}, the user must specify it in the interface or give the value
+      1 to \texttt{ivisls(iscal)} in \texttt{usini1}, and complete for each cell
+      \texttt{iel} the array \texttt{propce(iel,ipcvsl)} in \texttt{usphyv}.
+      Completing \texttt{propce(iel,ipcvsl)} while \texttt{ivisls(iscal)}=0
+      induces memory overwriting problems and produces wrong results.\\
 
 {\em Example}: If the scalars 1 and 3 have a constant and uniform
       viscosity, and if the scalars 2 and 4 have a variable viscosity,
       the following values must be imposed in \texttt{usini1}: \\
-IVISLS(1)=0, IVISLS(2)=1, IVISLS(3)=0 and IVISLS(4)=1. \\
-The indicators IVISLS(2) and IVISLS(4) are then modified automatically
-      by the code in order to reflect the rank corresponding to the
-      diffusivity of each scalar in the list of physical
+      \texttt{ivisls(1)}=0, \texttt{ivisls(2)}=1, \texttt{ivisls(3)}=0
+      and \texttt{ivisls(4)}=1. \\
+      The indicators \texttt{ivisls(2)} and \texttt{ivisls(4)} are then
+      modified automatically by the code in order to reflect the rank
+      corresponding to the diffusivity of each scalar in the list of physical
       properties\footnote{they are no longer worth 1 but stay positive
-      so that IVISLS$>$0 is synonymous with variable property}. The
-      arrays \mbox{PROPCE(IEL,IPCVSL)} in \texttt{usphyv} must then be
-      completed with IPCVSL=IPPROC(IVISLS(2)) and IPCVSL=IPPROC(IVISLS(4)). \\
+      so that \texttt{ivisls}$>$0 is synonymous with variable property}.
+      The arrays \mbox{\texttt{propce(iel,ipcvsl)}} in \texttt{usphyv} must
+      then be completed with \texttt{ipcvsl=ipproc(ivisls(2))} and
+      \texttt{ipcvsl=ipproc(ivisls(4))}. \\
 
-{\em Note}: The indicators IVISLS must not be completed in the case of
+{\em Note}: The indicators \texttt{ivisls} must not be completed in the case of
       user scalars representing the average of the square of the
       fluctuations of another scalar, because the diffusivity of a user
-      scalar JJ representing the average of the square of the
-      fluctuations of a user scalar KK comes directly from the
+      scalar \texttt{jj} representing the average of the square of the
+      fluctuations of a user scalar \texttt{kk} comes directly from the
       diffusivity of this last scalar. In particular, the diffusivity
-      of the scalar JJ is variable if the diffusivity of KK is variable.
+      of the scalar \texttt{jj} is variable if the diffusivity of \texttt{kk}
+      is variable.
 \end{list}
 
 %==================================
-\subsection{Non-standard initialisation of the variables:
+\subsection{Non-default variables initialisation:
   \textmd{\texttt{usiniv}}}
 %==================================
 
@@ -4503,20 +5084,20 @@ The indicators IVISLS(2) and IVISLS(4) are then modified automatically
 
 At the calculation beginning, the variables are initialised
 automatically by the code. Velocities and scalars are set to the value
-0 (or SCAMAX or SCAMIN if 0 is outside the acceptable scalar variation
-range), and the turbulent variables are estimated from UREF and
-ALMAX. \\
+0 (or \texttt{scamax} or \texttt{scamin} if 0 is outside the acceptable
+scalar variation range), and the turbulent variables are estimated from
+\texttt{uref} and \texttt{almax}. \\
 For $k$ in $k-\varepsilon$, $R_{ij}-\varepsilon$, v2f or $k-\omega$
 model:\\
-\texttt{RTP(IEL,IKIPH) = 1.5D0*(0.02D0*UREF(IPHAS))**2}
+{\texttt{rtp(iel,ikiph) = 1.5*(0.02*uref(iphas))**2}
 (in $R_{ij}-\varepsilon$,  $R_{ij}=\frac{2}{3}k\delta_{ij}$)\\
 For $\varepsilon$ in $k-\varepsilon$, $R_{ij}-\varepsilon$ or v2f model:\\
-\texttt{RTP(IEL,IEIPH) = RTP(IEL,IKIPH)**1.5D0*CMU/ALMAX(IPHAS)}\\
+\texttt{rtp(iel,ieiph) = rtp(iel,ikiph)**1.5*cmu/almax(iphas)}\\
 For $\omega$ in $k-\omega$ model:\\
-\texttt{RTP(IEL,IOMGIP) = RTP(IEL,IKIPH)**0.5D0/ALMAX(IPHAS)}\\
+\texttt{rtp(iel,iomgip) = rtp(iel,ikiph)**0.5/almax(iphas)}\\
 For $\varphi$ and $\overline{f}$ in v2f model:\\
-\texttt{RTP(IEL,IPHIPH) = 2.D0/3.D0}\\
-\texttt{RTP(IEL,IFBIPH) = 0.D0}
+\texttt{rtp(iel,iphiph) = 2/3}\\
+\texttt{rtp(iel,ifbiph) = 0}
 
 The subroutine \texttt{usiniv} allows if necessary to initialise some
 variables at values closer to their estimated final values, in order to
@@ -4530,35 +5111,38 @@ variable specific heat, ...) in the case of a calculation restart.
 \minititre{Note: value of the time step}
 \begin{list}{-}{}
 \item In the case of a calculation with constant and uniform time step
-      (IDTVAR=0), the value of the time step is DTREF, given in the
-      parametric file of the interface or \texttt{usini1}, the
-      calculation being whether a restart (ISUITE=1) or not (ISUITE=0).
+      (\texttt{idtvar}=0), the value of the time step is \texttt{dtref},
+      given in the parametric file of the interface or \texttt{usini1}, the
+      calculation being whether a restart (\texttt{isuite}=1) or not (
+      \texttt{isuite}=0).
 \item In the case of a calculation with non-constant time step
-      (IDTVAR=1 or 2) which is not a calculation restart (ISUITE=0), the
-      value of DTREF given in the parametric file of the interface or in
+      (\texttt{idtvar}=1 or 2) which is not a calculation restart
+      (\texttt{isuite}=0), the
+      value of \texttt{dtref} given in the parametric file of the interface or in
       \texttt{usini1} is used to initialise the time step.
 \item In the case of a calculation with non-constant time step
-      (IDTVAR=1 or 2) which is a restart (ISUITE=1) of a calculation
-      whose time step type was different (for instance, restart using a
-      variable time step of a calculation run using a constant time
-      step), the value of DTREF given in the parametric file of the
+      (\texttt{idtvar}=1 or 2) which is a restart (\texttt{isuite}=1) of a
+      calculation whose time step type was different (for instance, restart
+      using a variable time step of a calculation run using a constant time
+      step), the value of \texttt{dtref} given in the parametric file of the
       interface or in \texttt{usini1} is used to initialise the time step.
 \item In the case of a calculation with non-constant time step
-      (IDTVAR=1 or 2) which is a restart (ISUITE=1) of a calculation
-      whose time step type was the same (for instance, restart with
-      IDTVAR=1 of a calculation run with IDTVAR=1), the time step is
-      read from the restart file and the value of DTREF given in the
-      parametric file of the interface or in \texttt{usini1} is not used.
+      (\texttt{idtvar}=1 or 2) which is a restart (\texttt{isuite}=1) of a
+      calculation whose time step type was the same (for instance, restart with
+      \texttt{idtvar}=1 of a calculation run with \texttt{idtvar}=1), the time
+      step is read from the restart file and the value of \texttt{dtref} given
+      in the parametric file of the interface or in \texttt{usini1} is not used.
 \end{list}
-It follows that for a calculation with non-constant time step (IDTVAR=1
-or 2) which is a restart (ISUITE=1) of a calculation in which IDTVAR had
-the same value, DTREF does not allow to modify the time step. The user
-subroutine \texttt{usiniv} allows to modify the array DT which contains
-the value of the time step read from the restart file (array whose size
-is NCELET, defined at the cell centers whatever the chosen time step type).
+It follows that for a calculation with non-constant time step (\texttt{idtvar}=1
+or 2) which is a restart (\texttt{isuite}=1) of a calculation in which
+\texttt{idtvar} had the same value, \texttt{dtref} does not allow to modify the
+time step. The user subroutine \texttt{usiniv} allows to modify the array
+\texttt{dt} which contains the value of the time step read from the restart file
+(array whose size is \texttt{ncelet}, defined at the cell centers whatever the
+chosen time step type).
 
 {\em WARNING: to initialise the variables in the framework of a
-specific physics module} (NSCAPP.GT.0) {\em one of the subroutines
+specific physics module} (\texttt{nscapp.gt.0}) {\em one of the subroutines
 \texttt{usebui}, \texttt{usd3pi}, \texttt{uslwci} or \texttt{uscpiv}
 should be used instead of \texttt{usiniv} (depending on the activated module).}
 
@@ -4584,16 +5168,17 @@ directory works as follows:
 
 \begin{list}{-}{}
 \item Positionning of the probes (only at the first passage): the index
-      II varies between 1 and the number of probes. The coordinates XX,
-      YY and ZZ of each probe are given. The subroutine \texttt{findpt}
-      gives then the number ICAPT(II)\index{ICAPT} of the cell center
+      \texttt{ii} varies between 1 and the number of probes. The coordinates
+      \texttt{xx}, \texttt{yy} and \texttt{zz} of each probe are given.
+      The subroutine \texttt{findpt}
+      gives then the number \texttt{icapt(ii)\index{icapt}} of the cell center
       which is the closest to the defined probe.
 
 \item Opening of the output files (only at the first pass): in the
       version given as example, the program opens a different file for
-      all the NVAR variables. FICUSH(J) contains the name of the
-      J\raisebox{1ex}{\small th} file and IMPUSH(J) its unit number
-      (IMPUSH is initialised by default so that the user has at his
+      all the \texttt{nvar} variables. \texttt{ficush(j)} contains the name of the
+      J\raisebox{1ex}{\small th} file and \texttt{impush(j)} its unit number
+      (\texttt{impush} is initialised by default so that the user has at his
       disposal specific unit numbers and does not run the risk to overwrite an
       already open file).
 
@@ -4609,7 +5194,7 @@ directory works as follows:
 {\em WARNING: The use of {\em\texttt{ushist}} neither erases nor replaces the
 parameters given in the interface or in {\em\texttt{usini1}}. Therefore, in
 the case of the use of {\em\texttt{ushist}}, and to avoid the creation
-of useless files, the user should set {\em NCAPT=0} in the interface or
+of useless files, the user should set {\em \texttt{ncapt}=0} in the interface or
 in {\em \texttt{usini1}} to deactivate the automatic production of
 chronological records}.\\
 In addition, {\em \texttt{ushist}} generates supplementary result
@@ -4627,17 +5212,15 @@ calculation. The interface allows the specification of the name of the copied
 \textit{Subroutine called every time step}
 
 This subroutine is used to add user source terms to the Navier-Stokes
-equations. For each phase IPHAS, it is called three times every time
-step, once for each velocity component (IVAR is successively worth
-IU(IPHAS), IV(IPHAS) and IW(IPHAS)). At each passage, the user must
-complete if necessary the arrays CRVIMP and CRVEXP expressing
-respectively the implicit and explicit part of the source term. If
- no other source terms apart from IVAR=IU(IPHAS)for example, are require
-d, CRVIMP and CRVEXP must be read over and their 2 other components,
- IVAR=IV(IHPAS) and IVAR=IW(IPHAS) must be cancelled.
-
-{\em WARNING: The decomposition of the soure terms of CVRIMP/CRVEXP is
- different to that of the code ESTET: be careful of reflex working}
+equations. For each phase \texttt{iphas}, it is called three times every time
+step, once for each velocity component (\texttt{ivar} is successively worth
+\texttt{iu(iphas)}, \texttt{iv(iphas)} and \texttt{iw(iphas)}).
+At each passage, the user must complete if necessary the arrays \texttt{crvimp}
+and \texttt{crvexp} expressing respectively the implicit and explicit part of
+the source term. If no other source terms apart from \texttt{ivar=iu(iphas)} for
+example, are required, \texttt{crvimp} and \texttt{crvexp} must be read over and
+their 2 other components, \texttt{ivar=iv(ihpas)} and \texttt{ivar=iw(iphas)}
+must be cancelled.
 
 Let us assume that the user source terms modify the equation of a
 variable $\varphi$ in the following way:
@@ -4659,8 +5242,8 @@ follows:
 +\ldots = \ldots + \Omega_iS_{impl,i}\varphi_i^{(n)} + \Omega_iS_{expl,i}
 \end{displaymath}
 The user needs therefore to provide the following values:\\
-$\text{CRVIMP}_i=\Omega_iS_{impl,i}$\\
-$\text{CRVEXP}_i=\Omega_iS_{expl,i}$
+$\text{\texttt{crvimp}}_i=\Omega_iS_{impl,i}$\\
+$\text{\texttt{crvexp}}_i=\Omega_iS_{expl,i}$
 
 In practice, it is essential that the term
 $\displaystyle \left(\frac{\rho_i\Omega_i}{\Delta
@@ -4674,13 +5257,13 @@ the equation really taken into account by the code is the following:
 \end{displaymath}
 To make the ``implicitation'' effective, the source term decomposition
 between implicit and explicit parts will be done by the user who must
-make sure $\text{CRVIMP}_i=\Omega_iS_{impl,i}$ is always negative
+make sure $\text{\texttt{crvimp}}_i=\Omega_iS_{impl,i}$ is always negative
 (otherwise the solved equation remains right, but there is no
 ``implicitation'').
 
 {\em WARNING: When the second-order in time with extrapolation of the
-source terms\footnote{indicator \texttt{ISNO2T} for the velocity,
-\texttt{ISTO2T} for the turbulence and \texttt{ISSO2T} for the scalars}
+source terms\footnote{indicator \texttt{isno2t} for the velocity,
+\texttt{ISTO2T} for the turbulence and \texttt{isso2t} for the scalars}
 is activated, it is no longer possible to test the sign of $S_{impl,i}$,
 because of coherence reasons (for more details, the user may refer to
 the theoretical and computer documentation \cite{theory} of the
@@ -4708,16 +5291,16 @@ We want to make it implicit using the following method:
 \end{eqnarray*}
 
 The user must therefore specify:\\
-$\displaystyle\text{CRVIMP}_i=\Omega_i\frac{dF}{d\varphi}(\varphi_i^{(n)})$\\
-$\displaystyle\text{CRVEXP}_i=
+$\displaystyle\text{\texttt{crvimp}}_i=\Omega_i\frac{dF}{d\varphi}(\varphi_i^{(n)})$\\
+$\displaystyle\text{\texttt{crvexp}}_i=
 \Omega_i\left[F(\varphi_i^{(n)})-\frac{dF}{d\varphi}(\varphi_i^{(n)})\times\varphi_i^{(n)}\right]$
 
 \underline{\em Example}:\\
 If the equation is
 $\displaystyle \rho\frac{\partial\varphi}{\partial t}=-K\varphi^2$,
 the user must set:\\
-$\text{CRVIMP}_i=-2K\Omega_i\varphi_i^{(n)}$\\
-$\text{CRVEXP}_i=K\Omega_i[\varphi_i^{(n)}]^2$
+$\text{\texttt{crvimp}}_i=-2K\Omega_i\varphi_i^{(n)}$\\
+$\text{\texttt{crvexp}}_i=K\Omega_i[\varphi_i^{(n)}]^2$
 
 
 
@@ -4732,14 +5315,15 @@ in v2f.}
 
 This subroutine is used to add source terms to the transport equations
 related to the turbulent kinetics energy $k$ and to the turbulent
-dissipation $\varepsilon$ (for each phase IPHAS).
+dissipation $\varepsilon$ (for each phase \texttt{iphas}).
 This subroutine is called every time step, once for each phase (the
 treatment of the two variables $k$ and $\varepsilon$ is made
-simultaneously). The user is expected to provide the arrays CRKIMP and
-CRKEXP for $k$ and CREIMP and CREEXP for $\varepsilon$. These arrays are
-similar to the arrays CRVIMP and CRVEXP given for the velocity in the
-user subroutine \texttt{ustsns}. The way of making implicit the
-resulting source terms is the same as the one presented in \texttt{ustsns}.For $\varphi$ and $\bar{f}$
+simultaneously). The user is expected to provide the arrays \texttt{crkimp} and
+\texttt{crkexp} for $k$ and \texttt{creimp} and \texttt{creexp} for
+$\varepsilon$. These arrays are similar to the arrays \texttt{crvimp} and
+\texttt{crvexp} given for the velocity in the user subroutine \texttt{ustsns}.
+The way of making implicit the resulting source terms is the same as the one
+presented in \texttt{ustsns}. For $\varphi$ and $\bar{f}$
 in v2f, see \texttt{ustsv2}, \S\ref{prg_ustsv2}.
 
 
@@ -4753,16 +5337,17 @@ in v2f, see \texttt{ustsv2}, \S\ref{prg_ustsv2}.
 
 This subroutine is used to add source terms to the transport equations
 related to the Reynolds stress variables $R_{ij}$ and to the turbulent
-dissipation $\varepsilon$ (for each phase IPHAS).
+dissipation $\varepsilon$ (for each phase \texttt{iphas}).
 This subroutine is called 7 times every time step and for each phase
 (once for each Reynolds stress component and once for the
-dissipation). The user must provide the arrays CRVIMP and CRVEXP for the
-variable IVAR (referring successively to IR11(IPHAS), IR22(IPHAS),
-IR33(IPHAS), IR12(IPHAS), IR13(IPHAS), IR23(IPHAS) and
-IEP(IPHAS)). These arrays are similar to the arrays CRVIMP and CRVEXP
-given for the velocity in the user subroutine \texttt{ustsns}. The way
-of making implicit the resulting source terms is the same as that
-presented in \texttt{ustsns}.
+dissipation). The user must provide the arrays \texttt{crvimp} and
+\texttt{crvexp} for the variable \texttt{ivar} (referring successively to
+\texttt{ir11(iphas)}, \texttt{ir22(iphas)}, \texttt{ir33(iphas)},
+\texttt{ir12(iphas)}, \texttt{ir13(iphas)}, \texttt{ir23(iphas)} and
+\texttt{iep(iphas)}). These arrays are similar to the arrays \texttt{crvimp}
+and \texttt{crvexp} given for the velocity in the user subroutine
+\texttt{ustsns}. The method for impliciting the resulting source terms is the
+same as that presented in \texttt{ustsns}.
 
 %==================================
 \subsection{User source terms for $\varphi$ and $\overline{f}$:
@@ -4774,12 +5359,12 @@ presented in \texttt{ustsns}.
 
 This subroutine is used to add source terms to the transport equations
 related to the variables $\varphi$ and $\overline{f}$ of the v2f
-$\varphi$-model (for each phase IPHAS). This subroutine is called twice
+$\varphi$-model (for each phase \texttt{iphas}). This subroutine is called twice
 every time step and for each phase (once for $\varphi$ and once for
-$\overline{f}$). The user is expected to provide the arrays CRVIMP and
-CRVEXP for IVAR referring successively to IPHI(IPHAS) and
-IFB(IPHAS). Concerning $\varphi$, these arrays are similar to the arrays
-CRVIMP and CRVEXP given for the velocity in the user subroutine
+$\overline{f}$). The user is expected to provide the arrays \texttt{crvimp} and
+\texttt{crvexp} for \texttt{ivar} referring successively to \texttt{iphi(iphas)}
+and \texttt{ifb(iphas)}. Concerning $\varphi$, these arrays are similar to the arrays
+\texttt{crvimp} and \texttt{crvexp} given for the velocity in the user subroutine
 \texttt{ustsns}. Concerning $\overline{f}$, the equation is slightly
 different:
 \begin{displaymath}
@@ -4792,8 +5377,8 @@ In finite volume formulation, the solved system is written:
 \Omega_iS_{expl,i} \right)
 \end{displaymath}
 The user must then specify:\\
-$\text{CRVIMP}_i=\Omega_iS_{impl,i}$\\
-$\text{CRVEXP}_i=\Omega_iS_{expl,i}$
+$\text{\texttt{crvimp}}_i=\Omega_iS_{impl,i}$\\
+$\text{\texttt{crvexp}}_i=\Omega_iS_{expl,i}$
 
 The way of making implicit the resulting source terms is the same as the
 one presented in \texttt{ustsns}.
@@ -4807,14 +5392,15 @@ one presented in \texttt{ustsns}.
 
 This subroutine is used to add source terms to the transport equations
 related to the turbulent kinetics energy $k$ and to the specific
-dissipation rate $\omega$ (for each phase IPHAS). This subroutine is
+dissipation rate $\omega$ (for each phase \texttt{iphas}). This subroutine is
 called every time step, once for each phase (the treatment of the two
 variables $k$ and $\omega$ is made simultaneously).The user is expected
-to provide the arrays CRKIMP and CRKEXP for the variable $k$ the arrays
-CRWIMP and CRWEXP for the variable $\omega$. These arrays are
-similar to the arrays CRVIMP and CRVEXP given for the velocity in the
-user subroutine \texttt{ustsns}. The way of making implicit the
-resulting source terms is the same as the one presented in \texttt{ustsns}.
+to provide the arrays \texttt{crkimp} and \texttt{crkexp} for the variable
+$k$ the arrays \texttt{crwimp} and \texttt{crwexp} for the variable $\omega$.
+These arrays are similar to the arrays \texttt{crvimp} and \texttt{crvexp}
+given for the velocity in the user subroutine \texttt{ustsns}. The way of
+impliciting the resulting source terms is the same as the one presented in
+\texttt{ustsns}.
 
 %==================================
 \subsection{User source terms for the user scalars: \textmd{\texttt{ustssc}}}
@@ -4825,10 +5411,12 @@ resulting source terms is the same as the one presented in \texttt{ustsns}.
 
 This subroutine is used to add source terms to the transport equations
 related to the user scalars (passive or not, average of the square of
-the fluctuations of a scalar ...). In the same way as
+the fluctuations of a scalar, ...). In the same way as
 \texttt{ustsns}, this subroutine is called every time step, once for
-each user scalar. The user needs to provide the arrays CRVIMP and CRVEXP
-related to each scalar. CVIMP and CRVEXP must be set to 0 for the scalars on which it is not wished for the user source term term to be applied (the arrays are initially at 0 at each inlet in the subroutine.)
+each user scalar. The user needs to provide the arrays \texttt{crvimp}
+and \texttt{crvexp} related to each scalar. \texttt{cvimp} and \texttt{crvexp}
+must be set to 0 for the scalars on which it is not wished for the user source
+term term to be applied (the arrays are initially at 0 at each inlet in the subroutine.)
 
 %==================================
 \subsection{Management of the pressure drops: \textmd{\texttt{uskpdc}}}
@@ -4838,7 +5426,7 @@ related to each scalar. CVIMP and CRVEXP must be set to 0 for the scalars on whi
 \textit{Subroutine called every time step.}
 
 This subroutine is called three times every time step and for each phase
-IPHAS.
+\texttt{iphas}.
 
 The tensor representing the pressure drops is supposed to be symmetric
 and positive.
@@ -4846,29 +5434,30 @@ and positive.
 \begin{list}{$\bullet$}{}
 \item During the first call, all the cells are checked to know the
       number of cells in which a pressure drop is present for the phase
-      IPHAS. This number is called NCEPDP\index{NCEPDP} in
+      \texttt{iphas}. This number is called \texttt{ncepdp\index{ncepdp}} in
       \texttt{uskpdc} (and corresponds to
-      NCEPDC(IPHAS)\index{NCEPDC}). It is used to lay out the arrays
+      \texttt{ncepdc(iphas)\index{ncepdc}}). It is used to lay out the arrays
       related to the pressure drops. If there is no pressure drop,
-      NCEPDP must be equal to zero (it is the default value, and the
+      \texttt{ncepdp} must be equal to zero (it is the default value, and the
       rest of the subroutine is then useless).
 
 \item During the second call, all the cells are checked again to
-      complete the array ICEPDP\index{ICEPDP} whose size is
-      NCEPDP. \mbox{ICEPDC(IELPDC)} is the number of the
-      IELPDC\raisebox{1ex}{\small th} cell containing pressure drops (for
+      complete the array \texttt{icepdp\index{icepdp}} whose size is
+      \texttt{ncepdp}. \mbox{\texttt{icepdc(ielpdc)}} is the number of the
+      \texttt{ielpdc}\raisebox{1ex}{\small th} cell containing pressure drops (for
       the current phase).
 
 \item During the third call, all the cells containing pressure drops
       (for the current phase) are checked in order to complete the array
       containing the components of the tensor of pressure drops
-      \mbox{CKUPDC(NCEPDP,6)}\index{CKUPDC}. This array is so that
+      \mbox{\texttt{ckupdc(ncepdp,6)}\index{ckupdc}}. This array is so that
       the equation related to the velocity may be written:
 \begin{displaymath}
 \rho\frac{\partial}{\partial t}\vect{u}=\ldots -\rho\tens{K}\ind{pdc}\cdot\vect{u}
 \end{displaymath}
 The tensor components are given in the following order (in the general
-      reference frame): K11, K22, K33, K12, K13, K23 with K12, K13 and K23
+      reference frame): \texttt{k11}, \texttt{k22}, \texttt{k33}, \texttt{k12},
+      \texttt{k13}, \texttt{k23} with \texttt{k12}, \texttt{k13} and \texttt{k23}
       being zero if the tensor is diagonal.
 
 \end{list}
@@ -4895,7 +5484,7 @@ $\Gamma$ is the mass source term expressed in $kg.m^{-3}.s^{-1}$.
 The presence of a mass source term modifies the evolution equation of
 the other variables, too. Let $\varphi$ be a any solved variable apart
 from the pressure (velocity component, turbulent energy, dissipation,
-scalar ...). Its evolution equation becomes:
+scalar, ...). Its evolution equation becomes:
 \begin{displaymath}
 \rho\frac{\partial \varphi}{\partial t} + \ldots = \ldots + \Gamma(\varphi_i-\varphi)
 \end{displaymath}
@@ -4925,42 +5514,44 @@ This subroutine is called three times every time step (for each phase).
 \begin{list}{$\bullet$}{}
 \item During the first call, all the cells are checked to know the
       number of cells containing a mass source term for the current
-      phase IPHAS. This number is called NCESMP\index{NCESMP} in
+      phase \texttt{iphas}. This number is called \texttt{ncesmp\index{ncesmp}} in
       \texttt{ustsma} (and corresponds to
-      NCETSM(IPHAS)\index{NCETSM}). It is used to lay out the arrays
+      \texttt{ncetsm(iphas)\index{ncetsm}}). It is used to lay out the arrays
       related to the mass sources. If there is no mass source,
-      NCESMP must be equal to zero (it is the default value, and the
+      \texttt{ncesmp} must be equal to zero (it is the default value, and the
       rest of the subroutine is then useless).
 
 \item During the second call, all the cells are checked again to
-      complete the array ICETSM\index{ICETSM} whose dimension is
-      NCESMP. \mbox{ICETSM(IELTSM)} is the number of the
-      IELTSM\raisebox{1ex}{\small th} cell containing a mass source (for
+      complete the array \texttt{icetsm\index{icetsm}} whose dimension is
+      \texttt{ncesmp}. \mbox{\texttt{icetsm(ieltsm)}} is the number of the
+      \texttt{ieltsm}\raisebox{1ex}{\small th} cell containing a mass source (for
       the current phase).
 
 \item During the third call, all the cells containing mass sources are
       checked in order to complete the arrays
-      \mbox{ITYPSM(NCESMP,NVAR)}\index{ITYPSM} and
-      \mbox{SMACEL(NCESMP,NVAR)}\index{SMACEL}:\\
-- ITYPSM(IELTSM,IVAR) is the flow type associated with the variable IVAR
-      in the IELSTM\raisebox{1ex}{\small th} cell containing a mass
-      source.\\
-\hspace*{1cm}ITYPSM=0: $\varphi_i=\varphi^{(n+1)}$ condition\\
-\hspace*{1cm}ITYPSM=1: imposed $\varphi_i$ condition\\
-\hspace*{1cm}ITYPSM is not used for IVAR=IPR(IPHAS)\\
-- SMACEL(IELTSM,IPR(IPHAS)) is the value of the mass source term $\Gamma$, in
+      \mbox{\texttt{itypsm(ncesmp,nvar)}\index{itypsm}} and
+      \mbox{\texttt{smacel(ncesmp,nvar)}\index{smacel}}:\\
+- \texttt{itypsm(ieltsm,ivar)} is the flow type associated with the variable
+      \texttt{ivar} in the \texttt{ielstm}\raisebox{1ex}{\small th} cell
+      containing a mass source.\\
+\hspace*{1cm}\texttt{itypsm}=0: $\varphi_i=\varphi^{(n+1)}$ condition\\
+\hspace*{1cm}\texttt{itypsm}=1: imposed $\varphi_i$ condition\\
+\hspace*{1cm}\texttt{itypsm} is not used for \texttt{ivar=ipr(iphas)}\\
+- \texttt{(ieltsm,ipr(iphas))} is the value of the mass source term $\Gamma$, in
 $kg.m^{-3}.s^{-1}$.\\
-- SMACEL(IELTSM,IVAR), for IVAR different from IPR(IPHAS), is the value
-      of $\varphi_i$ for the variable IVAR in the
-      IELSTM\raisebox{1ex}{\small th} cell containing a mass source.\\
+- \texttt{smacel(ieltsm,ivar)}, for \texttt{ivar} different from
+\texttt{ipr(iphas)}, is the value
+of $\varphi_i$ for the variable \texttt{ivar} in the
+\texttt{ielstm}\raisebox{1ex}{\small th} cell containing a mass source.\\
 
 \minititre{Notes}
-$\bullet$ If ITYPSM(IELTSM,IVAR)=0, SMACEL(IELTSM,IVAR) is not used.\\
-$\bullet$ If $\Gamma$=SMACEL(IELTSM,IPR(IPHAS))$<$0, mass is removed from
+$\bullet$ If \texttt{itypsm(ieltsm,ivar)=0}, \texttt{smacel(ieltsm,ivar)}
+      is not used.\\
+$\bullet$ If $\Gamma$=\texttt{smacel(ieltsm,ipr(iphas))}$<$0, mass is removed from
       the system, and \CS considers automatically a
       $\varphi_i=\varphi^{(n+1)}$ condition, whatever the values given
-      to ITYPSM(IELTSM,IVAR) and SMACEL(IELTSM,IVAR) (the extraction of a
-      variable is done at ambient value).
+      to \texttt{itypsm(ieltsm,ivar)} and \texttt{smacel(ieltsm,ivar)}
+      (the extraction of a variable is done at ambient value).
 \end{list}
 
 
@@ -4982,20 +5573,20 @@ This subroutine takes into account the affected thermal inertia by a wall.
  Some boundary faces are treated as a solid wall with a given thickness, on
  which the code resolves an undimensional equation for the heat conduction.
  The coupling between the 1D module and the fluid works in a similar way to
- the coupling with the \syrthes . In construction, the user is not able to
+ the coupling with the \syrthes. In construction, the user is not able to
  account for the heat transfer between different parts of the wall. A physical
  analysis of each problem, case by case is required to evaluate the relevance
  of its usage by way of a report of the simple conditions (temperature, zero-flux
  ) or a coupling with \syrthes.\\
 
-The use of this code requires that theres is only 1 phase (NPHAS=1) and that
- the thermal scalar is defined as (ISCALT$>0$).
+The use of this code requires that theres is only 1 phase (\texttt{nphas=1})
+and that the thermal scalar is defined as (\texttt{iscalt}$>0$).
 
 {\em WARNING: The 1D thermal module is developped assuming the thermal scalar
  as a temperature. If the thermal scalar is an enthalpy, the code calls the
  subroutine \texttt{usthht} for each transfer of information between the fluid
  and the wall in order to convert the enthalpy to temperature and vice-versa.
- This function has not been tested and is firmly discouraged . If the thermal
+ This function has not been tested and is firmly discouraged. If the thermal
  variable is the total (compressible) energy, the thermal module will not work.}
 
 \bigskip
@@ -5004,54 +5595,56 @@ This procedure  is called twice,on initialisation and again at each time step.
 
 \begin{list}{$\bullet$}{}
 \item The 1st call (initialisation) all the boundary faces that will be treated
- as a coupled wall are marked out. This figure is written noted as NFKPT1D. It
- applies dimension to the arrays in the thermal module.  NFKPT1D will be at 0
- if there are no coupled faces (it is in fact the default value, the remainer
-of the subroutine is not used in this case).  The parameter ISUIT1 also need to
- be defined, this indicates if the temperature of the wall must be initialised
- or written in the file (stored in the variable FILMT1).
-\item The 2nd call (initialisation)again concern the wall faces, it completes
- the IFPT1D array of dimension NFPT1D.  \mbox{IFPT1D(IFBT1D)}is the number
-IFBT1D\raisebox{1ex}{\small th} boundary faces coupled with the thermal module
- of a 1D wall. The discretional parameters are then completed for a pseudo
+ as a coupled wall are marked out. This figure is written noted as
+ \texttt{nfkpt1d}. It applies dimension to the arrays in the thermal module.
+ \texttt{nfkpt1d} will be at 0 if there are no coupled faces (it is in fact the
+ default value, the remainer of the subroutine is not used in this case).
+ The parameter \texttt{isuit1} also need to be defined, this indicates if the
+ temperature of the wall must be initialised or written in the file (stored in
+ the variable \texttt{filmt1}).
+\item The 2nd call (initialisation) again concern the wall faces, it completes
+ the \texttt{ifpt1d} array of dimension \texttt{nfpt1d}.
+ \mbox{\texttt{ifpt1d(ifbt1d)}} is the number
+ \texttt{ifbt1d}\raisebox{1ex}{\small th} boundary faces coupled with the thermal module
+ of a 1D wall. The directional parameters are then completed for a pseudo
  wall associated to each face
 \begin{list}{-}{}
-\item NPPT1D(NFPT1D)\index{NPPT1D}: number of cells in the 1D mesh associated
+\item \texttt{nppt1d(nfpt1d)\index{nppt1d}}: number of cells in the 1D mesh associated
  to the pseudo wall.
-\item EPPT1D(NFPT1D)\index{EPPT1D}: thickness of the pseudo wall.
-\item RGPT1D(NFPT1D)\index{RGPT1D}: geometery of the pseudo wall mesh (refined
- as a fluid if RGT1D is smaller than 1)
-\item TPPT1D(NFPT1D)\index{TPPT1D}: initialisation temperature of the wall
+\item \texttt{eppt1d(nfpt1d)\index{eppt1d}}: thickness of the pseudo wall.
+\item \texttt{rgpt1d(nfpt1d)\index{rgpt1d}}: geometery of the pseudo wall mesh (refined
+ as a fluid if \texttt{rgt1d} is smaller than 1)
+\item \texttt{tppt1d(nfpt1d)\index{tppt1d}}: initialisation temperature of the wall
 (uniform in thickness). In the course of the calculation, the array stores the
  temperature of the solid at the fluid/solid interface.
 \end{list}
 
-Other than for re-reading a file (FICMT1), TPPT1D is not used.  NPPT1D, IFPT1D,
-RGPT1D and EPPT1D are compared to data from the follow-up file and they must
-be identical.
+Other than for re-reading a file (\texttt{ficmt1}), \texttt{tppt1d} is not used.
+\texttt{nppt1d}, \texttt{ifpt1d}, \texttt{rgpt1d} and \texttt{eppt1d} are
+compared to data from the follow-up file and they must be identical.
 
-{\em WARNING: The test in IFPT1D implicilty assumes that the array is completed
- in ascending order (i.e IFPT1D(II)$>$IFPT1D(JJ) if II$>$JJ. This will be the
- case if the coupled faces are defined starting from the unique loop on the
+{\em WARNING: The test in \texttt{ifpt1d} implicilty assumes that the array is completed
+ in ascending order (i.e \texttt{ifpt1d(ii)}$>$\texttt{ifpt1d(jj)} if ii$>$jj.
+ This will be the case if the coupled faces are defined starting from the unique loop on the
 boundary faces (as in the example). If this is not the case, contact the development
  team to short circuit the test.}
 
 \item The 3rd call (at each time step) is for the confirmation that all the arrays
  involving physical parameter and external boundary conditions have been completed.
 \begin{list}{-}{}
-\item ICLT1D(NFPT1D)\index{ICLT1D}:Typical boundary condition at the external
- (pseudo) wall: Dirichlet condition (ICLT1D=1) or flux condition (ICLT1D=3)
-\item TEPT1D(NFPT1D)\index{TEPT1D}: External temperature of the pseudo wall in the
+\item \texttt{iclt1d(nfpt1d)\index{iclt1d}}:Typical boundary condition at the external
+ (pseudo) wall: Dirichlet condition (\texttt{iclt1d}=1) or flux condition (\texttt{iclt1d}=3)
+\item \texttt{tept1d(nfpt1d)\index{tept1d}}: External temperature of the pseudo wall in the
  Dirichlet case.
-\item HEPT1D(NFPT1D)\index{HEPT1D}: External coefficient of transfer in the pseudo
+\item \texttt{hept1d(nfpt1d)\index{hept1d}}: External coefficient of transfer in the pseudo
  wall under Dirichlet conditions(en $W.m^{-2}.K^.$).
-\item FEPT1D(NFPT1D)\index{NFPT1D}: External heat flux in the pseudo wall  under
+\item \texttt{fept1d(nfpt1d)\index{nfpt1d}}: External heat flux in the pseudo wall  under
  the flux conditions(en $W.m^{-2}$,negative value for energy entering the wall)
-\item XLMT1D(NFPT1D)\index{XLMT1D}: Conductivity$\lambda$ of the wall uniform
+\item \texttt{xlmt1d(nfpt1d)\index{xlmt1d}}: Conductivity$\lambda$ of the wall uniform
 in thickness, (in $W.m^{-1}.K^{-1}$).
-\item RCPT1D(NFPT1D)\index{RCPT1D}: Volumetric heat capacity $\rho C_p$ of the
+\item \texttt{rcpt1d(nfpt1d)\index{rcpt1d}}: Volumetric heat capacity $\rho C_p$ of the
 wall uniform in thickness in $J.m^{-3}.K^{-1}$)
-\item DTPT1D(NFPT1D)\index{DTPT1D}: Physical time step ascociated with the solved
+\item \texttt{dtpt1d(nfpt1d)\index{dtpt1d}}: Physical time step ascociated with the solved
  1D equation of the pseudo wall(which can be different from the time step in the
  calculation)
 \end{list}
@@ -5081,32 +5674,32 @@ particular to active the ale module
 \texttt{usstr1} allows to specify for the structure module the
 following pieces of information:
 \begin{list}{-}{}
-  \item number of structure (NBSTRU).
+  \item number of structure (\texttt{nbstru}).
   \item initial value of deplacement, velocity and acceleration
-    (XSTR0, XSTREQ and VSTR0).
+    (\texttt{xstr0}, \texttt{xstreq} and \texttt{vstr0}).
 \end{list}
 
-Below is a list of the different variables that might be modified :
+Below is a list of the different variables that might be modified:
 
 \begin{list}{$\bullet$}{}
 
-\item{NBSTRU} \\
+\item{\texttt{nbstru}} \\
 {the number of structures}
 
-\item{IDFSTR(I)} \\
+\item{\texttt{idfstr(i)}} \\
 {index of the structure, where I is the index of the face}
 
-\item{XSTR0(I,K)} \\
-{ initial position of a structure, where I is the dimension of space
-and K the index of the structure }
+\item{\texttt{xstr0(i,k)}} \\
+{initial position of a structure, where \texttt{i} is the dimension of space
+and \texttt{k} the index of the structure}
 
-\item{XSTREQ(I,K)} \\
-{position of balance of a structure, where I is the dimension of space
-and K the index of the structure }
+\item{\texttt{xstreq(i,k)}} \\
+{position of balance of a structure, where \texttt{i} is the dimension of space
+and \texttt{k} the index of the structure}
 
-\item{VSTR0(I,K)} \\
-{initial velicity of a structure, where I is the dimension of space
-and K the index of the structure }
+\item{\texttt{vstr0(i,k)}} \\
+{initial velicity of a structure, where \texttt{i} is the dimension of space
+and \texttt{k} the index of the structure }
 \end{list}
 
 %==================================
@@ -5119,7 +5712,7 @@ and K the index of the structure }
 
 \minititre{Subroutine \texttt{usalcl}}
 The use of \texttt{usalcl} is obligatory to run a calculation using
-the ale module just as it is in \texttt{usini1} . The way of using it
+the ale module just as it is in \texttt{usini1}. The way of using it
 is the same as the way of using \texttt{usclim} in the framework of
 standard calculations, that is to say a loop on the boundary faces
 marked out by their colour (or more generally by a property of their
@@ -5128,25 +5721,26 @@ each variable are defined.
 
 The main numerical variables are described below.
 
-\variab{IALTYB}{IALTYB(NFABOR)}{IA}{In the ale module, the user
+\variab{ialtyb}{ialtyb(nfabor)}{ia}{In the ale module, the user
 defines the velocity mesh from the colour of the boundary faces, or
-more generally from their properties (colours, groups ...), from the
+more generally from their properties (colours, groups, ...), from the
 boundary conditions defined in \texttt{usclim}, or even from their
-coordinates. To do so, the array IALTYB(NFABOR) gives for each face
-IFAC the velocity mesh boundary condition types marked out by the key
-words IVIMPO\index{IVIMPO}, IGLISS\index{IGLISS}, IBFIXE\index{IBFIXE}
+coordinates. To do so, the array \texttt{ialtyb(nfabor)} gives for each face
+\texttt{ifac} the velocity mesh boundary condition types marked out by the key
+words \texttt{ivimpo\index{ivimpo}}, \texttt{igliss\index{igliss}},
+\texttt{ibfixe\index{ibfixe}}
 
 \begin{list}{$\bullet$}{}
 
-\item If IALTYB=IVIMPO : imposed velocity.
+\item If \texttt{ialtyb=ivimpo}: imposed velocity.
 
 \begin{list}{$\rightarrow$}{}
 \item In the case where all the nodes of a face have a imposed displacement,
-it is not necessary to fill the tables with boundary conditions
-velocity mesh for this face, they will be erased. In the other case,
-the value of the Dirichlet must be given in RCODCL(IFAC,IVAR,1) for
-every value of IVAR (IUMA, IVMA and IWMA) The other boxes of RCODCL
-and ICODCL are completed automatically.
+ it is not necessary to fill the tables with boundary conditions
+ velocity mesh for this face, they will be erased. In the other case,
+ the value of the Dirichlet must be given in \texttt{rcodcl(ifac,ivar,1)} for
+ every value of \texttt{ivar} (\texttt{iuma}, \texttt{ivma} and \texttt{iwma})
+ The other boxes of \texttt{rcodcl} and \texttt{icodcl} are completed automatically.
 
  The tangential velocity mesh is taken like a tape speed under the
  boundary conditions of wall for the fluid, except if wall velocity
@@ -5154,12 +5748,12 @@ and ICODCL are completed automatically.
  it is this speed which is considered).
 \end{list}
 
- \item if IALTYB(NFAC) = IBFIXE : fixe wall
+ \item if \texttt{ialtyb(nfac) = ibfixe}: fixed wall
 \begin{list}{$\rightarrow$}{}
  \item the velocity is null.
 \end{list}
 
- \item if IALTYB(NFAC) = IGLISS :  slice wall
+ \item if \texttt{ialtyb(nfac) = igliss}:  sliding wall
 \begin{list}{$\rightarrow$}{}
 \item the tangential velocity is not used.
 \end{list}
@@ -5179,7 +5773,7 @@ and ICODCL are completed automatically.
 The use of \texttt{usstr2}
 is obligatory to run a calculation using the ale module with a structure module.
 
-For each structure, the system that will be solved is :
+For each structure, the system that will be solved is:
 
 \begin{equation}
 M.x^{''}+C.x^{''}+K.(x-x_{0} = 0
@@ -5188,31 +5782,31 @@ M.x^{''}+C.x^{''}+K.(x-x_{0} = 0
 where
 
 \begin{list}{-}{}
- \item $M$ is the mass stucture (XMSTRU).
- \item $C$ is the dumping coefficient of the stucture (XCSTRU).
- \item $K$ is the spring constant or force constant of the stucture (XKSTRU).
+ \item $M$ is the mass stucture (\texttt{xmstru}).
+ \item $C$ is the dumping coefficient of the stucture (\texttt{xcstru}).
+ \item $K$ is the spring constant or force constant of the stucture (\texttt{xkstru}).
  \item $x_{0}$ is the initial position
 \end{list}
 
-Below is a list of the different variables that might be modified :
+Below is a list of the different variables that might be modified:
 
 \begin{list}{$\bullet$}{}
 
-\item{XMSTRU(I,J,K)} \\
-{the mass stucture of the structure, where I,J is the array of mass
-structure and K the index of the structure.  }
+\item{\texttt{xmstru(i,j,k})} \\
+{the mass stucture of the structure, where \texttt{i},\texttt{j} is
+the array of mass structure and \texttt{k} the index of the structure.}
 
-\item{XCSTRU(I,J,K)}\\
-{dumping coefficient of the stucture, where I,J is the array of
-dumping coefficient and K the index of the structure.  }
+\item{\texttt{xcstru(i,j,k})}\\
+{dumping coefficient of the stucture, where \texttt{i},\texttt{j} is the array of
+dumping coefficient and \texttt{k} the index of the structure.}
 
-\item{XKSTRU(I,J,K)}\\
-{spring constant of the stucture, where I,J is the array of spring
-constant and K the index of the structure.  }
+\item{\texttt{xkstru(i,j,k)}}\\
+{spring constant of the stucture, where \texttt{i},\texttt{j} is the array of spring
+constant and \texttt{k} the index of the structure.}
 
-\item{FORSTR(I,K)}\\
-{force vector of the stucture, where I is the force vector and K the
-index of the structure.  }
+\item{\texttt{forstr(i,k)}}\\
+{force vector of the stucture, where \texttt{i} is the force vector and
+\texttt{k} the index of the structure.}
 \end{list}
 
 
@@ -5223,13 +5817,14 @@ index of the structure.  }
 \textit{Subroutine called every time step.}
 
 This subroutine is used to modify the calculation of the turbulent
-viscosity of the phase IPHAS, {\em i.e.} $\mu_t$ in $kg.m^{-1}.s^{-1}$
+viscosity of the phase \texttt{iphas}, {\em i.e.} $\mu_t$ in $kg.m^{-1}.s^{-1}$
 (this piece of information, at the mesh cell centers, is conveyed by the
-variable PROPCE(IEL,IPCVST), with IPCVST = IPPROC(IVISCT(IPHAS))). The
+variable \texttt{propce(iel,ipcvst)}, with
+\texttt{ipcvst =  ipproc(ivisct(iphas))}). The
 subroutine is called at the beginning of every time step, after the
 calculation of the physical parameters of the flow and of the
 ``conventional'' value of $\mu_t$ corresponding to the chosen turbulence
-model (indicator ITURB(IPHAS)).\\
+model (indicator \texttt{iturb(iphas)}).\\
 {\em WARNING: The calculation of the turbulent viscosity being a
 particularly sensible stage, a wrong use of {\em\texttt{usvist}} may
 seriously distort the results.}
@@ -5295,13 +5890,13 @@ $kg.m^{-1}.s^{-1}$ may be written in \CS:
 $\overline{\Delta}$ is the width of the implicit filter, defined at the
 cell $\Omega_i$ by \\
 $\overline{\Delta}=XLESFL(IPHAS)*(ALES(IPHAS)*|\Omega_i|)^{BLES(IPHAS)}$
-\index{XLESFL}\index{ALES}\index{BLES}.
+\index{xlesfl}\index{ales}\index{bles}.
 
-In the case of the Smagorinsky model (ITURB(IPHAS)=40), $C$ is a
+In the case of the Smagorinsky model (\texttt{iturb(iphas)=40}), $C$ is a
 constant which is worth $C_s^2$. $C_s^2$ is the so-called Smagorinsky
-constant and is stored the variable $CSMAGO$\index{CSMAGO}.
+constant and is stored the variable \texttt{$csmago$\index{csmago}}.
 
-In the case of the dynamic model (ITURB(IPHAS)=41), $C$ is variable in
+In the case of the dynamic model (\texttt{iturb(iphas)=41}), $C$ is variable in
 time and in space. It is determined by
 $\displaystyle C=\frac{M_{ij}L{ij}}{M_{kl}M_{kl}}$.
 
@@ -5346,48 +5941,49 @@ radiation module.
 This subroutine may be used to modify ``manually'' the mesh vertices
 coordinates, \textit{i.e.} the array:
 \begin{list}{$\bullet$}{}
-\item \mbox{XYZNOD(3,NNOD)} (vertices coordinates)
+\item \mbox{\texttt{xyznod(3,nnod)}} (vertex coordinates)
 \end{list}
 
 {\em WARNING: Caution must be exercised when using this subroutine
 along with periodicity. Indeed, the periodicity parameters are not
 updated accordingly, meaning that the periodicity may be unadapted
-after one changes the mesh vertices coordinates. It is particularly
+after one changes the mesh vertex coordinates. It is particularly
 true when one rescales the mesh.}\\
 
 %==================================
-\subsection{Management of the post-processing intermediary outputs: \textmd{\texttt{usnpst}}}
+\subsection{Management of the post-processing intermediate outputs: \textmd{\texttt{usnpst}}}
 %==================================
 
 \noindent
 \textit{Subroutine called every time step(even if the user hasn't moved it to the SRC directroy).}
 
 This subroutine is used to determine when post-processing outputs will be
-generated. By default, it tests if the current time step number (NTCABS) is a
-multiple of the chosen output frequency (NTCHR). If it is the case, the
-indicator IIPOST turns to 1, which triggers the writing of an
-intermediary output. If the frequency is given a negative value, the
+generated. By default, it tests if the current time step number (\texttt{ntcabs}) is a
+multiple of the chosen output frequency (\texttt{ntchr}). If it is the case, the
+indicator \texttt{iipost} turns to 1, which triggers the writing of an
+intermediate output. If the frequency is given a negative value, the
 test is not done.
 
 For instance, a user who wants to generate post-processing outputs (also
 called ``chronological outputs'') at
 the time step number 36 and around the physical time $t$=12 seconds may
 use the following test:\\
+
 \begin{tabular}{ll}
-\mbox{\texttt{~~~~~~~IIPOST = 0}}
-                          & ~~~~~ No output by default. \\
-\mbox{\texttt{~~~~~~~IF (NTCABS.EQ.36) THEN}}
-                          & ~~~~~ If the current time step is the 36$^{\text{th}}$,\\
-\mbox{\texttt{~~~~~~~~~~IIPOST=1}}
-                          & ~~~~~ ~~~generate an output. \\
-\mbox{\texttt{~~~~~~~ENDIF}}
-                          & ~~~~~ End of the test on the time step number. \\
-\mbox{\texttt{~~~~~~~IF (ABS(TTCABS-12.D0).LE.0.01D0) THEN}}
-                          & ~~~~~ If the physical time is 12s +/- 0.01s,\\
-\mbox{\texttt{~~~~~~~~~~IIPOST=1}}
-                          & ~~~~~ ~~~generate an output. \\
-\mbox{\texttt{~~~~~~~ENDIF}}
-                          & ~~~~~ End of the test on the physical time. \\
+\mbox{\texttt{iipost = 0}}
+                    & No output by default. \\
+\mbox{\texttt{if (ntcabs.eq.36) then}}
+                    & If the current time step is the 36$^{\text{th}}$,\\
+\mbox{\texttt{~~~iipost=1}}
+                    & ~~~generate an output. \\
+\mbox{\texttt{endif}}
+                    & End of the test on the time step number. \\
+\mbox{\texttt{if (abs(ttcabs-12.d0).le.0.01d0) then}}
+                    & If the physical time is 12s +/- 0.01s,\\
+\mbox{\texttt{~~~iipost=1}}
+                    & ~~~generate an output. \\
+\mbox{\texttt{endif}}
+                    & End of the test on the physical time. \\
 \end{tabular}
 
 In any case, a post-processing output is generated after the last time
@@ -5424,8 +6020,7 @@ defining a ``writer'' are as follows:
                \item {\em EnSight Gold} ({\em EnSight} also accepted)
                \item {\em MED\_fichier} ({\em MED} also accepted)
                \item {\em CGNS}
-               \item {\em text} (readable with a text editor, mesh output,
-                     no variables output, for diagnosis purposes only).
+               \item {\em text} (mesh output, no variables output, for debug only).
          \end{list}
 The options are not case-sensitive, so {\em ensight} or {\em cgns} are valid, too.
        \item \texttt{optfmt}: character string containing a list of
@@ -5453,7 +6048,7 @@ The options are not case-sensitive, so {\em ensight} or {\em cgns} are valid, to
        \item \texttt{indmod}: indicates if the post-processing (i.e. visualization) meshes
              (or ``parts'') are:
         \begin{list}{$\rightarrow$}{}
-               \item 0 fixed (``classic'' case)
+               \item 0 fixed (usual case)
                \item 1 deformable (the vertex positions may vary over time)
                \item 2 modifiable:  (the lists of cells or faces
                      defining these ``parts'' can be changed over time)
@@ -5475,7 +6070,7 @@ corresponds to the usual post-processing case defined {\em via}
 The user chooses the numbers corresponding to the post-processing
 meshes and ``writers'' he wants to create. These numbers must be positive
 integers. It is possible to assocate a user mesh with the standard
-post-processing case (-1), or to ask for outputs concerning the boundary
+post-processing case (-1), or to ask for outputs regarding the boundary
 faces (-2) associated with a user ``writer''.
 
 For safety, the output frequency and the possibility to modify the
@@ -5502,7 +6097,7 @@ of one of these by assigning the corresponding category to the user
 mesh. By default, a meshe's category is identical to its number, so
 the category associated with the main volume output is -1, and that
 associated with the main boundary output is -2. A category may be assigned
-using the\texttt{pstcat} subroutine.
+using the \texttt{pstcat} subroutine.
 
 It is also possible to define an alias of a post-processing mesh. An
 alias shares all the attributes of a ``part'' (without duplication),
@@ -5567,11 +6162,11 @@ argument \texttt{imodif} must be given the value 1.If this argument
  so there is no need to modify these "parts" within the definate and
  modifiable assembly (if in doubt, let imodif=1).
 
-It can be noticed that the indicator \texttt{itypps} can be used to know
+Note that the \texttt{itypps} flag can be used to determine
 whether the current post-processing mesh contains cells
 (\texttt{itypps(1)} = 1), internal faces (\texttt{itypps(2)} = 1), or
-boundary faces (\texttt{itypps(2)} = 1)globally (as the number of local cells
- or faces of a processor could be 0, and that doesn't provide sufficient
+boundary faces (\texttt{itypps(2)} = 1) globally (as the number of local cells
+ or faces of a processor could be 0, it doesn't provide sufficient
  information).
  If at any time, a given part contains no element of any type, all the
  values of itypes will be 0 and that number cannot be put in the part
@@ -5581,9 +6176,9 @@ faces\footnote{It is not expressly forbidden to associate cells with the
 
 The user may refer to the example, in which cells are selected according
 to a given criterion: \\
-- For a volumetric ``part'', cells for which the velocity exceeds a certain
+- For a volume ``part'', cells for which the velocity exceeds a certain
 value. \\
-- For a surface ``part'', internal faces which are between a cell in
+- For a surface ``part'', interior faces which are between a cell in
 which the velocity exceeds a certain value and a cell in which the
 velocity is lower than this value (and boundary faces neighboring a
 cell in which the velocity exceeds this value). This surface
@@ -5612,12 +6207,12 @@ The output of a given variable is generated by means of a call to
        \item \texttt{idimt}: dimension of the variable (3 for a vector, 1 for
              a scalar).
        \item \texttt{ientla}: indicates if the stored arrays are
-             ``intertwined'' or not:
+             ``interlaced'' or not:
         \begin{list}{$\rightarrow$}{}
-               \item 0: not intertwined, in the form ${\{x_1, x_2, ..., x_n,
+               \item 0: not interlaced, in the form ${\{x_1, x_2, ..., x_n,
                          y_1, y_2, ..., y_n, z_1, z_2, ..., z_n\}}$ \\
                          (case of all variables defined in \texttt{rtp}).
-               \item 1: intertwined, in the form ${\{x_1, y_1, z_1, x_2, y_2, z_2, ..., x_n, y_n, z_n\}}$ \\
+               \item 1: interlaced, in the form ${\{x_1, y_1, z_1, x_2, y_2, z_2, ..., x_n, y_n, z_n\}}$ \\
                          (case of the geometric parameters, like
                      \texttt{xyzcen}, \texttt{surfbo}, ...).
          \end{list}
@@ -5691,7 +6286,7 @@ Several examples are given:
 
 \item Printing of a moment
 
-\item Utilisation of the tool
+\item Utilisation of utility
       subroutines useful in the case of a parallel calculation
       (calculation of a sum on the processors, of a maximum, ...)
 \end{list}
@@ -5706,7 +6301,7 @@ The thermal balance example is particularly interesting.
       modifications to do, as indicated in the subroutine).
 \item It shows how to make a sum on all the subdomains in the framework
       of a parallel calculation (see the calls to the subroutines
-      \texttt{PAR*}).
+      \texttt{par*}).
 \item It shows the precautions to take before doing some operations in
       the framework of periodic or parallel calculations (in particular
       when we want to calculate the gradient of a variable or to have
@@ -5766,7 +6361,7 @@ concerning the thermal scalar which may have been defined in the
 subroutine \texttt{usclim} will be modified by the radiation module
 according to the data given in \texttt{usray2} (cf. \S\ref{fvm_selector}).\\
 A zone number must be given to each boundary face \footnote{this must be less
- than the maximum allowable by the code, \texttt{NOZRDM}. This is fixed at 2000
+ than the maximum allowable by the code, \texttt{nozrdm}. This is fixed at 2000
  in \texttt{radiat.h} and cannot be modified.}and, specifically for
 the walls, a boundary condition type and an initialisation temperature
 (in Kelvin). The initialisation temperature is only used to make the
@@ -5783,19 +6378,19 @@ each boundary face. There are five different types:
 
 \begin{list}{$\bullet$}{}
 
-\item \textbf{ITPIMP}: wall face with imposed temperature,
+\item \texttt{\textbf{itpimp}}: wall face with imposed temperature,
 
-\item \textbf{IPGRNO}: for a gray or black wall face, calculation of the
+\item \texttt{\textbf{ipgrno}}: for a gray or black wall face, calculation of the
       temperature by means of a flux balance,
 
-\item \textbf{IPREFL}: for a reflecting wall face, calculation of the
-      temperature by means of a flux balance,
-. This is fixed at 2000 in \texttt{radiat.h} and cannot be modified.
+\item \texttt{\textbf{iprefl}}: for a reflecting wall face, calculation of the
+      temperature by means of a flux balance.
+ This is fixed at 2000 in \texttt{radiat.h} and cannot be modified.
 
-\item \textbf{IFGRNO}: gray or black wall face to which a conduction
+\item \texttt{\textbf{ifgrno}}: gray or black wall face to which a conduction
       flux is imposed,
 
-\item \textbf{IFREFL}: reflecting wall face to which a conduction
+\item \texttt{\textbf{ifrefl}}: reflecting wall face to which a conduction
       flux is imposed, which is equivalent to impose this flux directly
       to the fluid.
 
@@ -5807,35 +6402,36 @@ the code needs to be given some supplementary pieces of information:
 
 \begin{list}{$\bullet$}{}
 
-\item \textbf{ITPIMP}: the array TINTP must be completed with the
-      imposed temperature value and the array EPSP must be completed
-      with the emissivity value (strictly positive).
+\item \texttt{\textbf{itpimp}}: the array \texttt{tintp} must be completed
+      with the imposed temperature value and the array \texttt{epsp} must
+      be completed with the emissivity value (strictly positive).
 
-\item \textbf{IPGRNO}: must be given: an initialisation temperature in
-      the array TINTP, the wall emissivity (strictly positive, in EPSP),
-      thickness (in EPAP), thermal conductivity (in XLAMP) and an
-      external temperature (in TEXTP) in order to calculate a conduction
-      flux across the wall.
+\item \texttt{\textbf{ipgrno}}: must be given: an initialisation temperature in
+      the array \texttt{tintp}, the wall emissivity (strictly positive, in
+      \texttt{epsp}), thickness (in \texttt{epap}), thermal conductivity
+      (in \texttt{xlamp}) and an external temperature (in \texttt{textp})
+      in order to calculate a conduction flux across the wall.
 
-\item \textbf{IPREFL}: must be given: an initialisation temperature (in
-      TINTP), the wall thickness (in EPAP) and thermal conductivity (in
-      XLAMP) and an external temperature (in TEXTP).
+\item \texttt{\textbf{iprefl}}: must be given: an initialisation temperature (in
+      \texttt{tintp}), the wall thickness (in \texttt{epap}) and thermal conductivity (in
+      \texttt{xlamp}) and an external temperature (in \texttt{textp}).
 
-\item \textbf{IFGRNO}: must be given: an initialisation temperature (in
-      TINTP), the wall emissivity (in EPSP) and the conduction flux (in
-      $W/m^2$ whatever the thermal scalar, enthalpy or temperature) in
-      the array RCODCL. The value of RCODCL is positive when the
+\item \texttt{\textbf{ifgrno}}: must be given: an initialisation temperature (in
+      \texttt{tintp}), the wall emissivity (in \texttt{epsp}) and the conduction
+      flux (in $W/m^2$ whatever the thermal scalar, enthalpy or temperature) in
+      the array \texttt{rcodcl}. The value of \texttt{rcodcl} is positive when the
       conduction flux is directed from the inside of the fluid domain to the
       outside (for instance, when the fluid heats the walls). If the
       conduction flux is null, the wall is adiabatic.
 
-\item \textbf{IFREFL}: must be given: an initialisation temperature (in
-      TINTP) and the conduction flux (in $W/m^2$ whatever the thermal
-      scalar) in the array RCODCL. The value of RCODCL is positive when the
-      conduction flux is directed from the inside of the fluid domain to the
-      outside (for instance, when the fluid heats the walls). If the
-      conduction flux is null, the wall is adiabatic. The flux received
-      by RCODCL is directly imposed as boundary condition for the fluid.
+\item \texttt{\textbf{ifrefl}}: must be given: an initialisation temperature (in
+      \texttt{tintp}) and the conduction flux (in $W/m^2$ whatever the thermal
+      scalar) in the array \texttt{rcodcl}. The value of \texttt{rcodcl} is
+      positive when the conduction flux is directed from the inside of the
+      fluid domain to the outside (for instance, when the fluid heats the
+      walls). If the conduction flux is null, the wall is adiabatic. The flux
+      received by \texttt{rcodcl} is directly imposed as boundary condition for
+      the fluid.
 
 \end{list}
 
@@ -5893,19 +6489,19 @@ subroutine. In this case, {\em \texttt{usray4}} is replaced by {\em
 
 
 \noindent
-The value of the argument MODE allows to know in which direction the
+The value of the argument \texttt{mode} allows to know in which direction the
 conversion will be made:
 \begin{list}{$\bullet$}{}
 
-\item \textbf{MODE = 1}: the fluid enthalpy in the cell must be
+\item \texttt{\textbf{mode = 1}}: the fluid enthalpy in the cell must be
       converted into temperature (in Kelvin),
 
-\item \textbf{MODE = -1}: the wall temperature (TEXT or TPAROI, in
-      Kelvin) must be converted into enthalpy.
+\item \texttt{\textbf{mode = -1}}: the wall temperature (\texttt{text}
+      or \texttt{tparoi}, in Kelvin) must be converted into enthalpy.
 
 \end{list}
 %
-{\em WARNING: the value of MODE is passed as argument and must not be
+{\em WARNING: the value of \texttt{mode} is passed as argument and must not be
 modified by the user.}\\
 
 
@@ -5920,92 +6516,94 @@ modified by the user.}\\
 This is one of the three subroutines which must be obligatory completed
 by the user in order to use a specific physics module.
 At the moment, \CS allows to use two ``pulverised coal'' modules
-(lagrangian coupling or not), two ``gas combustion'' modules, two
+(Lagrangian coupling or not), two ``gas combustion'' modules, two
 ``electric'' modules and one ``compressible'' module. To activate one of
 these modules, the user needs to complete one (and only one) of the
-indicators IPPMOD(I.....)\index{IPPMOD} in the subroutine
-\texttt{usppmo}. By default, all the indicators IPPMOD(I.....) are
+indicators \texttt{ippmod(i.....)\index{ippmod}} in the subroutine
+\texttt{usppmo}. By default, all the indicators \texttt{ippmod(i.....)} are
 initialised at -1, which means that no specific physics is activated.
 
 \begin{list}{$\bullet$}{}
        \item Diffusion flame in the framework of ``3 points'' rapid complete
-             chemistry: indicator {\bf IPPMOD(ICOD3P\index{ICOD3P})}
+             chemistry: indicator {\bf \tt ippmod(icod3p\index{icod3p})}
         \begin{list}{$\rightarrow$}{}
-               \item IPPMOD(ICOD3P) = 0 adiabatic conditions
-               \item IPPMOD(ICOD3P) = 1 permeatic conditions (enthalpy
+               \item \texttt{ippmod(icod3p)} = 0 adiabatic conditions
+               \item \texttt{ippmod(icod3p)} = 1 permeatic conditions (enthalpy
                      transport)
-               \item IPPMOD(ICOD3P) =-1 module not activated
+               \item \texttt{ippmod(icod3p)} =-1 module not activated
          \end{list}
-        \item Eddy Break Up pre-mixed flame: indicator {\bf
-             IPPMOD(ICOEBU\index{ICOEBU})}
+        \item Eddy Break Up pre-mixed flame: indicator {\bf \tt
+             ippmod(icoebu\index{icoebu})}
          \begin{list}{$\rightarrow$}{}
-                \item IPPMOD(ICOEBU\index{ICOEBU}) = 0 adiabatic
+                \item \texttt{ippmod(icoebu\index{icoebu})} = 0 adiabatic
                       conditions at constant richness
-                \item IPPMOD(ICOEBU) = 1 permeatic conditions at
+                \item \texttt{ippmod(icoebu)} = 1 permeatic conditions at
                       constant richness
-                \item IPPMOD(ICOEBU) = 2 adiabatic conditions at
+                \item \texttt{ippmod(icoebu)} = 2 adiabatic conditions at
                       variable richness
-                \item IPPMOD(ICOEBU) = 3 permeatic conditions at
+                \item \texttt{ippmod(icoebu)} = 3 permeatic conditions at
                       variable richness
-                \item IPPMOD(ICOEBU) =-1 module not activated
+                \item \texttt{ippmod(icoebu)} =-1 module not activated
          \end{list}
-        \item Libby-Williams pre-mixed flame: indicator {\bf IPPMOD(ICOLWC\index{ICOLWC})}
+        \item Libby-Williams pre-mixed flame: indicator {\bf \tt ippmod(icolwc\index{icolwc})}
          \begin{list}{$\rightarrow$}{}
-               \item IPPMOD(ICOLWC)=0 two peak model with adiabiatic conditions.
-               \item IPPMOD(ICOLWC)=1 two peak model with permeatic conditions.
-               \item IPPMOD(ICOLWC)=2 three peak model with adiabiatic conditions.
-               \item IPPMOD(ICOLWC)=3 three peak model with permeatic conditions.
-               \item IPPMOD(ICOLWC)=4 four peak model with adiabiatic conditions.
-               \item IPPMOD(ICOLWC)=5 four peak model with permeatic condintions.
-               \item IPPMOD(ICOLWC)=-1 module not activated.
+               \item \texttt{ippmod(icolwc)}=0 two peak model with adiabiatic conditions.
+               \item \texttt{ippmod(icolwc)}=1 two peak model with permeatic conditions.
+               \item \texttt{ippmod(icolwc)}=2 three peak model with adiabiatic conditions.
+               \item \texttt{ippmod(icolwc)}=3 three peak model with permeatic conditions.
+               \item \texttt{ippmod(icolwc)}=4 four peak model with adiabiatic conditions.
+               \item \texttt{ippmod(icolwc)}=5 four peak model with permeatic condintions.
+               \item \texttt{ippmod(icolwc)}=-1 module not activated.
           \end{list}
         \item Multi-coals and multi-classes pulverised coal combustion:
-              indicator {\bf IPPMOD(ICP3PL\index{ICP3PL})}
+              indicator {\bf \tt ippmod(icp3pl\index{icp3pl})}
               The number of different coals must be inferior or equal to
-              NCHARM\index{NCHARM} = 3. The number of particle size
-             classes NCLPCH\index{NCLPCH}(ICHA) for the coal ICHA, must
-             be inferior or equal to NCPCMX\index{NCPCMX} = 10.
+              \texttt{ncharm\index{ncharm}} = 3. The number of particle size
+             classes \texttt{nclpch\index{nclpch}(icha)} for the coal
+             \texttt{icha}, must
+             be inferior or equal to \texttt{ncpcmx\index{ncpcmx}} = 10.
          \begin{list}{$\rightarrow$}{}
-                \item IPPMOD(ICP3PL) = 0 imbalance between the
+                \item \texttt{ippmod(icp3pl)} = 0 imbalance between the
                       temperature of the continuous and the solid phases
-                \item IPPMOD(ICP3PL) = 1 otherwise
-                \item IPPMOD(ICP3PL) =-1 module not activated
+                \item \texttt{ippmod(icp3pl)} = 1 otherwise
+                \item \texttt{ippmod(icp3pl)} =-1 module not activated
          \end{list}
         \item Lagrangian modeling of multi-coals and
              multi-classes pulverised coal combustion:
-                 indicator {\bf IPPMOD(ICPL3C\index{ICPL3C})}
+                 indicator {\bf \tt ippmod(icpl3c\index{icpl3c})}
               The number of different coals must be inferior or equal to
-              NCHARM\index{NCHARM} = 3. The number of particle size
-             classes NCLPCH\index{NCLPCH}(ICHA) for the coal ICHA, must
-             be inferior or equal to NCPCMX\index{NCPCMX} = 10.
+              \texttt{ncharm\index{ncharm}} = 3. The number of particle size
+             classes \texttt{nclpch\index{nclpch}(icha)} for the coal
+             \texttt{icha}, must be inferior or equal to
+             \texttt{ncpcmx\index{ncpcmx}} = 10.
          \begin{list}{$\rightarrow$}{}
-                \item IPPMOD(ICPL3C) = 1 coupling with the lagrangian
+                \item \texttt{ippmod(icpl3c)} = 1 coupling with the Lagrangian
                       module, with transport of $H_2$
-                \item IPPMOD(ICPL3C) =-1 module not activated
+                \item \texttt{ippmod(icpl3c)} =-1 module not activated
          \end{list}
        \item Electric arc module (Joule effect and Laplace forces):
-             indicator {\bf IPPMOD(IELARC\index{IELARC})}
+             indicator {\bf \tt ippmod(ielarc\index{ielarc})}
         \begin{list}{$\rightarrow$}{}
-               \item IPPMOD(IELARC) = 1 determination of the magnetic field by
+               \item \texttt{ippmod(ielarc)} = 1 determination of the magnetic field by
                      means of the Ampere's theorem (not available)
-               \item IPPMOD(IELARC) = 2 determination of the magnetic
+               \item \texttt{ippmod(ielarc)} = 2 determination of the magnetic
                      field by means of the vector potential
-               \item IPPMOD(IELARC) =-1 module not activated
+               \item \texttt{ippmod(ielarc)} =-1 module not activated
          \end{list}
        \item Joule effect module (Laplace forces not taken into account):
-             indicator {\bf IPPMOD(IELJOU\index{IELJOU})}
+             indicator {\bf \tt ippmod(ieljou\index{ieljou})}
         \begin{list}{$\rightarrow$}{}
-               \item IPPMOD(IELJOU) = 1 use of a real potential
-               \item IPPMOD(IELJOU) = 2 use of a complex potential
-               \item IPPMOD(IELJOU) = 3 use of real potential and specific boundary conditions for transformers.
-               \item IPPMOD(IELJOU) = 4 use of complex potential and specific boundary conditions for transformers.
-               \item IPPMOD(IELJOU) =-1 module not activated
+               \item \texttt{ippmod(ieljou)} = 1 use of a real potential
+               \item \texttt{ippmod(ieljou)} = 2 use of a complex potential
+               \item \texttt{ippmod(ieljou)} = 3 use of real potential and specific boundary conditions for transformers.
+               \item \texttt{ippmod(ieljou)} = 4 use of complex potential and specific boundary conditions for transformers.
+               \item \texttt{ippmod(ieljou)} =-1 module not activated
          \end{list}
-       \item Compressible module: indicator {\bf
-             IPPMOD(ICOMPF\index{ICOMPF})}
+       \item Compressible module: indicator {\bf \tt
+             ippmod(icompf\index{icompf})}
         \begin{list}{$\rightarrow$}{}
-               \item IPPMOD(ICOMPF) = 0 module activated
-               \item IPPMOD(ICOMPF) =-1 module not activated
+               \item \texttt{ippmod(icompf)} = 0 module activated
+               \item \texttt{ippmod(icompf)} =-1 module not activated
          \end{list}
 
 \end{list}
@@ -6016,7 +6614,7 @@ same time.}
 In the framework of the gas combustion modeling, the user may impose
 his own enthalpy-temperature tabulation (conversion law). He needs then
 to give the
-value zero to the indicator INDJON\index{INDJON} (the default value
+value zero to the indicator \texttt{indjon\index{indjon}} (the default value
 being 1). For more details, the user may refer to the following note
 (thermo-chemical files).
 
@@ -6025,7 +6623,7 @@ The user must not forget to place in the directory DATA the
 thermo-chemical file \texttt{dp\_FCP}, \texttt{dp\_C3P}, \texttt{dp\_C3PSJ} or
 \texttt{dp\_ELE} (depending on the specific physics module he activated)
 and to specify the name of this file in the variable
-THERMOCHEMISTRY\_DATA\index{THERMOCHEMISTRY\_DATA} in the launch script
+THERMOCHEMISTRY\_DATA in the launch script
 (for instance: THERMOCHEMISTRY\_DATA''dp\_C3P''). Some example files
 are placed in the directory \texttt{DATA/THCH} at the creation of the
 study case. Their content is described below.
@@ -6042,45 +6640,38 @@ study case. Their content is described below.
 \small{
 \begin{tabular}{|c|c|c|c|} \hline
  Lines  &Examples of values &        Variables             & Observations                                     \\ \hline
-  1     &         5         &          NGAZE\index{NGAZE}  & Number of current species                        \\ \hline
-  2     &        10         &           NPO\index{NPO}     & Number of points for the                         \\
+  1     &         5         &  \texttt{ngaze\index{ngaze}} & Number of current species                        \\ \hline
+  2     &        10         &   \texttt{npo\index{npo}}    & Number of points for the                         \\
         &                   &                              & enthalpy-temperature tabulation                  \\ \hline
-  3     &       300.        &          TMIN\index{TMIN}    & Temperature inferior limit                       \\
+  3     &       300.        &  \texttt{tmin\index{tmin}}   & Temperature inferior limit                       \\
         &                   &                              & for the tabulation                               \\ \hline
-  4     &      3000.        &          TMAX\index{TMAX}    & Temperature superior limit                       \\
+  4     &      3000.        &  \texttt{tmax\index{tmax}}   & Temperature superior limit                       \\
         &                   &                              & for the tabulation                               \\ \hline
   5     &                   &                              & Empty line                                       \\ \hline
-  6     & CH4 O2 CO2 H2O N2 &  NOMCOE\index{NOMCOE}(NGAZE) & List of the current species                      \\ \hline
-  7     &         0         &         IRAYPP\index{IRAYPP} & 0: no radiation                                  \\
-        &                   &                              & 1: calculation of the absorption coefficient     \\
-        &                   &                              & CKABS\index{CKABS} from the absorption           \\
-        &                   &                              & coefficient KABSE of the current species         \\
-        &                   &                              & 2: calculation using Modak                       \\
-        &                   &                              & 3: like 1 but P-1 model                          \\
-        &                   &                              & 4: like 2 but P-1 model                          \\ \hline
-  8     &.35 .35 .35 .35 .35&  KABSE\index{KABSE}(NGAZE)   & Absorption coefficient                           \\
+  6     & CH4 O2 CO2 H2O N2 &  \texttt{nomcoe\index{nomcoe}}(\texttt{ngaze}) & List of the current species                      \\ \hline
+  7     &.35 .35 .35 .35 .35&  \texttt{kabse\index{kabse}}(\texttt{ngaze})   & Absorption coefficient                           \\
         &                   &                              & of  the current species                          \\ \hline
-  9     &         4         &          NATO\index{NATO}    & Number of elemental species                      \\ \hline
- 10     &.012  1  0  1  0  0& WMOLAT\index{WMOLAT}(NATO),  & Molar mass of the elemental                      \\
- 11     &.001  4  0  0  2  0&                              & species (first column)                           \\
- 12     &.016  0  2  2  1  0&ATGAZE\index{ATGAZE}(NGAZE,NATO)& Composition of the current species             \\
- 13     &.014  0  0  0  0  2&                              & as a function of the elemental species           \\
-        &                   &                              & (NGAZE following columns)                        \\ \hline
- 14     &         3         &          NGAZG\index{NGAZG}  & Number of global species                         \\
-        &                   &                              & Here, NGAZG = 3 (Fuel, Oxidiser and Products)    \\ \hline
- 15     &  1. 0. 0. 0. 0.   &                              & Composition of the global species as a           \\
- 16     &  0. 1. 0. 0. 3.76 &COMPOG\index{COMPOG}(NGAZE,NGAZG)& fonction of the current species of the line 6 \\
- 17     &  0. 0. 1. 2. 7.52 &                              & In the order: Fuel (line 15),                    \\
+  8     &         4         &  \texttt{nato\index{nato}}   & Number of elemental species                      \\ \hline
+  9     &.012  1  0  1  0  0& \texttt{wmolat\index{wmolat}}(\texttt{nato}),  & Molar mass of the elemental                      \\
+ 10     &.001  4  0  0  2  0&                              & species (first column)                           \\
+ 11     &.016  0  2  2  1  0&\texttt{atgaze\index{atgaze}}(\texttt{ngaze},\texttt{nato})& Composition of the current species             \\
+ 12     &.014  0  0  0  0  2&                              & as a function of the elemental species           \\
+        &                   &                              & (\texttt{ngaze} following columns)                        \\ \hline
+ 13     &         3         &  \texttt{ngazg\index{ngazg}} & Number of global species                         \\
+        &                   &                              & Here, \texttt{ngazg} = 3 (Fuel, Oxidiser and Products)    \\ \hline
+ 14     &  1. 0. 0. 0. 0.   &                              & Composition of the global species as a           \\
+ 15     &  0. 1. 0. 0. 3.76 &\texttt{compog\index{compog}}(\texttt{ngaze},\texttt{ngazg})& fonction of the current species of the line 6 \\
+ 16     &  0. 0. 1. 2. 7.52 &                              & In the order: Fuel (line 15),                    \\
         &                   &                              & Oxidiser (line 16) and Product (line 17)         \\ \hline
- 18     &         1         &          NRGAZ\index{NRGAZ}  & Number of global reactions                       \\
-        &                   &                              & Here NRGAZ = 1 (always equal to 1                \\
+ 17     &         1         &  \texttt{nrgaz\index{nrgaz}} & Number of global reactions                       \\
+        &                   &                              & Here \texttt{nrgaz} = 1 (always equal to 1                \\
         &                   &                              & in this version)                                 \\ \hline
- 19     &                   & IGFUEL\index{IGFUEL}(NRGAZ), & Numbers of the global species concerned by       \\
-        & 1 2 -1 -9.52 10.52&  IGOXY\index{IGOXY}(NRGAZ),  & the stoichiometric ratio                         \\
+ 18     &                   & \texttt{igfuel\index{igfuel}}(\texttt{nrgaz}), & Numbers of the global species concerned by       \\
+        & 1 2 -1 -9.52 10.52&  \texttt{igoxy\index{igoxy}}(\texttt{nrgaz}),  & the stoichiometric ratio                         \\
         &                   &                              & (first 2 integers)                               \\
-        &                   &STOEG\index{STOEG}(NGAZG,NRGAZ)& Stoichiometry in reaction global species.       \\
+        &                   &\texttt{stoeg\index{stoeg}}(\texttt{ngazg},\texttt{nrgaz})& Stoichiometry in reaction global species.       \\
         &                   &                               & Negative for the reactants (here                \\
-        &                   &                               & ``Fuel'' and ``Oxidiser'') et positive for      \\
+        &                   &                               & ``Fuel'' and ``Oxidiser'') and positive for      \\
         &                   &                               & the products (here ``Products'')                \\ \hline
 \end{tabular}
 }
@@ -6098,30 +6689,22 @@ study case. Their content is described below.
 \small{
 \begin{tabular}{|c|c|c|c|} \hline
  Lines  &            Examples of values     &        Variables            & Observations                                \\ \hline
-   1    &                    6              &           NPO               & Number of tabulation points                 \\ \hline
+   1    &                    6              &   \texttt{npo}              & Number of tabulation points                 \\ \hline
    2    &  50. -0.32E+07 -0.22E+06 -0.13E+08&                             &                                             \\
-   3    & 250. -0.68E+06 -0.44E+05 -0.13E+08&TH\index{TH}(NPO),           & Temperature(first column),                  \\
-   4    & 450.  0.21E+07  0.14E+06 -0.13E+08& EHGAZG\index{EHGAZG}(1,NPO),& mass enthalpy of fuel, oxidiser             \\
-   5    & 650.  0.50E+07  0.33E+06 -0.12E+08& EHGAZG(2,NPO),              & and products (columns 2,3 and 4)            \\
-   6    & 850.  0.80E+07  0.54E+06 -0.12E+08& EHGAZG(3,NPO)               & from line 2 to line NPO+1                   \\
+   3    & 250. -0.68E+06 -0.44E+05 -0.13E+08&\texttt{th\index{th}}(\texttt{npo}),           & Temperature(first column),                  \\
+   4    & 450.  0.21E+07  0.14E+06 -0.13E+08& \texttt{ehgazg\index{ehgazg}}(1,\texttt{npo}),& mass enthalpy of fuel, oxidiser             \\
+   5    & 650.  0.50E+07  0.33E+06 -0.12E+08& \texttt{ehgazg}(2,\texttt{npo}),              & and products (columns 2,3 and 4)            \\
+   6    & 850.  0.80E+07  0.54E+06 -0.12E+08& \texttt{ehgazg}(3,\texttt{npo})               & from line 2 to line \texttt{npo}+1                   \\
    7    &1050.  0.11E+08  0.76E+06 -0.11E+08&                             &                                             \\ \hline
-   8    & .00219       .1387        .159    &WMOLG(1)\index{WMOLG},       & Molar mass of fuel,                         \\
-        &                                   &                    WMOLG(2),& oxidiser                                    \\
-        &                                   &                    WMOLG(3) & and products                                \\ \hline
-   9    &                .11111             &          FS(1)\index{FS(1)} & Mixing rate at the stoichiometry            \\
+   8    & .00219       .1387        .159    &\texttt{wmolg(1)\index{wmolg}},       & Molar mass of fuel,                         \\
+        &                                   &                    \texttt{wmolg(2)},& oxidiser                                    \\
+        &                                   &                    \texttt{wmolg(3)} & and products                                \\ \hline
+   9    &                .11111             &          \texttt{fs(1)\index{fs(1)}} & Mixing rate at the stoichiometry            \\
         &                                   &                             & (relating to Fuel and Oxidiser)             \\ \hline
-  10    &                     0             &         IRAYPP              & 0: no radiation                             \\
-        &                                   &                             & 1: calculation of the absorption coefficient\\
-        &                                   &                             & CKABS\index{CKABS} from the absorption      \\
-        &                                   &                             & coefficient KABSG of the 3 global species   \\
-        &                                   &                             & (Fuel, Oxydise, Products)                   \\
-        &                                   &                             & 2: calcul using Modak                       \\
-        &                                   &                             & 3: like 1 but P-1 model                     \\
-        &                                   &                             & 4: like 2 but P-1 model                     \\\hline
-  11    &    0.4      0.5       0.87        &CKABSG\index{CKABSG}(1),     & Absorption coefficient of fuel,             \\
-        &                                   &                  CKABSG(2), & oxidiser                                    \\
-        &                                   &                  CKABSG(3)  & and products                                \\ \hline
-  12    &    1.       2.                    & XCO2\index{XCO2},   XH2O\index{XH2O}& Molar coefficents of $CO_2$         \\
+  10    &    0.4      0.5       0.87        &\texttt{ckabsg\index{ckabsg}(1)},     & Absorption coefficient of fuel,             \\
+        &                                   &                  \texttt{ckabsg(2)}, & oxidiser                                    \\
+        &                                   &                  \texttt{ckabsg(3)}  & and products                                \\ \hline
+  11    &    1.       2.                    & \texttt{xco2\index{xco2}},   \texttt{xh2o\index{xh2o}}& Molar coefficents of $CO_2$         \\
         &                                   &                             & and $H_2O$ in the products                  \\
         &                                   &                             & (radiation using Modak)                     \\ \hline
 \end{tabular}
@@ -6144,97 +6727,92 @@ study case. Their content is described below.
 \begin{tabular}{|c|c|c|c|} \hline
  Lines  &      Examples of values        &        Variables              & Observations                                         \\ \hline
    1    &          THERMOCHIMIE          &                               & Comment line                                         \\ \hline
-   2    &               8                &          NCOEL\index{NCOEL}   & Number of current species                            \\ \hline
-   3    &               8                &          NPO\index{NPO}       & Number of points for the                             \\
+   2    &               8                & \texttt{ncoel\index{ncoel}}   & Number of current species                            \\ \hline
+   3    &               8                &  \texttt{npo\index{npo}}      & Number of points for the                             \\
         &                                &                               & enthalpy-temperature tabulation                      \\ \hline
    4    &      ESPECES COURANTES         &                               & Comment line                                         \\ \hline
-   5    & CH4 C2H4 CO O2 CO2 H2O N2 C(S) & NOMCOEL\index{NOMCOEL}(NCOEL) & List of the                                          \\
+   5    & CH4 C2H4 CO O2 CO2 H2O N2 C(S) & \texttt{nomcoel\index{nomcoel}}(\texttt{ncoel}) & List of the                                          \\
         &                                &                               & current species                                      \\ \hline
-   6    &               300.             &          TMIN\index{TMIN}     & Temperature inferior limit (Kelvin)                  \\
+   6    &               300.             &  \texttt{tmin\index{tmin}}    & Temperature inferior limit (Kelvin)                  \\
         &                                &                               & for the enthalpy-temperature tabulation              \\ \hline
-   7    &              2400.             &          TMAX\index{TMAX}     & Temperature superior limit (Kelvin)                  \\
+   7    &              2400.             &  \texttt{tmax\index{tmax}}    & Temperature superior limit (Kelvin)                  \\
         &                                &                               & for the enthalpy-temperature tabulation              \\ \hline
-   8    &               4                &          NATO\index{NATO}     & Number of elemental species                          \\ \hline
+   8    &               4                &  \texttt{nato\index{nato}}    & Number of elemental species                          \\ \hline
    9    &  .012  1  2  1  0  1  0  0  1  &                               & Molar mass of the elemental species                  \\
-  10    &  .001  4  4  0  0  0  2  0  0  &WMOLAT\index{WMOLAT}(NATO),    & (first column)                                       \\
-  11    &  .016  0  0  1  2  2  1  0  0  &ATCOEL\index{ATCOEL}(NCOEL,NATO)& and composition of the current species              \\
+  10    &  .001  4  4  0  0  0  2  0  0  &\texttt{wmolat\index{wmolat}}(\texttt{nato}),    & (first column)                                       \\
+  11    &  .016  0  0  1  2  2  1  0  0  &\texttt{atcoel\index{atcoel}}(\texttt{ncoel,nato})& and composition of the current species              \\
   12    &  .014  0  0  0  0  0  0  2  0  &                               & as a function of the elemental species               \\ \hline
   13    &          RAYONNEMENT           &                               & Comment line                                         \\ \hline
-  14    &               1                &         IRAYPP\index{IRAYPP}  & 0: no radiation                                      \\
-        &                                &                               & 1: constant, given below                             \\
-        &                                &                               & 2: using Modak                                       \\
-        &                                &                               & 3: like 1 but P-1 model                              \\
-        &                                &                               & 4: like 2 but P-1 model                              \\ \hline
-  15    &               0.1              &         CKABS1\index{CKABS1}  & Constant absorption coefficient                      \\
+  14    &               0.1              & \texttt{ckabs1\index{ckabs1}}  & Constant absorption coefficient                      \\
         &                                &                               & for the gas mixture                                  \\ \hline
-  16    &   CARACTERISTIQUES CHARBONS    &                               & Comment line                                         \\ \hline
-  17    &               2                &         NCHARB\index{NCHARB}  & Number of coal types                                 \\ \hline
-  18    &         1            1         &  NCLPCH\index{NCLPCH}(NCHARB) & Number of classes for each coal                      \\
+  15    &   CARACTERISTIQUES CHARBONS    &                               & Comment line                                         \\ \hline
+  16    &               2                & \texttt{ncharb\index{ncharb}} & Number of coal types                                 \\ \hline
+  17    &         1            1         & \texttt{nclpch\index{nclpch}}(\texttt{ncharb}) & Number of classes for each coal                      \\
         &                                &                               & (each column corresponding to                        \\
         &                                &                               & one coal type )                                      \\ \hline
-  19    &    50.E-6        50.E-6        & DIAM20\index{DIAM20}(NCLACP)  & Initial diameter of each class (m)                   \\
-        &                                &                               & NCLACP\index{NCLACP} is the total number of classes. \\
+  18    &    50.E-6        50.E-6        & \texttt{diam20\index{diam20}}(\texttt{nclacp})  & Initial diameter of each class (m)                   \\
+        &                                &                               & \texttt{nclacp\index{nclacp}} is the total number of classes. \\
         &                                &                               & All the diameters are written on the same line       \\
         &                                &                               & (sucessively for each coal, we give the              \\
         &                                &                               & diameter corresponding to each class)                \\ \hline
-  20    &    74.8          60.5          &         CCH\index{CCH}(NCHARB)& Composition in C (mass.-\%, dry) of each coal        \\ \hline
-  21    &     5.1           4.14         &         HCH\index{HCH}(NCHARB)& Composition in H (mass.-\%, dry) of each coal        \\ \hline
-  22    &    12.01          5.55         &         OCH\index{OCH}(NCHARB)& Composition in O (mass.-\%, dry) of each coal        \\ \hline
-  23    & 0  31524000.    0  31524000.   &IPCI\index{IPCI}(NCHARB),      & Value of the PCI ($Jkg^{-1}$) for each coal,         \\
-        &                                & PCICH\index{PCICH}(NCHARB)    & the first integer indicating if this value refers    \\
+  19    &    74.8          60.5          & \texttt{cch\index{cch}}(\texttt{ncharb})& Composition in C (mass.-\%, dry) of each coal        \\ \hline
+  20    &     5.1           4.14         & \texttt{hch\index{hch}}(\texttt{ncharb})& Composition in H (mass.-\%, dry) of each coal        \\ \hline
+  21    &    12.01          5.55         & \texttt{och\index{och}}(\texttt{ncharb})& Composition in O (mass.-\%, dry) of each coal        \\ \hline
+  22    & 0  31524000.    0  31524000.   & \texttt{ipci\index{ipci}}(\texttt{ncharb})      & Value of the PCI ($Jkg^{-1}$) for each coal,         \\
+        &                                & \texttt{pcich\index{pcich}}(\texttt{ncharb})    & the first integer indicating if this value refers    \\
         &                                &                               & to pure (0) or dry coal (1)                          \\ \hline
-  24    &   1800.      1800.             &        CP2CH\index{CP2CH}(NCHARB)& Heat-storage capacity at constant pressure        \\
+  23    &   1800.      1800.             & \texttt{cp2ch\index{cp2ch}}(\texttt{ncharb})& Heat-storage capacity at constant pressure        \\
         &                                &                               & ($Jkg^{-1}K^{-1}$) for each coal                     \\ \hline
-  25    &   1200.      1200.             &RHO0CH\index{RHO0CH}(NCHARB)   & Initial density ($kgm^{-3}$) of each                 \\ \hline
-  26    &          Coke                  &                               & Comment line                                         \\ \hline
-  27    &      0.         0.             &        CCK\index{CCK}(NCHARB) & Composition in C (mass.-\%, dry) of the coke         \\
+  24    &   1200.      1200.             & \texttt{rho0ch\index{rho0ch}}(\texttt{ncharb})   & Initial density ($kgm^{-3}$) of each                 \\ \hline
+  25    &          Coke                  &                               & Comment line                                         \\ \hline
+  26    &      0.         0.             & \texttt{cck\index{cck}}(\texttt{ncharb}) & Composition in C (mass.-\%, dry) of the coke         \\
         &                                &                               & for each coal                                        \\ \hline
-  28    &      0.         0.             &        HCK\index{HCK}(NCHARB) & Composition in H (mass.-\%, dry) of the coke         \\
+  27    &      0.         0.             & \texttt{hck\index{hck}}(\texttt{ncharb}) & Composition in H (mass.-\%, dry) of the coke         \\
         &                                &                               & for each coal                                        \\ \hline
-  29    &      0.         0.             &        OCK\index{OCK}(NCHARB) & Composition in O (mass.\%, dry) of the coke          \\
+  28    &      0.         0.             & \texttt{ock\index{ock}}(\texttt{ncharb}) & Composition in O (mass.\%, dry) of the coke          \\
         &                                &                               & for each coal                                        \\ \hline
-  30    &      0.         0.             &     PCICK\index{PCICK}(NCHARB)& PCI of the dry coke ($Jkg^{-1}$) for each coal       \\ \hline
-  31    &          Cendres               &                               & Comment line                                         \\ \hline
-  32    &      6.3        6.3            &   XASHCH\index{XASHCH}(NCHARB)& Ash mass fraction (mass.-\%, dry) in each coal       \\ \hline
-  33    &      0.         0.             & H0ASHC\index{H0ASHC}(NCHARB)  & Ash formation enthalpy ($Jkg^{-1}$)                  \\
+  29    &      0.         0.             & \texttt{pcick\index{pcick}}(\texttt{ncharb})& PCI of the dry coke ($Jkg^{-1}$) for each coal       \\ \hline
+  30    &          Cendres               &                               & Comment line                                         \\ \hline
+  31    &      6.3        6.3            & \texttt{xashch\index{xashch}}(\texttt{ncharb})& Ash mass fraction (mass.-\%, dry) in each coal       \\ \hline
+  32    &      0.         0.             & \texttt{h0ashc\index{h0ashc}}(\texttt{ncharb})  & Ash formation enthalpy ($Jkg^{-1}$)                  \\
         &                                &                               & for each coal                                        \\ \hline
-  34    &      0.         0.             &CPASHC\index{CPASHC}(NCHARB)   & CP of the ashes ($Jkg^{-1}K^{-1}$) for each coal     \\ \hline
-  35    &  D\'evolatilisation (Kobayashi)  &                             & Comment line                                         \\ \hline
-  36    &  1  0.37      0  0.37          & IY1CH\index{IY1CH}(NCHARB),   & For each coal, pairs (IY1CH, Y1CH).                  \\
-        &                                &  Y1CH\index{Y1CH}(NCHARB)     & The real Y1CH is the adimensional stoich. coefficient\\
-        &                                &                               & If the integer IY1CH is worth 1,                     \\
-        &                                &                               & the provided value of Y1CH is adopted and            \\
+  33    &      0.         0.             & \texttt{cpashc\index{cpashc}}(\texttt{ncharb})   & CP of the ashes ($Jkg^{-1}K^{-1}$) for each coal     \\ \hline
+  34    &  D\'evolatilisation (Kobayashi)  &                             & Comment line                                         \\ \hline
+  35    &  1  0.37      0  0.37          & \texttt{iy1ch\index{iy1ch}}(\texttt{ncharb}),   & For each coal, pairs (\texttt{iy1ch}, \texttt{y1ch}).                  \\
+        &                                & \texttt{y1ch\index{y1ch}}(\texttt{ncharb})     & The real \texttt{y1ch} is the adimensional stoich. coefficient\\
+        &                                &                               & If the integer \texttt{iy1ch} is worth 1,                     \\
+        &                                &                               & the provided value of \texttt{y1ch} is adopted and            \\
         &                                &                               & the composition of the light volatile matters        \\
         &                                &                               & is calculated automatically.                         \\
-        &                                &                               & If the integer IY1CH is worth 0,                     \\
-        &                                &                               & the provided value of Y1CH is ignored:               \\
-        &                                &                               & Y1CH is calculated automatically (the light          \\
+        &                                &                               & If the integer \texttt{iy1ch} is worth 0,                     \\
+        &                                &                               & the provided value of \texttt{y1ch} is ignored:               \\
+        &                                &                               & \texttt{y1ch} is calculated automatically (the light          \\
         &                                &                               & volatiles are then composed of {$CH_{4}$}, {$CO$}).  \\ \hline
-  37    &  1  0.74      1  0.74          & IY2CH\index{IY2CH}(NCHARB),   & For each coal, pairs (IY2CH, Y2CH).                  \\
-        &                                &  Y2CH\index{Y2CH}(NCHARB)     & The real Y2CH is the adimensional stoich. coefficient\\
-        &                                &                               & If the integer IY2CH is worth 1,                     \\
-        &                                &                               & the provided value of Y2CH is adopted and            \\
+  36    &  1  0.74      1  0.74          & \texttt{iy2ch\index{iy2ch}}(\texttt{ncharb}),   & For each coal, pairs (\texttt{iy2ch}, \texttt{y2ch}).                  \\
+        &                                & \texttt{y2ch\index{y2ch}}(\texttt{ncharb})     & The real \texttt{y2ch} is the adimensional stoich. coefficient\\
+        &                                &                               & If the integer \texttt{iy2ch} is worth 1,                     \\
+        &                                &                               & the provided value of \texttt{y2ch} is adopted and            \\
         &                                &                               & the composition of the heavy volatile matters        \\
         &                                &                               & is calculated automatically.                         \\
-        &                                &                               & If the integer IY2CH is worth 0,                     \\
-        &                                &                               & the provided value of Y2CH is ignored:               \\
-        &                                &                               & Y2CH is calculated automatically (the heavy          \\
+        &                                &                               & If the integer \texttt{iy2ch} is worth 0,                     \\
+        &                                &                               & the provided value of \texttt{y2ch} is ignored:               \\
+        &                                &                               & \texttt{y2ch} is calculated automatically (the heavy          \\
         &                                &                               & volatiles are then composed of {$C_{2}H_{4}$}, {$CO$}).\\ \hline
-  38    &  370000.      410000.          &       A1CH\index{A1CH}(NCHARB)& Devolatilisation pre-exponential factor A1 ($s^{-1}$)\\
+  37    &  370000.      410000.          & \texttt{a1ch\index{a1ch}}(\texttt{ncharb})& Devolatilisation pre-exponential factor A1 ($s^{-1}$)\\
         &                                &                               & for each coal (light volatile matters)               \\ \hline
-  39    &  1.3E13       1.52E13          &       A2CH\index{A2CH}(NCHARB)& Devolatilisation pre-exponential factor A2 ($s^{-1}$)\\
+  38    &  1.3E13       1.52E13          & \texttt{a2ch\index{a2ch}}(\texttt{ncharb})& Devolatilisation pre-exponential factor A2 ($s^{-1}$)\\
         &                                &                               & for each coal (heavy volatile matters)               \\ \hline
-  40    &   74000.       80000.          &       E1CH\index{E1CH}(NCHARB)& Devolatilisation activation energy E1 ($Jmol^{-1}$)  \\
+  39    &   74000.       80000.          & \texttt{e1ch\index{e1ch}}(\texttt{ncharb})& Devolatilisation activation energy E1 ($Jmol^{-1}$)  \\
         &                                &                               & for each coal (light volatile matters)               \\ \hline
-  41    &  250000.      310000.          &       E2CH\index{E2CH}(NCHARB)& Energie d'activation E2 ($Jmol^{-1}$) de d\'evolatilisation\\
+  40    &  250000.      310000.          & \texttt{e2ch\index{e2ch}}(\texttt{ncharb})& Energie d'activation E2 ($Jmol^{-1}$) de d\'evolatilisation\\
         &                                &                               & for each coal (heavy volatile matters)               \\ \hline
-  42    &  Combustion h\'et\'erog\`ene   &                               & Ligne de commentaire                                 \\ \hline
-  43    &      17.88        17.88        &AHETCH\index{AHETCH}(NCHARB)   & Char burnout pre-exponential constant                \\
+  41    &  Combustion h\'et\'erog\`ene   &                               & Ligne de commentaire                                 \\ \hline
+  42    &      17.88        17.88        & \texttt{ahetch\index{ahetch}}(\texttt{ncharb})   & Char burnout pre-exponential constant                \\
         &                                &                               & ($kgm^{-2}s^{-1}atm^{-1}$) for each coal             \\ \hline
-  44    &      16.55        16.55        &EHETCH\index{EHETCH}(NCHARB)   & Char burnout activation energy ($kcalmol{-1}$)       \\
+  43    &      16.55        16.55        & \texttt{ehetch\index{ehetch}}(\texttt{ncharb})   & Char burnout activation energy ($kcalmol{-1}$)       \\
         &                                &                               & for each coal                                        \\ \hline
-  45    &       1            1           &IOCHET\index{IOCHET}(NCHARB)   & Char burnout reaction order for each coal            \\
-        &                                &                               & 0.5 if IOCHET = 0 and 1 if IOCHET = 1                \\ \hline
+  44    &       1            1           & \texttt{iochet\index{iochet}}(\texttt{ncharb})   & Char burnout reaction order for each coal            \\
+        &                                &                               & 0.5 if \texttt{iochet} = 0 and 1 if \texttt{iochet} = 1                \\ \hline
 \end{tabular}
 }
 \caption{Example of file for the pulverised coal combustion:
@@ -6258,11 +6836,11 @@ study case. Their content is described below.
   5     &\#                            ... &           & Free comment                                       \\ \hline
   6     &\# Nb d'especes NGAZG et Nb   ... &           & Free comment                                       \\ \hline
   7     &\# NGAZG NPO                  ... &           & Free comment                                       \\ \hline
-  8     &    1   238         &    NGAZG\index{NGAZG}   & Number of species                                  \\
-        &                    &    NPO\index{NPO}       & Number of given temperature points for             \\
+  8     &    1   238         &    \texttt{ngazg\index{ngazg}}   & Number of species                         \\
+        &                    &    \texttt{npo\index{npo}}       & Number of given temperature points for    \\
         &                    &                         & the tabulated physical properties                  \\
-        &                    &                         & (NPO $\leqslant$ NPOT set in ppthch.h)             \\
-        &                    &                         & So there will be NGAZG blocks of NPO lines each    \\ \hline
+        &                    &                         & (\texttt{npo} $\leqslant$ \texttt{npot} set in \texttt{ppthch.h})             \\
+        &                    &                         & So there will be \texttt{ngazg} blocks of \texttt{npo} lines each    \\ \hline
   9     &\#                            ... &           & Free comment                                       \\ \hline
  10     &\#  Proprietes                ... &           & Free comment                                       \\ \hline
  11     &\#  ~~~~T~~~~~~~~~~~H         ... &           & Free comment                                       \\ \hline
@@ -6272,14 +6850,14 @@ study case. Their content is described below.
  15     &\#                            ... &           & Free comment                                       \\ \hline
  16     &    ~~~300.~~~~~~14000.       ... &           & Tabulation in line of the physical properties      \\
         &                                  &           & as a function of the temperature in Kelvin         \\
-        &                                  &           & for each of the NGAZG species                      \\
-        &                    &    H                    & Enthalpy in J/kg                                   \\
-        &                    &    ROEL                 & Density in kg/m3                                   \\
-        &                    &    CPEL                 & Specific heat in J/(kg K)                          \\
-        &                    &    SIGEL                & Electric conductivity in Ohm/m                     \\
-        &                    &    VISEL                & Dynamic viscosity in kg/(m s)                      \\
-        &                    &    XLABEL               & Thermal conductivity in W/(m K)                    \\
-        &                    &    XKABEL\index{XKABEL} & Absorption coefficient (radiation)                 \\   \hline
+        &                                  &           & for each of the \texttt{ngazg} species             \\
+        &                    &    \texttt{h}                    & Enthalpy in J/kg                                   \\
+        &                    &    \texttt{roel}                 & Density in kg/m3                                   \\
+        &                    &    \texttt{cpel}                 & Specific heat in J/(kg K)                          \\
+        &                    &    \texttt{sigel}                & Electric conductivity in Ohm/m                     \\
+        &                    &    \texttt{visel}                & Dynamic viscosity in kg/(m s)                      \\
+        &                    &    \texttt{xlabel}               & Thermal conductivity in W/(m K)                    \\
+        &                    &    \texttt{xkabel\index{xkabel}} & Absorption coefficient (radiation)                 \\   \hline
 \end{tabular}
 }
 \caption{Example of file for the electric arc module:
@@ -6293,7 +6871,7 @@ study case. Their content is described below.
 %==================================
 \subsection{Management of the boundary conditions related to pulverised
   coal and gas combustion: \textmd{\texttt{usebuc, usd3pc, uslwcc,
-  uscpcl et uscplc}} }
+  uscpcl and uscplc}} }
 %==================================
 
 \noindent
@@ -6316,25 +6894,25 @@ eventually the value of each variable are defined.
 boundary conditions for every variable must be defined here, even for
 the eventual user scalars: {\em \texttt{usclim}} is not used at all.}\\
 
-In the case of a specific physics modeling, a zone number IZONE
-\footnote{IZONE must be less than the maximum number of boundary
-zone allowable by the code, NOZPPM. This is fixed at 2000 in
+In the case of a specific physics modeling, a zone number \texttt{izone}
+\footnote{\texttt{izone} must be less than the maximum number of boundary
+zone allowable by the code, \texttt{nozppm}. This is fixed at 2000 in
  \texttt{pppvar.h};not to be modified} (for
-instance the color ICOUL) is associated with every boundary face, in
+instance the color \texttt{icoul}) is associated with every boundary face, in
 order to gather together all the boundary faces of the same type. In
 comparison to \texttt{usclim}, the main change from the user point of
 view concerns the faces whose boundary conditions belong to the type
-ITYPFB=IENTRE\index{IENTRE}:
+\texttt{itypfb=ientre\index{ientre}}:
 
 \begin{list}{$\bullet$}{}
        \item for the EBU pre-mixed flame module:
              \begin{list}{$\rightarrow$}{}
                     \item the user can choose between the ``burned gas
                           inlet'' type (marked out by the burned gas indicator
-                          IENTGB\index{IENTGB}(IZONE\index{IZONE})=1) and the
+                          \texttt{ientgb\index{ientgb}(izone\index{izone})}=1) and the
                           ``fresh gas inlet'' type (marked out by
                           the fresh gas indicator
-                          IENTGF\index{IENTGF}(IZONE)=1)
+                          \texttt{ientgf\index{ientgf}(izone)}=1)
                     \item for each inlet type (fresh or burned
                           gas), a mass flow or a velocity must be imposed:
 
@@ -6343,95 +6921,95 @@ ITYPFB=IENTRE\index{IENTRE}:
                                      \begin{list}{-}{}
                                        \item the user gives to
                                              the indicator
-                                             IQIMP\index{IQIMP}(IZONE)
+                                             \texttt{iqimp\index{iqimp}(izone)}
                                              the value 1,
                                        \item  the
                                              mass flow value is set in
-                                             QIMP\index{QIMP}(IZONE)
+                                             \texttt{qimp\index{qimp}(izone)}
                                              (positive value, in $kgs^{-1}$)
                                        \item finally he imposes the
                                              velocity vector direction
                                              by giving the components of
                                              a direction vector in
-                                             RCODCL\index{RCODCL}(IFAC,IU\index{IU}(IPHAS)), RCODCL(IFAC,IV\index{IV}(IPHAS)) and RCODCL(IFAC,IW\index{IW}(IPHAS))
+                                             \texttt{rcodcl\index{rcodcl}(ifac,iu\index{iu}(iphas))}, \texttt{rcodcl(ifac,iv\index{iv}(iphas))} and \texttt{rcodcl(ifac,iw\index{iw}(iphas))}
                                      \end{list}
 
 {\em WARNING:
 \begin{list}{-}{}
-\item the variable QIMP(IZONE) refers to the mass flow across the whole
-      zone IZONE and not across a boundary face (specifically for the axisymetric calculations, the inlet suface of the mesh must be broken up)
-\item the variable QIMP(izone) deals with the inflow across the area IZOZ and only across this zone;it is recomended to pay attention to the boundary conditions.
+\item the variable \texttt{qimp(izone)} refers to the mass flow across the whole
+      zone \texttt{izone} and not across a boundary face (specifically for the axisymetric calculations, the inlet suface of the mesh must be broken up)
+\item the variable \texttt{qimp(izone)} deals with the inflow across the area \texttt{izoz} and only across this zone;it is recomended to pay attention to the boundary conditions.
 \item the velocity direction vector is neither necessarily normed, nor
       necessarily incoming.
 \end{list}}
 
                                  \item to impose a velocity, the user
                                        must give to the indicator
-                                       IQIMP(IZONE) the value 0 and set
+                                       \texttt{iqimp(izone)} the value 0 and set
                                        the three velocity components (in
                                        $m.s^{-1}$) in
-                                       RCODCL(IFAC,IU(IPHAS)),
-                                       RCODCL(IFAC,IV(IPHAS)) and
-                                       RCODCL(IFAC,IW(IPHAS))
+                                       \texttt{rcodcl(ifac,iu(iphas))},
+                                       \texttt{rcodcl(ifac,iv(iphas))} and
+                                       \texttt{rcodcl(ifac,iw(iphas))}
                           \end{list}
                     \item finally he specifies for each gas inlet type
-                          the mixing rate FMENT\index{FMENT}(IZONE) and
-                          the temperature  TKENT\index{TKENT}(IZONE) in Kelvin
+                          the mixing rate \texttt{fment\index{fment}(izone)} and
+                          the temperature \texttt{tkent\index{tkent}(izone)} in Kelvin
              \end{list}
 
        \item for the ``3 points'' diffusion flame module:
              \begin{list}{$\rightarrow$}{}
                     \item the user can choose between the ``oxydiser
                           inlet'' type marked out by
-                          IENTOX\index{IENTOX}(IZONE)=1 and the ``fuel
+                          \texttt{ientox\index{ientox}(izone)}=1 and the ``fuel
                           inlet'' type marked out by
-                          IENTFU\index{IENTFU}(IZONE)=1
+                          \texttt{ientfu\index{ientfu}(izone)}=1
                     \item concerning the input mass flow or the input
                           velocity, the method is the same as for the
                           EBU pre-mixed flame module
                     \item finally, the user sets the temperatures
-                          TINOXY\index{TINOXY} for each oxydiser inlet
-                          and TINFUE\index{TINFUE}, for each fuel inlet
+                          \texttt{tinoxy\index{tinoxy}} for each oxydiser inlet
+                          and \texttt{tinfue\index{tinfue}}, for each fuel inlet
 
 {\em Note: In the standard version, only the cases with only one
                           oxydising inlet type and one fuel inlet type
                           can be treated. In particular, there must be
                           only one input temperature for the oxidiser
-                          (TINOXY) and one input temperature for the
-                          fuel (TINFUEL).}
+                          (\texttt{tinoxy}) and one input temperature for the
+                          fuel (\texttt{tinfuel}).}
              \end{list}
 
        \item for the pulverised coal module:
              \begin{list}{$\rightarrow$}{}
                     \item the inlet faces can belong to the ``primary
                           air and pulverised coal inlet'' type, marked
-                          out by IENTCP\index{IENTCP}(IZONE)=1, or to
+                          out by \texttt{ientcp\index{ientcp}(izone)}=1, or to
                           the ``secondary or tertiary air inlet'' type,
-                          marked out by IENTAT\index{IENTAT}(IZONE)=1
+                          marked out by \texttt{ientat\index{ientat}(izone)}=1
                     \item in a way which is similar to the process
                           described in the framework of the EBU module,
                           the user chooses for every inlet face to
-                          impose the mass flow or not (IQIMP(IZONE)=1 or
+                          impose the mass flow or not (\texttt{iqimp(izone)}=1 or
                           0). If the mass flow is imposed, the user
                           must set the air mass flow value
-                          QIMPAT\index{QIMPAT}(IZONE), its direction in
-                          RCODCL(IFAC,IU(IPHAS)), RCODCL(IFAC,IV(IPHAS))
-                          and \\ RCODCL(IFAC,IW(IPHAS)) and the incoming
-                          air temperature TIMPAT\index{TIMPAT}(IZONE) in
+                          \texttt{qimpat\index{qimpat}(izone)}, its direction in
+                          \texttt{rcodcl(ifac,iu(iphas))}, \texttt{rcodcl(ifac,iv(iphas))}
+                          and \\ \texttt{rcodcl(ifac,iw(iphas))} and the incoming
+                          air temperature \texttt{timpat\index{timpat}(izone)} in
                           Kelvin. If the velocity is imposed, he has to
-                          set  RCODCL(IFAC,IU(IPHAS)), \\
-                          RCODCL(IFAC,IV(IPHAS)) and RCODCL(IFAC,IW(IPHAS)).
+                          set  \texttt{rcodcl(ifac,iu(iphas))}, \\
+                          \texttt{rcodcl(ifac,iv(iphas))} and \texttt{rcodcl(ifac,iw(iphas))}.
 
                     \item if the inlet belongs to the ``primary air and
-                          pluverised coal'' type (IENTCP(IZONE) = 1) the
-                          user must also define for each coal type ICHA:
+                          pluverised coal'' \texttt{type (ientcp(izone) = 1)} the
+                          user must also define for each coal type \texttt{icha}:
                           the mass flow
-                          QIMPCP\index{QIMPCP}(IZONE,ICHA), the
+                          \texttt{qimpcp\index{qimpcp}(izone,icha)}, the
                           granulometric distribution
-                          DISTCH\index{DISTCH}(IZONE,ICHA,ICLAPC)
-                          related to each class ICLACP, and the
+                          \texttt{distch\index{distch}(izone,icha,iclapc)}
+                          related to each class \texttt{iclacp}, and the
                           injection temperature
-                          TIMPCP\index{TIMPCP}(IZONE,ICHA)
+                          \texttt{timpcp\index{timpcp}(izone,icha)}
 
              \end{list}
 \end{list}
@@ -6459,42 +7037,42 @@ variables will be initialised here, even the eventual user scalars: {\em
 
 \begin{list}{$\bullet$}{}
        \item in the case of the EBU pre-mixed flame module, the user can
-             initialise in every cell IEL: the mixing rate
-             RTP\index{RTP}(IEL,ISCA(IFM)) in variable richness, the
+             initialise in every cell \texttt{iel}: the mixing rate
+             \texttt{rtp\index{rtp}(iel,isca(ifm))} in variable richness, the
              fresh gas mass fraction \\
-             RTP(IEL,ISCA(IYGFM\index{IYGFM}))
-             and the mixture enthalpy RTP(IEL,ISCA(IHM\index{IHM})) in
+             \texttt{rtp(iel,isca(iygfm\index{iygfm}))}
+             and the mixture enthalpy \texttt{rtp(iel,isca(ihm\index{ihm}))} in
              permeatic conditions
 
         \item in the case of the rapid complete chemistry diffusion flame
-             module, the user can initialise in every cell IEL: the
-             mixing rate RTP(IEL,ISCA(IFM\index{IFM})), its variance
-             RTP(IEL,ISCA(IFP2M\index{IFP2M})) and the mixture mass
-             enthalpy RTP(IEL,ISCA(IHM)) in permeatic conditions
+             module, the user can initialise in every cell \texttt{iel}: the
+             mixing rate \texttt{rtp(iel,isca(ifm\index{ifm}))}, its variance
+             \texttt{rtp(iel,isca(ifp2m\index{ifp2m}))} and the mixture mass
+             enthalpy \texttt{rtp(iel,isca(ihm))} in permeatic conditions
 
         \item in the case of the pulverised coal combustion module, the
-             user can initialise in every cell IEL:
+             user can initialise in every cell \texttt{iel}:
               \begin{list}{$\rightarrow$}{}
                      \item the transport variables related to the solid phase
                            \begin{list}{}{}
-                                  \item RTP(IEL,ISCA(IXCH\index{IXCH}(ICLA))) the reactive coal mass fraction related to the class ICLA (ICLA from 1 to NCLACP which is the total number of classes, {\em i.e.} for all the coal type)
-                                  \item RTP(IEL,ISCA(IXCK(\index{IXCK}ICLA))) the coke mass fraction related to the class ICLA
-                                  \item        RTP(IEL,ISCA(INP\index{INP}(ICLA))) the number of particles related to class ICLA per kg of air-coal mixture
-                                  \item RTP(IEL,ISCA(IH2\index{IH2}(ICLA))) the mass enthalpy related to the class ICLA in permeatic conditions
+                                  \item \texttt{rtp(iel,isca(ixch\index{ixch}(icla)))} the reactive coal mass fraction related to the class \texttt{icla} (\texttt{icla} from 1 to \texttt{nclacp} which is the total number of classes, {\em i.e.} for all the coal type)
+                                  \item \texttt{rtp(iel,isca(ixck(\index{ixck}icla)))} the coke mass fraction related to the class \texttt{icla}
+                                  \item        \texttt{rtp(iel,isca(inp\index{inp}(icla)))} the number of particles related to class \texttt{icla} per kg of air-coal mixture
+                                  \item \texttt{rtp(iel,isca(ih2\index{ih2}(icla)))} the mass enthalpy related to the class \texttt{icla} in permeatic conditions
                            \end{list}
-                     \item RTP(IEL,ISCA(IHM)) the mixture enthalpy
+                     \item \texttt{rtp(iel,isca(ihm))} the mixture enthalpy
                      \item the transport variables related to the gas phase
                            \begin{list}{}{}
                                   \item
-                                       RTP(IEL,ISCA(IF1M\index{IF1M}(ICHA))) the mean value of the tracer 1 representing the light volatile matters released by the coal ICHA
+                                       \texttt{rtp(iel,isca(if1m\index{if1m}(icha)))} the mean value of the tracer 1 representing the light volatile matters released by the coal \texttt{icha}
                                   \item
-                                       RTP(IEL,ISCA(IF2M\index{IF2M}(ICHA))) the mean value of the tracer 2 representing the heavy volatile matters released by the coal ICHA
-                                  \item RTP(IEL,ISCA(IF3M\index{IF3M}))
+                                       \texttt{rtp(iel,isca(if2m\index{if2m}(icha)))} the mean value of the tracer 2 representing the heavy volatile matters released by the coal \texttt{icha}
+                                  \item \texttt{rtp(iel,isca(if3m\index{if3m}))}
                                         the mean value of the tracer 3
                                         representing the carbon released
                                         as CO during coke burnout
-                                  \item RTP(IEL,ISCA(IF4P2M\index{IF4P2M})) the variance associated with the tracer 4 representing the air (the mean value of this tracer is not transported, it can be deduced directly from the three others)
-                                  \item        RTP(IEL,ISCA(IFP3M\index{IFP3M})) the variance associated with the tracer 3
+                                  \item \texttt{rtp(iel,isca(if4p2m\index{if4p2m}))} the variance associated with the tracer 4 representing the air (the mean value of this tracer is not transported, it can be deduced directly from the three others)
+                                  \item \texttt{rtp(iel,isca(ifp3m\index{ifp3m}))} the variance associated with the tracer 3
                            \end{list}
               \end{list}
 \end{list}
@@ -6518,42 +7096,43 @@ They allow to:
 \begin{list}{$\bullet$}{}
 \item generate, for the variables which are specific to the activated
              specific physics module, chronological outputs (indicators
-             ICHRVR\index{ICHRVR}(IPP)), follow-ups in the listings
-             (indicator ILISVR\index{ILISVR}(IPP)) and to activate
+             \texttt{ichrvr\index{ichrvr}(ipp)}), follow-ups in the listings
+             (indicator \texttt{ilisvr\index{ilisvr}(ipp)}) and to activate
              chronological records at the probes defined in
-             \texttt{usini1} (indicators IHISVR(IPP)).\\
+             \texttt{usini1} (indicators \texttt{ihisvr(ipp)}).\\
 The way of doing it is the same as in \texttt{usini1} and the writing
       frequencies of these ouputs are set by \texttt{usini1}. The values
-      of the indicators IPP are
-      IPP=IPPPRO\index{IPPPRO}(IPPROC\index{IPPROC}(IVAR)), with IVAR
+      of the indicators \texttt{ipp} are
+      \texttt{ipp=ipppro\index{ipppro}(ipproc\index{ipproc}(ivar))}, with \texttt{ivar}
       the number of the specific physics variable.
 Concerning the main variables (velocity, pressure, etc ...) the user
       must still complete \texttt{usini1} if he wants to get
       chronological records, printings in the listing or chronological
       outputs.
 The variables which can be activated by the user for each specific
-      physics are listed below. The calculation variables IVAR (defined
-      at the cell IEL by RTP(IEL,IVAR)) and the properties IPROP (defined
-      at the cell IEL by PROPCE(IEL,IPPROC(IPROP))) are listed now:
+      physics are listed below. The calculation variables \texttt{ivar} (defined
+      at the cell \texttt{iel} by \texttt{rtp(iel,ivar)}) and the properties
+      \texttt{iprop} (defined at the cell \texttt{iel} by
+      \texttt{propce(iel,ipproc(iprop))}) are listed now:
       \begin{list}{$\rightarrow$}{}
        \item EBU pre-mixed flame modeling:
        \begin{list}{-}{}
-        \item Calculation variables RTP(IEL,IVAR)
-              \begin{list}{IVAR = }{}
-               \item ISCA(IYGFM\index{IYGFM}) fresh gas mass fraction
-               \item ISCA(IFM\index{IFM}) mixing rate
-               \item ISCA(IHM\index{IHM}) enthalpy, if transported
+        \item Calculation variables \texttt{rtp(iel,ivar)}
+              \begin{list}{\texttt{ivar} = }{}
+               \item \texttt{isca(iygfm\index{iygfm})} fresh gas mass fraction
+               \item \texttt{isca(ifm\index{ifm})} mixing rate
+               \item \texttt{isca(ihm\index{ihm})} enthalpy, if transported
               \end{list}
-        \item Properties PROPCE(IEL,IPPROC(IPROP))
-              \begin{list}{IPROP = }{}
-               \item ITEMP\index{ITEMP} temperature
-               \item IYM(1)\index{IYM(1)} fuel mass fraction
-               \item IYM(2)\index{IYM(2)} oxidiser mass fraction
-               \item IYM(3)\index{IYM(3)} product mass fraction
-               \item ICKABS\index{ICKABS} absorption
+        \item Properties \texttt{propce(iel,ipproc(iprop))}
+              \begin{list}{\texttt{iprop} = }{}
+               \item \texttt{itemp\index{itemp}} temperature
+               \item \texttt{iym(1)\index{iym(1)}} fuel mass fraction
+               \item \texttt{iym(2)\index{iym(2)}} oxidiser mass fraction
+               \item \texttt{iym(3)\index{iym(3)}} product mass fraction
+               \item \texttt{ickabs\index{ickabs}} absorption
                      coefficient, when the radiation modeling is
                      activated
-               \item IT3M\index{IT3M} and IT4M\index{IT4M}
+               \item \texttt{it3m\index{it3m}} and \texttt{it4m\index{it4m}}
                      ``$T^3$'' and ``$T^4$'' terms, when the radiation
                      modeling is activated
               \end{list}
@@ -6562,115 +7141,115 @@ The variables which can be activated by the user for each specific
              \begin{list}{}{}
               \item  everything is identical to the ``EBU'' case, except from
                      the fresh gas mass fraction which is replaced by the
-                     variance of the mixing rate IVAR=ISCA(IFP2M\index{IFP2M})
+                     variance of the mixing rate \texttt{ivar=isca(ifp2m\index{ifp2m})}
              \end{list}
        \item pulverised coal modeling with 3 comustables:
              \begin{list}{}{}
               \item {\em variables shared by the two phases}:
                     \begin{list}{-}{}
-                     \item Calculation variables RTP(IEL,IVAR)
-                           \begin{list}{IVAR = }{}
-                            \item ISCA(IHM\index{IHM}): gas-coal mixture enthalpy
-                            \item ISCA(IMMEL\index{IMMEL}): molar mass of the
+                     \item Calculation variables \texttt{rtp(iel,ivar)}
+                           \begin{list}{\texttt{ivar} = }{}
+                            \item \texttt{isca(ihm\index{ihm})}: gas-coal mixture enthalpy
+                            \item \texttt{isca(immel\index{immel})}: molar mass of the
                                   gas mixture
                            \end{list}
                     \end{list}
               \item {\em variables specific to the dispersed phase}:
               \begin{list}{-}{}
-               \item Calculation variables RTP(IEL,IVAR)
-                     \begin{list}{IVAR = }{}
-                      \item ISCA(IXCK\index{IXCK}(ICLA)): coke mass
-                            fraction related to the class ICLA
-                      \item ISCA(IXCH\index{IXCH}(ICLA)): reactive coal
-                            mass fraction related to the class ICLA
-                      \item ISCA(INP\index{INP}(ICLA)): number of
-                            particles of the class ICLA per kg of
+               \item Calculation variables \texttt{rtp(iel,ivar)}
+                     \begin{list}{\texttt{ivar} = }{}
+                      \item \texttt{isca(ixck\index{ixck}(icla))}: coke mass
+                            fraction related to the class \texttt{icla}
+                      \item \texttt{isca(ixch\index{ixch}(icla))}: reactive coal
+                            mass fraction related to the class \texttt{icla}
+                      \item \texttt{isca(inp\index{inp}(icla))}: number of
+                            particles of the class \texttt{icla} per kg of
                             air-coal mixture
-                      \item ISCA(IH2\index{IH2}(ICLA)): mass enthalpy of
-                            the coal of class ICLA, if we are in
+                      \item \texttt{isca(ih2\index{ih2}(icla))}: mass enthalpy of
+                            the coal of class \texttt{icla}, if we are in
                             permeatic conditions
                      \end{list}
-               \item Properties PROPCE(IEL,IPPROC(IPROP))
-                     \begin{list}{IPROP = }{}
-                      \item IMMEL\index{IMMEL}: molar mass of the gas mixture
-                      \item ITEMP2\index{ITEMP2}(ICLA): temperature of
-                            the particles of the class ICLA
-                      \item IROM2\index{IROM2}(ICLA): density of
-                            the particles of the class ICLA
-                      \item IDIAM2\index{IDIAM2}(ICLA): diameter of the
-                            particles of the class ICLA
-                      \item IGMDCH\index{IGMDCH}(ICLA): disappearance
-                            rate of the reactive coal of the class ICLA
-                      \item IGMDV1\index{IGMDV1}(ICLA): mass transfer
+               \item Properties \texttt{propce(iel,ipproc(iprop))}
+                     \begin{list}{\texttt{iprop} = }{}
+                      \item \texttt{immel\index{immel}}: molar mass of the gas mixture
+                      \item \texttt{itemp2\index{itemp2}(icla)}: temperature of
+                            the particles of the class \texttt{icla}
+                      \item \texttt{irom2\index{irom2}(icla)}: density of
+                            the particles of the class \texttt{icla}
+                      \item \texttt{idiam2\index{idiam2}(icla)}: diameter of the
+                            particles of the class \texttt{icla}
+                      \item \texttt{igmdch\index{igmdch}(icla)}: disappearance
+                            rate of the reactive coal of the class \texttt{icla}
+                      \item \texttt{igmdv1\index{igmdv1}(icla)}: mass transfer
                             caused by the release of light volatiles
-                            from the class ICLA
-                      \item IGMDV2\index{IGMDV2}(ICLA): mass transfer
+                            from the class \texttt{icla}
+                      \item \texttt{igmdv2\index{igmdv2}(icla)}: mass transfer
                             caused by the release of heavy volatiles
-                            from the class ICLA
-                      \item IGMHET\index{IGMHET}(ICLA): coke
+                            from the class \texttt{icla}
+                      \item \texttt{igmhet\index{igmhet}(icla)}: coke
                             disappearance rate during the coke burnout
-                            of the class ICLA
-                      \item IX2\index{IX2}(ICLA): solid mass fraction
-                            of the class ICLA
+                            of the class \texttt{icla}
+                      \item \texttt{ix2\index{ix2}(icla)}: solid mass fraction
+                            of the class \texttt{icla}
                      \end{list}
               \end{list}
               \item {\em variables specific to the continuous phase}:
               \begin{list}{-}{}
-               \item Calculation variables RTP(IEL,IVAR)
-                     \begin{list}{IVAR = }{}
-                      \item ISCA(IF1M\index{IF1M}(ICHA)): mean value of
+               \item Calculation variables \texttt{rtp(iel,ivar)}
+                     \begin{list}{\texttt{ivar} = }{}
+                      \item \texttt{isca(if1m\index{if1m}(icha))}: mean value of
                             the tracer 1 representing the light
-                            volatiles released by the coal ICHA
-                      \item ISCA(IF2M\index{IF2M}(ICHA)): mean value of
+                            volatiles released by the coal \texttt{icha}
+                      \item \texttt{isca(if2m\index{if2m}(icha))}: mean value of
                             the tracer 2 representing the heavy
-                            volatiles released by the coal ICHA
-                      \item ISCA(IF3M)\index{IF3M}: mean value of the
+                            volatiles released by the coal \texttt{icha}
+                      \item \texttt{isca(if3m)\index{if3m}}: mean value of the
                             tracer 3 representing the carbon released as
                             CO during coke burnout
-                      \item ISCA(IF4PM\index{IF4PM}): variance of the
+                      \item \texttt{isca(if4pm\index{if4pm})}: variance of the
                             tracer 4 representing the air
-                      \item ISCA(IF3P2M\index{IF3P2M}): variance of the
+                      \item \texttt{isca(if3p2m\index{if3p2m})}: variance of the
                             tracer 3
                      \end{list}
-               \item Properties PROPCE(IEL,IPPROC(IPROP))
-                     \begin{list}{IPROP = }{}
-                      \item ITEMP1\index{ITEMP1}: temperature of the gas
+               \item Properties \texttt{propce(iel,ipproc(iprop))}
+                     \begin{list}{\texttt{iprop} = }{}
+                      \item \texttt{itemp1\index{itemp1}}: temperature of the gas
                             mixture
-                      \item IYM1(1)\index{IYM1(1)}: mass fraction of
+                      \item \texttt{iym1(1)\index{iym1(1)}}: mass fraction of
                             $CH_{X1m}$ (light volatiles) in the gas
                             mixture
-                      \item IYM1(2)\index{IYM1(2)}: mass fraction of
+                      \item \texttt{iym1(2)\index{iym1(2)}}: mass fraction of
                             $CH_{X2m}$ (heavy volatiles) in the gas
                             mixture
-                      \item IYM1(3)\index{IYM1(3)}: mass fraction of
+                      \item \texttt{iym1(3)\index{iym1(3)}}: mass fraction of
                             CO in the gas mixture
-                      \item IYM1(4)\index{IYM1(4)}: mass fraction of
+                      \item \texttt{iym1(4)\index{iym1(4)}}: mass fraction of
                             $O_2$ in the gas mixture
-                      \item IYM1(5)\index{IYM1(5)}: mass fraction of
+                      \item \texttt{iym1(5)\index{iym1(5)}}: mass fraction of
                             $CO_2$ in the gas mixture
-                      \item IYM1(6)\index{IYM1(6)}: mass fraction of
+                      \item \texttt{iym1(6)\index{iym1(6)}}: mass fraction of
                             $H_2O$ in the gas mixture
-                      \item IYM1(7)\index{IYM1(7)}: mass fraction of
+                      \item \texttt{iym1(7)\index{iym1(7)}}: mass fraction of
                             $N_2$ in the gas mixture
                      \end{list}
               \end{list}
              \end{list}
       \end{list}
 
- \item set the relaxation coefficient of the density SRROM, with \\
-$\rho^{n+1}=SRROM*\rho^{n}+(1-SRROM)\rho^{n+1}$\\
-(by default, the adopted value is SRROM\index{SRROM} = 0.8. At the
+ \item set the relaxation coefficient of the density \texttt{srrom}, with \\
+$\rho^{n+1}=\texttt{srrom}*\rho^{n}+(1-\texttt{srrom})\rho^{n+1}$\\
+(by default, the adopted value is \texttt{srrom\index{srrom}} = 0.8. At the
       beginning of a calculation, a sub-relaxation of 0.95 may reduce
       the numerical ``schocks'').
 
- \item set the dynamic viscosity DIFTL0. By default
-      DIFTL0\index{DIFTL0}= 4.25 $kgm^{-1}s^{-1}$
+ \item set the dynamic viscosity \texttt{diftl0}. By default
+      \texttt{diftl0\index{diftl0}}= 4.25 $kgm^{-1}s^{-1}$
 (the dynamic diffusivity being the ratio between the thermal
       conductivity $\lambda$ and the mixture specific heat $C_p$ in the
       equation of enthalpy).
 
- \item set the value of the constant CEBU\index{CEBU} of the Eddy Break
-      Up model (only in \texttt{usebu1}. By default  CEBU=2.5)
+ \item set the value of the constant \texttt{cebu\index{cebu}} of the Eddy Break
+      Up model (only in \texttt{usebu1}. By default \texttt{cebu}=2.5)
 
 \end{list}
 
@@ -6699,51 +7278,55 @@ even those of the eventual user scalars: {\em \texttt{usclim}} is not
 used at all.}
 
 For the electric module, each boundary face is associated with a number
- \texttt{IZONE} \footnote{\texttt{IZONE} must be less than the maximum
- value allowed by the code, NOZZPPM. This is fixed at 2000 in \texttt
-{ppvar.h} and cannot be modified.}(the color ICOUL for example) in order
- to group together all the boundary faces of the same type. In the report
+ \texttt{izone} \footnote{\texttt{izone} must be less than the maximum
+ value allowed by the code, \texttt{nozzppm}. This is fixed at 2000 in \texttt
+{ppvar.h} and cannot be modified.}(the color \texttt{icoul} for example) in
+ order to group together all the boundary faces of the same type. In the report
  \texttt{usclim}, the main change from the users point of view concerns the
  specification of the boundary conditions of the potential, which isn't
- implied by default. The Dirichlet and Neuman conditions must be imposed
- explicitly using ICODCL and RCODCL (as would be done for the classic scalar).
+ implied by default. The Dirichlet and Neumann conditions must be imposed
+ explicitly using \texttt{icodcl} and \texttt{rcodcl} (as would be done for
+ the classical scalar).
 
 Whats more, if one wishes to slow down the power dissipation(Joule module
-effect) or the current (electric arc module) from the imposed values(PUISMP\index{PUISMP}
- and COUIMP\index{COUIMP} respectively), they can be changed by the potential scalar as
- shown below~:
+effect) or the current (electric arc module) from the imposed values
+\texttt{(puismp\index{puismp}} and \texttt{couimp\index{couimp}} respectively),
+ they can be changed by the potential scalar as shown below:
 
 \begin{list}{-}{}
 \item For the electric arc, the imposed potential difference can be a fixed variable:
  for example, the cathode can be fixed at 0 and the potential at the anode
- contains the variable DPOT. This variable is initialised in \texttt{useli1}
- by an estimated potential difference. If IELCOR=1(see \texttt{useli1}),
-DPOT is updated automatically during the calculation to obtain the required
-current.
-\item For the Joule module effect, DPOT is again used with the same significane
- as it held in the electric arc module. If DPOT is not wanted in the setting of the
- boundary condtions, the variable COEJOU can be used.  COEJOU is the coefficient
- by which the potential difference is multiplied to obtain the desired power dissipation
-. By default this begins at 1 and is updated automatically. If IELCOR-1 (see \texttt
-{useli1}), multiply the imposed potentials in \texttt{uselcl} by COEJOU at each time
- step to achieive the desired power dissipation.
+ contains the variable \texttt{dpot}. This variable is initialised in \texttt{useli1}
+ by an estimated potential difference. If \texttt{ielcor}=1 (see
+ \texttt{useli1}), \texttt{dpot} is updated automatically during the
+ calculation to obtain the required current.
+\item For the Joule module effect, \texttt{dpot} is again used with the same
+ signification as in the electric arc module. If \texttt{dpot} is not wanted
+ in the setting of the boundary condtions, the variable \texttt{coejou} can be
+ used. \texttt{coejou} is the coefficient by which the potential difference is
+ multiplied to obtain the desired power dissipation. By default this begins at
+ 1 and is updated automatically. If \texttt{ielcor}=1 (see \texttt
+{useli1}), multiply the imposed potentials in \texttt{uselcl} by \texttt{coejou}
+ at each time step to achieive the desired power dissipation.
  \end{list}
 
  {\em WARNING: In alternative current, attention should be paid to the values of potential
  imposed at the limits: the variable named "real potential" represents an affective
  value if the current is in single phase, and a "real part" if not.}
 \begin{list}{-}{}
-\item For the Joule studies, a complex potential is someitmes needed (IPPMOD(IELJOU)=2
-): this is the  case in particular where the current is in 3 phase. In affect, to have
- access to the phase of the potential, and not just its amplitude, the 2 variables must be deleted
-: in \CS, there are 2 arrays specified for this role, the real part and the imaginary
- part of the potential. For use in the code, these variables are named 'real potential'
- and 'imaginary potential'. For an alternative sinusoidal potential $Pp$, the maximum
- value is noted as $Pp_\text{max}$, the phase is noted as $\phi$, the real potential
+\item For the Joule studies, a complex potential is someitmes needed
+ (\texttt{ippmod(ieljou)}=2): this is the  case in particular where the current
+ has 3 phases. To have access to the phase of the potential, and not just its
+ amplitude, the 2 variables must be deleted: in \CS, there are 2 arrays
+ specified for this role, the real part and the imaginary
+ part of the potential. For use in the code, these variables are named
+ ``real potential'' and ``imaginary potential''. For an alternative
+ sinusoidal potential $Pp$, the maximum value is noted as $Pp_\text{max}$,
+ the phase is noted as $\phi$, the real potential
  and the imaginary potential are respecively $Pp_\text{max}\,cos\phi$ and
 $Pp_\text{max}\,sin\phi$.
 \item For the Joule studies in which one does not have access to the phases, the real
- potential (imaginary part =0) will suffice (IPPMOD(IELJOU)=1): this is obviously the case with
+ potential (imaginary part =0) will suffice (\texttt{ippmod(ieljou)=1}): this is obviously the case with
  continous current, but also with single phase alternative current. In \CS
 there is only 1 varialbe for the potential,  called "real potential". Pay attention to
  the fact that in alternate current, the "real potential" represents a effective value
@@ -6774,7 +7357,7 @@ It should be noted that the enthalpy is important.
 
 \begin{list}{-}{}
 \item For the electric arc module, the enthalpy value is taken from the temperature
- of reference T0(IPHAS)(given is \texttt{usini1}) from the temperature-enthalpy tables
+ of reference \texttt{t0(iphas)} (given is \texttt{usini1}) from the temperature-enthalpy tables
  supplied in the data file \texttt{dp\_ELE.} The user must not intervene here.
 \item For the Joule effect module, the value of enthalpy must be specified by the user
 . An example is given of how to obtain the enthalpy from the temperature of reference
@@ -6792,58 +7375,59 @@ supplied. A code is suggested in the sub routine \texttt{usthht}(which is there
 This subroutine is completed in \texttt{usini1} for the specific physics. It allows:
 \begin{list}{$\bullet$}{}
 \item Activates the variables in the specific physics module, the chronolgical
-outputs (indicators ICHRVR(IPP)), the listings (indicator (ILISVR(IPP)) and the
-historical exits at the probes defined in \texttt{usini1}(indicators IHISVR(IPP)).
+outputs (\texttt{ichrvr(ipp)} indicators), the listings (\texttt{ilisvr(ipp)}
+indicators) and the
+historical exits at the probes defined in \texttt{usini1} (\texttt{ihisvr(ipp)}
+indicators).
 The functions are the same as in \texttt{usini1} and the script frequency of the
-exits are fixed using \texttt{usini1.} The indicators IPP are for the value IPP=IPPPRO
-(IPPROC(IVAR), with IVAR, the number of specific physics varibles. With the main variables
- which concern the user(velocity, pressure, etc), the user must always use \texttt{usini1
-}if the history,the listings or the chronological files are required.
+exits are fixed using \texttt{usini1.} The indicators \texttt{ipp} are for the value \texttt{ipp=ipppro} (\texttt{ipproc(ivar)}, with \texttt{ivar}, the number of specific physics varibles. With the main variables
+ which concern the user (velocity, pressure, etc), the user must always use \texttt{usini1} if the history,the listings or the chronological files are required.
  The variables which the user can activate are marked out. The number of variables in
-the calculation is given in IVAR ( defined to the cells IEL and accessible by PROPCE
-IEL,IPPROC(IPROP)):
+the calculation is given in \texttt{ivar} (defined by
+\texttt{propce(iel,ipproc(iprop)} for cell \texttt{iel}):
 
 \begin{list}{$\rightarrow$}{}
-                    \item Electric Arc Module:
-                          \begin{list}{-}{}
-                                 \item Calculation variables RTP(IEL,IVAR)
-                                       \begin{list}{IVAR = }{}
-                                             \item ISCA(IHM\index{IHM}) enthalpy
-                                             \item ISCA(IPOTR\index{IPOTR}) real potentiel
-                                            \item ISCA(IPOTVA(i))\index{IPOTVA}) solved components of the potential vector.
-                                             \item ISCA(IYCOEL(IESP)\index{IYCOEL}) the mass fraction of NGAZG composites if there are more than 1
-                                       \end{list}
-                                 \item Properties PROPCE(IEL,IPPROC(IPROP))
-                                       \begin{list}{IPROP = }{}
-                                             \item ITEMP\index{ITEMP}  temperature
-                                             \item IEFJOU\index{IEFJOU} power dissipation by the Joule effect.
-                                             \item ILAPLA(i)\index{ILAPLA(i)} components of the laplace forces.
-                                       \end{list}
-                          \end{list}
-                    \item Joule Module effect~:
-                          \begin{list}{-}{}
-                                 \item Calculation variables RTP(IEL,IVAR)
-                                      \begin{list}{IVAR = }{}
-                                             \item ISCA(IHM\index{IHM}) enthalpy
-                                             \item ISCA(IPOTR\index{IPOTR}) real potential
-                                             \item ISCA(IPOTI\index{IPOTI}) imaginary potential if its to be taken into account
-                                             \item ISCA(IYCOEL(IESP)\index{IYCOEL})the mass fraction of NGAZG composites if there are more than 1
-                                        \end{list}
-                                 \item Properties PROPCE(IEL,IPPROC(IPROP))
-                                       \begin{list}{IPROP = }{}
-                                             \item ITEMP\index{ITEMP} temperature
-                                             \item IEFJOU\index{IEFJOU} volumic power dissipation by Joule effect.
-                                       \end{list}
-                          \end{list}
-             \end{list}
+  \item Electric Arc Module:
+  \begin{list}{-}{}
+     \item Calculation variables \texttt{rtp(iel,ivar)}
+     \begin{list}{\texttt{ivar} = }{}
+       \item \texttt{isca(ihm\index{ihm})} enthalpy
+       \item \texttt{isca(ipotr\index{ipotr})} real potentiel
+       \item \texttt{isca(ipotva(i)\index{ipotva})} solved components of the potential vector.
+       \item \texttt{isca(iycoel(iesp)\index{iycoel})} the mass fraction of \texttt{ngazg} composites if there are more than 1
+     \end{list}
+     \item Properties \texttt{propce(iel,ipproc(iprop))}
+     \begin{list}{\texttt{iprop} = }{}
+       \item \texttt{itemp\index{itemp}}  temperature
+       \item \texttt{iefjou\index{iefjou}} power dissipation by the Joule effect.
+       \item \texttt{ilapla(i)\index{ilapla(i)}} components of the laplace forces.
+     \end{list}
+   \end{list}
+   \item Joule Module effect~:
+   \begin{list}{-}{}
+     \item Calculation variables \texttt{rtp(iel,ivar)}
+     \begin{list}{\texttt{ivar} = }{}
+       \item \texttt{isca(ihm\index{ihm})} enthalpy
+       \item \texttt{isca(ipotr\index{ipotr})} real potential
+       \item \texttt{isca(ipoti\index{ipoti})} imaginary potential if its to be taken into account
+       \item \texttt{isca(iycoel(iesp)\index{iycoel}}) the mass fraction of \texttt{ngazg} composites if there are more than 1
+     \end{list}
+     \item Properties \texttt{propce(iel,ipproc(iprop))}
+     \begin{list}{\texttt{iprop} = }{}
+       \item \texttt{itemp\index{itemp}} temperature
+       \item \texttt{iefjou\index{iefjou}} volumic power dissipation by Joule effect.
+     \end{list}
+   \end{list}
+\end{list}
 
-       \item to give the coefficient of relaxation of the density SRROM:\\
-$\rho^{n+1}=SRROM*\rho^{n}+(1-SRROM)\rho^{n}$\\
+       \item to give the coefficient of relaxation of the density \texttt{srrom}:\\
+$\rho^{n+1}=\texttt{srrom}*\rho^{n}+(1-\texttt{srrom})\rho^{n}$\\
 (for the electric arc, the sub-relaxation is taken into account during the 2nd time step; for the Joule effect the sub relaxation is not accounted for unless the user specifies in \texttt{uselph}
 
-       \item indicates if the data will be fixed in the power dissipation or in the current, done in IELCOR.
-       \item target current fixed as COUIMP(electric arc module) or the power dissipation PUISM (Joule module effect).
-       \item Fix the initial value of potential difference DPOT, the for the calculations with a single fixed parameter as COUIMP or PUISM.
+       \item indicates if the data will be fixed in the power dissipation or in the current, done in \texttt{ielcor}.
+       \item target current fixed as \texttt{couimp} (electric arc module) or the power dissipation \texttt{puism} (Joule module effect).
+       \item Fix the initial value of potential difference \texttt{dpot},
+ the for the calculations with a single fixed parameter as \texttt{couimp} or \texttt{puism}.
 
 \end{list}
 
@@ -6865,9 +7449,9 @@ variables. Particular attention should be taken with the non-linear laws (for ex
  3rd degree polynomial law giving negative values of density)
 
 {\em WARNING: with the electric module, all the physical propertie are assumed as variables
- and so are stored in the PROPCE array. CP0, VISCLS0,VISCL0 are not used}
+ and so are stored in the \texttt{propce} array. \texttt{cp0}, \texttt{viscls0}, \texttt{viscl0} are not used}
 
-For the Joule effect, the user is obliged to supply the physical properties in the sub-
+For the Joule effect, the user is required to supply the physical properties in the sub-
 routine. Examples are given which are to be adapted by the user. If the temperature is
 to be determined to calculate the physical properties, the solved variable, enthalpy must
  be deduced. The preffered temperature-enthalpy law can be selected in the subruotine
@@ -6879,36 +7463,36 @@ subroutine can be re-used for the initialisation of the variables(\texttt{useliv
 
 
 %==================================
-\subsection[Management of the {\em EnSight} output in the electric module~: \texttt{uselen}]
-{Management of the {\em EnSight} output in the electric module~: \textmd{\texttt{uselen}}}
+\subsection[Management of the {\em EnSight} output in the electric module: \texttt{uselen}]
+{Management of the post-processing output in the electric module: \textmd{\texttt{uselen}}}
 %==================================
 
 \noindent
 \textit{Subroutine called at each chronological output}
 
-This subroutine allow the addition on N variables in the {\em EnSight} output file and
- works like the subroutine \texttt{usvpst} (with the electric module, it is however still
- possible to \texttt{usvpst}.
+This subroutine allows the addition on $n$ variables in the preprocessing output and
+ works like the subroutine \texttt{usvpst} (with the electric module, it is however also
+ possible to use \texttt{usvpst}.
 
 The algebraic variables related to the electric module are provided by default provided
- that they are not explicitely contained in the POPCE array:
+ that they are not explicitely contained in the \texttt{propce} array:
 \begin{list}{-}{}
 \item gradient of real potential in $V m^{-1}$ ($\grad Pot_R = -\vect{E}$)
 \item density of real current in $A m^{-2}$  ($\vect{j}=\sigma \vect{E}$)
 \end{list}
-specifically for the Joule module effect with IPPMOD(IELJOU)=2~:
+specifically for the Joule module effect with \texttt{ippmod(ieljou)}=2~:
 \begin{list}{-}{}
 \item gradient of imaginary potential in $V m^{-1}$
 \item density of real current in $A m^{-2}$
 \end{list}
-specifically for the electric arc module with IPPMOD(IELARC)=2~:
+specifically for the electric arc module with \texttt{ippmod(ielarc)}=2~:
 \begin{list}{-}{}
 \item magnetic field in $T$ (\vect{B} = \vect{rot}\,\vect{A})
 \end{list}
 
 If it is convenient for the user, there is no need to add this subroutine into the
  SRC directory: the post-processing will be done automatically (at the same frequency
- (NTCHR) as the other calculation variables)
+ (\texttt{NTCHR}) as the other calculation variables)
 
 
 %==================================
@@ -6922,8 +7506,8 @@ HI-83/03/016/A, P. Mathon, F. Archambeau et J.-M. H\'erard.} is
 activated, it is recommended to:
 \begin{list}{-}{}
  \item use the option ``time step variable in time and uniform in
-       space'' (IDTVAR=1) with a maximum Courant number of 0.4
-       (COUMAX=0.4): these choices must be written in \texttt{usini1}
+       space'' (\texttt{idtvar}=1) with a maximum Courant number of 0.4
+       (\texttt{coumax}=0.4): these choices must be written in \texttt{usini1}
  \item keep the convective numerical schemes proposed by default.
 \end{list}
 
@@ -6938,15 +7522,15 @@ activated, it is recommended to:
 These subroutines complete \texttt{usini1}.
 
 \texttt{uscfx1} allows to set non standard calculation options related to the
-compressible module, and in particular to fill in the key word ICFGRP
+compressible module, and in particular to fill in the key word \texttt{icfgrp}
 allowing to take into account the hydrostatic equilibrium in the
 boundary conditions.
 
 \texttt{uscfx2} allows to specify for the molecular thermal conductivity and
 the volumetric viscosity the following pieces of information:
 \begin{list}{-}{}
-  \item variable or not (IVISCV)
-  \item reference value (VISCV0)
+  \item variable or not (\texttt{iviscv})
+  \item reference value (\texttt{viscv0})
 \end{list}
 
 %==================================
@@ -7009,7 +7593,7 @@ temperature and specific total energy, only 2 variables out of the 4 are
 independant. The user may also initialise the variable pair he wants
 (apart from temperature-energy) and the two other variables will be
 calculated automatically by giving the right value to the variable
-ICCFTH used for the call to \texttt{uscfth}.
+\texttt{iccfth} used for the call to \texttt{uscfth}.
 
 %==================================
 \subsubsection{Compressible module thermodynamics: \textmd{\texttt{uscfth}}}
@@ -7044,7 +7628,7 @@ the whole variation range of the variables.
 
 
 %==================================
-\subsubsection{Initialisation of the main key words in the lagrangian
+\subsubsection{Initialisation of the main key words in the Lagrangian
    modeling: \textmd{\texttt{uslag1}}}
 %==================================
 
@@ -7053,9 +7637,9 @@ the whole variation range of the variables.
 
 \noindent
 This is one of the two subroutines which must be completed in
-the case of a calculation modeling a lagrangian multiphasic flow. This
+the case of a calculation modeling a Lagrangian multiphasic flow. This
 subroutine gathers in different headings all the key word which are
-necessary to configure the lagrangian module. The different headings
+necessary to configure the Lagrangian module. The different headings
 refer to:
 \begin{list}{$\bullet$}{}
 \item the global configuration parameters
@@ -7080,13 +7664,13 @@ calculation of the statistics at a given instant during the
 simulation. To do so, there are different strategies which are strongly
 related to the flow nature, stationary or not. \\
 Except from the cases where the injection conditions depend on the time,
-it is generally recommended to realise a first lagrangian calculation
+it is generally recommended to realise a first Lagrangian calculation
 whose aim is to get a nearly constant particle number in the calculation
 domain. In a second step, a calculation restart is done to calculate the
 statistics. \\
-When the monophasic flow is stationary and the inclusion presence rate
+When the single-phase flow is steady and the inclusion presence rate
 is low enough to neglect their influence on the continuous phase
-behaviour, it is better to realise a lagrangian calculation on a fixed
+behaviour, it is better to realise a Lagrangian calculation on a fixed
 field. It is then possible to calculate stationary volumetric statistics and
 to give a statistical weight higher than 1 to the particles, in order to
 reduce the number to treat while keeping the right concentrations. \\
@@ -7113,7 +7697,7 @@ thermal scalar associated with the continuous phase is the temperature
 in Kelvin, the unit change is done automatically. If the
 thermal scalar associated with the continuous phase is the enthalpy, the
 enthalpy-temperature conversion subroutine \texttt{usthht} must be
-completed for MODE=1, and must express temperatures in degrees
+completed for \texttt{mode}=1, and must express temperatures in degrees
 Celsius. \\
 In all cases, the thermal backward coupling of the dispersed phase on
 the continuous phase is adapted to the thermal scalar transported by the
@@ -7121,11 +7705,11 @@ fluid.
 
 \noindent
 \emph{WARNING: Up to now, parallelism and periodicity are not compatible with
-the lagrangian module. This compatibility will be soon implemented. It
-is however possible, in the framework of a lagrangian calculation on a
+the Lagrangian module. This compatibility will be soon implemented. It
+is however possible, in the framework of a Lagrangian calculation on a
 fixed field, to realise in a first step the calculation of the
 continuous phase using parallelism, and to conduct in a second step the
-lagrangian calculation by doing a restart on only one processor.}
+Lagrangian calculation by doing a restart on only one processor.}
 
 %==================================
 \subsubsection{Management of the boundary conditions related to the
@@ -7138,10 +7722,10 @@ of the boundary conditions concerns the particle behaviour when there
 is an interaction between its trajectory and a boundary face. These
 boundary conditions may be imposed independently of those concerning the
 eulerian fluid phase (they are of course generally coherent). The
-boundary condition zones are actually redefined by the lagrangian
+boundary condition zones are actually redefined by the Lagrangian
 module (cf. \S\ref{fvm_selector}), and a type of particle behaviour
 is associated with each one. \\
-The management of the lagrangian boundary conditions is done by means of
+The management of the Lagrangian boundary conditions is done by means of
 several user subroutines: \texttt{uslag2} for the classic conditions and
 \texttt{uslain} to specify profiles if necessary. Otherwise, the
 subroutine \texttt{uslabo} allows to define the type of particle/wall
@@ -7154,170 +7738,171 @@ interaction. It will be described in a specific paragraph.
 
 \noindent
 It is the second indispensable subroutine for every calculation using the
-lagrangian module. The main numerical variables and ``pointers'' are
+Lagrangian module. The main numerical variables and ``pointers'' are
 described below.
 
-\variab{IFRLAG}{IFRLAG(NFABOR)}{IA}{In the lagrangian module, the user
-defines NFRLAG\index{NFRLAG} boundary zones from the color of the
+\variab{ifrlag}{ifrlag(nfabor)}{ia}{In the Lagrangian module, the user
+defines \texttt{nfrlag\index{nfrlag}} boundary zones from the color of the
 boundary faces, or more generally from their properties (colors, groups
 ...), from the boundary conditions defined in \texttt{usclim}, or even
-from their coordinates. To do so, the array IFRLAG(NFABOR) giving for
-each face IFAC the number IFRLAG(IFAC) corresponding to the zone to
+from their coordinates. To do so, the array \texttt{ifrlag(nfabor)} giving for
+each face \texttt{ifac} the number \texttt{ifrlag(ifac)} corresponding to the zone to
 which it belongs, is completed. The zone numbers ({\em i.e.} the values
-of IFRLAG(IFAC)) are chosen freely by the user, but must be strictly
-positive integers inferior or equal to NFLAGM\index{NFLAGM} (parameter
+of \texttt{ifrlag(ifac)}) are chosen freely by the user, but must be strictly
+positive integers inferior or equal to \texttt{nflagm\index{nflagm}} (parameter
 stored in lagpar.h, whose default value is 100). A zone type is
 associated with every zone; it will be used to impose global boundary
 conditions. \emph{WARNING: it is essential that every boundary face
 belongs to a zone.}}
 
-\variab{IUSNCL}{IUSNCL(NFLAGM)}{IA}{For all the NFRLAG boundary zones
-previously identified, the number of classes NBCLAS\footnote{a class is a set
+\variab{iusncl}{iusncl(nflagm)}{ia}{For all the \texttt{nfrlag} boundary zones
+previously identified, the number of classes \texttt{nbclas}\footnote{a class is a set
 of particles sharing the same physical properties and the same
 characteristics concerning the injection in the calculation domain} of
-entering particles is given: IUSNCL(IZONE) = NBCLAS. By default, the
-number of particle classes is zero. The maximum number of classes is
-NCLAGM\index{NCLAGM} (parameter stored in lagpar.h, whose default value
-is 20).}
+entering particles is given: \texttt{iusncl(izone)} = \texttt{nbclas}.
+By default, the number of particle classes is zero. The maximum number of
+classes is \texttt{nclagm\index{nclagm}} (parameter stored in lagpar.h,
+whose default value is 20).}
 
-\variablist{IUSCLB}{IUSCLB(NFLAGM)}{IA}{For all the NFRLAG boundary zones
+\variablist{iusclb}{iusclb(nflagm)}{ia}{For all the \texttt{nfrlag} boundary zones
 previously identified, a particle boundary condition type is
 given. There are two categories of particle boundary condition types:
 those predefined in the subroutine \texttt{uslabo} (marked out by the
-key words IENTRL\index{IENTRL}, ISORTL\index{ISORTL}, IREBOL\index{IREBOL},
-IDEPO1\index{IDEPO1}, IDEPO2\index{IDEPO2}, IDEPO3\index{IDEPO3},
-IENCRL\index{IENCRL}) and the user boundary condition types (marked out
-by the key words JBORD1 to JBORD5)\index{JBORD1}, whose corresponding
+key words \texttt{ientrl\index{ientrl}}, \texttt{isortl\index{isortl}},
+\texttt{irebol\index{irebol}}, \texttt{idepo1\index{idepo1}},
+\texttt{idepo2\index{idepo2}}, \texttt{idepo3\index{idepo3}},
+\texttt{iencrl\index{iencrl}}) and the user boundary condition types (marked out
+by the key words \texttt{jbord1} to \texttt{jbord5)\index{jbord1}}, whose corresponding
 particle behaviour must be defined in the subroutine \texttt{uslabo}.
 
 \begin{list}{$\bullet$}{}
 
- \item if IUSCLB(IZONE) = IENTRL, IZONE is a particle injection zone. For
-       each particle class associated with this zone, some pieces of
+ \item if \texttt{iusclb(izone)} = \texttt{ientrl, izone} is a particle injection zone.
+       For each particle class associated with this zone, some pieces of
        information must be given (see below). If a particle trajectory
        crosses an injection zone, then we consider that this particle
        leaves the calculation domain.
 
- \item if IUSCLB(IZONE) = ISORTL, the particles interacting with the zone
-       IZONE leave the calculation domain.
+ \item if \texttt{iusclb(izone)} = \texttt{isortl}, the particles interacting with
+       the zone \texttt{izone} leave the calculation domain.
 
- \item if IUSCLB(IZONE) = IREBOL, the particles undergo an elastic
-       rebound on the boundary zone IZONE.
+ \item if \texttt{iusclb(izone)} = \texttt{irebol}, the particles undergo an elastic
+       rebound on the boundary zone \texttt{izone}.
 
- \item if IUSCLB(IZONE) = IDEPO1, the particles settle definitevely on
-       the boundary zone IZONE. These particles can not be put in suspension
-       again, and we consider that they leave the calculation domaine.
+ \item if \texttt{iusclb(izone)} = \texttt{idepo1}, the particles settle definitevely on
+       the boundary zone \texttt{izone}. These particles can not be put in suspension
+       again, and we consider that they leave the calculation domain.
 
- \item if IUSCLB(IZONE) = IDEPO2, the particles settle definitevely on
-       the boundary zone IZONE, but they are kept in the calculation
-       domain. This distinction with the type IDEPO1 is useful only when
-       post-processings in movement mode (IFENSI2 = 1) are realised: the
+ \item if \texttt{iusclb(izone)} = \texttt{idepo2}, the particles settle definitevely on
+       the boundary zone \texttt{izone}, but they are kept in the calculation
+       domain. This distinction with the type \texttt{idepo1} is useful only when
+       post-processings in movement mode (\texttt{ifensi2} = 1) are realised: the
        particles do not disappear after touching the boundary
-       zone. However, using IDEPO2 type zones necessitates more memory
-       than using IDEPO1 type zones.
+       zone. However, using \texttt{idepo2} type zones necessitates more memory
+       than using \texttt{idepo1} type zones.
 
- \item if IUSCLB(IZONE) = IDEPO3, the particles settle on the boudary
-       zone IZONE, but can be put in suspension again depending on the
+ \item if \texttt{iusclb(izone)} = \texttt{idepo3}, the particles settle on the boudary
+       zone \texttt{izone}, but can be put in suspension again depending on the
        local description of the continuous phase flow.
 
- \item if IUSCLB(IZONE) = IENCRL, the particles which are coal particles
-       (if IPHYLA = 2) can become fouled up on the zone IZONE. The
-       slagging is a IDEPO1 type deposit of the coal particle if a certain
+ \item if \texttt{iusclb(izone)} = \texttt{iencrl}, the particles which are coal particles
+       (if \texttt{iphyla} = 2) can become fouled up on the zone \texttt{izone}. The
+       slagging is a \texttt{idepo1} type deposit of the coal particle if a certain
        criterion is respected. Otherwise, the coal particle rebounds
-       (IREBOL type behaviour). This boundary condition type is available
-       if IENCRA = 1. A limit temperature TPRENC\index{TPRENC}, a
-       critical viscosity VISREF\index{VISREF} and the coal composition
+       (\texttt{irebol} type behaviour). This boundary condition type is available
+       if \texttt{iencra} = 1. A limit temperature \texttt{tprenc\index{tprenc}}, a
+       critical viscosity \texttt{visref\index{visref}} and the coal composition
        in mineral matters must be given in the subroutine
        \texttt{uslag1}. The slagging criterion given by default may be
        modified in the subroutine \texttt{uslabo}.
 
- \item if IUSCLB(IZONE) = JBORD1 to JBORD5, then the particle
-       interaction with the boundary zone IZONE is given by the user. The
-       particle behaviour associated with each type JBORD* must be defined in
+ \item if \texttt{iusclb(izone)} = \texttt{jbord1} to \texttt{jbord5}, then the particle
+       interaction with the boundary zone \texttt{izone} is given by the user. The
+       particle behaviour associated with each type \texttt{jbord}* must be defined in
        the subroutine \texttt{uslabo}.
 
 \end{list}
 }
 
 
-\variablist{IUSLAG}{IUSLAG(NCLAGM, NFLAGM, NDLAIM)}{IA}{Some pieces of
+\variablist{iuslag}{iuslag(nclagm, nflagm, ndlaim)}{ia}{Some pieces of
 information must be given for each particle class associated with an
 injection zone. The first part consists in integers contained in the
-array IUSLAG. There are at the most NDLAIM\index{NDLAIM} integers. These
-pieces of information must be provided for each class ICLAS and each
-particle injection zone IZONE. They are marked out by means of ``pointers'':
+array \texttt{iuslag}. There are at the most \texttt{ndlaim\index{ndlaim}} integers. These
+pieces of information must be provided for each class \texttt{iclas} and each
+particle injection zone \texttt{izone}. They are marked out by means of ``pointers'':
 \begin{list}{$\rightarrow$}{}
 
-\item IUSLAG(ICLAS,IZONE,IJNBP): number of particles to inject in the
+\item \texttt{iuslag(iclas,izone,ijnbp)}: number of particles to inject in the
       calculation domain per class and per zone.
 
-\item IUSLAG(ICLAS,IZONE,IJFRE): injection period (expressed in number
+\item \texttt{iuslag(iclas,izone,ijfre)}: injection period (expressed in number
       of time steps). If the period is null, then there is injection only
-      at the first absolute lagrangian time step (including the restart
+      at the first absolute Lagrangian time step (including the restart
       calculations).
 
-\item IUSLAG(ICLAS,IZONE,IJUVW): type of velocity condition:
+\item \texttt{iuslag(iclas,izone,ijuvw)}: type of velocity condition:
 
 \begin{list}{-}{}
 
-\item if IUSLAG(ICLAS,IZONE,IJUVW) = 1, the particle velocity vector is
-      imposed, and its components must be given in the array RUSLAG (see
+\item if \texttt{iuslag(iclas,izone,ijuvw)} = 1, the particle velocity vector is
+      imposed, and its components must be given in the array \texttt{ruslag} (see
       below).
 
-\item if IUSLAG(ICLAS,IZONE,IJUVW) = 0, the particle velocity is imposed
+\item if \texttt{iuslag(iclas,izone,ijuvw)} = 0, the particle velocity is imposed
       perpendicular to the injection boundary face and with the norm
-      RUSLAG(ICLAS,IZONE,IUNO).
+      \texttt{ruslag(iclas,izone,iuno)}.
 
-\item if IUSLAG(ICLAS,IZONE,IJUVW) = -1, the particle injection velocity
+\item if \texttt{iuslag(iclas,izone,ijuvw)} = -1, the particle injection velocity
       is equal to the fluid velocity at the center of the cell
       neighboring the injection boundary face.
 
 \end{list}
 
-\item IUSLAG(ICLAS,IZONE,INUCHL): when the particles are coal particles
-      (IPHYLA = 2), this part of the array contains the coal index-number,
-      between 1 and NCHARB (defined by the user in the thermo-chemical
-      file dp\_FCP, with  NCHARB$\leqslant$NCHARM =
-      3).\index{NCHARB}\index{NCHARM}
+\item \texttt{iuslag(iclas,izone,inuchl)}: when the particles are coal particles
+      (\texttt{iphyla} = 2), this part of the array contains the coal index-number,
+      between 1 and \texttt{ncharb} (defined by the user in the thermo-chemical
+      file dp\_FCP, with  \texttt{ncharb$\leqslant$ncharm =
+      3).\index{ncharb}\index{ncharm}}
 
 \end{list}
 }
 
-\variablist{RUSLAG}{RUSLAG(NCLAGM, NFLAGM, NDLAGM)}{RA}{Some pieces of
+\variablist{ruslag}{ruslag(nclagm, nflagm, ndlagm)}{ra}{Some pieces of
 information must be given for each particle class associated with an
 injection zone. The second and last part consists in real numbers
-contained in the array RUSLAG. There are at the most
-NDLAGM\index{NDLAGM} such real numbers. These pieces of information must
-be provided for each class ICLAS and each particle injection zone
-IZONE. They are marked out by means of ``pointers'':
+contained in the array \texttt{ruslag}. There are at the most
+\texttt{ndlagm\index{ndlagm}} such real numbers. These pieces of information must
+be provided for each class \texttt{iclas} and each particle injection zone
+\texttt{izone}. They are marked out by means of ``pointers'':
 \begin{list}{$\rightarrow$}{}
 
-\item RUSLAG(ICLAS,IZONE,IUNO): norm of the injection velocity,
-\\useful if IUSLAG(ICLAS,IZONE,IJUVW)~=~0.
+\item \texttt{ruslag(iclas,izone,iuno)}: norm of the injection velocity,
+\\useful if \texttt{iuslag(iclas,izone,ijuvw)}~=~0.
 
-\item RUSLAG(ICLAS,IZONE,IUPT), RUSLAG(ICLAS,IZONE,IVPT),\\
-RUSLAG(ICLAS,IZONE,IWPT): components of the particle injection vector,
-\\useful if IUSLAG(ICLAS,IZONE,IJUVW)~=~1.
+\item \texttt{ruslag(iclas,izone,iupt)}, \texttt{ruslag(iclas,izone,ivpt)},\\
+\texttt{ruslag(iclas,izone,iwpt)}: components of the particle injection vector,
+\\useful if \texttt{iuslag(iclas,izone,ijuvw)}~=~1.
 
-\item RUSLAG(ICLAS,IZONE,IDEBT): allows to impose a particle mass
+\item \texttt{ruslag(iclas,izone,idebt)}: allows to impose a particle mass
       flow. According to the number of injected particles, the particle
-      statistical weight TEPA(NPT,JRPOI) is recalculated in order to
+      statistical weight \texttt{tepa(npt,jrpoi)} is recalculated in order to
       respect the required mass flow (the number of injected particles
       does not change). When the mass flow is null, it is not taken into
       account.
 
-\item RUSLAG(ICLAS,IZONE,IPOIT): particle statistical weight per class and
+\item \texttt{ruslag(iclas,izone,ipoit)}: particle statistical weight per class and
       per zone.
 
-\item RUSLAG(ICLAS,IZONE,IDPT): particle diameter. When the particles
-      are coal particles (IPHYLA = 2), this diameter is provided by the
-      thermo-chemical file dp\_FCP {\it via} the array DIAM20(ICLG),
-      where ICLG is the ``pointer'' on the total class number ({\em
+\item \texttt{ruslag(iclas,izone,idpt)}: particle diameter. When the particles
+      are coal particles (\texttt{iphyla} = 2), this diameter is provided by the
+      thermo-chemical file dp\_FCP {\it via} the array \texttt{diam20(iclg)},
+      where \texttt{iclg} is the ``pointer'' on the total class number ({\em
       i.e.} for all the coal types). When the standard deviation of the
       particle diameter is different from zero, this diameter becomes a
       mean diameter.
 
-\item RUSLAG(ICLAS,IZONE,IVDPT): standard deviation of the injection
+\item \texttt{ruslag(iclas,izone,ivdpt)}: standard deviation of the injection
       diameter. To impose this standard deviation allows to respect
       granulometric distribution: the diameter of each particle is
       calculated from the mean diameter, the standard deviation and a
@@ -7327,48 +7912,48 @@ RUSLAG(ICLAS,IZONE,IWPT): components of the particle injection vector,
       aberrant values. If this standard deviation is null, then the
       particle diameter is constant per class and per zone.
 
-\item RUSLAG(ICLAS,IZONE,IROPT): particle density. When the particles
-      are coal particles (IPHYLA = 2), this density is set in the
-      thermo-chemical file dp\_FCP {\em via} the array RHO0CH(ICHA),
-      where ICHA is the coal number.
+\item \texttt{ruslag(iclas,izone,iropt)}: particle density. When the particles
+      are coal particles (\texttt{iphyla} = 2), this density is set in the
+      thermo-chemical file dp\_FCP {\em via} the array \texttt{rho0ch(icha)},
+      where \texttt{icha} is the coal number.
 
-\item RUSLAG(ICLAS,IZONE,ITPT): particle injection temperature in
-      \degresC. Useful if IPHYLA = 1 and if ITPVAR = 1.
+\item \texttt{ruslag(iclas,izone,itpt)}: particle injection temperature in
+      \degresC. Useful if \texttt{iphyla} = 1 and if \texttt{itpvar} = 1.
 
-\item RUSLAG(ICLAS,IZONE,ICPT): particle injection specific heat. Useful
-      if IPHYLA = 1 and if ITPVAR = 1. When the particles are coal
-      particles (IPHYLA = 2), the specific heat is set in the
-      thermo-chemical file dp\_FCP {\em via} the array CP2CH(ICHA).
+\item \texttt{ruslag(iclas,izone,icpt)}: particle injection specific heat. Useful
+      if \texttt{iphyla} = 1 and if \texttt{itpvar} = 1. When the particles are coal
+      particles (\texttt{iphyla} = 2), the specific heat is set in the
+      thermo-chemical file dp\_FCP {\em via} the array \texttt{cp2ch(icha)}.
 
-\item RUSLAG(ICLAS,IZONE,IEPSI): particle emissivity. Useful if IPHYLA =
-      1 and if ITPVAR = 1, and if the radiation module is activated for
-      the continuous phase (note: when IPHYLA = 2, the coal particle
-      emissivity is given the value 1).
+\item \texttt{ruslag(iclas,izone,iepsi)}: particle emissivity. Useful if
+      \texttt{iphyla} = 1 and if \texttt{itpvar} = 1, and if the radiation
+      module is activated for the continuous phase (note: when \texttt{iphyla} = 2,
+      the coal particle emissivity is given the value 1).
 
-\item RUSLAG(ICLAS,IZONE,IHPT): particle injection temperature in
+\item \texttt{ruslag(iclas,izone,ihpt)}: particle injection temperature in
       \degresC\ when these particles are coal
-      particles. The array RUSLAG(ICLAS,IZONE,ITPT) is then no longer
-      active. Useful if IPHYLA = 2.
+      particles. The array \texttt{ruslag(iclas,izone,itpt)} is then no longer
+      active. Useful if \texttt{iphyla} = 2.
 
-\item RUSLAG(ICLAS,IZONE,IMCHT): mass of reactive coal. Useful if IPHYLA = 2.
+\item \texttt{ruslag(iclas,izone,imcht)}: mass of reactive coal. Useful if \texttt{iphyla} = 2.
 
-\item RUSLAG(ICLAS,IZONE,IMCKT):  mass of coke. This mass is null
+\item \texttt{ruslag(iclas,izone,imckt)}:  mass of coke. This mass is null
       if the coal did not begin to burn before its injection. Useful if
-      IPHYLA = 2.
+      \texttt{iphyla} = 2.
 
 \end{list}
 }
 
-\variab{IUSVIS}{IUSVIS(NFLAGM)}{IA}{In order to display the variables at
+\variab{iusvis}{iusvis(nflagm)}{ia}{In order to display the variables at
 the boundaries defined in the subroutine \texttt{uslag1}, this array
 allows to select the boundary zones on which a display is wanted. To do
-so, a number is associated with each zone IZONE. If this number is
-strictly positive, the corresponding zone is selected ; if it is null,
+so, a number is associated with each zone \texttt{izone}. If this number is
+strictly positive, the corresponding zone is selected; if it is null,
 the corresponding zone is eliminated. If several zones are associated
 with the same number, they will be displayed together in the same
 selection with \textit{EnSight}. Each selection will be split in
 \textit{EnSight} parts according to the geometric types of the present
-boundary faces ((\textit{i.e.} 'tria3', 'quad4' et 'nsided').}
+boundary faces ((\textit{i.e.} 'tria3', 'quad4' and 'nsided').}
 
 \minititre{Subroutine \texttt{uslain}}
 
@@ -7381,16 +7966,18 @@ It is not obligatory to intervene in this subroutine.
 \noindent
 \texttt{uslain} is used to complete \texttt{uslag2} when the particles
 must be injected in the domain according to fine constraints (profile,
-position ...): the arrays ETTP, TEPA and ITEPA can be modified here for
-the new particles (these arrays were previously completed automatically
-by the code from the data provided by the user in \texttt{uslag2}).
+position, ...): the arrays \texttt{ettp}, \texttt{tepa} and \texttt{itepa}
+can be modified here for the new particles (these arrays were previously
+completed automatically by the code from the data provided by the user
+in \texttt{uslag2}).
 
 \noindent
 In the case of a more advanced utilisation, it is possible to modify
-here all the arrays ETTP, TEPA and ITEPA. The particles already present in the
-calculation domain are marked out by an index varying between 1 and
-NBPART. The particles entering the calculation domain at the current
-iteration are marked out by an index varying between NBPART+1 and NBPNEW.
+here all the arrays \texttt{ettp}, \texttt{tepa} and \texttt{itepa}.
+The particles already present in the calculation domain are marked out
+by an index varying between 1 and \texttt{nbpart}. The particles entering
+the calculation domain at the current iteration are marked out by an index
+varying between \texttt{nbpart}+1 and \texttt{nbpnew}.
 
 
 %==================================
@@ -7406,23 +7993,23 @@ It is not obligatory to intervene in this subroutine, but it is required
 in four different cases.
 
 \noindent
-Firstly, an intervention is required when JBORD* type boundary
+Firstly, an intervention is required when \texttt{jbord}* type boundary
 conditions are used: it is then necessary to code in this subroutine the
 corresponding particle/boundary interactions.
 
 \noindent
 Secondly, it is possible to select the particle/boundary interaction types
-(IREBOL, IDEPO1, ...) for which the user wants to save the wall
+(\texttt{irebol}, \texttt{idepo1}, ...) for which the user wants to save the wall
 statistics activated in the subroutine \texttt{uslag1}.
 
 \noindent
 Thirdly, if user boundary statistics are activated {\em via}
-the key word NUSBOR\index{NUSBOR} in the subroutine \texttt{uslag1}, it
+the key word \texttt{nusbor\index{nusbor}} in the subroutine \texttt{uslag1}, it
 is then necessary to program them in the subroutine
 \texttt{uslabo}. When the boundary statistics are stationary, these new
-boundary statistics are added using the array PARBOR. When they are
-non-stationary (number of lagrangian iterations lower than NSTBOR, or
-ISTTIO = 0), the array PARBOR is reset at every iteration.
+boundary statistics are added using the array \texttt{parbor}. When they are
+non-stationary (number of Lagrangian iterations lower than \texttt{nstbor}, or
+\texttt{isttio} = 0), the array \texttt{parbor} is reset at every iteration.
 
 \noindent
 Fourthly, when the user wants to modify the formulation of the wall
@@ -7432,48 +8019,50 @@ in the subroutine \texttt{uslabo}.
 \noindent
 \minititre{Construction rules of a new particle/boundary interaction}
 \begin{enumerate}
-\item The real numbers KX, KY, KZ provide the coordinates of the intersection
+\item The real numbers \texttt{kx}, \texttt{ky}, \texttt{kz} provide the
+      coordinates of the intersection
       point between the current particle trajectory and the interacting
       boundary face.
 
 \item If the user wants to modify the particle position, it can be done
-      directly {\em via} the arrays ETTP and ETTPA:
+      directly {\em via} the arrays \texttt{ettp} and \texttt{ettpa}:
 
 \begin{list}{-}{}
 \item new departure point of the current trajectory segment: \\
-ETTPA(NPT,JXP), ETTPA(NPT,JYP), ETTPA(NPT,JZP)
+\texttt{ettpa(npt,jxp)}, \texttt{ettpa(npt,jyp)}, \texttt{ettpa(npt,jzp)}
 \item new arrival point of the current trajectory segment: \\
-ETTP(NPT,JXP), ETTP(NPT,JYP), ETTP(NPT,JZP)
+\texttt{ettp(npt,jxp)}, \texttt{ettp(npt,jyp)}, \texttt{ettp(npt,jzp)}
 \end{list}
 
 \item The particle and the fluid velocities may be modified according to
-      the desired interaction {\em via} the arrays VITPAR\index{VITPAR}
-      and VITFLU\index{VITFLU}, they \textbf{must not} be modified {\em
-      via} ETTP and ETTPA in this subroutine.
+      the desired interaction {\em via} the arrays \texttt{vitpar\index{vitpar}}
+      and \texttt{vitflu\index{vitflu}}, they \textbf{must not} be modified {\em
+      via} \texttt{ettp} and \texttt{ettpa} in this subroutine.
 
 \item For a given interaction, it is necessary to specify the key word
-      ISUIVI\index{ISUIVI}:
+      \texttt{isuivi\index{isuivi}}:
 
 \begin{list}{-}{}
-\item ISUIVI = 0 if the particle does not need to be followed in
+\item \texttt{isuivi} = 0 if the particle does not need to be followed in
       the mesh after the interaction between its trajectory and the
-      boundary face (by default, it is the case for IENTRL, ISORTL,
-      IDEPO1, IDEPO2) ;
-\item ISUIVI = 1 to continue to follow the particle in the mesh
-      after its interaction (by default, it is the case for IREBOL and
-      IDEPO3). The value of ISUIVI may be a function of the particle and
-      boundary state (for instance, ISUIVI = 0 or 1 depending on the
-      physical properties for the interaction type IENCRL).
+      boundary face (by default, it is the case for \texttt{ientrl}, \texttt{isortl},
+      \texttt{idepo1}, \texttt{idepo2});
+\item \texttt{isuivi} = 1 to continue to follow the particle in the mesh
+      after its interaction (by default, it is the case for \texttt{irebol} and
+      \texttt{idepo3}). The value of \texttt{isuivi} may be a function of the
+      particle and
+      boundary state (for instance, \texttt{isuivi} = 0 or 1 depending on the
+      physical properties for the interaction type \texttt{iencrl}).
 \end{list}
 
-\item The array zone ITEPA(NPT,JISOR), containing the index-number of the
+\item The array zone \texttt{itepa(npt,jisor)}, containing the index-number of the
       cell where the particle is, must be updated. Generally:
 
 \begin{list}{-}{}
-\item ITEPA(NPT,JISOR) = IFABOR(KFACE) when the particle stays in the
-      calculation domain (KFACE is the number of the interacting
+\item \texttt{itepa(npt,jisor)} = \texttt{ifabor(kface)} when the particle stays in the
+      calculation domain (\texttt{kface} is the number of the interacting
       boundary face).
-\item ITEPA(NPT,JISOR) = 0 to eliminate definitively the particle from
+\item \texttt{itepa(npt,jisor)} = 0 to eliminate definitively the particle from
       the calculation domain.
 \end{list}
 
@@ -7487,16 +8076,16 @@ the associated stochastic equations is always a first-order, even if a
 second-order scheme is used elsewhere.
 
 %==================================
-\subsubsection{Option of particle cloning/fusion: \textmd{\texttt{uslaru}}}
+\subsubsection{Option for particle cloning/merging: \textmd{\texttt{uslaru}}}
 %==================================
 
 \noindent
-\textit{Subroutine called every lagrangian iteration.}
+\textit{Subroutine called every Lagrangian iteration.}
 
 \noindent
 An intervention in this subroutine is required if the particle
-cloning/fusion option is activated {\em via} the key word IROULE. The
-importance function CROULE must then be completed. \\
+cloning/merging option is activated {\em via} the key word \texttt{iroule}. The
+importance function \texttt{croule} must then be completed. \\
 The aim of this technique is to reduce the number of particles to treat in
 the whole flow and to refine the description of the particle cloud only
 where the user wants to get volumetric statistics more accurate than in the
@@ -7533,14 +8122,14 @@ number in every cell}
 
 \noindent
 \texttt{uslast}\textit{: subroutine called at the end of every
-lagrangian iteration}
+Lagrangian iteration}
 
 \noindent
 \texttt{uslaen}\textit{: subroutine called at every chronological output
 and every listing printing}
 
 \noindent
-The subroutine \texttt{uslast} is called at the end of every lagrangian
+The subroutine \texttt{uslast} is called at the end of every Lagrangian
 iteration, it allows therefore the modification of variables related to
 the particles, or the extraction and preparation of data to display in
 the listing or the post-processing.
@@ -7552,13 +8141,13 @@ is required if supplementary user volumetric statistics are wanted.
 \minititre{User volumetric statistics:}
 
 \noindent
-The volumetric statistics are calculated by means of the array STATIS. Two
+The volumetric statistics are calculated by means of the array \texttt{statis}. Two
 situations may happen:
 \begin{list}{-}{}
-\item the calculation of the statistics is not stationary: STATIS is
-      reset at every lagrangian iteration ;
+\item the calculation of the statistics is not stationary: \texttt{statis} is
+      reset at every Lagrangian iteration;
 \item the calculation of the statistics is stationary: the array
-      STATIS is used to store cumulated values of variables, which will
+      \texttt{statis} is used to store cumulated values of variables, which will
       be averaged at the end of the calculation in the subroutine
       \texttt{uslaen}.
 \end{list}
@@ -7572,11 +8161,11 @@ stationary in second part.
 
 \noindent
 In this subroutine, the variable whose volumetric statistic is wanted is
-stored in the array STATIS. In the framework of stationary statistics,
+stored in the array \texttt{statis}. In the framework of stationary statistics,
 the average itself is calculated in the subroutine \texttt{uslaen}. This
 average is obtained through the division of the cumulated value by: \\
 \hspace*{1cm}- either the duration of the stationary statistics
-     calculation stored in the variable TSTAT\index{TSTAT}, \\
+     calculation stored in the variable \texttt{tstat\index{tstat}}, \\
 \hspace*{1cm}- or the number of particles in statistical weight. \\
 This method of averaging is applied to every piece in the listing and
      to the post-processing outputs.
@@ -7596,18 +8185,19 @@ therefore described.
 %==================================
 
 \noindent
-\textit{Subroutine called every lagrangian sub-step.}
+\textit{Subroutine called every Lagrangian sub-step.}
 
 \noindent
 An intervention in this subroutine is required if supplementary user
-variables are added to the particle state vector (arrays ETTP and ETTPA).
+variables are added to the particle state vector (arrays \texttt{ettp}
+and \texttt{ettpa}).
 
 \noindent
 The integration of the stochastic differential equations associated with
 supplementary particulate variables is done in this subroutine. \\
 When the integration scheme of the stochastic differential equations is
-a first-order (NORDRE = 1), this subroutine is called once every
-lagrangian iteration, if it is a second-order (NORDRE = 2), it is called
+a first-order (\texttt{nordre} = 1), this subroutine is called once every
+Lagrangian iteration, if it is a second-order (\texttt{nordre} = 2), it is called
 twice. \\
 
 \noindent
@@ -7616,32 +8206,33 @@ form:
 \begin{displaymath}
 \frac{d \Phi_p}{dt} \,=\, - \frac{\Phi_p - \Pi}{\tau_\phi}
 \end{displaymath}
-where $\Phi_p$ is the I\textit{th} supplementary user variable (NVLS in
-total) available in ETTP(NBPMAX, JVLS(I)) and in ETTPA(NBPMAX,JVLS(I)),
+where $\Phi_p$ is the I\textit{th} supplementary user variable (\texttt{nvls} in
+total) available in \texttt{ettp(nbpmax, jvls(i))} and in
+ \texttt{ettpa(nbpmax,jvls(i))},
 $\tau_\phi$ is a quantity homogen to a characteristic time, and $\Pi$ is
 a coefficient which may be expressed as a function of the other
-particulate variables contained in ETTP and ETTPA. \\
+particulate variables contained in \texttt{ettp} and \texttt{ettpa}. \\
 In order to do the integration of this equation, the following
 parameters must be provided:
 \begin{list}{-}{}
-\item $\tau_\phi$, equation characteristic time, in the array AUXL1 for
+\item $\tau_\phi$, equation characteristic time, in the array \texttt{auxl1} for
       every particle,
-\item $\Pi$ , equation coefficient, in the array AUXL2. If the
+\item $\Pi$ , equation coefficient, in the array \texttt{auxl2}. If the
       integration scheme is a first-order, then $\Pi$ is expressed as a
       function of the particulate variables at the previous iteration,
-      stored in the array ETTPA. If the chosen scheme is a second-order,
+      stored in the array \texttt{ettpa}. If the chosen scheme is a second-order,
       then $\Pi$ is expressed at the first call of the subroutine
-      (prediction step NOR = 1) as a function of the variables at the
-      previous iteration (stored in ETTPA), then at the second call
-      (correction step NOR = 2) as a function of the predicted variables
-      stored in the array ETTP.
+      (prediction step \texttt{nor} = 1) as a function of the variables at the
+      previous iteration (stored in \texttt{ettpa}), then at the second call
+      (correction step \texttt{nor} = 2) as a function of the predicted variables
+      stored in the array \texttt{ettp}.
 \end{list}
 
 \noindent
 If necessary, the thermal characteristic time $\tau_c$, whose
 calculation can be modified by the user in the subroutine
 \texttt{uslatc}, is stored for each particle in the part
-TEMPCT(NBPMAX,1) of the array TEMPCT.
+\texttt{tempct(nbpmax,1)} of the array \texttt{tempct}.
 
 
 %==================================
@@ -7649,7 +8240,7 @@ TEMPCT(NBPMAX,1) of the array TEMPCT.
 %==================================
 
 \noindent
-\textit{Subroutine called every lagrangian sub-step.}
+\textit{Subroutine called every Lagrangian sub-step.}
 
 \noindent
 An intervention in this subroutine is not obligatory.
@@ -7658,14 +8249,14 @@ An intervention in this subroutine is not obligatory.
 In this subroutine, the particle relaxation time may be modified
 according to the chosen formulation of the drag coefficient. \\
 The particle relaxation time, modified or not by the user, is available
-in the array TAUP.
+in the array \texttt{taup}.
 
 %==================================
 \subsubsection{Particle thermal characteristic time: \textmd{\texttt{uslatc}}}
 %==================================
 
 \noindent
-\textit{Subroutine called every lagrangian sub-step.}
+\textit{Subroutine called every Lagrangian sub-step.}
 
 \noindent
 An intervention in this subroutine is not obligatory.
@@ -7675,4 +8266,4 @@ In this subroutine, the particle thermal characteristic time may be
 modified according to the chosen correlation for the calculation of the
 Nusselt number. \\
 The thermal characteristic time, modified or not by the user, is
-available in the zone TEMPCT(NBPMAX,1) of the array TEMPCT.
+available in the zone \texttt{tempct(nbpmax,1)} of the array \texttt{tempct}.
diff --git a/doc/user/saturne2.tex b/doc/user/saturne2.tex
index 92b9762..673fc19 100644
--- a/doc/user/saturne2.tex
+++ b/doc/user/saturne2.tex
@@ -45,14 +45,14 @@ the following data are given:
 \begin{list}{$\bullet$}{}
 \item \textbf{Variable name}: Name of the variable containing the key word.
 
-\item \textbf{Type}: A (Array), I (Integer), R (Real number), C
+\item \textbf{Type}: a (Array), i (Integer), r (Real number), c
       (Character string).
 
 \item \textbf{Allowed values}: list or range of allowed values.
 
 \item \textbf{Default}: value defined by the code before any user
       modification (every key word has one). In some cases, a
-      non-allowed value is given (generally -999 or -1.D12), to force the
+      non-allowed value is given (generally $-999$ or $-10^{12}$), to force the
       user to specify a value. If he does not do it, the code may:
 \begin{list}{-}{}
 \item automatically use a recommended value (for instance, automatical
@@ -71,7 +71,7 @@ the following data are given:
       the time step).
 \end{list}
 
-\item \textbf{Level}: L1, L2 ou L3
+\item \textbf{Level}: L1, L2 or L3
 \begin{list}{-}{}
 \item L1 (level 1): the users will have to modify it in the framework of
       standard applications. The L1 key words are written in bold.
@@ -91,7 +91,7 @@ the following data are given:
 The L1 key words can be modifed through the Graphical Use Interface or
 in the \texttt{usini1} subroutine. L2 and L3 key words can only be modified through
 the \texttt{usini1} subroutine, even if they do not appear in the version proposed
-as example it the \texttt{FORT/USERS/base} directory.\\
+as example it the \texttt{SRC/REFERENCE/base} directory.\\
 It is however recommended not to modify the key words which do not belong to the L1
 level.
 
@@ -99,27 +99,20 @@ The alphabetical key word list is displayed in the index, in the end of
 this report.
 
 \minititre{Notes}
-$\bullet\ $The notation ``D'' refers to a double precision real. For
-           instance, 1.8D-2 means 0.018. \\
-$\bullet\ $The notation ``GRAND'' (which can be used in the code)
-corresponds to 1.D12.
+$\bullet\ $The notation ``d'' refers to a double precision real. For
+           instance, 1.8d-2 means 0.018. \\
+$\bullet\ $The notation ``{\tt grand}'' (which can be used in the code)
+corresponds to $10^{12}$.
 
 %==================================
-\subsection{Inputs-outputs}
+\subsection{Input-output}
 %==================================
 
 \minititre{Notes}
 \begin{list}{$\bullet$}{}
 \item Two different files can have neither the same unit number nor the
       same name.
-\item  Text files (also called ``formatted'' files, in opposition to
-      ``binary'' files) are bigger, longer to write and to read, but can
-      be used on every architecture (in particular, it is an asset for
-      calculation restart files). However, \CS can automatically recognise and
-      convert Big Endian/Little Endian files. It is therefore usually possible on
-      a given architecture to use binary restart files generated on another
-      architecture.
- \end{list}
+\end{list}
 
 %==================================
 \subsubsection{''Calculation'' files}
@@ -200,9 +193,9 @@ useful if and only if {\tt ivrtex=1}}
 files are text files. Their number and names are specified by the user in
 the \texttt{usvort} subroutine.\\
 (Although it corresponds to an ``upstream'' data file, {\tt impdvo} is
-initialized to {\tt 20} because, in case of multiple vortex entries,
+initialized to 20 because, in case of multiple vortex entries,
 it is opened at the same time as the {\tt ficmvo} upstream restart file,
-which already uses the {\tt impamo} unit)\\
+which already uses unit 11)\\
 useful if and only if {\tt ivrtex=1}}
 
 
@@ -227,7 +220,7 @@ useful in case of gas or pulverised coal combustion or electric arc}
 {name of the thermochemical data file. The launch script is designed to copy the
 user specified thermochemical data file in the temporary execution directory
 under the name \texttt{dp\_tch}, for \CS to open it properly. Should the value
-of FICFPP be changed, the launch script would have to be adapted.\\
+of {\tt ficfpp} be changed, the launch script would have to be adapted.\\
 useful in case of gas or pulverised coal combustion}
 
 \motcle{impjnf}{i}{strictly positive integer}{\tt impfpp}{O}{L3}
@@ -363,8 +356,8 @@ always useful}
 variable), indicator of whether it should be post-processed or not \\
 \hspace*{1.3cm}= -999: not initialised. By default, the post-processed
 quantities are the unknowns (pressure, velocity, $k$, $\varepsilon$,
-$R_{ij}$, $\omega$, $\varphi$, $\overline{f}$, scalars), the density,
-the turbulent viscosity and the time step if is not uniform\\
+$R_{ij}$, $\omega$, $\varphi$, $\overline{f}$, scalars), density,
+turbulent viscosity and the time step if is not uniform\\
 \hspace*{1.3cm}= 0: not post-processed\\
 \hspace*{1.3cm}= 1: post-processed\\
 useful if and only if the variable is defined at the cell centers:
@@ -403,22 +396,22 @@ index-numbers must be specified (it is not mandatory to generate all
 the variables at all the probes).
 
 
-\motcleb{NCAPT}{I}{positive or null integer}{0}{O}{L1}
-{total number of probes (limited to NCAPTM=100)\\
+\motcleb{ncapt}{i}{positive or null integer}{0}{O}{L1}
+{total number of probes (limited to {\tt ncaptm}=100)\\
 always useful }
 
-\motcleb{XYZCAP}{RA}{real numbers}{0.D0}{O}{L1}
+\motcleb{xyzcap}{ra}{real numbers}{0.0}{O}{L1}
 {3D-coordinates of the probes\\
-the coordinates are written: XYZCAP(I,J), with I = 1, 2 or 3 and J
-$\leqslant$ NCAPT\\
-useful if and only if NCAPT $>$ 0}
+the coordinates are written: {\tt xyzcap(i,j)}, with $i$ = 1, 2 or 3 and $j$
+$\leqslant$ {\tt ncapt}\\
+useful if and only if {\tt ncapt} $>$ 0}
 
-\motcleb{IHISVR}{IA}{-999, -1 or positive or null integer}{-999}{O}{L1}
-{number IHISVR(N, 1) and index-numbers IHISVR(N, J$>$1) of the record
+\motcleb{ihisvr}{ia}{-999, -1 or positive or null integer}{-999}{O}{L1}
+{number {\tt ihisvr(n, 1)} and index-numbers {\tt ihisvr(n, j$>$1)} of the record
 probes to be used for each variable, {\em i.e.} calculation variable
 or physical property defined at the cell centers.
-With IHISVR(N, 1)=-999 or -1, IHISVR(N, J$>$1) is useless.\\
-\hspace*{.5cm} $\bullet$ IHISVR(N, 1): number of record probes to use
+With {\tt ihisvr(n, 1)}=-999 or -1, {\tt ihisvr(n, j$>$1)} is useless.\\
+\hspace*{.5cm} $\bullet$ {\tt ihisvr(n, 1)}: number of record probes to use
 for the variable N\\
 \hspace*{1.3cm}= -999: by default: chronogical records are generated on
 all the probes if N is one of the main variables (pressure, velocity,
@@ -426,79 +419,80 @@ turbulence, scalars), the local time step or the turbulent
 viscosity. For the other quantities, no chronological record is generated.\\
 \hspace*{1.3cm}= -1: chronological records are produced on all the probes\\
 \hspace*{1.3cm}= 0: no chronological record on any probe\\
-\hspace*{1.3cm}$>0$: chronological record on IHISVR(N, 1) probes to be specified
-with  IHISVR(N, J$>$1)\\
-always useful, must be inferior or equal to NCAPT\\
-\hspace*{.5cm} $\bullet$ IHISVR(N, J$>$1): index-numbers of the probes
-used for the variable N\\
-(with J$\leqslant$IHISVR(N,1)+1)\\
-\hspace*{1.3cm}= -999: by default: if IHISVR(N, 1) $\ne$
+\hspace*{1.3cm}$>0$: chronological record on {\tt ihisvr(n, 1)} probes to be
+specified with  {\tt ihisvr(n, j$>$1)}\\
+always useful, must be inferior or equal to {\tt ncapt}\\
+\hspace*{.5cm} $\bullet$ {\tt ihisvr(n, j$>$1)}: index-numbers of the probes
+used for the variable $n$\\
+(with $j$$\leqslant${\tt ihisvr(n,1)+1)}\\
+\hspace*{1.3cm}= -999: by default: if {\tt ihisvr(n, 1)} $\ne$
 -999, the  code stops. Otherwise, refer to the description of the case
-IHISVR(N, 1)=-999\\
-useful if and only if IHISVR(N, 1) $>$ 0 \\
-The condition IHISVR(N, J) $\leqslant$NCAPT must be respected.\\
-For an easier use, it is recommended to simply specify IHISVR(N,1)=-1 for
+{\tt ihisvr(n, 1)}=-999\\
+useful if and only if {\tt ihisvr(n, 1)} $>$ 0 \\
+The condition {\tt ihisvr(n, j)} $\leqslant${\tt ncapt} must be respected.\\
+For an easier use, it is recommended to simply specify {\tt ihisvr(n,1)}=-1 for
 all the interesting variables.}
 
-\motcle{IMPHIS}{IA}{strictly positive integer}{30 and 31}{O}{L3}
+\motcle{imphis}{ia}{strictly positive integer}{30 and 31}{O}{L3}
 {working units for the production of chronological record files by the Kernel\\
 useful if and only if chronological files are produced ({\em i.e.} there
-is N for which IHISVR(N, 1) $\ne$ 0)}
+is $n$ for which {\tt ihisvr(n, 1)} $\ne$ 0)}
 
-\motcle{EMPHIS}{C}{string of less than 80 characters}{\tt ./}{O}{L3}
+\motcle{emphis}{c}{string of less than 80 characters}{\tt ./}{O}{L3}
 {directory in which the potential chronological record files generated by
 the Kernel will be written (path related to the execution directory)\\
 it is recommended to keep the default value and, if necessary, to modify the
 launch script to copy the files in the alternate destination directory\\
 useful if and only if chronological record files are generated ({\em
-i.e.} there is N for which IHISVR(N, 1) $\ne$ 0)}
+i.e.} there is {\tt n} for which {\tt ihisvr(n, 1)} $\ne$ 0)}
 
-\motcle{EXTHIS}{C}{string of less than 80 characters}{hst}{O}{L3}
+\motcle{exthis}{c}{string of less than 80 characters}{hst}{O}{L3}
 {extension of the chronological record files\\
 useful if and only if chronological record files are generated ({\em
-i.e.} there is N for which IHISVR(N, 1) $\ne$ 0)}
+i.e.} there is {\tt n} for which {\tt ihisvr(n, 1)} $\ne$ 0)}
 
-\motcleb{NTHIST}{I}{-1 or strictly positive integer}{1 or -1}{O}{L1}
+\motcleb{nthist}{i}{-1 or strictly positive integer}{1 or -1}{O}{L1}
 {output period of the chronological record files\\
 \hspace*{1.3cm}= -1: no output\\
-\hspace*{1.3cm}$>$ 0: period  (every NTHIST time step)\\
+\hspace*{1.3cm}$>$ 0: period  (every {\tt nthist} time step)\\
 The default value is -1 if there is no chronological record file to
-generate (if there is no probe, NCAPT = 0, or if IHISVR(N, 1)=0 for
+generate (if there is no probe, {\tt ncapt} = 0, or if {\tt ihisvr(n, 1)}=0 for
 all the variables) and 1 otherwise\\
 If chronological records are generated, it is usually wise to keep the default
-value NTHIST=1, in order to avoid missing any high frequency evolution (unless
+value {\tt nthist}=1, in order to avoid missing any high frequency evolution (unless
 the total number of time steps is much too big)\\
 useful if and only if chronological record files are generated ({\em
-i.e.} there are probes (NCAPT$>$0) there is N for which IHISVR(N, 1)
-$\ne$ 0)}
+i.e.} there are probes ({\tt ncapt}$>$0) there is {\tt n} for which
+{\tt ihisvr(n, 1)} $\ne$ 0)}
 
-\motcle{NTHSAV}{I}{-1 or positive or null integer}{0}{O}{L3}
+\motcle{nthsav}{i}{-1 or positive or null integer}{0}{O}{L3}
 {saving period the chronological record files (they are first stored in a
-temporary file and then saved every NTHSAV time step)\\
+temporary file and then saved every {\tt nthsav} time step)\\
 \hspace*{1.3cm}= 0: by default (4 times during a calculation)\\
 \hspace*{1.3cm}= -1: saving at the end of the calculation\\
-\hspace*{1.3cm}$>$ 0: period (every NTHSAV time step)\\
+\hspace*{1.3cm}$>$ 0: period (every {\tt nthsav} time step)\\
 During the calculation, the user can read the chronological record files
 in the execution directory when they have been saved, {\em i.e.} at the first
 time step, at the tenth time step and when the time step number is a multiple of
-NTHSAV (multiple of (NTMABS-NTPABS)/4 if NTHSAV=0)\\
+{\tt nthsav} (multiple of {\tt (ntmabs-ntpabs)/4} if {\tt nthsav}=0)\\
 {\em Note: using the \texttt{ficstp} file allows to update the value of
-NTMABS. Hence, if the calculation is at the time step n, the saving of the
-chronological record files can be forced by changing NTMABS to NTPABS+4(n+1)
-using \texttt{ficstp}; after the files have been saved, NTMABS can be put back
-to its original value, still using \texttt{ficstp}.}\\
+{\tt ntmabs}. Hence, if the calculation is at the time step n, the saving of the
+chronological record files can be forced by changing {\tt ntmabs} to
+{\tt ntpabs}+4(n+1)
+using \texttt{ficstp}; after the files have been saved, {\tt ntmabs} can be
+reset to its original value, still using \texttt{ficstp}.}\\
 useful if and only if chronological record files are generated ({\em
-i.e.} there are probes (NCAPT$>$0) there is N for which IHISVR(N, 1)
-$\ne$ 0)}
+i.e.} there are probes ({\tt ncapt}$>$0) there is {\tt n} for which
+{\tt ihisvr(n, 1)} $\ne$ 0)}
 
 \minititre{Non-standard use through \texttt{ushist}}
 (see p.\pageref{prg_ushist})
 
-\motcle{IMPUSH}{IA}{strictly positive integer}{\tt 33 to 32+NUSHMX=49}{O}{L3}
+\motcle{impush}{ia}{strictly positive integer}{33 to 32+\texttt{nushmx}=49}{O}{L3}
 {units of the user chronological record files\\
 useful if and only if the subroutine \texttt{ushist} is used}
 
-\motcle{FICUSH}{CA}{strings of 13 characters}{\texttt{ush*} or
+\motcle{ficush}{ca}{strings of 13 characters}{\texttt{ush*} or
 \texttt{ush*.n\_*}}{O}{L2}
 {names of the user chronological record files.
 In the case of a non-parallel calculation, the suffix applied the file
@@ -524,94 +518,93 @@ $<f_1*f_2...*f_n>$. The variables $f_i$ (defined at the cell centers)
 which may be taken into account are the followings:
 \begin{list}{-}{}
 \item the solved calculation variables (velocity, pressure ...),
-\item the auxiliary variables from the array PROPCE (density and
+\item the auxiliary variables from the array {\tt propce} (density and
       physical properties when they are variable in space).
 \end{list}
 
 The averages are treated like auxiliary variables defined at the cell
-centers and stored in the PROPCE array. The standard post-processing
+centers and stored in the {\tt propce} array. The standard post-processing
 actions may therefore be activated, like the writing in the listing or
 the output of result files (EnSight, MED, ...). However, if the user
 wants to manipulate the averages in a more advanced way, it is
 recommended to refer first to the user subroutines \texttt{usproj} and
-\texttt{usvpst} which provide examples. Indeed, the PROPCE array
+\texttt{usvpst} which provide examples. Indeed, the {\tt propce} array
 does not contain the time averages directly, but only the cumulated value
 of the product $f_1*f_2...*f_n$ of the selected
 variables $f_i$. The division by the cumulated duration is done only
 before the writing of the results. See also page \pageref{prg_moyennes}.
 
-To calculate $p$ time averages of the type $<f_1*f_2...*f_{n(IMOM)}>$,
+To calculate $p$ time averages of the type $<f_1*f_2...*f_{n(imom)}>$,
 the user must:
 \begin{list}{-}{}
-\item make sure that $p\leqslant$NBMOMX (do not overstep the maximum
+\item make sure that $p\leqslant${\tt nbmomx} (do not overstep the maximum
       number of averages),
-\item make sure that $n(IMOM)\leqslant$NDGMOX for every average IMOM
+\item make sure that $n(imom)\leqslant${\tt ndgmox} for every average {\tt imom}
        (do not overstep the maximum degree, {\it i.e} the maximum number
        of variables which may compose an average),
-\item define every average IMOM (1$\leqslant$IMOM$\leqslant p$, without
-      skipping any index-number) by marking out the $n(IMOM)$ variables
-      which form it by means of the array IDFMOM(II,IMOM) (with
-      1$\leqslant$II$\leqslant$n(IMOM)),
-\item define for each average IMOM the time step number at which the
+\item define every average {\tt imom} (1$\leqslant${\tt imom}$\leqslant p$,
+      without skipping any index-number) by marking out the $n({\tt imom})$
+      variables which form it by means of the array {\tt idfmom(ii,imom)} (with
+      1$\leqslant${\tt ii}$\leqslant$n({\tt imom})),
+\item define for each average {\tt imom} the time step number at which the
       calculation of the cumulated value must begin, by means of the
-      array NTDMOM(IMOM).
+      array {\tt ntdmom(imom)}.
 \end{list}
 
-The total number of averages ($p$=NBMOMT) is automatically determined by
-the code from the values of IDTMOM. The user must not specify specify it.
+The total number of averages ($p$={\tt nbmomt}) is automatically determined by
+the code from the values of {\tt idtmom}. The user must not specify specify it.
 
-\motcleb{IDFMOM}{IA}{0, $\pm$ variable index-number}{0}{O}{L1}
+\motcleb{idfmom}{ia}{0, $\pm$ variable index-number}{0}{O}{L1}
 {Index-number of the variables composing a time average of the type
-$<f_1*f_2...*f_n>$. For every time average IMOM to calculate:\\
-\hspace*{1.3cm} - if IDFMOM(II,IMOM) is positive, it refers to the
+$<f_1*f_2...*f_n>$. For every time average {\tt imom} to calculate:\\
+\hspace*{1.3cm} - if {\tt idfmom(ii,imom)} is positive, it refers to the
                   index-number of a solved variable (stored in the array
-                  RTP), like for instance a velocity component
-                  (IU(IPHAS), IV(IPHAS), IW(IPHAS)) or the pressure
-                  (IPR(IPHAS))\\
-\hspace*{1.3cm} - if IDFMOM(II,IMOM) is negative, it refers to the
+                  {\tt rtp}), like for instance a velocity component
+                  ({\tt iu(iphas)}, {\tt iv(iphas)}, {\tt iw(iphas)})
+                  or the pressure ({\tt ipr(iphas)})\\
+\hspace*{1.3cm} - if {\tt idfmom(ii,imom)} is negative, it refers to the
                   index-number of an auxiliary variable (stored in
-                  PROPCE), like for instance the density
-                  (IDFMOM(II,IMOM)=-IROM(IPHAS))\\
+                  {\tt propce}), like for instance the density\\
+                  ({\tt idfmom(ii,imom)=-irom(iphas)})\\
 useful if and only if the user wants to calculate time averages}
 
-\motcleb{NTDMOM}{IA}{integer}{-1}{O}{L1}
-{For every average IMOM to calculate, absolute time step number at which
+\motcleb{ntdmom}{ia}{integer}{-1}{O}{L1}
+{For every average {\tt imom} to calculate, absolute time step number at which
 the calculation should begin. The value -1 means ``never''. Every
 strictly negative value (in particular -1) will considered an error and
 cause the calculation to stop (because the user is supposed to want to
 calculate the averages he has defined)\\
 useful if and only if the user wants to calculate time averages}
 
-\motcleb{IMOOLD}{IA}{-2, 1$\leqslant$ integer $\leqslant$ JBMOMT}{-2}{O}{L1}
+\motcleb{imoold}{ia}{-2, 1$\leqslant$ integer $\leqslant$ {\tt jbmomt}}{-2}{O}{L1}
 {Correspondence table of the averages in the case of a calculation
-restart. In this case, for every average IMOM in the current
-calculation (1$\leqslant$IMOM$\leqslant$NBMOMX), IMOOLD(IMOM) gives the
-index-number of the corresponding average in the previous calculation
-(in which JBMOMT averages were calculated). \\
-\hspace*{1.3cm} - if IMOOLD(IMOM) = -2, the user lets the code automatically
-            determine the
-                correspondence. By default, the average II in the
-                current calculation will correspond to the average II in
+restart. In this case, for every average {\tt imom} in the current
+calculation (1$\leqslant${\tt imom}$\leqslant${\tt nbmomx}), {\tt imoold(imom)}
+gives the index-number of the corresponding average in the previous calculation
+(in which {\tt jbmomt} averages were calculated). \\
+\hspace*{1.3cm} - if {\tt imoold(imom)} = -2, the user lets the code automatically
+            determine the correspondence. By default, the average {\tt ii} in the
+                current calculation will correspond to the average {\tt ii} in
                 the previous calculation, if it existed.
-                Otherwise, II will be a new average.\\
-\hspace*{1.3cm} - if IMOOLD(IMOM) = -1, the average is reset to zero.\\
-\hspace*{1.3cm} - if IMOOLD(IMOM) = KK, the average IMOM will correspond
-to the average KK=IMOOLD(IMOM) in the previous calculation.\\
+                Otherwise, {\tt ii} will be a new average.\\
+\hspace*{1.3cm} - if {\tt imoold(imom) = -1}, the average is reset to zero.\\
+\hspace*{1.3cm} - if {\tt imoold(imom) = kk}, the average {\tt imom} will correspond
+to the average {\tt kk=imoold(imom)} in the previous calculation.\\
 useful if and only if the user wants to calculate averages.
 Allows to add or suppress some averages, to reset them, to change their
 order, ...\\
-{\em Warning : if the calculation is not a restart, IMOOLD must not be
+{\em Warning: if the calculation is not a restart, {\tt imoold} must not be
 specified (its value must remain -2)}}
 
 %==================================
 \subsubsection{Others}
 %==================================
 
-\motcle{IMPUSR}{IA}{strictly positive integer}{\tt 70 to 69+NUSRMX=79}{O}{L3}
+\motcle{impusr}{ia}{strictly positive integer}{{\tt 70} to {\tt 69+nusrmx}=79}{O}{L3}
 {unit numbers for potential user specified files\\
 useful if and only if the user needs files (therefore always useful, by security)}
 
-\motcleb{FICUSR}{CA}{string of 13 characters}{\tt usrf* or usrf*.n\_*}{O}{L1}
+\motcleb{ficusr}{ca}{string of 13 characters}{\tt usrf* or usrf*.n\_*}{O}{L1}
 {name of the potential user specified files. In the case of a non-parallel
 calculation, the suffix applied the file name is a two digit number:
 from \texttt{usrf01} to \texttt{usrf10}. In the case of a
@@ -622,27 +615,27 @@ from \texttt{usrf01.n\_0002} to \texttt{usrf10.n\_0002}. The opening,
 closing, format and location of these files must be managed by the user.\\
 useful if and only if the user needs files (therefore always useful, by security)}
 
-\motcleb{ILISVR}{IA}{-999, 1 or 0}{-999}{O}{L1}
+\motcleb{ilisvr}{ia}{-999, 1 or 0}{-999}{O}{L1}
 {for every quantity (variable, physical or numerical property ...),
 indicator concerning the writing in the execution report file \\
 \hspace*{1.3cm}= -999: automatically converted into 1 if the concerned
 quantity is one of the main variables (pressure, velocity, turbulence,
-scalar), the density, the time step if IDTVAR $\ne$ 0 or the turbulent
+scalar), the density, the time step if {\tt idtvar} $\ne$ 0 or the turbulent
 viscosity. Otherwise converted into 0.\\
 \hspace*{1.3cm}= 1: writing in the execution listing.\\
 \hspace*{1.3cm}= 0: no writing.\\
 always useful}
 
-\motcleb{IWARNI}{IA}{integer}{0}{O}{L1}
-{IWARNI(IVAR) characterises the level of detail of the outputs for the
-variable IVAR (from 1 to NVAR). The quantity of information increases with
-its value.\\
+\motcleb{iwarni}{ia}{integer}{0}{O}{L1}
+{{\tt iwarni(ivar)} characterises the level of detail of the outputs for the
+variable {\tt ivar} (from 1 to {\tt nvar}). The quantity of information
+increases with its value.\\
 Impose the value 0 or 1 for a reasonable listing size. Impose the value 2
 to get a maximum quantity of information, in case of problem during the
 execution.\\
 always useful}
 
-\motcleb{NOMVAR}{CA}{string of less than 80 characters}{``''}{O}{L1}
+\motcleb{nomvar}{ca}{string of less than 80 characters}{``''}{O}{L1}
 {name of the variables (unknowns, physical properties ...): used in the
 execution listing, in the post-processing files, etc.\\
 {``''}: not initialised (the code chooses the manes by default)\\
@@ -651,19 +644,19 @@ characters, to get a clear execution listing (some advanced writing
 levels take into account only the first 8 characters).\\
 always useful}
 
-\motcleb{NTLIST}{I}{-1 or strictly positive integer}{1}{O}{L1}
+\motcleb{ntlist}{i}{-1 or strictly positive integer}{1}{O}{L1}
 {writing period in the execution report file\\
 \hspace*{1.3cm}= -1: no writing\\
-\hspace*{1.3cm}$>$ 0: period (every NTLIST time step)\\
-The value of NTLIST must be adapted according to the number of iterations
-carried out in the calculation. Keeping NTLIST to 1 will indeed provide
+\hspace*{1.3cm}$>$ 0: period (every {\tt ntlist} time step)\\
+The value of {\tt ntlist} must be adapted according to the number of iterations
+carried out in the calculation. Keeping {\tt ntlist} to 1 will indeed provide
 a maximum volume of information, but if the number of time steps is too large,
 the execution report file might become too big and unusable
 (problems with disk space, memory problems while opening the file with a text
 editor, problems finding the desired information in the file, ...).\\
 always useful}
 
-\motcle{NTSUIT}{I}{-1, 0 or positive or null integer}{0}{O}{L3}
+\motcle{ntsuit}{i}{-1, 0 or positive or null integer}{0}{O}{L3}
 {saving period of the restart files\\
 \hspace*{1.3cm}= -1: only at the end of the calculation\\
 \hspace*{1.3cm}= 0: by default (four times during the calculation)\\
@@ -677,21 +670,21 @@ always useful}
 \subsubsection{Calculation management}
 %==================================
 
-\motcle{IECAUX}{I}{0 or 1}{1}{O}{L2}
+\motcle{iecaux}{i}{0 or 1}{1}{O}{L2}
 {indicates the writing (=1) or not (=0) of the auxiliary calculation
 restart file\\
 always useful}
 
-\motcle{ILEAUX}{I}{0 or 1}{1}{O}{L2}
+\motcle{ileaux}{i}{0 or 1}{1}{O}{L2}
 {indicates the reading (=1) or not (=0) of the auxiliary
 calculation restart file\\
-useful if and only if ISUITE=1}
+useful if and only if {\tt isuite}=1}
 
-\motcleb{INPDT0}{I}{0 or 1}{0}{O}{L1}
+\motcleb{inpdt0}{i}{0 or 1}{0}{O}{L1}
 {indicates the calculation mode: 1 for a zero time step control
 calculation, {\em i.e.} without solving the transport equations,
 and 0 for a standard calculation.\\
-In case of a calculation using the control mode (INPDT0=1), when the
+In case of a calculation using the control mode ({\tt inpdt0}=1), when the
 calculation is not a restart, the equations are not solved, but the
 physical properties and the boundary conditions are calculated. When
 the calculation is a restart, the physical properties and the boundary
@@ -699,38 +692,38 @@ conditions are those read from the restart file (note: in the case of a
 second-order time scheme, the mass flow is modified as if a normal
 time step was realised: the mass flow generated in an potential
 post-processing is therefore not the mass flow read from the restart file).\\
-In the control mode (INPDT0=1), the variable NTMABS is not used.\\
-In the standard mode (INPDT0=0), the code solves the equations at least
-once, even if NTMABS=0.\\
+In the control mode ({\tt inpdt0}=1), the variable {\tt ntmabs} is not used.\\
+In the standard mode ({\tt inpdt0}=0), the code solves the equations at least
+once, even if {\tt ntmabs}=0.\\
 always useful}
 
-\motcleb{ISUITE}{I}{0 or 1}{0}{C}{L1}
+\motcleb{isuite}{i}{0 or 1}{0}{C}{L1}
 {indicator of a calculation restart (=1) or not (=0)\\
 always useful}
 
-\motcle{NTCABS}{I}{integer}{\tt NTPABS}{O}{L3}
+\motcle{ntcabs}{i}{integer}{\tt ntpabs}{O}{L3}
 {current time step number\\
 always useful\\
-NTCABS is initialised and updated automatically by the code, its value is not to
-be modified by the user}
+{\tt ntcabs} is initialised and updated automatically by the code,
+its value is not to be modified by the user}
 
-\motcleb{NTMABS}{I}{integer $>$ NTPABS}{10}{C}{L1}
+\motcleb{ntmabs}{i}{integer $>$ {\tt ntpabs}}{10}{C}{L1}
 {number of the last time step after which the calculation stops. It is
-an absolute number: for the restart calculations, NTMABS takes into
+an absolute number: for the restart calculations, {\tt ntmabs} takes into
 account the number of time steps of the previous calculations. For
 instance, after a first calculation of 3 time steps, a restart file of 2
-time steps is realised by setting NTMABS=3+2=5\\
+time steps is realised by setting {\tt ntmabs}=3+2=5\\
 always useful}
 
-\motcle{NTPABS}{I}{integer}{0, read}{O}{L3}
+\motcle{ntpabs}{i}{integer}{0, read}{O}{L3}
 {number of the last time step in the previous calculation. In the case of
-a restart calculation, NTPABS is read from the restart file. Otherwhise
+a restart calculation, {\tt ntpabs} is read from the restart file. Otherwhise
 it is initialised to 0\\
 always useful\\
-NTPABS is initialised automatically by the code, its value is not to
+{\tt ntpabs} is initialised automatically by the code, its value is not to
 be modified by the user}
 
-\motcle{TMARUS}{R}{-1D0 or strictly positive real}{-1D0}{O}{L3}
+\motcle{tmarus}{r}{-1 or strictly positive real}{-1}{O}{L3}
 {margin in seconds on the remaining CPU time which is necessary to allow
 the calculation to stop automatically and write all the required results
 (for the machines having a queue manager)\\
@@ -740,23 +733,24 @@ always useful, but the default value should not be changed
 unless absolutely necessary.}
 
 
-\motcle{TTCABS}{R}{positive or null real number}{\tt TTPABS}{O}{L3}
+\motcle{ttcabs}{r}{positive or null real number}{\tt ttpabs}{O}{L3}
 {physical simulation time at the current time step. For the restart
-calculations, \mbox{TTCABS} takes into account the physical time of the
+calculations, \mbox{ttcabs} takes into account the physical time of the
 previous calculations.\\
-If the time step is uniform (IDTVAR=0 or 1), TTCABS increases of DT (value of
-the time step) at each iteration. If the time step is non-uniform (IDTVAR=2),
-TTCABS increases of DTREF at each time step.\\
+If the time step is uniform ({\tt idtvar}=0 or 1), {\tt ttcabs} increases
+of {\tt dt} (value of the time step) at each iteration. If the time step is
+non-uniform ({\tt idtvar}=2),
+{\tt ttcabs} increases of {\tt dtref} at each time step.\\
 always useful\\
-TTCABS is initialised and updated automatically by the code, its value is not to
-be modified by the user}
+{\tt ttcabs} is initialised and updated automatically by the code,
+its value is not to be modified by the user}
 
-\motcle{TTPABS}{R}{positive or null real number}{0, read}{O}{L3}
+\motcle{ttpabs}{r}{positive or null real number}{0, read}{O}{L3}
 {simulation physical time at the last time step of the previous
-calculation. In the case of a restart calculation, TTPABS is read from
+calculation. In the case of a restart calculation, {\tt ttpabs} is read from
 the restart file. Otherwhise it is initialised to 0.\\
 always useful\\
-TTCABS is initialised automatically by the code, its value is not to
+{\tt ttcabs} is initialised automatically by the code, its value is not to
 be modified by the user}
 
 %==================================
@@ -764,58 +758,58 @@ be modified by the user}
 %==================================
 
 
-\motcleb{ISCOLD}{IA}{-999, 1$\leqslant$ integer $\leqslant$ JSCAL}{-999}{O}{L1}
+\motcleb{iscold}{ia}{-999, 1$\leqslant$ integer $\leqslant$ {\tt jscal}}{-999}{O}{L1}
 {correspondence table of the scalars in the case of a calculation
-restart. For a calculation restart with NSCAL scalars, ISCOLD(ISCAL)
-gives, for every scalar ISCAL of the current calculation
-(1$\leqslant$ISCAL$\leqslant$NSCAL), the index-number of the
-corresponding scalar in the previous calculation (in which JSCAL scalars were
+restart. For a calculation restart with {\tt nscal} scalars, {\tt iscold(iscal)}
+gives, for every scalar {\tt iscal} of the current calculation
+(1$\leqslant${\tt iscal}$\leqslant${\tt nscal}), the index-number of the
+corresponding scalar in the previous calculation (in which {\tt jscal} scalars were
 taken into account).\\
-\hspace*{1.3cm} ISCOLD(ISCAL) = -999: the code automatically determines the
+\hspace*{1.3cm} {\tt iscold(iscal)} = -999: the code automatically determines the
 correspondence. By default, the following rules are applied:\\
-\hspace*{2.cm} - the user scalar II of the current calculation is
-initialised by the the user scalar II of the previous calculation, if
-this scalar existed already (otherwise, II is a new scalar).\\
-\hspace*{2.cm} - the particular physics scalar JJ is initialised by
-the particular physics scalar JJ of the previous calculation if this
-scalar existed already (otherwise, JJ is a new scalar).\\
-\hspace*{1.3cm} ISCOLD(ISCAL) = KK: the scalar ISCAL (user or particular
-physics scalar) is initialised by the scalar KK=ISCOLD(ISCAL) of the
+\hspace*{2.cm} - the user scalar {\tt ii} of the current calculation is
+initialised by the the user scalar {\tt ii} of the previous calculation, if
+this scalar existed already (otherwise, {\tt ii} is a new scalar).\\
+\hspace*{2.cm} - the particular physics scalar {\tt jj} is initialised by
+the particular physics scalar {\tt jj} of the previous calculation if this
+scalar existed already (otherwise, {\tt jj} is a new scalar).\\
+\hspace*{1.3cm} {\tt iscold(iscal) = kk}: the scalar {\tt iscal} (user or particular
+physics scalar) is initialised by the scalar {\tt kk=iscold(iscal)} of the
 previous calculation.\\
 always useful. Allows to add or remove some scalars, to change the
 solving order, to change the physics, ...}
 
-\motcleb{NSCAUS}{I}{0$\leqslant$ integer $\leqslant$ NSCMAX}{0}{O}{L1}
+\motcleb{nscaus}{i}{0$\leqslant$ integer $\leqslant$ {\tt nscmax}}{0}{O}{L1}
 {number of user scalars solutions of an advection equation\\
 always useful}
 
-\motcleb{ISCAVR}{IA}{0, 1 $\leqslant$ integer $\leqslant$ NSCAL}{0}{O}{L1}
-{if the scalar ISCAL is the average of the square of the fluctuations of a
-scalar KK, then \mbox{ISCAVR(ISCAL)=KK}.
-Otherwise ISCAVR(ISCAL)=0. For ISCAL and KK, the user can only use index-numbers
-refering to user scalars ($\leqslant$ NSCAUS). \\
+\motcleb{iscavr}{ia}{0, 1 $\leqslant$ integer $\leqslant$ {\tt nscal}}{0}{O}{L1}
+{if the scalar {\tt iscal} is the average of the square of the fluctuations of a
+scalar {\tt kk}, then \mbox{{\tt iscavr(iscal)=kk}}.
+Otherwise {\tt iscavr(iscal)}=0. For {\tt iscal} and {\tt kk}, the user
+can only use index-numbers refering to user scalars ($\leqslant$ {\tt nscaus}). \\
 always useful}
 
-\motcle{IPHSCA}{IA}{1 $\leqslant$ integer $\leqslant$ NPHAS}{0}{O}{L3}
-{for every scalar ISCAL, IPHSCA(ISCAL) is the index-number of the
+\motcle{iphsca}{ia}{1 $\leqslant$ integer $\leqslant$ {\tt nphas}}{0}{O}{L3}
+{for every scalar {\tt iscal}, {\tt iphsca(iscal)} is the index-number of the
 associated phase\\
 always useful}
 
-\motcleb{ISCALT}{IA}{-1 or integer $>$ 0}{-1}{O}{L1}
-{for every phase IPHAS, ISCALT(IPHAS) is the index-number of the scalar
-representing the temperature or the enthalpy. If ISCALT(IPHAS)=-1, no
+\motcleb{iscalt}{ia}{-1 or integer $>$ 0}{-1}{O}{L1}
+{for every phase {\tt iphas}, {\tt iscalt(iphas)} is the index-number of the scalar
+representing the temperature or the enthalpy. If {\tt iscalt(iphas)}=-1, no
 scalar represents the temperature nor the enthalpy. When a specific
 physics module is activated (gas combustion, pulverised coal,
 electricity or compressible),
-the user must not modify ISCALT (the choice is made
-automatically)\footnote{in the case of the compressible module, ISCALT does not
-correspond to the temperature nor enthalpy but to the total energy}.\\
-useful if and only if NSCAL $\geqslant$ 1}
+the user must not modify {\tt iscalt} (the choice is made
+automatically)\footnote{in the case of the compressible module, {\tt iscalt}
+does not correspond to the temperature nor enthalpy but to the total energy}.\\
+useful if and only if {\tt nscal} $\geqslant$ 1}
 
-\motcleb{ISCSTH}{IA}{-1, 0, 1, 2 or 3}{-10}{O}{L1}
+\motcleb{iscsth}{ia}{-1, 0, 1, 2 or 3}{-10}{O}{L1}
 {type of scalar\\
 \hspace*{1.3cm}= -10: not specified. By default, the code chooses
-ISCSTH(ISCAL)=0 for the scalars apart from ISCALT(IPHAS)\\
+{\tt iscsth(iscal)}=0 for the scalars apart from {\tt iscalt(iphas)}\\
 \hspace*{1.3cm}= -1: temperature in degrees Celsius (use only in case of
 radiation modeling)\\
 \hspace*{1.3cm}= 0: passive scalar\\
@@ -825,16 +819,16 @@ activated)\\
 \hspace*{1.3cm}= 3: total energy (this value is automatically chosen by the code
 when using the compressible module, it must never be used otherwise and must
 never be specified by the user)\\
-useful if and only if NSCAL $\geqslant$ 1. The distinction between
-ISCSTH(ISCAL) = -1 or 1 (respectively degrees Celsius or Kelvin) is
+useful if and only if {\tt nscal} $\geqslant$ 1. The distinction between
+{\tt iscsth(iscal)} = -1 or 1 (respectively degrees Celsius or Kelvin) is
 useful only in case of radiation modeling. For calculations without
-radiation modeling, use ISCSTH(ISCAL)=1 for the temperature. When a
+radiation modeling, use {\tt iscsth(iscal)}=1 for the temperature. When a
 particular physics module is activated (gas combustion, pulverised coal,
-electricity or compressible), the user must not modify ISCSTH (the choice is made
-automatically: the solved variable is the enthalpy or the total energy).\\
+electricity or compressible), the user must not modify {\tt iscsth} (the choice
+is made automatically: the solved variable is the enthalpy or the total energy).\\
 It is also reminded that, in the case of a coupling with
 \syrthes, the solved thermal variable should be the temperature
-(ISCSTH(ISCALT(IPHAS))=1 or -1).
+({\tt iscsth(iscalt(iphas))}=1 or -1).
 More precisely, everything is designed in the code to allow for the
 running of a calculation coupled with \syrthes with the enthalpy as thermal
 variable (the correspondence and conversion is then specified by the user in
@@ -844,9 +838,9 @@ tested. With the compressible model, it is possible to carry out calculations
 coupled with \syrthes, although the thermal scalar represents the total
 energy and not the temperature.}
 
-\motcle{ICLVFL}{IA}{-1, 0, 1 or 2}{-1}{O}{L3}
-{for every scalar ISCAL representing the average of the square of the
-fluctuations of another scalar II=ISCAVR(ISCAL) (noted $f$),
+\motcle{iclvfl}{ia}{-1, 0, 1 or 2}{-1}{O}{L3}
+{for every scalar {\tt iscal} representing the average of the square of the
+fluctuations of another scalar {\tt ii=iscavr(iscal)} (noted $f$),
 indicator of the clipping method\\
 \hspace*{1.3cm}= -1: no clipping because the scalar does not represent
 the average of the square of the fluctuations of another scalar\\
@@ -854,28 +848,28 @@ the average of the square of the fluctuations of another scalar\\
 \hspace*{1.3cm}= 1: clipping to 0 for lower values and to
 \mbox{$(f-f_{min})(f_{max}-f)$} for higher values, where $f$ is
 the associated scalar, $f_{min}$ and $f_{max}$ its minimum and maximum
-values specified by the user ({\em i.e.} SCAMIN(II) and SCAMAX(II)) \\
-\hspace*{1.3cm}= 2: clipping to MAX(0,SCAMIN(ISCAL)) for lower
-values and to SCAMAX(ISCAL) for higher values. SCAMIN and SCAMAX
+values specified by the user ({\em i.e.} {\tt scamin(ii)} and {\tt scamax(ii)}) \\
+\hspace*{1.3cm}= 2: clipping to {\tt max(0,scamin(iscal))} for lower
+values and to {\tt scamax(iscal)} for higher values. {\tt scamin} and {\tt scamax}
 are limits specified by the user\\
-useful for the scalars ISCAL for which ISCAVR(ISCAL)$>$0.}
+useful for the scalars {\tt iscal} for which {\tt iscavr(iscal)}$>$0.}
 
-\motcle{ITBRRB}{I}{0 or 1}{0}{O}{L3}
+\motcle{itbrrb}{i}{0 or 1}{0}{O}{L3}
 {Reconstruction (=1) or not (=0) of the temperature, enthalpy or total energy
 value in the boundary cells. Useful in the case of coupling with \syrthes
 and with radiation.}
 
-\motcle {ICPSYR}{TI}{-999,0,1}{-999}{O}{L3}
-{For each scalar ISCAL, ICPSYR(ISCAL) indicates if it is
+\motcle {icpsyr}{ia}{-999,0,1}{-999}{O}{L3}
+{For each scalar {\tt iscal}, {\tt icpsyr(iscal)} indicates if it is
 coupled with \syrthes (=1) or not (=0).
 There can be only one coupled scalar per calculation.\\
 \hspace*{1.3cm}=-999: by default\\
-\hspace*{2.cm} $\bullet$ ICPSYR(ISCAL)=1 for the thermal scalar
-ISCAL=(ISCALT(IPHAS)) when a coupling with \syrthes has been specified in the
+\hspace*{2.cm} $\bullet$ {\tt icpsyr(iscal)}=1 for the thermal scalar
+{\tt iscal=(iscalt(iphas))} when a coupling with \syrthes has been specified in the
 Interface or the launch script\\
-\hspace*{2.cm} $\bullet$ ICPSYR(ISCAL)=0 otherwise\\
-\hspace*{1.3cm}= 0: the scalar ISCAL is not coupled with \syrthes\\
-\hspace*{1.3cm}= 1: the scalar ISCAL is coupled with \syrthes\\
+\hspace*{2.cm} $\bullet$ {\tt icpsyr(iscal)}=0 otherwise\\
+\hspace*{1.3cm}= 0: the scalar {\tt iscal} is not coupled with \syrthes\\
+\hspace*{1.3cm}= 1: the scalar {\tt iscal} is coupled with \syrthes\\
 useful in case of coupling with \syrthes}
 
 
@@ -883,49 +877,49 @@ useful in case of coupling with \syrthes}
 \subsubsection{Definition of the equations}
 %==================================
 
-\motcle{ISTAT}{IA}{0 or 1}{1 or 0}{O}{L2}
-{for each unknown IVAR to calculate, indicates if
-non-stationary terms are present (ISTAT(IVAR)=1) or not (0) in the matrices.\\
-By default, ISTAT is set to 0 for the pressure (variable IVAR=IPR(IPHAS))
-or $\overline{f}$ in v2f modeling (variable IVAR=IFB(IPHAS)) and set to
+\motcle{istat}{ia}{0 or 1}{1 or 0}{O}{L2}
+{for each unknown {\tt ivar} to calculate, indicates if
+non-stationary terms are present ({\tt istat(ivar)}=1) or not (0) in the matrices.\\
+By default, {\tt istat} is set to 0 for the pressure (variable {\tt ivar=ipr(iphas)})
+or $\overline{f}$ in v2f modeling (variable {\tt ivar=ifb(iphas)}) and set to
 1 for the other unknowns.\\
 useful for all the unknowns}
 
-\motcle{ICONV}{IA}{0 or 1}{1 or 0}{O}{L2}
-{for each unknown IVAR to calculate, indicates if the
-convection is taken into account (ICONV(IVAR)=1) or not (0).\\
-By default, ICONV is set to 0 for the pressure (variable IVAR=IPR(IPHAS))
-or $\overline{f}$ in v2f modeling (variable IVAR=IFB(IPHAS)) and set to
+\motcle{iconv}{ia}{0 or 1}{1 or 0}{O}{L2}
+{for each unknown {\tt ivar} to calculate, indicates if the
+convection is taken into account ({\tt iconv(ivar)}=1) or not (0).\\
+By default, {\tt iconv} is set to 0 for the pressure (variable {\tt ivar=ipr(iphas)})
+or $\overline{f}$ in v2f modeling (variable {\tt ivar=ifb(iphas)}) and set to
 1 for the other unknowns.\\
 useful for all the unknowns}
 
-\motcle{IDIFF}{IA}{0 or 1}{1}{O}{L2}
-{for each unknown IVAR to calculate, indicates if the
-diffusion is taken into account (IDIFF(IVAR)=1) or not (0)\\
+\motcle{idiff}{ia}{0 or 1}{1}{O}{L2}
+{for each unknown {\tt ivar} to calculate, indicates if the
+diffusion is taken into account ({\tt idiff(ivar)}=1) or not (0)\\
 useful for all the unknowns}
 
-\motcle{IDIFFT}{IA}{0 or 1}{1}{O}{L3}
-{for each unknown IVAR to calculate, when diffusion is taken
-into account (IDIFF(IVAR)=1), IDIFFT(IVAR) indicates if the turbulent
-diffusion is taken into account (IDIFFT(IVAR)=1) or not (0)\\
+\motcle{idifft}{ia}{0 or 1}{1}{O}{L3}
+{for each unknown {\tt ivar} to calculate, when diffusion is taken
+into account ({\tt idiff(ivar)}=1), {\tt idifft(ivar)} indicates if the turbulent
+diffusion is taken into account ({\tt idifft(ivar)}=1) or not (0)\\
 useful for all the unknowns }
 
-\motcle{IDIRCL}{IA}{0 or 1}{1 or 0}{O}{L3}
-{for each unknown IVAR to calculate, indicates whether the diagonal
-of the matrix should be slightly shifted (IDIRCL(IVAR)=1) or not (0) if there
-is no Dirichlet boundary condition and if ISTAT=0. Indeed, in such a case,
+\motcle{idircl}{ia}{0 or 1}{1 or 0}{O}{L3}
+{for each unknown {\tt ivar} to calculate, indicates whether the diagonal
+of the matrix should be slightly shifted ({\tt idircl(ivar)}=1) or not (0) if there
+is no Dirichlet boundary condition and if {\tt istat}=0. Indeed, in such a case,
 the matrix for the general advection/diffusion equation is singular. A slight
 shift in the diagonal will make it invertable again.\\
-By default, IDIRCL is set to 1 for all the unknowns, except $\overline{f}$ in
+By default, {\tt idircl} is set to 1 for all the unknowns, except $\overline{f}$ in
 v2f modeling, since its equation contains another diagonal term that ensures
 the regularity of the matrix.\\
 useful for all the unknowns}
 
-\motcle{IVISSE}{IA}{0 or 1}{1}{O}{L3}
-{for each phase IPHAS, indicates whether the source terms in transposed gradient
+\motcle{ivisse}{ia}{0 or 1}{1}{O}{L3}
+{for each phase {\tt iphas}, indicates whether the source terms in transposed gradient
 and velocity divergence should be taken into account in the momentum
 equation. In the compressible module, these terms also account for the volume
-viscosity (cf. VISCV0 et IVISCV):\\
+viscosity (cf. {\tt viscv0} and {\tt iviscv}):\\
 $\partial_i \left[(\kappa -2/3\,(\mu+\mu_t))\partial_k U_k  \right]
  +     \partial_j \left[ (\mu+\mu_t)\partial_i U_j \right]$ \\
 \hspace*{1.3cm}= 0: not taken into account\\
@@ -937,7 +931,7 @@ always useful}
 \subsubsection{Definition of the time advancement}
 %==================================
 
-\motcleb{IDTVAR}{I}{-1, 0, 1, 2}{0}{O}{L1}
+\motcleb{idtvar}{i}{-1, 0, 1, 2}{0}{O}{L1}
 {type of time step\\
 \hspace*{1.3cm}= 0: constant in time and spatially uniform\\
 \hspace*{1.3cm}= 1: variable in time and spatially uniform\\
@@ -947,70 +941,70 @@ If the numerical scheme is a second-order in time, only the option 0 is
 allowed.\\
 always useful}
 
-\motcle{IPTLRO}{I}{0 or 1}{0}{O}{L2}
+\motcle{iptlro}{i}{0 or 1}{0}{O}{L2}
 {when density gradients and gravity are present, a local thermal time
 step can be calculated, based on the Brunt-Vaissala frequency. In numerical
 simulations, it is usually wise for the time step to be lower than this limit,
 otherwise numerical instabilities may appear\\
-IPTLRO indicates whether the time step should be limited to the local thermal
+{\tt iptlro} indicates whether the time step should be limited to the local thermal
 time step (=1) or not (=0)\\
-when IPTLRO=1, the listing shows the number of cells where the time step has
+when {\tt iptlro}=1, the listing shows the number of cells where the time step has
 been clipped due to the thermal criterium, as well as the maximum ratio between
-the time step and the maximum thermal time step. If IDTVAR=0, since the time
+the time step and the maximum thermal time step. If {\tt idtvar}=0, since the time
 step is fixed and cannot be clipped, this ratio can be larger than
 1\footnote{it is then the user's
-choice to decide whether he should diminish DTREF or not}. When IDTVAR$>$0, this
-ratio will be smaller than 1, except if the constraint DTMIN has prevented the
-code from reaching a sufficiently low value for DT\\
+choice to decide whether he should diminish DTREF or not}. When {\tt idtvar}$>$0, this
+ratio will be smaller than 1, except if the constraint {\tt dtmin} has prevented the
+code from reaching a sufficiently low value for {\tt dt}\\
 useful when density gradients and gravity are present}
 
-\motcleb{CDTVAR}{RA}{strictly positive real number}{1.D0}{O}{L1}
+\motcleb{cdtvar}{ra}{strictly positive real number}{1}{O}{L1}
 {multiplicative factor applied to the time step for each scalar\\
 Hence, the time step used when solving the evolution equation for the
 variable is the time step used for the dynamic equations (velocity/pressure)
-multiplied by CDTVAR.\\
-The size of the array CDTVAR is NVAR. For instance, the multiplicative
-coefficient applied to the scalar 2 is CDTVAR(ISCA(2))). Yet, the value of CDTVAR
-for the velocity components and the pressure is not used. Also, although it is
-possible to change the value of CDTVAR for the turbulent variables, it is
-highly unrecommended\\
-useful if and only if NSCAL $\geqslant$ 1}
+multiplied by {\tt cdtvar}.\\
+The size of the array {\tt cdtvar} is {\tt nvar}. For instance, the multiplicative
+coefficient applied to the scalar 2 is {\tt cdtvar(isca(2))}). Yet, the value of
+{\tt cdtvar} for the velocity components and the pressure is not used. Also,
+although it is possible to change the value of {\tt cdtvar} for the turbulent
+variables, it is highly unrecommended\\
+useful if and only if {\tt nscal} $\geqslant$ 1}
 
 
-\motcle{COUMAX}{R}{strictly positive real number}{1D0}{O}{L1}
+\motcle{coumax}{r}{strictly positive real number}{1}{O}{L1}
 {target local or maximum Courant number in case of non-constant time step\\
-useful if IDTVAR $\ne$ 0}
+useful if {\tt idtvar} $\ne$ 0}
 
-\motcle{FOUMAX}{R}{strictly positive real number}{10D0}{O}{L1}
+\motcle{foumax}{r}{strictly positive real number}{10}{O}{L1}
 {target local or maximum Fourier number in case of non-constant time step\\
-useful if IDTVAR $\ne$ 0}
+useful if {\tt idtvar} $\ne$ 0}
 
-\motcleb{DTREF}{R}{strictly positive real number}{\tt -GRAND*10}{C}{L1}
+\motcleb{dtref}{r}{strictly positive real number}{\tt -grand*10}{C}{L1}
 {reference time step \\
 always useful.\\
 It is the time step value used in the case of a calculation run with a
-uniform and constant time step, {\em i.e.} IDTVAR=0 (restart calculation
+uniform and constant time step, {\em i.e.} {\tt idtvar}=0 (restart calculation
 or not). It is the value used to initialise the time step in the case of
-an initial calculation (ISUITE=0) run with a non-constant time step
-(IDTVAR=1 or 2). It is also the value used to initialise the time step
-in the case of a restart calculation (ISUITE=1) in which the type of
-time step has been changed (for instance, IDTVAR=1 in the new
-calculation and IDTVAR=0 or 2 in the previous calculation): see
+an initial calculation ({\tt isuite}=0) run with a non-constant time step
+({\tt idtvar}=1 or 2). It is also the value used to initialise the time step
+in the case of a restart calculation ({\tt isuite}=1) in which the type of
+time step has been changed (for instance, {\tt idtvar}=1 in the new
+calculation and {\tt idtvar}=0 or 2 in the previous calculation): see
 \texttt{usiniv}}
 
-\motcle{DTMIN}{R}{positive or null real number}{\tt 0.1D0*DTREF}{O}{L2}
+\motcle{dtmin}{r}{positive or null real number}{\tt 0.1*dtref}{O}{L2}
 {lower limit for the calculated time step when non-constant time step is activated\\
-useful if IDTVAR $\ne$ 0}
+useful if {\tt idtvar} $\ne$ 0}
 
-\motcle{DTMAX}{R}{strictly positive real number}{\tt 1000*DTREF}{O}{L2}
+\motcle{dtmax}{r}{strictly positive real number}{\tt 1000*dtref}{O}{L2}
 {upper limit for the calculated time step when non-constant time step is activated\\
-useful if IDTVAR $\ne$ 0}
+useful if {\tt idtvar} $\ne$ 0}
 
-\motcle{VARRDT}{R}{strictly positive real number}{0.1D0}{O}{L3}
+\motcle{varrdt}{r}{strictly positive real number}{0.1}{O}{L3}
 {maximum allowed relative increase in the calculated time step value
 between two succesive time steps (to ensure stability, any decrease in the time step
 is immediate and without limit)\\
-useful if IDTVAR $\ne$ 0}
+useful if {\tt idtvar} $\ne$ 0}
 
 
 \minititre{Non-constant time step}
@@ -1018,12 +1012,12 @@ The calculation of the time step uses a reference time step DTREF (at
 the calculation beginning). Later, every time step, the time step value
 is calculated by taking into account the different existing limits, in
 the following order: \\
-\hspace*{1.cm}$\bullet$ COUMAX, FOUMAX: the more restrictive limit between
+\hspace*{1.cm}$\bullet$ {\tt coumax}, {\tt foumax}: the more restrictive limit between
 both is used (in the compressible module, the acoustic limitation is added),\\
-\hspace*{1.cm}$\bullet$ VARRDT:  progressive increase and immediate
+\hspace*{1.cm}$\bullet$ {\tt varrdt}:  progressive increase and immediate
 decrease in the time step,\\
-\hspace*{1.cm}$\bullet$ IPTLRO: limitation by the thermal time step,\\
-\hspace*{1.cm}$\bullet$ DTMAX and DTMIN: clipping of the time step to
+\hspace*{1.cm}$\bullet$ {\tt iptlro}: limitation by the thermal time step,\\
+\hspace*{1.cm}$\bullet$ {\tt dtmax} and {\tt dtmin}: clipping of the time step to
 the maximum, then to the minimum limit.\\
 
 
@@ -1031,8 +1025,8 @@ the maximum, then to the minimum limit.\\
 \subsubsection{Turbulence}
 %==================================
 
-\motcleb{ITURB}{IA}{0, 10, 20, 21, 30, 31, 40, 41, 50 or 60}{-999}{O}{L1}
-{for each phase IPHAS, indicator of the turbulence model ITURB(IPHAS)\\
+\motcleb{iturb}{ia}{0, 10, 20, 21, 30, 31, 40, 41, 50 or 60}{-999}{O}{L1}
+{for each phase {\tt iphas}, indicator of the turbulence model {\tt iturb(iphas)}\\
 \hspace*{1.3cm}= -999: not initalised. This value is not allowed and
 must be modified by the user\\
 \hspace*{1.3cm}= 0: laminar\\
@@ -1059,14 +1053,14 @@ $U$ is the characteristic velocity, $\nu$ is the kinematic viscosity of the flui
  and $y$ is the mid-height of the first cell near the wall.}. If the mesh does
  not respect this condition, the results may be biased
 (particularly if thermal processes are involved). Using scalable wall-functions
-(cf. key word IDEUCH) may help avoiding this problem.\\
+(cf. key word {\tt ideuch}) may help avoiding this problem.\\
 The v2-f model is a ``Low-Reynolds'' model, it is therefore necessary to
 make sure that the thickness of the first cell neighboring the wall is
 smaller than the thickness of the viscous sublayer ($y^+<1$).\\
 The $k-\omega$ SST model provides correct results whatever the thickness of the first cell.
 Yet, it requires the knowledge of the distance to the wall in every
 cell of the calculation domain. The user may refer to the key word
-ICDPAR\index{ICDPAR} for more details about the potential limitations.\\
+{\tt icdpar\index{icdpar}} for more details about the potential limitations.\\
 The $k-\varepsilon$ model with linear production allows to correct the
 known flaw of the standard $k-\varepsilon$ model which overestimates the
 turbulence level in case of strong velocity gradients (stopping point).\\
@@ -1078,25 +1072,25 @@ Concerning the LES model, the user may refer to the subroutine
 and the interpretation of its results require particular attention.
 In addition, the user must pay further attention when using the dynamic
 model with the least squares method based on a partial extended
-neighborhood (IMRGRA=3). Indeed, the results may be degraded if the user
+neighborhood ({\tt imrgra}=3). Indeed, the results may be degraded if the user
 does not implement his own way of averaging the dynamic constant in
 \texttt{ussmag} (\textit{i.e.} if the user keeps the local average based
 on the extended neighborhood).\\
 
-\motcle{IDEUCH}{IA}{0, 1 or 2}{0 or 1}{O}{L2}
-{for each phase IPHAS, indicates the type of wall function is used for the velocity
-boundary conditions on a frictional wall.\\
+\motcle{ideuch}{ia}{0, 1 or 2}{0 or 1}{O}{L2}
+{for each phase {\tt iphas}, indicates the type of wall function is used for
+ the velocity boundary conditions on a frictional wall.\\
 \hspace*{1.3cm}= 0: one-scale model\\
 \hspace*{1.3cm}= 1: two-scale model\\
 \hspace*{1.3cm}= 2: scalable wall function\\
-IDEUCH is initialised to 0 for ITURB(IPHAS)=0, 10, 40 or 41 (laminar,
-mixing length, LES).\\
-IDEUCH is initialised to 1 for ITURB(IPHAS)=20, 21, 30, 31 or 60
+{\tt ideuch} is initialised to 0 for {\tt iturb(iphas)}=0, 10, 40 or 41
+(laminar, mixing length, LES).\\
+{\tt ideuch} is initialised to 1 for {\tt iturb(iphas)}=20, 21, 30, 31 or 60
 ($k-\varepsilon$, $R_{ij}-\varepsilon$ LRR, $R_{ij}-\varepsilon$ SSG and
 $k-\omega$ SST models).\\
-The v2f model (ITURB(IPHAS)=50) is not designed to use wall functions
+The v2f model ({\tt iturb(iphas)}=50) is not designed to use wall functions
 (the mesh must be ``low Reynolds'').\\
-The value IDEUCH(IPHAS)=1 is not compatible with ITURB(IPHAS)=0, 10, 40
+The value {\tt ideuch(iphas)}=1 is not compatible with {\tt iturb(iphas)}=0, 10, 40
 or 41 (laminar, mixing length and LES).\\
 Concerning the $k-\varepsilon$ and $R_{ij}-\varepsilon$ models, the
 two-scales model is usually at least as satisfactory as the one-scale
@@ -1106,102 +1100,103 @@ necessary in order to be always in a logarithmic layer.
 It is used to make up for
 the problems related to the use of High-Reynolds models on very refined
 meshes.\\
-useful if ITURB(IPHAS) is different from 50}
+useful if {\tt iturb(iphas)} is different from 50}
 
-\motcle{ILOGPO}{IA}{0 or 1}{1}{O}{L3}
-{for each phase IPHAS, type of wall function used for the velocity: power law
-(ILOGPO(IPHAS)=0) or logarithmic law (ILOGPO(IPHAS)=1)\\
+\motcle{ilogpo}{ia}{0 or 1}{1}{O}{L3}
+{for each phase {\tt iphas}, type of wall function used for the velocity: power law
+({\tt ilogpo(iphas)}=0) or logarithmic law ({\tt ilogpo(iphas)}=1)\\
 always useful}
 
-\motcle{YPLULI}{RA}{real number $>$ 0}{\tt 1/XKAPPA,10.88D0}{O}{L3}
-{for each phase IPHAS, limit value of $y^+$ for the viscous sublayer\\
-YPLULI depends on the chosen wall function: it is
-initialised to 10.88D0 for the scalable wall function (IDEUCH(IPHAS)=2),
+\motcle{ypluli}{ra}{real number $>$ 0}{\tt 1/xkappa, 10.88}{O}{L3}
+{for each phase {\tt iphas}, limit value of $y^+$ for the viscous sublayer\\
+{\tt ypluli} depends on the chosen wall function: it is
+initialised to 10.88 for the scalable wall function ({\tt ideuch(iphas)}=2),
 otherwise it is initialised to $1/\kappa\approx 2,38$\\
-In LES, YPLULI is taken by default to be 10.88D0\\
+In LES, {\tt ypluli} is taken by default to be 10.88\\
 always useful}
 
 \minititre{ $k-\varepsilon$, $k-\varepsilon$ with linear production,
 v2-f and $k-\omega$ SST}
 
-\motcle{IGRAKE}{IA}{0 or 1}{1}{O}{L1}
-{for each phase IPHAS, indicates if the terms related to gravity in the
+\motcle{igrake}{ia}{0 or 1}{1}{O}{L1}
+{for each phase {\tt iphas}, indicates if the terms related to gravity in the
 equations of $k$ and $\varepsilon$ or $\omega$ are taken into account
-(IGRAKE(IPHAS)=1) or not (0)\\
-useful if and only if ITURB(IPHAS) = 20, 21, 50 or 60, (GX,GY,GZ)
+({\tt igrake(iphas)}=1) or not (0)\\
+useful if and only if {\tt iturb(iphas)} = 20, 21, 50 or 60, ({\tt gx, gy, gz})
 $\ne$ (0,0,0) and the density is not uniform}
 
-\motcle{IGRHOK}{IA}{0 or 1}{0}{O}{L2}
-{for each phase IPHAS, indicates if the term $\frac{2}{3}\grad \rho k$
-is taken into account\\ (IGRHOK(IPHAS)=1) or not (0) in the velocity
+\motcle{igrhok}{ia}{0 or 1}{0}{O}{L2}
+{for each phase {\tt iphas}, indicates if the term $\frac{2}{3}\grad \rho k$
+is taken into account\\ ({\tt igrhok(iphas)}=1) or not (0) in the velocity
 equation\\
-useful if and only if ITURB(IPHAS) = 20, 21, 50 or 60.\\
+useful if and only if {\tt iturb(iphas)} = 20, 21, 50 or 60.\\
 This term may generate
 non-physical velocities at the wall. When it is not explicitely taken into
 account, it is implicitely included into the pressure.}
 
-\motcle{IKECOU}{IA}{0 or 1}{0 or 1}{O}{L3}
-{for each phase IPHAS, indicates if the coupling of the source terms of
+\motcle{ikecou}{ia}{0 or 1}{0 or 1}{O}{L3}
+{for each phase {\tt iphas}, indicates if the coupling of the source terms of
 $k$ and $\varepsilon$ or $k$ and $\omega$ is taken into account
-(IKECOU(IPHAS)=1) or not (0)\\
-if IKECOU=0 in $k-\varepsilon$ model, the term in $\varepsilon$ in the
+({\tt ikecou(iphas)}=1) or not (0)\\
+if {\tt ikecou}=0 in $k-\varepsilon$ model, the term in $\varepsilon$ in the
 equation of $k$ in made implicit\\
-IKECOU(IPHAS) is initialised to 0 if ITURB(IPHAS) = 21 or 60, and to 1 if\\
-ITURB(IPHAS)= 20\\
-IKECOU(IPHAS)=1 is forbidden when using the v2f model
-(ITURB(IPHAS)=50)\\
-useful if and only if ITURB(IPHAS) = 20, 21 or 60 ($k-\varepsilon$ and
+{\tt ikecou(iphas)} is initialised to 0 if {\tt iturb(iphas)} = 21 or 60,
+and to 1 if\\
+{\tt iturb(iphas)}= 20\\
+{\tt ikecou(iphas)}=1 is forbidden when using the v2f model
+({\tt iturb(iphas)}=50)\\
+useful if and only if {\tt iturb(iphas)} = 20, 21 or 60 ($k-\varepsilon$ and
 $k-\omega$ models)}
 
-\motcle{RELAXK}{RA}{0.D0 $\leqslant$ real $\leqslant$ 1.D0}{0.7D0}{O}{L3}
-{for each phase IPHAS, relaxation coefficient of the turbulent
-variables ($k$ and $\varepsilon$ or $\omega$) when IKECOU(IPHAS) = 0. If
-IKECOU(IPHAS)=1, RELAXK is not used, whatever its value may be.\\
-useful if and only if ITURB(IPHAS) = 20, 21, 50 or 60 and IKECOU(IPHAS)=0
+\motcle{relaxk}{ra}{0 $\leqslant$ real $\leqslant$ 1}{0.7}{O}{L3}
+{for each phase {\tt iphas}, relaxation coefficient of the turbulent
+variables ($k$ and $\varepsilon$ or $\omega$) when {\tt ikecou(iphas)} = 0. If
+{\tt ikecou(iphas)}=1, {\tt relaxk} is not used, whatever its value may be.\\
+useful if and only if {\tt iturb(iphas)} = 20, 21, 50 or 60 and {\tt ikecou(iphas)}=0
 ($k-\varepsilon$, v2f or $k-\omega$ models without coupling)}
 
-\motcle{ICLKEP}{IA}{0 or 1}{0}{O}{L3}
-{for each phase IPHAS, indicates the clipping method used for $k$ and
+\motcle{iclkep}{ia}{0 or 1}{0}{O}{L3}
+{for each phase {\tt iphas}, indicates the clipping method used for $k$ and
 $\varepsilon$, for the $k-\varepsilon$ and v2f models\\
 \hspace*{1.3cm}= 0: clipping in absolute value\\
 \hspace*{1.3cm}= 1: clipping from physical relations\\
-useful if and only if ITURB(IPHAS) = 20, 21 or 50 ($k-\varepsilon$ and
+useful if and only if {\tt iturb(iphas)} = 20, 21 or 50 ($k-\varepsilon$ and
 v2f models). The results obtained with the method corresponding to
-ICLKEP(IPHAS)=1 showed in some cases a substantial sensitivity to the
-values of the length scale ALMAX(IPHAS).\\
-The option ICLKEP(IPHAS)=1 is therefore not recommended, and,
+{\tt iclkep(iphas)}=1 showed in some cases a substantial sensitivity to the
+values of the length scale {\tt almax(iphas)}.\\
+The option {\tt iclkep(iphas)}=1 is therefore not recommended, and,
 if chosen, must be used cautiously.}
 
 \minititre{ $R_{ij}-\varepsilon$ (LRR and SSG)}
 
-\motcle{ICLPTR}{IA}{0 or 1}{0}{O}{L3}
-{for each phase IPHAS, indicates if $R_{ij}$ is made partially implicit
-(ICLPTR(IPHAS)=1) or not (0) in the wall boundary conditions.\\
-useful if and only if ITURB(IPHAS) = 30 or 31 ($R_{ij}-\varepsilon$ model)}
+\motcle{iclptr}{ia}{0 or 1}{0}{O}{L3}
+{for each phase {\tt iphas}, indicates if $R_{ij}$ is made partially implicit
+({\tt iclptr(iphas)}=1) or not (0) in the wall boundary conditions.\\
+useful if and only if {\tt iturb(iphas)} = 30 or 31 ($R_{ij}-\varepsilon$ model)}
 
-\motcle{ICLSYR}{IA}{0 or 1}{0}{O}{L3}
-{for each phase IPHAS, indicates if $R_{ij}$ is made partially implicit
-(ICLSYR(IPHAS)=1) or not (0) in the symmetry boundary conditions.\\
-useful if and only if ITURB(IPHAS) = 30 or 31 ($R_{ij}-\varepsilon$ model)}
+\motcle{iclsyr}{ia}{0 or 1}{0}{O}{L3}
+{for each phase {\tt iphas}, indicates if $R_{ij}$ is made partially implicit
+({\tt iclsyr(iphas)}=1) or not (0) in the symmetry boundary conditions.\\
+useful if and only if {\tt iturb(iphas)} = 30 or 31 ($R_{ij}-\varepsilon$ model)}
 
-\motcle{IDIFRE}{IA}{0 or 1}{1}{O}{L3}
-{for each phase IPHAS, complete (IDIFRE(IPHAS)=1) or simplified (0)
+\motcle{idifre}{ia}{0 or 1}{1}{O}{L3}
+{for each phase {\tt iphas}, complete ({\tt idifre(iphas)=1}) or simplified (0)
 taking into account of the diagonals of the diffusion tensors of $R_{ij}$
 and $\varepsilon$, for the LLR model.\\
-useful if and only if ITURB(IPHAS) = 30 (LLR $R_{ij}-\varepsilon$ model)}
+useful if and only if {\tt iturb(iphas)} = 30 (LLR $R_{ij}-\varepsilon$ model)}
 
-\motcle{IGRARI}{IA}{0 or 1}{1}{O}{L1}
-{for each phase IPHAS, indicates if the terms related to gravity are
-taken into account (IGRARI(IPHAS)=1) or not (0) in the equations of
+\motcle{igrari}{ia}{0 or 1}{1}{O}{L1}
+{for each phase {\tt iphas}, indicates if the terms related to gravity are
+taken into account ({\tt igrari(iphas)}=1) or not (0) in the equations of
 $R_{ij}-\varepsilon$. \\
-useful if and only if ITURB(IPHAS) = 30 or 31 and (GX,GY,GZ) $\ne$
+useful if and only if {\tt iturb(iphas)} = 30 or 31 and ({\tt gx, gy, gz}) $\ne$
 (0,0,0) ($R_{ij}-\varepsilon$ model with gravity) and the density is not uniform}
 
-\motcle{IRIJEC}{IA}{0 or 1}{0}{O}{L2}
-{for each phase IPHAS, indicates if the wall echo terms in
+\motcle{irijec}{ia}{0 or 1}{0}{O}{L2}
+{for each phase {\tt iphas}, indicates if the wall echo terms in
 $R_{ij}-\varepsilon$ LRR model are
-taken into account (IRIJEC(IPHAS)=1) or not (0).\\
-useful if and only if ITURB(IPHAS) = 30 ($R_{ij}-\varepsilon$ LRR).\\
+taken into account ({\tt irijec(iphas)}=1) or not (0).\\
+useful if and only if {\tt iturb(iphas)} = 30 ($R_{ij}-\varepsilon$ LRR).\\
 It is not recommended to take these terms into account:
 they have an influence only near the walls, their expression is hardly
 justifiable according to some authors and, in the configurations
@@ -1209,101 +1204,102 @@ studied with \CS, they did not bring any improvement in the results.\\
 In addition, their use induces an increase in the calculation
 time.\\
 The wall echo terms imply the calculation of the distance to the wall
-for every cell in the domain. See ICDPAR for potential restrictions due
-to this.}
+for every cell in the domain. See {\tt icdpar} for potential restrictions
+due to this.}
 
-\motcle{IRIJNU}{IA}{0 or 1}{0}{O}{L3}
-{for each phase IPHAS, addition (IRIJNU(IPHAS)=1) or not (0) of a
+\motcle{irijnu}{ia}{0 or 1}{0}{O}{L3}
+{for each phase {\tt iphas}, addition ({\tt irijnu(iphas)}=1) or not (0) of a
 turbulent viscosity in the matrix of the incermental system solved
 for the velocity in $R_{ij}-\varepsilon$ models. The goal is to improve
-the stability of the calculation. The usefulness of IRIJNU(IPHAS)=1 has
+the stability of the calculation. The usefulness of {\tt irijnu(iphas)}=1 has
 however not been clearly demonstrated.\\
 Since the system is solved in incremental form, this extra turbulent
 viscosity does not change the final solution for steady flows. However,
-for unsteady flows, the parameter NSWRSM should be increased.\\
-useful if and only if ITURB(IPHAS) = 30 or 31 ($R_{ij}-\varepsilon$ model).}
+for unsteady flows, the parameter {\tt nswrsm} should be increased.\\
+useful if and only if {\tt iturb(iphas)} = 30 or 31 ($R_{ij}-\varepsilon$ model).}
 
-\motcle{IRIJRB}{IA}{0 or 1}{0}{O}{L3}
-{for each phase IPHAS, reconstruction (IRIJRB(IPHAS)=1) or not (0) of the
-boundary conditions at the walls for $R_{ij}$ and  $\varepsilon$.\\
-useful if and only if ITURB(IPHAS) = 30 or 31 ($R_{ij}-\varepsilon$ model)}
+\motcle{irijrb}{ia}{0 or 1}{0}{O}{L3}
+{for each phase {\tt iphas}, reconstruction ({\tt irijrb(iphas)}=1)
+or not (0) of the boundary conditions at the walls for $R_{ij}$ and  $\varepsilon$.\\
+useful if and only if {\tt iturb(iphas)} = 30 or 31 ($R_{ij}-\varepsilon$ model)}
 
 
 \minititre{$LES$}
 
-\motcle{IVRTEX}{I}{0 or 1}{0}{O}{L1}
+\motcle{ivrtex}{i}{0 or 1}{0}{O}{L1}
 {activates (=1) or not (=0) the generation of synthetic turbulence at the
 different inlet boundaries with the LES model (generation of unsteady synthetic
 eddies)\\
-useful if ITURB(IPHAS)=40 or 41\\
+useful if {\tt iturb(iphas)}=40 or 41\\
 this key word requires the completion of the routine
 \texttt{usvort}}
 
-\motcle{ISUIVO}{I}{0 or 1}{ISUITE}{O}{L1}
+\motcle{isuivo}{i}{0 or 1}{isuite}{O}{L1}
 {for the vortex method, indicates whether the synthetic vortices at the inlet
-should be initialised (=0) or read form the restart file FICMVO.\\
-useful if ITURB(IPHAS)=40 or 41 and IVRTEX=1}
+should be initialised (=0) or read form the restart file {\tt ficmvo}.\\
+useful if {\tt iturb(iphas)}=40 or 41 and {\tt ivrtex}=1}
 
 
-\motcle{IDRIES}{IA}{0 or 1}{0,1}{O}{L2}
-{for each phase IPHAS, IDRIES(IPHAS) activates (1) or not (0) the van
+\motcle{idries}{ia}{0 or 1}{0,1}{O}{L2}
+{for each phase {\tt iphas}, {\tt idries(iphas)} activates (1) or not (0) the van
 Driest wall-damping for the Smagorinsky constant (the Smagorinsky
 constant is multiplied by the damping function
-$1-e^{-y^+/CDRIES(IPHAS)}$, where $y^+$ designates the adimensional
+$1-e^{-y^+/{\tt cdries(iphas)}}$, where $y^+$ designates the adimensional
 distance to the nearest wall). The default value is 1 for the
 Smagorinsky model and 0 for the dynamic model.\\
 the van Driest wall-damping requires the knowledge of the distance to the
-nearest wall for each cell in the domain. Refer to key word ICDPAR for potential
-limitations\\
-useful if and only if ITURB(IPHAS) = 40 or 41}
-
-\motcle{CDRIES}{RA}{real number $>$ 0}{26.D0}{O}{L3}
-{for each phase IPHAS, CDRIES(IPHAS) is the constant appearing in the van Driest
-damping function applied to the Smagorinsky constant: $1-e^{-y^+/CDRIES(IPHAS)}$\\
-useful if and only if ITURB(IPHAS) = 40 or 41}
-
-\motcle{CSMAGO}{RA}{real number $>$ 0}{0.065D0}{O}{L2}
-{for each phase IPHAS, CSMAGO(IPHAS) is the Smagorinsky constant used in
+nearest wall for each cell in the domain. Refer to key word {\tt icdpar}
+for potential limitations\\
+useful if and only if {\tt iturb(iphas)} = 40 or 41}
+
+\motcle{cdries}{ra}{real number $>$ 0}{26}{O}{L3}
+{for each phase {\tt iphas}, {\tt cdries(iphas)} is the constant appearing in the
+van Driest damping function applied to the Smagorinsky constant:
+ $1-e^{-y^+/{\tt cdries(iphas)}}$\\
+useful if and only if {\tt iturb(iphas)} = 40 or 41}
+
+\motcle{csmago}{ra}{real number $>$ 0}{0.065}{O}{L2}
+{for each phase {\tt iphas}, {\tt csmago(iphas)} is the Smagorinsky constant used in
 the Smagorinsky model for LES\\
 the sub-grid scale viscosity is calculated by
  $\displaystyle\mu_{sg}=\rho C_{smago}^2\bar{\Delta}^2\sqrt{2\bar{S}_{ij}\bar{S}_{ij}}$
 where $\bar{\Delta}$ is the width of the filter and $\bar{S}_{ij}$ the filtered
 strain rate\\
-useful if and only if ITURB(IPHAS) = 40}
+useful if and only if {\tt iturb(iphas)} = 40}
 
-\motcle{SMAGMX}{RA}{real number $>$ 0}{10.D0*CSMAGO}{O}{L3}
-{for each phase IPHAS, SMAGMX(IPHAS)**2 is
+\motcle{smagmx}{ra}{real number $>$ 0}{10*csmago}{O}{L3}
+{for each phase {\tt iphas}, ${\tt smagmx(iphas)}^2$ is
 the maximum allowed value for the variable $C$ appearing in the LES dynamic
 model (the ``square'' comes from the fact that the
 variable of the dynamic model corresponds to the square of the
 constant of the Smagorinsky model). Any larger value yielded by the calculation
-procedure of the dynamic model will be clipped to SMAGMX(IPHAS)**2\\
-useful if and only if ITURB(IPHAS) = 41}
+procedure of the dynamic model will be clipped to ${\tt smagmx(iphas)}^2$\\
+useful if and only if {\tt iturb(iphas)} = 41}
 
-\motcle{XLESFL}{RA}{real number $>$ 0}{2.D0}{O}{L3}
-{for each phase IPHAS, XLESFL(IPHAS) is a constant used to define, for
+\motcle{xlesfl}{ra}{real number $>$ 0}{2}{O}{L3}
+{for each phase {\tt iphas}, {\tt xlesfl(iphas)} is a constant used to define, for
 each cell $\Omega_i$, the width of the (implicit) filter:\\
-$\overline{\Delta}=XLESFL(IPHAS)(ALES(IPHAS)*|\Omega_i|)^{BLES(IPHAS)}$\\
-useful if and only if ITURB(IPHAS) = 40 or 41}
+$\overline{\Delta}=xlesfl(iphas)(ales(iphas)*|\Omega_i|)^{bles(iphas)}$\\
+useful if and only if {\tt iturb(iphas)} = 40 or 41}
 
-\motcle{ALES}{RA}{real number $>$ 0}{1.D0}{O}{L3}
-{for each phase IPHAS, ALES(IPHAS) is a constant used to define, for
+\motcle{ales}{ra}{real number $>$ 0}{1}{O}{L3}
+{for each phase {\tt iphas}, {\tt ales(iphas)} is a constant used to define, for
 each cell $\Omega_i$, the width of the (implicit) filter:\\
-$\overline{\Delta}=XLESFL(IPHAS)(ALES(IPHAS)*|\Omega_i|)^{BLES(IPHAS)}$\\
-useful if and only if ITURB(IPHAS) = 40 or 41}
+$\overline{\Delta}=xlesfl(iphas)(ales(iphas)*|\Omega_i|)^{bles(iphas)}$\\
+useful if and only if {\tt iturb(iphas)} = 40 or 41}
 
-\motcle{BLES}{RA}{real number $>$ 0}{1.D0/3.D0}{O}{L3}
-{for each phase IPHAS, BLES(IPHAS) is a constant used to define, for
+\motcle{bles}{ra}{real number $>$ 0}{1/3}{O}{L3}
+{for each phase {\tt iphas}, {\tt bles(iphas)} is a constant used to define, for
 each cell $\Omega_i$, the width of the (implicit) filter:\\
-$\overline{\Delta}=XLESFL(IPHAS)(ALES(IPHAS)*|\Omega_i|)^{BLES(IPHAS)}$\\
-useful if and only if ITURB(IPHAS) = 40 or 41}
+$\overline{\Delta}=xlesfl(iphas)(ales(iphas)*|\Omega_i|)^{bles(iphas)}$\\
+useful if and only if {\tt iturb(iphas)} = 40 or 41}
 
-\motcle{XLESFD}{RA}{real number $>$ 0}{1.5D0}{O}{L3}
-{for each phase IPHAS, XLESFD(IPHAS) is the constant used to define, for
+\motcle{xlesfd}{ra}{real number $>$ 0}{1.5}{O}{L3}
+{for each phase {\tt iphas}, {\tt xlesfd(iphas)} is the constant used to define, for
 each cell $\Omega_i$, the width of the explicit filter used in the framework of
 the LES dynamic model:\\
-$\widetilde{\overline{\Delta}}=XLESFD(IPHAS)\overline{\Delta}$\\
-useful if and only if ITURB(IPHAS) = 41}
+$\widetilde{\overline{\Delta}}=xlesfd(iphas)\overline{\Delta}$\\
+useful if and only if {\tt iturb(iphas)} = 41}
 
 
 
@@ -1317,9 +1313,9 @@ On the other hand, when ``specific physics'' (gas combustion, pulverised coal,
 compressible module) are activated, the second-order scheme is not allowed.
 
 In the current version, the second-order time scheme is not compatible
-with the estimators (IESCAL), the velocity-pressure coupling (IPUCOU),
-the modeling of hydrostatic pressure (ICALHY and IPHYDR) and the time- or
-space-variable time step (IDTVAR).
+with the estimators ({\tt iescal}), the velocity-pressure coupling
+({\tt ipucou}), the modeling of hydrostatic pressure ({\tt icalhy} and
+{\tt iphydr}) and the time- or space-variable time step ({\tt idtvar}).
 
 Also, in the case of a rotation periodicity, a proper second-order is not
 ensured for the velocity, but calculations remain possible.
@@ -1329,26 +1325,26 @@ below. Hence, in standard cases, the user does not need to specify these
 options.
 
 
-\motcle{ISCHTP}{IA}{1 or 2}{1 or 2}{O}{L2}
-{for each phase IPHAS, ISCHTP(IPHAS) indicates the order of the activated
-time scheme (this indicator allows the code to automatically complete
+\motcle{ischtp}{ia}{1 or 2}{1 or 2}{O}{L2}
+{for each phase {\tt iphas}, {\tt ischtp(iphas)} indicates the order of the
+activated time scheme (this indicator allows the code to automatically complete
 the other indicators related to the time scheme)\\
 \hspace*{1.3cm}= 1: first-order \\
 \hspace*{1.3cm}= 2: second-order \\
-when ISCHTP(IPHAS)=2, the physical properties are by default not
+when {\tt ischtp(iphas)}=2, the physical properties are by default not
 second-order. It it possible to modify this by means of the
 following indicators.\\
 due to specific coupling between certain variables, the source terms in the
 turbulence equations (except convection and diffusion) cannot be second order,
-except with the $R_{ij}$ models (cf. key word ISTO2T)\\
-by default, ISCHTP(IPHAS) is initialised to 2 with the LES model and 1
+except with the $R_{ij}$ models (cf. key word {\tt isto2t})\\
+by default, {\tt ischtp(iphas)} is initialised to 2 with the LES model and 1
 otherwise\\
 always useful}
 
-\motcle{ISTMPF}{IA}{0, 1 or 2}{0 or 1}{O}{L3}
-{for each phase IPHAS, ISTMPF(IPHAS) specifies the time scheme activated
-for the mass flow. The chosen value for ISTMPF(IPHAS) will automatically
-determine the value given to the variable THETFL(IPHAS)\\
+\motcle{istmpf}{ia}{0, 1 or 2}{0 or 1}{O}{L3}
+{for each phase {\tt iphas}, {\tt istmpf(iphas)} specifies the time scheme activated
+for the mass flow. The chosen value for {\tt istmpf(iphas)} will automatically
+determine the value given to the variable {\tt thetfl(iphas)}\\
 \hspace*{1.3cm}= 0: ''explicit'' first-order: the mass flow calculated
 at the previous time step (``n'') is used in the convective terms of all
 the equations (momentum, turbulence and scalars\\
@@ -1357,16 +1353,16 @@ at the previous time step (``n'') is used in the convective terms of the
 momentum equation, and the updated mass flow (time ``n+1'') is used in the
 equations of turbulence and scalars\\
 \hspace*{1.3cm}= 2: second-order: the mass flow used in the momentum equations
-is extrapolated at ``n+THETFL'' (=n+1/2) from the values at the two former time
+is extrapolated at ``n+{\tt thetfl}'' (=n+1/2) from the values at the two former time
 steps (Adams Bashforth); the mass flow used in the equations for turbulence and
-scalars is interpolated at time ``n+THETFL'' (=n+1/2) from the values at the
+scalars is interpolated at time ``n+{\tt thetfl}'' (=n+1/2) from the values at the
 former time step and at the newly calculated ``n+1'' time step.\\
-by default, ISTMPF(IPHAS)=2 is used in the case of a second-order time
-scheme (if ISCHTP(IPHAS)=2) and ISTMPF(IPHAS)=1 otherwise\\
+by default, {\tt istmpf(iphas)}=2 is used in the case of a second-order time
+scheme (if {\tt ischtp(iphas)}=2) and {\tt istmpf(iphas)}=1 otherwise\\
 always useful}
 
-\motcle{ISNO2T}{IA}{0, 1 or 2}{0 or 1}{O}{L3}
-{for each phase IPHAS, ISNO2T(IPHAS) specifies the time scheme activated
+\motcle{isno2t}{ia}{0, 1 or 2}{0 or 1}{O}{L3}
+{for each phase {\tt iphas}, {\tt isno2t(iphas)} specifies the time scheme activated
 for the source terms of the momentum equation, apart from convection and
 diffusion (for instance: head loss, transposed gradient, ...).\\
 \hspace*{1.3cm}= 0: ''standard'' first-order: the terms which are linear
@@ -1376,22 +1372,22 @@ linear functions of the solved variable
 $\phi$ are expressed as second-order terms by interpolation (according
 to the formula
 $(S_i\phi)^{n+\theta}=S_i^n[(1-\theta)\phi^n+\theta\phi^{n+1}]$, $\theta$
-being given by the value of THETAV associated with the variable $\phi$)
+being given by the value of {\tt thetav} associated with the variable $\phi$)
 ; the other terms $S_e$ are expressed as second-order terms by
 extrapolation (according to the formula
 $(S_e)^{n+\theta}=[(1+\theta)S_e^n-\theta S_e^{n-1}]$, $\theta$ being
-given by the value of THETSN(IPHAS)=0.5D0)\\
+given by the value of {\tt thetsn(iphas)}=0.5)\\
 \hspace*{1.3cm}= 2: the linear terms $S_i\phi$ are treated in the same
-way as when ISNO2T=1;
+way as when {\tt isno2t}=1;
 the other terms $S_e$ are extrapolated according to the same formula
-as when ISNO2T=1, but with $\theta$=THETSN(IPHAS)=1.D0\\
-by default, ISNO2T(IPHAS) is initialised to 1 (second-order) when the selected
-time scheme is second-order (ISCHTP=2), otherwise to 0.\\
+as when {\tt isno2t}=1, but with $\theta$={\tt thetsn(iphas)}=1\\
+by default, {\tt isno2t(iphas)} is initialised to 1 (second-order) when
+the selected time scheme is second-order ({\tt ischtp}=2), otherwise to 0.\\
 always useful}
 
-\motcle{ISTO2T}{IA}{0, 1 or 2}{0}{O}{L3}
-{for each phase IPHAS, ISTO2T(IPHAS) specifies the time scheme activated
-for the source terms of the turbulence equations (related to $k$,
+\motcle{isto2t}{ia}{0, 1 or 2}{0}{O}{L3}
+{for each phase {\tt iphas}, {\tt isto2t(iphas)} specifies the time scheme
+activated for the source terms of the turbulence equations (related to $k$,
 $R_{ij}$, $\varepsilon$, $\omega$, $\varphi$, $\overline{f}$), apart
 from convection and diffusion.\\
 \hspace*{1.3cm}= 0: ''standard'' first-order: the terms which are linear
@@ -1401,63 +1397,63 @@ linear functions of the solved variable
 $\phi$ are expressed as second-order terms by interpolation (according
 to the formula
 $(S_i\phi)^{n+\theta}=S_i^n[(1-\theta)\phi^n+\theta\phi^{n+1}]$, $\theta$
-being given by the value of THETAV associated with the variable $\phi$)
-; the other terms $S_e$ are expressed as second-order terms by
+being given by the value of {\tt thetav} associated with the variable $\phi$);
+the other terms $S_e$ are expressed as second-order terms by
 extrapolation (according to the formula
 $(S_e)^{n+\theta}=[(1+\theta)S_e^n-\theta S_e^{n-1}]$, $\theta$ being
-given by the value of THETST(IPHAS)=0.5D0)\\
+given by the value of {\tt thetst(iphas)}=0.5)\\
 \hspace*{1.3cm}= 2: the linear terms $S_i\phi$ are treated in the same
-way as when ISTO2T=1;
+way as when {\tt isto2t}=1;
 the other terms $S_e$ are extrapolated according to the same formula
-as when ISTO2T=1, but with $\theta$=THETST(IPHAS)=1.D0\\
+as when {\tt isto2t}=1, but with $\theta$={\tt thetst(iphas)}=1\\
 due to certain specific couplings between the turbulence equations,
-ISTO2T(IPHAS) is allowed the value 1 or 2 only for the $R_{ij}$ models
-(ITURB(IPHAS)=30 or 31); hence, it is always initialised to 0.\\
+{\tt isto2t(iphas)} is allowed the value 1 or 2 only for the $R_{ij}$ models
+({\tt iturb(iphas)}=30 or 31); hence, it is always initialised to 0.\\
 always useful}
 
 
-\motcle{ISSO2T}{IA}{0, 1 or 2}{0 or 1}{O}{L3}
-{for each scalar ISCAL, ISSO2T(ISCAL) specifies the time scheme activated
+\motcle{isso2t}{ia}{0, 1 or 2}{0 or 1}{O}{L3}
+{for each scalar {\tt iscal}, {\tt isso2t(iscal)} specifies the time scheme activated
 for the source terms of the equation for the scalar, apart from convection and
 diffusion (for instance: variance production, user-specified terms, ...).\\
-\hspace*{1.3cm}= 0: ''standard'' first-order: the terms which are linear
+\hspace*{1.3cm}= 0: ``standard'' first-order: the terms which are linear
 functions of the solved variable are implicit and the others are explicit\\
 \hspace*{1.3cm}= 1: second-order: the terms of the form $S_i\phi$ which are
 linear functions of the solved variable
 $\phi$ are expressed as second-order terms by interpolation (according
 to the formula
 $(S_i\phi)^{n+\theta}=S_i^n[(1-\theta)\phi^n+\theta\phi^{n+1}]$, $\theta$
-being given by the value of THETAV associated with the variable $\phi$)
+being given by the value of {\tt thetav} associated with the variable $\phi$)
 ; the other terms $S_e$ are expressed as second-order terms by
 extrapolation (according to the formula
 $(S_e)^{n+\theta}=[(1+\theta)S_e^n-\theta S_e^{n-1}]$, $\theta$ being
-given by the value of THETSS(ISCAL)=0.5D0)\\
+given by the value of {\tt thetss(iscal)}=0.5)\\
 \hspace*{1.3cm}= 2: the linear terms $S_i\phi$ are treated in the same
-way as when ISSO2T=1;
+way as when {\tt isso2t}=1;
 the other terms $S_e$ are extrapolated according to the same formula
-as when ISSO2T=1, but with $\theta$=THETSS(ISCAL)=1.D0\\
-by default, ISSO2T(ISCAL) is initialised to 1 (second-order) when the selected
-time scheme is second-order (ISCHTP=2), otherwise to 0.\\
+as when {\tt isso2t}=1, but with $\theta$={\tt thetss(iscal)}=1\\
+by default, {\tt isso2t(iscal)} is initialised to 1 (second-order) when the selected
+time scheme is second-order ({\tt ischtp}=2), otherwise to 0.\\
 always useful}
 
 
-\motcle{IROEXT}{IA}{0, 1 or 2}{0}{O}{L3}
-{for each phase IPHAS, IROEXT(IPHAS) specifies the time scheme activated
+\motcle{iroext}{ia}{0, 1 or 2}{0}{O}{L3}
+{for each phase {\tt iphas}, {\tt iroext(iphas)} specifies the time scheme activated
 for the physical property $\phi$ ``density''.\\
-\hspace*{1.3cm}= 0: ''standard'' first-order: the value calculated at
+\hspace*{1.3cm}= 0: ``standard'' first-order: the value calculated at
 the beginning of the current time step (from the
 variables known at the end of the previous time step) is used \\
 \hspace*{1.3cm}= 1: second-order: the physical property $\phi$ is
 extrapolated according to the formula
 $\phi^{n+\theta}=[(1+\theta)\phi^n-\theta \phi^{n-1}]$, $\theta$ being
-given by the value of THETRO(IPHAS)=0.5D0 \\
+given by the value of {\tt thetro(iphas)}=0.5 \\
 \hspace*{1.3cm}= 2: first-order: the physical property $\phi$ is
 extrapolated at $n+1$ according to the
-same formula as when IROEXT=1 but with $\theta$=THETRO(IPHAS)=1.D0\\
+same formula as when {\tt iroext}=1 but with $\theta$={\tt thetro(iphas)}=1\\
 always useful}
 
-\motcle{IVIEXT}{IA}{0, 1 or 2}{0}{O}{L3}
-{for each phase IPHAS, IVIEXT(IPHAS) specifies the time scheme activated
+\motcle{iviext}{ia}{0, 1 or 2}{0}{O}{L3}
+{for each phase {\tt iphas}, {\tt iviext(iphas)} specifies the time scheme activated
 for the physical property $\phi$ ``total viscosity''
 (molecular+turbulent or sub-grid viscosities).\\
 \hspace*{1.3cm}= 0: ''standard'' first-order: the value calculated at
@@ -1466,14 +1462,14 @@ variables known at the end of the previous time step) is used \\
 \hspace*{1.3cm}= 1: second-order: the physical property $\phi$ is
 extrapolated according to the formula
 $\phi^{n+\theta}=[(1+\theta)\phi^n-\theta \phi^{n-1}]$, $\theta$ being
-given by the value of THETVI(IPHAS)=0.5D0 \\
+given by the value of {\tt thetvi(iphas)}=0.5 \\
 \hspace*{1.3cm}= 2: first-order: the physical property $\phi$ is
 extrapolated at $n+1$ according to the
-same formula as when IVIEXT=1, but with $\theta$=THETVI(IPHAS)=1.D0\\
+same formula as when {\tt iviext}=1, but with $\theta$={\tt thetvi(iphas)}=1\\
 always useful}
 
-\motcle{ICPEXT}{IA}{0, 1 or 2}{0}{O}{L3}
-{for each phase IPHAS, ICPEXT(IPHAS) specifies the time scheme activated
+\motcle{icpext}{ia}{0, 1 or 2}{0}{O}{L3}
+{for each phase {\tt iphas}, {\tt icpext(iphas)} specifies the time scheme activated
 for the physical property $\phi$ ``specific heat''.\\
 \hspace*{1.3cm}= 0: ''standard'' first-order: the value calculated at
 the beginning of the current time step (from the
@@ -1481,164 +1477,164 @@ variables known at the end of the previous time step) is used \\
 \hspace*{1.3cm}= 1: second-order: the physical property $\phi$ is
 extrapolated according to the formula
 $\phi^{n+\theta}=[(1+\theta)\phi^n-\theta \phi^{n-1}]$, $\theta$ being
-given by the value of THETCP(IPHAS)=0.5D0 \\
+given by the value of {\tt thetcp(iphas)}=0.5 \\
 \hspace*{1.3cm}= 2: first-order: the physical property $\phi$ is
 extrapolated at $n+1$ according to the
-same formula as when ICPEXT=1, but with $\theta$=THETCP(IPHAS)=1.D0\\
+same formula as when {\tt icpext}=1, but with $\theta$={\tt thetcp(iphas)}=1\\
 always useful}
 
-\motcle{IVSEXT}{IA}{0, 1 ou 2}{0}{O}{L3}
-{for each scalar ISCAL, IVSEXT(ISCAL) specifies the time scheme activated
-for the physical property $\phi$ ``diffusivity''.\\
+\motcle{ivsext}{ia}{0, 1 or 2}{0}{O}{L3}
+{for each scalar {\tt iscal}, {\tt ivsext(iscal)} specifies the time scheme
+activated for the physical property $\phi$ ``diffusivity''.\\
 \hspace*{1.3cm}= 0: ''standard'' first-order: the value calculated at
 the beginning of the current time step (from the
 variables known at the end of the previous time step) is used \\
 \hspace*{1.3cm}= 1: second-order: the physical property $\phi$ is
 extrapolated according to the formula
 $\phi^{n+\theta}=[(1+\theta)\phi^n-\theta \phi^{n-1}]$, $\theta$ being
-given by the value of THETVS(ISCAL)=0.5D0 \\
+given by the value of {\tt thetvs(iscal)}=0.5 \\
 \hspace*{1.3cm}= 2: first-order: the physical property $\phi$ is
 extrapolated at $n+1$ according to the
-same formula as when IVSEXT=1, but with $\theta$=THETVS(ISCAL)=1.D0\\
+same formula as when {\tt ivsext}=1, but with $\theta$={\tt thetvs(iscal)}=1\\
 always useful}
 
-\motcle{THETAV}{RA}{0.D0 $\leqslant$ real $\leqslant$1.D0}{1.D0 or 0.5D0}{O}{L3}
-{for each variable IVAR, THETAV(IVAR) is the value of $\theta$ used to
+\motcle{thetav}{ra}{0 $\leqslant$ real $\leqslant$1}{1 or 0.5}{O}{L3}
+{for each variable {\tt ivar}, {\tt thetav(ivar)} is the value of $\theta$ used to
 express at the second-order the terms of convection, diffusion and the
 source terms which are linear functions of the solved variable
 (according to the formula
 $\phi^{n+\theta}=(1-\theta)\phi^n+\theta\phi^{n+1}$). Generally,
-only the values 1.0D0 and 0.5D0 are used. The user is not allowed to modify
+only the values 1 and 0.5 are used. The user is not allowed to modify
 this variable.\\
-\hspace*{1.3cm}= 1.D0: first-order \\
-\hspace*{1.3cm}= 0.5D0: second-order \\
-Concerning the pressure, the value of THETAV is always 1.0D0. Concerning
-the other variables, the value THETAV=0.5D0 is used when the
-second-order time scheme is activated by ISCHTP=2 (standard value for
-LES calculations), otherwise THETAV is set to 1.0D0.\\
+\hspace*{1.3cm}= 1: first-order \\
+\hspace*{1.3cm}= 0.5: second-order \\
+Concerning the pressure, the value of {\tt thetav} is always 1. Concerning
+the other variables, the value {\tt thetav}=0.5 is used when the
+second-order time scheme is activated by {\tt ischtp}=2 (standard value for
+LES calculations), otherwise {\tt thetav} is set to 1.\\
 always useful}
 
-\motcle{THETFL}{RA}{0.D0 $\leqslant$ real $\leqslant$1.D0}{ 0.D0 or 0.5D0}{O}{L3}
-{for each phase IPHAS, THETFL(IPHAS) is the value of $\theta$ used to
+\motcle{thetfl}{ra}{0 $\leqslant$ real $\leqslant$1}{0 or 0.5}{O}{L3}
+{for each phase {\tt iphas}, {\tt thetfl(iphas)} is the value of $\theta$ used to
 interpolate the convective fluxes of the variables when a second-order time
-scheme has been activated for the mass flow (see ISTMPF)\\
-generally, only the value 0.5D0 is used. The user is not allowed to
+scheme has been activated for the mass flow (see {\tt istmpf})\\
+generally, only the value 0.5 is used. The user is not allowed to
 modify this variable.\\
-\hspace*{1.3cm}= 0.0D0: ``explicit'' first-order (corresponds to
-ISTMPF(IPHAS)=0 or 1)\\
-\hspace*{1.3cm}= 0.5D0: second-order (corresponds to ISTMPF(IPHAS)=2). The mass
+\hspace*{1.3cm}= 0.0: ``explicit'' first-order (corresponds to
+{\tt istmpf(iphas)}=0 or 1)\\
+\hspace*{1.3cm}= 0.5: second-order (corresponds to {\tt istmpf(iphas)}=2). The mass
 flux will be interpolated according to the formula
 $Q^{n+\theta}=\frac{1}{2-\theta}Q^{n+1}+\frac{1-\theta}{2-\theta}Q^{n+1-\theta}$).\\
 always useful}
 
-\motcle{THETSN}{RA}{0.D0 $\leqslant$ real $\leqslant$1.D0}{0.0D0, 0.5D0 or 1.D0}{O}{L3}
-{for each phase IPHAS, THETSN(IPHAS) is the value of $\theta$ used to
+\motcle{thetsn}{ra}{0 $\leqslant$ real $\leqslant$1}{0, 0.5 or 1}{O}{L3}
+{for each phase {\tt iphas}, {\tt thetsn(iphas)} is the value of $\theta$ used to
 extrapolate the non linear explicit source terms $S_e$ of the momentum equation,
-when the source term extrapolation has been activated (see ISNO2T),
+when the source term extrapolation has been activated (see {\tt isno2t}),
 following the formula\\
 $(S_e)^{n+\theta}=(1+\theta)S_e^n-\theta S_e^{n-1}$\\
 the value
-of $\theta$=THETSN(IPHAS) is deduced from the value chosen for
-ISNO2T(IPHAS). Generally, only the value 0.5D0 is used. The user is not
+of $\theta$={\tt thetsn(iphas)} is deduced from the value chosen for
+{\tt isno2t(iphas)}. Generally, only the value 0.5 is used. The user is not
 allowed to modify this variable.\\
-\hspace*{1.3cm}= 0.0D0: first-order (unused, corresponds to ISNO2T(IPHAS)=0) \\
-\hspace*{1.3cm}= 0.5D0: second-order (used when ISNO2T(IPHAS)=1) \\
-\hspace*{1.3cm}= 1.0D0: first-order (used when ISNO2T(IPHAS)=2) \\
+\hspace*{1.3cm}= 0: first-order (unused, corresponds to {\tt isno2t(iphas)}=0) \\
+\hspace*{1.3cm}= 0.5: second-order (used when {\tt isno2t(iphas)}=1) \\
+\hspace*{1.3cm}= 1: first-order (used when {\tt isno2t(iphas)}=2) \\
 always useful}
 
-\motcle{THETST}{RA}{0.D0 $\leqslant$ real $\leqslant$1.D0}{0.0D0, 0.5D0 or 1.D0}{O}{L3}
-{for each phase IPHAS, THETST(IPHAS) is the value of $\theta$ used to
+\motcle{thetst}{ra}{0 $\leqslant$ real $\leqslant$1}{0, 0.5 or 1}{O}{L3}
+{for each phase {\tt iphas}, {\tt thetst(iphas)} is the value of $\theta$ used to
 extrapolate the non linear explicit source terms $S_e$ of the turbulence equations,
-when the source term extrapolation has been activated (see ISTO2T),
+when the source term extrapolation has been activated (see {\tt isto2t}),
 following the formula\\
 $(S_e)^{n+\theta}=(1+\theta)S_e^n-\theta S_e^{n-1}$\\
 the value
-of $\theta$=THETSN(IPHAS) is deduced from the value chosen for
-ISTO2T(IPHAS). Generally, only the value 0.5D0 is used. The user is not
+of $\theta$={\tt thetsn(iphas)} is deduced from the value chosen for
+{\tt isto2t(iphas)}. Generally, only the value 0.5 is used. The user is not
 allowed to modify this variable.\\
-\hspace*{1.3cm}= 0.0D0: first-order (unused, corresponds to ISTO2T(IPHAS)=0) \\
-\hspace*{1.3cm}= 0.5D0: second-order (used when ISTO2T(IPHAS)=1) \\
-\hspace*{1.3cm}= 1.0D0: first-order (used when ISTO2T(IPHAS)=2) \\
+\hspace*{1.3cm}= 0: first-order (unused, corresponds to {\tt isto2t(iphas)}=0) \\
+\hspace*{1.3cm}= 0.5: second-order (used when {\tt isto2t(iphas)}=1) \\
+\hspace*{1.3cm}= 1: first-order (used when {\tt isto2t(iphas)}=2) \\
 always useful}
 
-\motcle{THETSS}{RA}{0.D0 $\leqslant$ real $\leqslant$1.D0}{0.0D0, 0.5D0 or 1.D0}{O}{L3}
-{for each scalar ISCAL, THETSS(ISCAL) is the value of $\theta$ used to
+\motcle{thetss}{ra}{0 $\leqslant$ real $\leqslant$1}{0, 0.5 or 1}{O}{L3}
+{for each scalar {\tt iscal}, {\tt thetss(iscal)} is the value of $\theta$ used to
 extrapolate the non linear explicit source terms $S_e$ of the scalar equation,
-when the source term extrapolation has been activated (see ISSO2T),
+when the source term extrapolation has been activated (see {\tt isso2t}),
 following the formula\\
 $(S_e)^{n+\theta}=(1+\theta)S_e^n-\theta S_e^{n-1}$\\
 the value
-of $\theta$=THETSS(ISCAL) is deduced from the value chosen for
-ISSO2T(ISCAL). Generally, only the value 0.5D0 is used. The user is not
+of $\theta$={\tt thetss(iscal)} is deduced from the value chosen for
+{\tt isso2t(iscal)}. Generally, only the value 0.5 is used. The user is not
 allowed to modify this variable.\\
-\hspace*{1.3cm}= 0.0D0: first-order (unused, corresponds to ISSO2T(ISCAL)=0) \\
-\hspace*{1.3cm}= 0.5D0: second-order (used when ISSO2T(ISCAL)=1) \\
-\hspace*{1.3cm}= 1.0D0: first-order (used when ISSO2T(ISCAL)=2) \\
-useful if NSCAL$>$1}
+\hspace*{1.3cm}= 0: first-order (unused, corresponds to {\tt isso2t(iscal)}=0) \\
+\hspace*{1.3cm}= 0.5: second-order (used when {\tt isso2t(iscal)}=1) \\
+\hspace*{1.3cm}= 1: first-order (used when {\tt isso2t(iscal)}=2) \\
+useful if {\tt nscal}$>$1}
 
 
-\motcle{THETRO}{RA}{0.D0 $\leqslant$ real $\leqslant$1.D0}{0.0D0, 0.5D0 or 1.D0}{O}{L3}
-{for each phase IPHAS, THETRO(IPHAS) is the value of $\theta$ used to
+\motcle{thetro}{ra}{0 $\leqslant$ real $\leqslant$1}{0, 0.5 or 1}{O}{L3}
+{for each phase {\tt iphas}, {\tt thetro(iphas)} is the value of $\theta$ used to
 extrapolate the physical property $\phi$ ``density'' when the extrapolation has
-been activated (see IROEXT),according to the
+been activated (see {\tt iroext}),according to the
 formula $\phi^{n+\theta}=(1+\theta)\phi^n-\theta \phi^{n-1}$\\
-the value of $\theta$=THETRO(IPHAS) is deduced from the value chosen for
-IROEXT(IPHAS). Generally, only the value 0.5D0 is used. The user is not
+the value of $\theta$={\tt thetro(iphas)} is deduced from the value chosen for
+{\tt iroext(iphas)}. Generally, only the value 0.5 is used. The user is not
 allowed to modify this variable.\\
-\hspace*{1.3cm}= 0.0D0: first-order (unused, corresponds to
-IROEXT(IPHAS)=0)\\
-\hspace*{1.3cm}= 0.5D0: second-order (corresponds to IROEXT(IPHAS)=1) \\
-\hspace*{1.3cm}= 1.0D0: first-order (corresponds to IROEXT(IPHAS)=2) \\
+\hspace*{1.3cm}= 0: first-order (unused, corresponds to
+{\tt iroext(iphas)}=0)\\
+\hspace*{1.3cm}= 0.5: second-order (corresponds to {\tt iroext(iphas)}=1) \\
+\hspace*{1.3cm}= 1: first-order (corresponds to {\tt iroext(iphas)}=2) \\
 always useful}
 
-\motcle{THETVI}{RA}{0.D0 $\leqslant$ real $\leqslant$1.D0}{0.0D0, 0.5D0 or 1.D0}{O}{L3}
-{for each phase IPHAS, THETVI(IPHAS) is the value of $\theta$ used to
+\motcle{thetvi}{ra}{0 $\leqslant$ real $\leqslant$1}{0, 0.5 or 1}{O}{L3}
+{for each phase {\tt iphas}, {\tt thetvi(iphas)} is the value of $\theta$ used to
 extrapolate the physical property $\phi$ ``total viscosity'' when the extrapolation has
-been activated (see IVIEXT),according to the
+been activated (see {\tt iviext}),according to the
 formula $\phi^{n+\theta}=(1+\theta)\phi^n-\theta \phi^{n-1}$\\
-the value of $\theta$=THETVI(IPHAS) is deduced from the value chosen for
-IVIEXT(IPHAS). Generally, only the value 0.5D0 is used. The user is not
+the value of $\theta$={\tt thetvi(iphas)} is deduced from the value chosen for
+{\tt iviext(iphas)}. Generally, only the value 0.5 is used. The user is not
 allowed to modify this variable.\\
-\hspace*{1.3cm}= 0.0D0: first-order (unused, corresponds to
-IVIEXT(IPHAS)=0)\\
-\hspace*{1.3cm}= 0.5D0: second-order (corresponds to IVIEXT(IPHAS)=1) \\
-\hspace*{1.3cm}= 1.0D0: first-order (corresponds to IVIEXT(IPHAS)=2) \\
+\hspace*{1.3cm}= 0: first-order (unused, corresponds to
+{\tt iviext(iphas)}=0)\\
+\hspace*{1.3cm}= 0.5: second-order (corresponds to {\tt iviext(iphas)}=1) \\
+\hspace*{1.3cm}= 1: first-order (corresponds to {\tt iviext(iphas)}=2) \\
 always useful}
 
-\motcle{THETCP}{RA}{0.D0 $\leqslant$ real $\leqslant$1.D0}{0.0D0, 0.5D0 or 1.D0}{O}{L3}
-{for each phase IPHAS, THETCP(IPHAS) is the value of $\theta$ used to
+\motcle{thetcp}{ra}{0 $\leqslant$ real $\leqslant$1}{0, 0.5 or 1}{O}{L3}
+{for each phase {\tt iphas}, {\tt thetcp(iphas)} is the value of $\theta$ used to
 extrapolate the physical property $\phi$ ``specific heat'' when the extrapolation has
-been activated (see ICPEXT),according to the
+been activated (see {\tt icpext}),according to the
 formula $\phi^{n+\theta}=(1+\theta)\phi^n-\theta \phi^{n-1}$\\
-the value of $\theta$=THETCP(IPHAS) is deduced from the value chosen for
-ICPEXT(IPHAS). Generally, only the value 0.5D0 is used. The user is not
+the value of $\theta$={\tt thetcp(iphas)} is deduced from the value chosen for
+{\tt icpext(iphas)}. Generally, only the value 0.5 is used. The user is not
 allowed to modify this variable.\\
-\hspace*{1.3cm}= 0.0D0: first-order (unused, corresponds to
-ICPEXT(IPHAS)=0)\\
-\hspace*{1.3cm}= 0.5D0: second-order (corresponds to ICPEXT(IPHAS)=1) \\
-\hspace*{1.3cm}= 1.0D0: first-order (corresponds to ICPEXT(IPHAS)=2) \\
+\hspace*{1.3cm}= 0: first-order (unused, corresponds to
+{\tt icpext(iphas)}=0)\\
+\hspace*{1.3cm}= 0.5: second-order (corresponds to {\tt icpext(iphas)}=1) \\
+\hspace*{1.3cm}= 1: first-order (corresponds to {\tt icpext(iphas)}=2) \\
 always useful}
 
-\motcle{THETVS}{RA}{0.D0 $\leqslant$ real $\leqslant$1.D0}{0.0D0, 0.5D0 or 1.D0}{O}{L3}
-{for each scalar ISCAL, THETVS(ISCAL) is the value of $\theta$ used to
+\motcle{thetvs}{ra}{0 $\leqslant$ real $\leqslant$1}{0, 0.5 or 1}{O}{L3}
+{for each scalar {\tt iscal}, {\tt thetvs(iscal)} is the value of $\theta$ used to
 extrapolate the physical property $\phi$ ``diffusivity'' when the extrapolation has
-been activated (see IVSEXT),according to the
+been activated (see {\tt ivsext}),according to the
 formula $\phi^{n+\theta}=(1+\theta)\phi^n-\theta \phi^{n-1}$\\
-the value of $\theta$=THETVS(ISCAL) is deduced from the value chosen for
-IVSEXT(ISCAL). Generally, only the value 0.5D0 is used. The user is not
+the value of $\theta$={\tt thetvs(iscal)} is deduced from the value chosen for
+{\tt ivsext(iscal)}. Generally, only the value 0.5 is used. The user is not
 allowed to modify this variable.\\
-\hspace*{1.3cm}= 0.0D0: first-order (unused, corresponds to
-IVSEXT(ISCAL)=0)\\
-\hspace*{1.3cm}= 0.5D0: second-order (corresponds to IVSEXT(ISCAL)=1) \\
-\hspace*{1.3cm}= 1.0D0: first-order (corresponds to IVSEXT(ISCAL)=2) \\
-useful if NSCAL$>$1}
+\hspace*{1.3cm}= 0: first-order (unused, corresponds to
+{\tt ivsext(iscal)}=0)\\
+\hspace*{1.3cm}= 0.5: second-order (corresponds to {\tt ivsext(iscal)}=1) \\
+\hspace*{1.3cm}= 1: first-order (corresponds to {\tt ivsext(iscal)}=2) \\
+useful if {\tt nscal}$>$1}
 
 
 %==================================
 \subsubsection{Gradient reconstruction}
 %==================================
 
-\motcle{IMRGRA}{I}{0, 1, 2, 3 or 4}{0}{O}{L2}
+\motcle{imrgra}{i}{0, 1, 2, 3 or 4}{0}{O}{L2}
 {indicates the type of gradient reconstruction (one method for all the
 variables)\\
 \hspace*{1.3cm}= 0: iterative reconstruction of the non-orthogonalities\\
@@ -1649,184 +1645,187 @@ variables)\\
 \hspace*{1.3cm}= 3: least squares method based on a partial extended
 neighborhood (all first neighbors plus the extended neighborhood cells that
 are connected to a face where the non-orthogonality angle is larger than
-parameter ANOMAX)\\
+parameter {\tt anomax})\\
 \hspace*{1.3cm}= 4: iterative reconstruction with initialisation using the least
 squares method (first neighbors)\\
-if IMRGRA fails due to probable mesh quality problems, it is usually effective
-to use IMRGRA=3. Moreover, IMRGRA=3 is usually faster than IMRGRA=0 (but with
-less feedback on its use).\\
-it should be noted that IMRGRA=1, 2 or 3 automatically triggers a gradient
-limitation procedure. See IMLIGR.\\
-useful if and only if there is N so that NSWRGR(N) $>$ 1}
-
-\motcle{NSWRGR}{IA}{positive integer}{100}{O}{L3}
-{for each unknown IVAR, NSWRGR(IVAR) $\leqslant$ 1 indicates that the
+if {\tt imrgra} fails due to probable mesh quality problems, it is usually effective
+to use {\tt imrgra}=3. Moreover, {\tt imrgra}=3 is usually faster than
+{\tt imrgra}=0 (but with less feedback on its use).\\
+it should be noted that {\tt imrgra}=1, 2 or 3 automatically triggers a gradient
+limitation procedure. See {\tt imligr}.\\
+useful if and only if there is {\tt n} so that {\tt nswrgr(n)} $>$ 1}
+
+\motcle{nswrgr}{ia}{positive integer}{100}{O}{L3}
+{for each unknown {\tt ivar}, {\tt nswrgr(ivar)} $\leqslant$ 1 indicates that the
 gradients are not reconstructed\\
-\hspace*{1.3cm}if IMRGRA = 0 or 4, NSWRGR(IVAR) is the number of
+\hspace*{1.3cm}if {\tt imrgra} = 0 or 4, {\tt nswrgr(ivar)} is the number of
 iterations for the gradient reconstruction\\
-\hspace*{1.3cm}if IMRGRA = 1, 2 or 3, NSWRGR(IVAR) $>$ 1 indicates that
+\hspace*{1.3cm}if {\tt imrgra} = 1, 2 or 3, {\tt nswrgr(ivar)} $>$ 1 indicates that
 the gradients are reconstructed (but the method is not iterative, so any value
-larger than 1 for NSWRGR yields the same result)\\
+larger than 1 for {\tt nswrgr} yields the same result)\\
 useful for all the unknowns}
 
-\motcle{EPSRGR}{RA}{real number $>$ 0}{1.D-5}{O}{L3}
-{for each unknown IVAR, relative precision for the iterative gradient
-reconstruction: EPSRGR(IVAR)\\
-useful for all the unknowns when IMRGRA = 0 or 4}
+\motcle{epsrgr}{ra}{real number $>$ 0}{$10^{-5}$}{O}{L3}
+{for each unknown {\tt ivar}, relative precision for the iterative gradient
+reconstruction: {\tt epsrgr(ivar)}\\
+useful for all the unknowns when {\tt imrgra} = 0 or 4}
 
-\motcle{IMLIGR}{IA}{-1, 0 or 1}{-1 or 1}{O}{L3}
-{for each unknown IVAR, indicates the type of gradient limitation:
-IMLIGR(IVAR)\\
+\motcle{imligr}{ia}{-1, 0 or 1}{-1 or 1}{O}{L3}
+{for each unknown {\tt ivar}, indicates the type of gradient limitation:
+{\tt imligr(ivar)}\\
 \hspace*{1.3cm}=-1: no limitation\\
 \hspace*{1.3cm}= 0: based on the neighbors\\
 \hspace*{1.3cm}= 1: superior order\\
-for all the unknowns, IMLIGR is initialised to -1 if IMRGRA=0 or 4 and to 1 if
-\mbox{IMRGRA = 1, 2 or 3}\\
+for all the unknowns, {\tt imligr} is initialised to -1 if {\tt imrgra}=0 or 4
+ and to 1 if \mbox{{\tt imrgra} = 1, 2 or 3}\\
 useful for all the unknowns}
 
-\motcle{CLIMGR}{RA}{real number $>$ 0}{1.5D0}{O}{L3}
-{for each unknown IVAR, factor of gradient limitation: CLIMGR(IVAR) (high
-value means little limitation)\\
-useful for all the unknowns IVAR for which IMLIGR(IVAR) $\ne$ -1}
+\motcle{climgr}{ra}{real number $>$ 0}{1.5}{O}{L3}
+{for each unknown {\tt ivar}, factor of gradient limitation: {\tt climgr(ivar)}
+(high value means little limitation)\\
+useful for all the unknowns {\tt ivar} for which {\tt imligr(ivar)} $\ne$ -1}
 
-\motcle{EXTRAG}{RA}{0.D0, 0.5D0 or 1.D0}{0.D0}{O}{L3}
-{for the variable ``pressure'' IVAR=IPR(IPHAS), extrapolation coefficient
+\motcle{extrag}{ra}{0, 0.5 or 1}{0}{O}{L3}
+{for the variable ``pressure'' {\tt ivar=ipr(iphas)}, extrapolation coefficient
 of the gradients at the boundaries. It affects only the Neumann conditions.
-The only possible values of EXTRAG(IPR(IPHAS)) are:\\
-\hspace*{1.3cm}= 0.D0: homogeneous Neumann calculated at first-order\\
-\hspace*{1.3cm}= 0.5D0: improved homogeneous Neumann, calculated at
+The only possible values of {\tt extrag(ipr(iphas))} are:\\
+\hspace*{1.3cm}= 0: homogeneous Neumann calculated at first-order\\
+\hspace*{1.3cm}= 0.5: improved homogeneous Neumann, calculated at
 second-order in the case of an orthogonal mesh and at first-order otherwise\\
-\hspace*{1.3cm}= 1.D0: gradient extrapolation (gradient at the boundary face
+\hspace*{1.3cm}= 1: gradient extrapolation (gradient at the boundary face
 equal to the gradient in the neighbor cell), calculated at
 second-order in the case of an orthogonal mesh and at first-order otherwise\\
-EXTRAG often allows to correct the non-physical velocities that
+{\tt extrag} often allows to correct the non-physical velocities that
 appear on horizontal walls when density is variable and there is gravity.
-It is strongly advised to keep EXTRAG=0 for the variables apart from
-pressure. See also IPHYDR.\\
-In practice, only the values 0.D0 and 1.D0 are allowed. The
-value 0.5D0 isn't allowed by default (but the lock can be overridden if
+It is strongly advised to keep {\tt extrag}=0 for the variables apart from
+pressure. See also {\tt iphydr}.\\
+In practice, only the values 0 and 1 are allowed. The
+value 0.5 isn't allowed by default (but the lock can be overridden if
 necessary, contact the development team).\\
 always useful}
 
-\motcle{ANOMAX}{R}{0.D0 $\leqslant$ real $\leqslant\pi/2$}{$\pi/4$}{O}{L3}
+\motcle{anomax}{r}{0 $\leqslant$ real $\leqslant\pi/2$}{$\pi/4$}{O}{L3}
 {limit non-orthogonality angle used to restrict the extended neighborhood for
-the gradient calculation with IMRGRA=3.\\
-ANOMAX=0 will yield the same result as IMRGRA=2 (full extended
-neighborhood). ANOMAX=$\pi/2$ will yield the same result as IMRGRA=2 (first
-neighbors only)\footnote{except for pathological cases where the
+the gradient calculation with {\tt imrgra}=3.\\
+{\tt anomax}=0 will yield the same result as {\tt imrgra}=2 (full extended
+neighborhood). {\tt anomax}=$\pi/2$ will yield the same result as
+{\tt imrgra}=2
+(first neighbors only)\footnote{except for pathological cases where the
 non-orthogonality angle of a face would be larger than $\pi/2$}\\
-useful if and only if IMRGRA=3}
+useful if and only if {\tt imrgra}=3}
 
 %==================================
 \subsubsection{Solution of the linear systems}
 %==================================
 
-\motcle{IRESOL}{IA}{-1, 1000*IPOL+J}{-1}{O}{L3}
-{for each unknown IVAR, IRESOL(IVAR) indicates the method used for the solution of
-the linear system\\
+\motcle{iresol}{ia}{-1, {\tt ipol*1000+j}}{-1}{O}{L3}
+{for each unknown {\tt ivar}, {\tt iresol(ivar)} determines the method used
+for the solution of the linear system\\
 \hspace*{1.3cm}= -1: automatically managed by the code (conjugate
-gradient for the pressure IVAR=IPR(IPHAS) or any variable which is not
+gradient for the pressure {\tt ivar=ipr(iphas)} or any variable which is not
 convected, Jacobi for the others. Diagonal preconditioning with
 conjugate gradient).\\
-\hspace*{1.3cm}= IPOL*1000+J with           J= 0: conjugate gradient\\
-\hspace*{1.3cm}\phantom{= IPOL*1000+J with} J= 1: Jacobi\\
-\hspace*{1.3cm}\phantom{= IPOL*1000+J with} J= 2: stabilised bi-conjugate
-gradient (BI-CGSTAB)\\
-\hspace*{1.3cm}IPOL is the degree of the Neumann polynomial used for the
+\hspace*{1.3cm}= {\tt ipol*1000+j} with {\tt j}= 0: conjugate gradient\\
+\hspace*{1.3cm}\phantom{= {\tt ipol*1000+j} with} {\tt j}= 1: Jacobi\\
+\hspace*{1.3cm}\phantom{= {\tt ipol*1000+j} with} {\tt j}= 2: stabilised
+bi-conjugate gradient (BI-CGSTAB)\\
+\hspace*{1.3cm}{\tt ipol} is the degree of the Neumann polynomial used for the
 preconditioning\footnote{$D$ being the diagonal part of $A$ and $X$ its
 extra-diagonal part, it can be written
 $A=D(Id+D^{-1}X)$. Therefore \mbox{$A^{-1}=(Id+D^{-1}X)^{-1}D^{-1}$}. A series
 development of $Id+D^{-1}X$ can then be used which yields, symbolically,
 \mbox{$Id+\sum\limits_{I=1}^{IPOL}\left(-D^{-1}X\right)^{I}$}.}.\\
-IPOL is necessarily null with the Jacobi algorithm.\\
+{\tt ipol} is necessarily 0 with the Jacobi algorithm.\\
 Concerning the computational time, the performance depends on the
 case. If a preconditioning method different from
 the diagonal preconditioning is to be used, it seems to be better to restrict
-to a first-order preconditioning (IPOL=1). This preconditioning may save up to 10\%
-of time in some cases but in the others it may also increase the computational
-time by a few percents\\
+to a first-order preconditioning ({\tt ipol}=1). This preconditioning may
+slightly increase performance in some cases but may decrease it in others.\\
 always useful}
 
-\motcle{NITMAX}{IA}{integer $>$ 0}{10000}{O}{L3}
-{for each unknown IVAR, maximum number of iterations for the solution of
-the linear systems: NITMAX(IVAR)\\
-when the algebraic multigrid option is activated for the variable IVAR
-(IMGR(IVAR)=1), NITMAX(IVAR) is the maximum number of iterations for the
-solution on the coarsest mesh\\
+\motcle{nitmax}{ia}{integer $>$ 0}{10000}{O}{L3}
+{for each unknown {\tt ivar}, maximum number of iterations for the solution of
+the linear systems: {\tt nitmax(ivar)}\\
+when the algebraic multigrid option is activated for the variable {\tt ivar}
+({\tt imgr(ivar)}=1), {\tt nitmax(ivar)} is the maximum number of iterations
+for the solution on the coarsest mesh\\
 always useful}
 
-\motcle{EPSILO}{RA}{real number $>$ 0}{1.D-8,1.D-5}{O}{L3}
-{for each unknown IVAR, relative precision for the solution of the linear
-system. The default value is EPSILO(IVAR)=1.D-8. This value is set low
+\motcle{epsilo}{ra}{real number $>$ 0}{$10^{-8}$,$10^{-5}$}{O}{L3}
+{for each unknown {\tt ivar}, relative precision for the solution of the linear
+system. The default value is {\tt epsilo(ivar)=$10^{-8}$}. This value is set low
 on purpose. When there are enough iterations on the reconstruction of the
 right-hand side of the equation,
 the value may be increased (by default, in case of second-order in time,
-with NSWRSM = 5 or 10, EPSILO is increased to 1.D-5).\\
+with {\tt nswrsm} = 5 or 10, {\tt epsilo} is increased to $10^{-5}$).\\
 always useful}
 
-\motcle{IMGR}{IA}{0 or 1}{0}{O}{L3}
-{for each unknown IVAR, indicates the use (IMGR(IVAR)=1) or not (=0) of the
-algebraic multigrid method for the solution of the linear systems\\
-IMGR(IVAR) can be set independently for every variable\\
+\motcle{imgr}{ia}{0 or 1}{0}{O}{L3}
+{for each unknown {\tt ivar}, indicates the use ({\tt imgr(ivar)}=1) or not
+(=0) of the algebraic multigrid method for the solution of the linear systems\\
+{\tt imgr(ivar)} can be set independently for every variable\\
 always useful. Generally, its use is designed for the variable ``pressure'' in
 case of meshes with strongly stretched cells. It is recommended not to modify
-IMGR}
+{\tt imgr}}
 
-\motcle{NCEGRM}{I}{integer $>$ 0}{30}{O}{L3}
+\motcle{ncegrm}{i}{integer $>$ 0}{30}{O}{L3}
 {for the multigrid method, maximum number of cells on the coarsest grid\\
-useful if and only if IMGR(IVAR) = 1 for at least one variable IVAR}
+useful if and only if {\tt imgr(ivar)} = 1 for at least one variable {\tt ivar}}
 
-\motcle{NCYMAX}{IA}{integer $>$ 0}{100}{O}{L3}
-{for each unknown IVAR, NCYMAX(IVAR) is the maximum number of cycles when using
-the multigrid method.\\
-useful if and only if IMGR(IVAR) = 1}
+\motcle{ncymax}{ia}{integer $>$ 0}{100}{O}{L3}
+{for each unknown {\tt ivar}, {\tt ncymax(ivar)} is the maximum number of
+cycles when using the multigrid method.\\
+useful if and only if {\tt imgr(ivar)} = 1}
 
-\motcle{NGRMAX}{I}{1$\leqslant$ integer $\leqslant$NGRMMX }{NGRMMX}{O}{L3}
+\motcle{ngrmax}{i}{1$\leqslant$ integer $\leqslant${\tt ngrmmx} }{{\tt ngrmmx}}{O}{L3}
 {when using the multigrid method, maximum number of grid levels\\
-useful if and only if IMGR(IVAR) = 1 for at least one variable IVAR}
+useful if and only if {\tt imgr(ivar)} = 1 for at least one variable {\tt ivar}}
 
-\motcle{NCYMAX}{IA}{integer $>$ 0}{10}{O}{L3}
-{for each unknown IVAR, NCYMAX(IVAR) is the maximum number of multigrid cycles.\\
-useful if and only if IMGR(IVAR) = 1}
+\motcle{ncymax}{ia}{integer $>$ 0}{10}{O}{L3}
+{for each unknown {\tt ivar}, {\tt ncymax(ivar)} is the maximum number of
+ multigrid cycles.\\
+useful if and only if {\tt imgr(ivar)} = 1}
 
-\motcle{NITMGF}{IA}{integer $>$ 0}{10}{O}{L3}
-{for each unknown IVAR, NITMGF(IVAR) is the maximum number of iterations on
-all grids except for the coarsest when the multigrid method is used;
-the resolution on the coarsest grid uses NITMAX.\\
-useful if and only if IMGR(IVAR) = 1}
+\motcle{nitmgf}{ia}{integer $>$ 0}{10}{O}{L3}
+{for each unknown {\tt ivar}, {\tt nitmgf(ivar)} is the maximum number of
+iterations on all grids except for the coarsest when the multigrid method is
+used; the resolution on the coarsest grid uses {\tt nitmax}.\\
+useful if and only if {\tt imgr(ivar)} = 1}
 
 \minititre{Warning}
 The algebraic multigrid method has only been tested for
-the ``pressure'' variable (IMGR(IPR(IPHAS))=1).
+the ``pressure'' variable ({\tt imgr(ipr(iphas))}=1).
 
 %==================================
 \subsubsection{Convective scheme}
 %==================================
 
-\motcleb{BLENCV}{RA}{0 $\leqslant$ real $\leqslant$ 1}{0.D0 or 1.D0}{O}{L1}
-{for each unknown IVAR to calculate, BLENCV(IVAR) indicates the proportion of
-second-order convective scheme (0.D0 corresponds to an
+\motcleb{blencv}{ra}{0 $\leqslant$ real $\leqslant$ 1}{0 or 1}{O}{L1}
+{for each unknown {\tt ivar} to calculate, {\tt blencv(ivar)} indicates the
+ proportion of second-order convective scheme (0 corresponds to an
 ``upwind'' first-order scheme) ; in case of LES calculation, a
-second-order scheme is recommended and activated by default (BLENCV=1.D0)\\
-useful for all the unknowns IVAR for which ICONV(IVAR) = 1}
+second-order scheme is recommended and activated by default ({\tt blencv=1})\\
+useful for all the unknowns {\tt ivar} for which {\tt iconv(ivar)} = 1}
 
-\motcle{ISCHCV}{IA}{0 or 1}{1}{O}{L2}
-{for each unknown IVAR to calculate, ISCHCV(IVAR) indicates the type of second-order
+\motcle{ischcv}{ia}{0 or 1}{1}{O}{L2}
+{for each unknown {\tt ivar} to calculate, {\tt ischcv(ivar)} indicates the type of second-order
 convective scheme\\
 \hspace*{1.3cm}= 0: Second Order Linear Upwind\\
 \hspace*{1.3cm}= 1: Centered\\
-useful for all the unknowns IVAR which are convected (ICONV(IVAR)=1) and
-for which a second-order scheme is used (BLENCV(IVAR) $>$ 0)}
+useful for all the unknowns {\tt ivar} which are convected
+({\tt iconv(ivar)}=1) and
+for which a second-order scheme is used ({\tt blencv(ivar)} $>$ 0)}
 
-\motcle{ISSTPC}{IA}{0 or 1}{0}{O}{L2}
-{for each unknown IVAR to calculate, ISSTPC(IVAR)
+\motcle{isstpc}{ia}{0 or 1}{0}{O}{L2}
+{for each unknown {\tt ivar} to calculate, {\tt isstpc(ivar)}
 indicates whether a ``slope test'' should
 be used to switch from a second-order to an ``upwind'' convective
 scheme under certain conditions, to ensure stability.\\
 \hspace*{1.3cm}= 0: ``slope test'' activated for the considered unknown\\
 \hspace*{1.3cm}= 1: ``slope test'' deactivated for the considered unknown\\
-useful for all the unknowns IVAR  which are convected (ICONV(IVAR)=1) and
-for which a second-order scheme is used (BLENCV(IVAR) $>$ 0).\\
+useful for all the unknowns {\tt ivar}  which are convected
+({\tt iconv(ivar)}=1) and
+for which a second-order scheme is used ({\tt blencv(ivar)} $>$ 0).\\
 the use of the ``slope test'' stabilises the calculation but may bring
 the order in space to decrease quickly.}
 
@@ -1835,36 +1834,36 @@ the order in space to decrease quickly.}
 %==================================
 
 
-\motcle{IPRCO}{I}{0 or 1}{1}{O}{L3}
+\motcle{iprco}{i}{0 or 1}{1}{O}{L3}
 {indicates if the pressure-continuity step is taken into account (1) or
 not (0)\\
 always useful}
 
-\motcle{ARAK}{RA}{0 $<$ real $\leqslant$ 1}{1.D0}{O}{L3}
-{for each phase IPHAS, ARAK(IPHAS) is the Arakawa coefficient before the
+\motcle{arak}{ra}{0 $<$ real $\leqslant$ 1}{1}{O}{L3}
+{for each phase {\tt iphas}, {\tt arak(iphas)} is the Arakawa coefficient before the
 Rhie\& Chow filter\\
 always useful}
 
-\motcle{RELAXP}{RA}{0 $<$ real $\leqslant$ 1}{1.D0}{O}{L2}
-{for each phase IPHAS, relaxation of the pressure increment during the
-solution of the system (RELAXP(IPHAS)=1: no relaxation)\\
+\motcle{relaxp}{ra}{0 $<$ real $\leqslant$ 1}{1}{O}{L2}
+{for each phase {\tt iphas}, relaxation of the pressure increment during the
+solution of the system ({\tt relaxp(iphas)}=1: no relaxation)\\
 can improve the convergence in case of
 meshes of insufficient quality\\
 always useful}
 
-\motcle{IREVMC}{IA}{0, 1 or 2}{0}{O}{L3}
-{for each phase IPHAS, method used to update the velocity after the pressure
+\motcle{irevmc}{ia}{0, 1 or 2}{0}{O}{L3}
+{for each phase {\tt iphas}, method used to update the velocity after the pressure
 correction:\\
 \hspace*{0,5cm}- standard gradient of pressure increment
-(IREVMC(IPHAS)=0)\\
+({\tt irevmc(iphas)}=0)\\
 \hspace*{0,5cm}- least squares on the pressure increment
-(IREVMC(IPHAS)=1)\\
-\hspace*{0,5cm}-``RT0'' {\em i.e.} least squares on the updated mass flux
-(IREVMC(IPHAS)=2)\\
-the method IREVMC(IPHAS)=2 is generally not recommended\\
+({\tt irevmc(iphas)}=1)\\
+\hspace*{0,5cm}-``{\tt rt0}'' {\em i.e.} least squares on the updated mass flux
+({\tt irevmc(iphas)}=2)\\
+the method {\tt irevmc(iphas)}=2 is generally not recommended\\
 always useful}
 
-\motcle{IPHYDR}{I}{0 or 1}{0}{O}{L2}
+\motcle{iphydr}{i}{0 or 1}{0}{O}{L2}
 {method for taking into account the balance between the pressure gradient and
 the source terms (gravity and head losses): by extension it will be
 referenced as ``taking into account of the hydrostatic pressure''\\
@@ -1872,38 +1871,38 @@ referenced as ``taking into account of the hydrostatic pressure''\\
 \hspace*{1.3cm}= 1: improved algorithm\\
 always useful\\
 When the density effects are important, the choice of
-IPHYDR=1 allows to improve the interpolation of the pressure and correct the
+{\tt iphydr}=1 allows to improve the interpolation of the pressure and correct the
 non-physical velocities which may appear in highly
 stratified areas or near horizontal walls (thus
-avoiding the use of EXTRAG if the non-physical velocities are due only to
+avoiding the use of {\tt extrag} if the non-physical velocities are due only to
 gravity effects).\\
 The improved algorithm also allows to eradicate the velocity oscillations
 which tend to appear at the frontiers of areas with high head losses.\\
 In the case of a stratified flow, the calculation cost is higher when the
 improved algorithm is used (about 30\% depending on the case) because
-the hydrostatic pressure has to be recalculated at the outlet boundary
-conditions: see ICALHY.\\
+the hydrostatic pressure must be recalculated at the outlet boundary
+conditions: see {\tt icalhy}.\\
 On meshes of insufficient quality, in order to
 improve the convergence, it may be useful to increase the number of
 iterations for the reconstruction of the pressure right-hand member,
-{\em i.e.} \mbox{NSWRSM(IPR(IPHAS))}.\\
+{\em i.e.} \mbox{\tt nswrsm(ipr(iphas))}.\\
 If head losses are present just along an outlet boundary, it is necessary to
-specify ICALHY=0 in order to deactivate the recalculation of the hydrostatic
+specify {\tt icalhy}=0 in order to deactivate the recalculation of the hydrostatic
 pressure at the boundary, which may otherwise cause instabilities.}
 
-\motcle{ICALHY}{I}{0 or 1}{0 or 1}{O}{L3}
+\motcle{icalhy}{i}{0 or 1}{0 or 1}{O}{L3}
 {activates the calculation of hydrostatic pressure boundary conditions at outlet
 boundaries\\
 \hspace*{1.3cm}= 0: no calculation of the hydrostatic pressure at the outlet boundary\\
 \hspace*{1.3cm}= 1: calculation of the hydrostatic pressure at the outlet boundary\\
 always useful\\
 This option is automatically specified depending on the
-choice of IPHYDR and the value of gravity
-(ICALHY=1 if IPHYDR=1 and gravity is different from 0; otherwise
-ICALHY=0). The activation of this option generates an additional
+choice of {\tt iphydr} and the value of gravity
+({\tt icalhy}=1 if {\tt iphydr}=1 and gravity is different from 0; otherwise
+{\tt icalhy}=0). The activation of this option generates an additional
 calculation cost (about 30\% depending on the case).\\
 If head losses are present just along an outlet boundary, it is necessary to
-specify ICALHY=0 in order to deactivate the recalculation of the hydrostatic
+specify {\tt icalhy}=0 in order to deactivate the recalculation of the hydrostatic
 pressure at the boundary, which may otherwise cause instabilities}
 
 
@@ -1912,18 +1911,18 @@ pressure at the boundary, which may otherwise cause instabilities}
 \subsubsection{Error estimators for Navier-Stokes}
 %==================================
 
-There are currently NESTMX\index{NESTMX}=4 types of local estimators
+There are currently {\tt nestmx\index{nestmx}}=4 types of local estimators
 provided at every time step, with two possible definitions for
 each\footnote{choice made by the user}. These scalars indicate the areas
 (cells) in which some error types may be important. They are
-stored in the array PROPCE containing the properties at the cells (see
-IESTIM\index{IESTIM}). For each estimator, the code writes the minimum and
+stored in the array {\tt propce} containing the properties at the cells (see
+{\tt iestim\index{iestim}}). For each estimator, the code writes the minimum and
 maximum values in the listing and generates post-processing outputs along with
 the other variables.
 
 The additional memory cost is about one real number per cell and per
 estimator. The additional calculation cost is variable. For instance, on a
-simple test case, the total estimator IESTOT generates an additional cost
+simple test case, the total estimator {\tt iestot} generates an additional cost
 of 15 to 20 $\%$ on the CPU time\footnote{indeed, all the first-order in
 space differential terms have to be recalculated at the time $t^{\,n+1}$} ;
 the cost of the three others may be neglected. If the user wants to
@@ -1935,7 +1934,7 @@ It is recommended to use the estimators only for visual and qualitative
 analysis. Also, their use is compatible neither with a second-order time scheme
 nor with a calculation with a frozen velocity field.
 
-{\bf IEST = IESPRE\index{IESPRE}: prediction} (default name: EsPre).
+{\tt \bf iest = iespre\index{iespre}: prediction} (default name: EsPre).
 After the velocity prediction step (yielding $\vect{u}^*$), the
 estimator $\eta^{\,pred}_{\,i,k}(\vect{u}^*)$, local variable calculated
 at every cell $\Omega_i$, is created from $\vect{\mathcal
@@ -1962,7 +1961,7 @@ $ \eta^{\,pred}_{\,i,k}(\vect{u}^*)$  is ideally equal to zero when the
 reconstruction methods are perfect and the associated system is
 solved exactly.
 
-{\bf IEST = IESDER\index{IESDER}: drift}  (default name: EsDer).
+{\tt \bf iest = iesder\index{iesder}: drift}  (default name: EsDer).
 The estimator $\eta^{\,der}_{\,i,k}(\vect{u}^{\,n+1})$ is based on the
 following quantity (intrinsic to the code):
 \begin{equation}
@@ -1978,7 +1977,7 @@ following quantity (intrinsic to the code):
 Ideally, it is equal to zero when the Poisson equation related to the pressure is
 solved exactly.
 
-{\bf IEST = IESCOR\index{IESCOR}: correction}  (default name: EsCor).
+{\tt \bf iest = iescor\index{iescor}: correction}  (default name: EsCor).
 The estimator $ \eta^{\,corr}_{\,i,k}(\vect{u}^{\,n+1})$ comes directly
 from the mass flow calculated with the updated velocity field:
 \begin{eqnarray*}
@@ -1996,7 +1995,7 @@ Ideally, it is equal to zero when the Poisson equation is solved exactly and
 the projection from the mass flux at the faces to the velocity at the cell
 centers is made in a set of  functions with null divergence.
 
-{\bf IEST = IESTOT\index{IESTOT}: total} (default name: EsTot).
+{\tt \bf iest = iestot\index{iestot}: total} (default name: EsTot).
 The estimator $ \eta^{\,tot}_{\,i,k}(\vect{u}^{\,n+1})$, local variable
 calculated at every cell $\Omega_i$, is based on the quantity
 $\vect{\mathcal R}^{\,tot}(\vect{u}^{\,n+1})$, which represents the
@@ -2027,26 +2026,27 @@ ${{I\hspace{-.25em}L}^{2}(\Omega_i)}$. The size of the cell therefore
 appears in its calculation and induces a weighting effect.\\
 
 
-The estimators are evaluated depending on the values of IESCAL.
+The estimators are evaluated depending on the values of {\tt iescal}.
 
 
-\motcleb{IESCAL}{IA}{0, 1 or 2}{0}{O}{L1}
-{for each phase IPHAS, IESCAL(IEST,IPHAS) indicates the calculation mode
-for the error estimator IEST (IESPRE, IESDER, IESCOR or IESTOT), for
+\motcleb{iescal}{ia}{0, 1 or 2}{0}{O}{L1}
+{for each phase {\tt iphas}, {\tt iescal(iest,iphas)} indicates the calculation mode
+for the error estimator {\tt iest} ({\tt iespre}, {\tt iesder}, {\tt iescor} or
+{\tt iestot}), for
 the Navier-Stokes equation:\\
- IESCAL = 0: estimator not calculated, \\
- IESCAL = 1: the estimator $ \eta^{\,* }_{\,i,1}$ is calculated,
-               without contribution of the volume, \\
- IESCAL = 2: the estimator $ \eta^{\,* }_{\,i,2}$ is calculated,
-               with contribution of the volume ("norm $L^2$"),
-               except for IESCOR, for which
-               $|\Omega_i|\ \eta^{\,corr}_{\,i,1}\ $
-               is calculated.
+ {\tt iescal} = 0: estimator not calculated, \\
+ {\tt iescal} = 1: the estimator $ \eta^{\,* }_{\,i,1}$ is calculated,
+                   without contribution of the volume, \\
+ {\tt iescal} = 2: the estimator $ \eta^{\,* }_{\,i,2}$ is calculated,
+                   with contribution of the volume ("norm $L^2$"),
+                   except for {\tt iescor}, for which
+                   $|\Omega_i|\ \eta^{\,corr}_{\,i,1}\ $
+                   is calculated.
 
 The name of the estimators appearing in the listing and the post-processing is
 made up of the default name (given before), followed first by the value of
-IESCAL, then by the phase number. For
-instance, EsPre201 is the estimator IESPRE calculated with IESCAL=2 for
+{\tt iescal}, then by the phase number. For
+instance, EsPre201 is the estimator {\tt iespre} calculated with {\tt iescal}=2 for
 the phase 01.\\
 always useful}
 
@@ -2056,7 +2056,7 @@ always useful}
 \subsubsection{Calculation of the distance to the wall}
 %==================================
 
-\motcle{ICDPAR}{I}{-1, 1, -2 or 2}{-1}{O}{L2}
+\motcle{icdpar}{i}{-1, 1, -2 or 2}{-1}{O}{L2}
 {specifies the method used to calculate the distance to the wall $y$ and the
 adimensional distance $y^+$ for all the
 cells of the calculation domain (when necessary):\\
@@ -2078,134 +2078,138 @@ wall in case of calculation restart\\
 In case of restart calculation, if the position of the walls haven't changed,
 reading the distance to the wall from the restart file can save a fair amount of
 CPU time.\\
-Useful in $R_{ij}-\varepsilon$ model with wall echo (ITURB(IPHAS)=30 and IRIJEC=1),
-in LES with van Driest damping (ITURB(IPHAS)=40 and IDRIES(IPHAS)=1) and
-in $k-\omega$ SST (ITURB(IPHAS)=60). \\
-By default, ICDPAR is initialied to -1, in case there has been a change in the
+Useful in $R_{ij}-\varepsilon$ model with wall echo ({\tt iturb(iphas)}=30 and
+{\tt irijec}=1), in LES with van Driest damping ({\tt iturb(iphas)}=40 and
+{\tt idries(iphas)}=1) and in $k-\omega$ SST ({\tt iturb(iphas)}=60). \\
+By default, {\tt icdpar} is initialised to -1, in case there has been a change in the
 definition of the boundary conditions between two computations (change in the
 number or the positions of the walls). Yet, with the $k-\omega$ SST model, the
 distance to the wall is needed to calculate the turbulent viscosity, which is
 done before the calculation of the distance to the wall. Hence, when this model
-is used (and only in that case), ICDPAR is set to 1 by default, to ensure total
+is used (and only in that case), {\tt icdpar} is set to 1 by default, to ensure total
 continuity of the calculation at restart.\\
 {\bf As a consequence, with the \boldmath$k-\omega$\unboldmath\ SST model, if
 the number and positions of the walls are changed at a calculation restart, it
-is mandatory for the user to set ICDPAR explicitly to -1}, otherwise the
+is mandatory for the user to set {\tt icdpar} explicitly to -1}, otherwise the
 distance to the wall used will not correspond to the actual position of the
 walls.\\
 The former algorithm is not compatible with parallelism nor periodicity. Also,
-whatever the value chosen for ICDPAR, the calculation of the distance to the
+whatever the value chosen for {\tt icdpar}, the calculation of the distance to the
 wall is made at the most once for all a the beginning of the calculation. It is
 therefore not compatible with moving walls. Please contact the development team
 if you need to override this limitation.}
 
 
-The following options are related to ICDPAR=1 or -1. The options of
+The following options are related to {\tt icdpar}=1 or -1. The options of
 level 2 are described first. Some options are used only in the case of
 the calculation of the adimensional distance to the wall $y^+$ (LES model with
 van Driest damping). Most of these key words are simple copies of the
 key words for the numerical options of the general equations, with a potentially
 specific value in the case of the calculation of the distance to the wall.\\
 
-\motcle{IWARNY}{I}{integer}{0}{O}{L2}
+\motcle{iwarny}{i}{integer}{0}{O}{L2}
 {specifies the level of the output writing concerning the calculation of the
-distance to the wall with ICDPAR=1 or -1. The higher the value, the more
+distance to the wall with {\tt icdpar}=1 or -1. The higher the value, the more
 detailled the outputs\\
-useful when ICDPAR=1 or -1}
+useful when {\tt icdpar}=1 or -1}
 
-\motcle{NTCMXY}{I}{positive integer}{1000}{O}{L2}
+\motcle{ntcmxy}{i}{positive integer}{1000}{O}{L2}
 {number of pseudo-time iterations for the calculation of the adimensional
 distance to the wall $y^+$\\
-useful when ICDPAR=1 or -1 for the calculation of $y^+$}
+useful when {\tt icdpar}=1 or -1 for the calculation of $y^+$}
 
-\motcle{NITMAY}{I}{integer  $>$ 0}{10000}{O}{L3}
+\motcle{nitmay}{i}{integer  $>$ 0}{10000}{O}{L3}
 {maximum number of iterations for the solution of the linear systems\\
-useful when ICDPAR=1 or -1}
+useful when {\tt icdpar}=1 or -1}
 
-\motcle{NSWRSY}{I}{positive integer}{1}{O}{L3}
+\motcle{nswrsy}{i}{positive integer}{1}{O}{L3}
 {number of iterations for the reconstruction of the right-hand members:
-corresponds to NSWRSM\\
-useful when ICDPAR=1 or -1}
+corresponds to {\tt nswrsm}\\
+useful when {\tt icdpar}=1 or -1}
 
-\motcle{NSWRGY}{I}{positive integer}{100}{O}{L3}
-{number of iterations for the gradient reconstruction: corresponds to NSWRGR\\
-useful when ICDPAR=1 or -1}
+\motcle{nswrgy}{i}{positive integer}{100}{O}{L3}
+{number of iterations for the gradient reconstruction: corresponds to {\tt nswrgr}\\
+useful when {\tt icdpar}=1 or -1}
 
-\motcle{IMLIGY}{I}{-1, 0 ou 1}{-1 or 1}{O}{L3}
-{type of gradient limitation: corresponds to IMLIGR\\
-useful when ICDPAR=1 or -1}
+\motcle{imligy}{i}{-1, 0 or 1}{-1 or 1}{O}{L3}
+{type of gradient limitation: corresponds to {\tt imligr}\\
+useful when {\tt icdpar}=1 or -1}
 
-\motcle{IRCFLY}{I}{0 or 1}{1}{O}{L3}
+\motcle{ircfly}{i}{0 or 1}{1}{O}{L3}
 {indicates the reconstruction of the convective and diffusive fluxes at
-the faces: corresponds to IRCFLU\\
-useful when ICDPAR=1 or -1}
+the faces: corresponds to {\tt ircflu}\\
+useful when {\tt icdpar}=1 or -1}
 
-\motcle{ISCHCY}{I}{0 or 1}{1}{O}{L3}
-{type of second-order convective scheme: corresponds to ISCHCV\\
-useful when ICDPAR=1 or -1 for the calculation of $y^+$}
+\motcle{ischcy}{i}{0 or 1}{1}{O}{L3}
+{type of second-order convective scheme: corresponds to {\tt ischcv}\\
+useful when {\tt icdpar}=1 or -1 for the calculation of $y^+$}
 
-\motcle{ISSTPY}{I}{0 or 1}{0}{O}{L3}
+\motcle{isstpy}{i}{0 or 1}{0}{O}{L3}
 {indicates if a ``slope test'' should be used for a second-order convective
-scheme: corresponds to ISSTPC\\
-useful when ICDPAR=1 or -1 for the calculation of $y^+$}
+scheme: corresponds to {\tt isstpc}\\
+useful when {\tt icdpar}=1 or -1 for the calculation of $y^+$}
 
-\motcle{IMGRPY}{I}{0 or 1}{0}{O}{L3}
+\motcle{imgrpy}{i}{0 or 1}{0}{O}{L3}
 {indicates whether the algebraic
-multigrid method should be used (IMGR(IVAR)=1) or not (0): corresponds to IMGR\\
-useful when ICDPAR=1 or -1}
-
-\motcle{BLENCY}{R}{0 $\leqslant$ real $\leqslant$ 1}{0.D0}{O}{L3}
-{proportion of second-order convective scheme: corresponds to BLENCV\\
-useful when ICDPAR=1 or -1 for the calculation of $y^+$}
-
-\motcle{EPSILY}{R}{real number $>$ 0}{1.D-8}{O}{L3}
-{relative precision for the solution of the linear systems: corresponds to EPSILO\\
-useful when ICDPAR=1 or -1}
-
-\motcle{EPSRGY}{R}{real number $>$ 0}{1.D-5}{O}{L3}
-{relative precision for the iterative gradient reconstruction: corresponds to EPSRGR\\
-useful when ICDPAR=1 or -1}
-
-\motcle{CLIMGY}{R}{real number $>$ 0}{1.5D0}{O}{L3}
-{limitation factor of the gradients: corresponds to CLIMGR\\
-useful when ICDPAR=1 or -1}
-
-\motcle{EXTRAY}{R}{0.D0, 0.5D0 or 1.D0}{0.D0}{O}{L3}
-{extrapolation coefficient of the gradients at the boundaries: corresponds to EXTRAG\\
-useful when ICDPAR=1 or -1}
-
-\motcle{COUMXY}{R}{strictly positive real number}{5000.D0}{O}{L3}
+multigrid method should be used ({\tt imgr(ivar)}=1) or not (0): corresponds
+to {\tt imgr}\\
+useful when {\tt icdpar}=1 or -1}
+
+\motcle{blency}{r}{0 $\leqslant$ real $\leqslant$ 1}{0}{O}{L3}
+{proportion of second-order convective scheme: corresponds to {\tt blencv}\\
+useful when {\tt icdpar}=1 or -1 for the calculation of $y^+$}
+
+\motcle{epsily}{r}{real number $>$ 0}{$10^{-8}$}{O}{L3}
+{relative precision for the solution of the linear systems:
+corresponds to {\tt epsilo}\\
+useful when {\tt icdpar}=1 or -1}
+
+\motcle{epsrgy}{r}{real number $>$ 0}{$10^{-5}$}{O}{L3}
+{relative precision for the iterative gradient reconstruction:
+corresponds to {\tt epsrgr}\\
+useful when {\tt icdpar}=1 or -1}
+
+\motcle{climgy}{r}{real number $>$ 0}{1.5}{O}{L3}
+{limitation factor of the gradients: corresponds to {\tt climgr}\\
+useful when {\tt icdpar}=1 or -1}
+
+\motcle{extray}{r}{0, 0.5 or 1}{0}{O}{L3}
+{extrapolation coefficient of the gradients at the boundaries:
+corresponds to {\tt extrag}\\
+useful when {\tt icdpar}=1 or -1}
+
+\motcle{coumxy}{r}{strictly positive real number}{5000}{O}{L3}
 {Target Courant number for the calculation of the adimensional distance
 to the wall\\
-useful when ICDPAR=1 or -1 for the calculation of $y^+$}
+useful when {\tt icdpar}=1 or -1 for the calculation of $y^+$}
 
-\motcle{EPSCVY}{R}{strictly positive real number}{1.D-8}{O}{L3}
+\motcle{epscvy}{r}{strictly positive real number}{$10^{-8}$}{O}{L3}
 {relative precision for the convergence of the pseudo-transient regime
 for the calculation of the adimensional distance to the wall\\
-useful when ICDPAR=1 or -1  for the calculation of $y^+$}
+useful when {\tt icdpar}=1 or -1  for the calculation of $y^+$}
 
-\motcle{YPLMXY}{R}{real number}{200.D0}{O}{L3}
+\motcle{yplmxy}{r}{real number}{200}{O}{L3}
 {value of the adimensional distance to the wall above which the
 calculation of the distance is not necessary (for the damping)\\
-useful when ICDPAR=1 or -1 for the calculation of $y^+$}
+useful when {\tt icdpar}=1 or -1 for the calculation of $y^+$}
 
 
 %==================================
 \subsubsection{Others}
 %==================================
 
-\motcleb{ICCVFG}{I}{0 or 1}{0}{O}{L1}
+\motcleb{iccvfg}{i}{0 or 1}{0}{O}{L1}
 {indicates whether the dynamic field should be frozen (1) or not (0)\\
 in such a case, the values of velocity,
 pressure and the variables related to the potential turbulence model
 ($k$, $R_{ij}$, $\varepsilon$, $\varphi$, $\bar{f}$, $\omega$, turbulent viscosity) are kept
 constant over time and only the equations for the scalars are solved\\
-also, if ICCVFG=1, the physical properties modified in \texttt{usphyv} will keep
+also, if {\tt iccvfg}=1, the physical properties modified in \texttt{usphyv} will keep
 being updated. Beware of non-consistencies if these properties would normally
 affect the dynamic field (modification of density for instance)\\
-useful if and only if NSCAL $>$ 0 and ISUITE=1}
+useful if and only if {\tt nscal} $>$ 0 and {\tt isuite}=1}
 
-\motcleb{IPUCOU}{I}{0 or 1}{0}{O}{L1}
+\motcleb{ipucou}{i}{0 or 1}{0}{O}{L1}
 {indicates the algorithm for velocity/pressure coupling\\
 \hspace*{1.3cm}= 0: standard algorithm\\
 \hspace*{1.3cm}= 1: reinforced coupling in case calculation with long
@@ -2213,48 +2217,48 @@ time steps\\
 always useful (it is seldom advised, but it can prove very useful, for instance,
 in case of flows with weak convection effects and highly variable viscosity)}
 
-\motcleb{ISUIT1}{I}{0 or 1}{0}{O}{L1}
+\motcleb{isuit1}{i}{0 or 1}{0}{O}{L1}
 {for the  1D wall thermal module, activation (1) or not(0) of the reading
-of the mesh and of the wall temperature from the FICMT1 restart file\\
-useful if NFPT1D$>$0.}
+of the mesh and of the wall temperature from the {\tt ficmt1} restart file\\
+useful if {\tt nfpt1d}$>$0.}
 
-\motcle{IMVISF}{I}{0 or 1}{0}{O}{L3}
+\motcle{imvisf}{i}{0 or 1}{0}{O}{L3}
 {indicates the interpolation method used to project variables from the cell
 centers to the faces\\
 \hspace*{1.3cm}= 0: linear\\
 \hspace*{1.3cm}= 1: harmonic\\
 always useful}
 
-\motcle{IRCFLU}{IA}{0 or 1}{1}{O}{L2}
-{for each unknown IVAR, IRCFLU(IVAR) indicates whether the convective
+\motcle{ircflu}{ia}{0 or 1}{1}{O}{L2}
+{for each unknown {\tt ivar}, {\tt ircflu(ivar)} indicates whether the convective
 and diffusive fluxes at the faces should be reconstructed: \\
 \hspace*{1.3cm}= 0: no reconstruction\\
 \hspace*{1.3cm}= 1: reconstruction\\
 deactivating the reconstruction of the fluxes can have a stabilising effect on
 the calculation. It is sometimes useful with the $k-\varepsilon$ model, if the
 mesh is strongly non-orthogonal in the near-wall region, where the gradients of
-$k$ and $\varepsilon$ are strong. In such a case, setting IRCFLU(IK(IPHAS))=0
-and IRCFLU(IEP(IPHAS))=0 will probably help (switching to a first order
-convective scheme, BLENCV=0.D0, for $k$ and $\varepsilon$ might also help in
+$k$ and $\varepsilon$ are strong. In such a case, setting {\tt ircflu(ik(iphas))}=0
+and {\tt ircflu(iep(iphas))}=0 will probably help (switching to a first order
+convective scheme, {\tt blencv=0}, for $k$ and $\varepsilon$ might also help in
 that case)\\
 always useful}
 
-\motcle{NSWRSM}{IA}{positive integer}{1, 2, 5 or 10}{O}{L3}
-{for each unknown IVAR, NSWRSM(IVAR) indicates the number of iterations for the
+\motcle{nswrsm}{ia}{positive integer}{1, 2, 5 or 10}{O}{L3}
+{for each unknown {\tt ivar}, {\tt nswrsm(ivar)} indicates the number of iterations for the
 reconstruction of the right-hand members of the equations\\
 with a first-order scheme in time
 (standard case), the default values are 2 for pressure and 1 for the
-other variables. With a second-order scheme in time (ISCHTP=2) or LES, the
+other variables. With a second-order scheme in time ({\tt ischtp}=2) or LES, the
 default values are 5 for pressure and 10 for the other variables.\\
 useful for all the unknowns}
 
-\motcle{EPSRSM}{RA}{real number $>$ 0}{1.D-8,1.D-5}{O}{L3}
-{for each unknown IVAR, relative precision on the reconstruction of the
-right hand-side. The default value is EPSRSM(IVAR)=1.D-8. This value is set low
+\motcle{epsrsm}{ra}{real number $>$ 0}{$10^{-8}$,$10^{-5}$}{O}{L3}
+{for each unknown {\tt ivar}, relative precision on the reconstruction of the
+right hand-side. The default value is {\tt epsrsm(ivar)}=$10^{-8}$. This value is set low
 on purpose. When there are enough iterations on the reconstruction of the
 right-hand side of the equation,
 the value may be increased (by default, in case of second-order in time,
-with NSWRSM = 5 or 10, EPSRSM is increased to 1.D-5).\\
+with {\tt nswrsm} = 5 or 10, {\tt epsrsm} is increased to $10^{-5}$).\\
 always useful}
 
 
@@ -2265,92 +2269,91 @@ always useful}
 %================================
 
 These parameters correspond to numeric reference values in the code.
-They can be used but shall not be modified (they are defined as PARAMETER).
+They can be used but shall not be modified (they are defined as \texttt{parameter}).
 
-\motcle{ZERO}{R}{0.D0}{O.D0}{O}{L3}
+\motcle{zero}{r}{0}{0}{O}{L3}
 {Parameter containing the value 0}
 
-\motcle{EPZERO}{R}{1.D-12}{1.D-12}{O}{L3}
+\motcle{epzero}{r}{$10^{-12}$}{$10^{-12}$}{O}{L3}
 {``Small'' real parameter, used for the comparisons of real numbers (absolute
-value of the difference lower than EPZERO)}
+value of the difference lower than {\tt epzero})}
 
-\motcle{PI}{R}{3.141592653589793D0}{3.141592653589793D0}{O}{L3}
-{Parameter containing the value of $\pi$}
+\motcle{pi}{r}{3.141592653589793}{3.141592653589793}{O}{L3}
+{Parameter containing an approximate value of $\pi$}
 
-\motcle{GRAND}{R}{1.D12}{1.D12}{O}{L3}
+\motcle{grand}{r}{$10^{12}$}{$10^{12}$}{O}{L3}
 {``Large'' real parameter, generally used by default as a non physical value for
 the initialisations of variables which have to be modified by the user}
 
-\motcle{RINFIN}{RR}{1.D30}{1.D30}{O}{L3}
-{Real parameter used to represent the ``infinite''}
+\motcle{rinfin}{r}{$10^{30}$}{$10^{30}$}{O}{L3}
+{Real parameter used to represent ``infinity''}
 
 %==================================
 \subsubsection{Physical parameters}
 %==================================
 These parameters correspond to physical reference values in the code.
-They can be used but shall not be modified (they are defined as PARAMETER).
+They can be used but shall not be modified (they are defined as {\tt parameter}).
 
-\motcle{TKELVI}{R}{273.15D0}{273.15D0}{O}{L3}
+\motcle{tkelvi}{r}{273.15}{273.15}{O}{L3}
 {Temperature in Kelvin correponding to 0 degrees Celsius.}
 
-\motcle{TKELVN}{R}{-273.15D0}{-273.15D0}{O}{L3}
+\motcle{tkelvn}{r}{-273.15}{-273.15}{O}{L3}
 {Temperature in degrees Celsius corresponding to 0 Kelvin.}
 
-\motcle{RR}{R}{8.31434D0}{8.31434D0}{O}{L3}
+\motcle{rr}{r}{8.31434}{8.31434}{O}{L3}
 {Perfect gas constant in $J/mol/K$}
 
-\motcle{TREFTH}{R}{25.D0 + TKELVI}{25.D0 + TKELVI}{O}{L3}
+\motcle{trefth}{r}{25 + tkelvi}{25 + tkelvi}{O}{L3}
 {Reference temperature for the specific physics, in $K$}
 
-\motcle{PREFTH}{R}{1.01325D5}{1.01325D5}{O}{L3}
+\motcle{prefth}{r}{101325}{101325}{O}{L3}
 {Reference pressure for the specific physics, in $Pa$}
 
-\motcle{VOLMOL}{R}{22.41D-3}{22.41D-3}{O}{L3}
+\motcle{volmol}{r}{$22.41.10^{-3}$}{$22.41.10^{-3}$}{O}{L3}
 {Molar volume under normal pressure and temperature conditions (1 atmosphere,
 0\degresC) in $m^{-3}$}
 
-\motcle{STEPHN}{R}{5.6703D-8}{5.6703D-8}{O}{L3}
+\motcle{stephn}{r}{$5.6703.10^{-8}$}{$5.6703.10^{-8}$}{O}{L3}
 {Stephan constant for the radiative module $\sigma$ in $W.m^{-2}.K^{-4}$}
 
-\motcle{PERMVI}{R}{1.2566D-6}{1.2566D-6}{O}{L3}
+\motcle{permvi}{r}{$1.2566.10^{-6}$}{$1.2566.10^{-6}$}{O}{L3}
 {Vacuum magnetic permeability $\mu_0$ (=$4\pi.10^{-7}$) in $kg.m.A^{-2}.s^{-2}$}
 
-\motcle{EPSZER}{R}{8.854D-12}{8.854D-12}{O}{L3}
+\motcle{epszer}{r}{$8.854.10^{-12}$}{$8.854.10^{-12}$}{O}{L3}
 {Vacuum permittivity $\varepsilon_0$ in $F.m^{-1}$}
 
 
-
 %==================================
 \subsubsection{Physical variables}
 %==================================
 
-\motcleb{GX,GY,GZ}{R}{3 real numbers}{0.D0,0.D0,0.D0}{O}{L1}
+\motcleb{gx,gy,gz}{r}{3 real numbers}{0,0,0}{O}{L1}
 {gravity components\\
 always useful }
 
-\motcleb{IROVAR}{IA}{0 or 1}{\tt -1}{C}{L1}
-{for each phase IPHAS, IROVAR(IPHAS)=0 indicates that the density is
-constant. Its value is the reference density RO0(IPHAS).\\
-IROVAR(IPHAS)=1 indicates that the density is variable: its variation
+\motcleb{irovar}{ia}{0 or 1}{\tt -1}{C}{L1}
+{for each phase {\tt iphas}, {\tt irovar(iphas)}=0 indicates that the density is
+constant. Its value is the reference density {\tt ro0(iphas)}.\\
+{\tt irovar(iphas)}=1 indicates that the density is variable: its variation
 law must be given in the user subroutine \texttt{usphyv}\\
 negative value: not initialised\\
 always useful}
 
-\motcleb{IVIVAR}{IA}{0 or 1}{\tt -1}{C}{L1}
-{for each phase IPHAS, IVIVAR(IPHAS)=0 indicates that the molecular
+\motcleb{ivivar}{ia}{0 or 1}{\tt -1}{C}{L1}
+{for each phase {\tt iphas}, {\tt ivivar(iphas)}=0 indicates that the molecular
 dynamic viscosity is constant. Its value is the reference molecular
-dynamic viscosity VISCL0(IPHAS).\\
-IVIVAR(IPHAS)=1 indicates that the molecular dynamic viscosity is
+dynamic viscosity {\tt viscl0(iphas)}.\\
+{\tt ivivar(iphas)}=1 indicates that the molecular dynamic viscosity is
 variable: its variation law must be given in the user subroutine
 \texttt{usphyv}\\
 negative value: not initialised\\
 always useful}
 
-\motcleb{RO0}{RA}{real number $\geqslant$ 0}{\tt -GRAND*10}{C}{L1}
-{for each phase IPHAS, RO0(IPHAS) is the reference density\\
+\motcleb{ro0}{ra}{real number $\geqslant$ 0}{\tt -grand*10}{C}{L1}
+{for each phase {\tt iphas}, {\tt ro0(iphas)} is the reference density\\
 negative value: not initialised\\
 its value is not used in gas or coal combustion modeling (it
-will be calculated following the perfect gas law, with P0 and T0). With the
+will be calculated following the perfect gas law, with $P0$ and $T0$). With the
 compressible module, it is also not used by the code, but it may be (and often
 is) referenced by the user in user subroutines; it is therefore better to
 specify its value.\\
@@ -2362,259 +2365,260 @@ use the total pressure $P$ when solving the Navier-Stokes equation, but a
 reduced pressure \\
 $P^*=P-\rho_0\vect{g}.(\vect{x}-\vect{x}_0)+P^*_0-P_0$\\
 where
-$\vect{x_0}$ is a reference point (see XYZP0) and $P^*_0$ and $P_0$ are
-reference values (see PRED0 and P0). Hence, the term
+$\vect{x_0}$ is a reference point (see {\tt xyzp0}) and $P^*_0$ and $P_0$ are
+reference values (see {\tt pred0} and {\tt p0}). Hence, the term
 $-\grad{P}+\rho\vect{g}$ in the equation is treated as
-$-\grad{P^*}+(\rho-\rho_0)\vect{g}$. The closer RO0 is to the value of $\rho$,
+$-\grad{P^*}+(\rho-\rho_0)\vect{g}$. The closer {\tt ro0} is to the value of $\rho$,
 the more $P^*$ will tend to represent only the dynamic part of the pressure and
-the faster and more precise its solution will be. Whatever the value of RO0,
+the faster and more precise its solution will be. Whatever the value of {\tt ro0},
 both $P$ and $P^*$ appear in the listing and the post-processing outputs.\\
 with the compressible module, the calculation is made directly on the total
 pressure}
 
-\motcleb{VISCL0}{RA}{real number $>$ 0}{\tt -GRAND*00}{C}{L1}
-{for each phase IPHAS,  VISCL0(IPHAS) is the reference molecular dynamic
+\motcleb{viscl0}{ra}{real number $>$ 0}{\tt -grand*10}{C}{L1}
+{for each phase {\tt iphas},  {\tt viscl0(iphas)} is the reference molecular dynamic
 viscosity\\
 negative value: not initialised\\
 always useful, it is the used value unless the user specifies the
 viscosity in the subroutine \texttt{usphyv}}
 
-\motcleb{SRROM}{R}{$0 \leqslant \text{r\'eel} < 1$}{-GRAND ou 0}{C or O}{L1}
-{With gas combustion, pulversied coal or the electric module, SRROM
+\motcleb{srrom}{r}{$0 \leqslant \text{r\'eel} < 1$}{\tt -grand or 0}{c or O}{L1}
+{With gas combustion, pulversied coal or the electric module, {\tt srrom}
  is the sub-relaxation coefficient for the density, following the formula:\\
-$\rho^{n+1}$\,=\,SRROM\,$\rho^n$+(1-SRROM)\,$\rho^{n+1}$\\
+$\rho^{n+1}$\,=\,srrom\,$\rho^n$+(1-srrom)\,$\rho^{n+1}$\\
 hence, with a zero value, there is no sub-relaxation.
-With combustion and pulversied coal, SRROM is initialised to -GRAND
+With combustion and pulversied coal, {\tt srrom} is initialised to {\tt -grand}
 and the user must specify a proper value through the Interface or the
 initialisation subroutines (\texttt{usd3p1},
  \texttt{usebu1}, \texttt{uslwc1}, \texttt{uscpi1} or
-\texttt{uscpl1}).With the electric module, SRROM is initialised in to 0
+\texttt{uscpl1}).With the electric module, {\tt srrom} is initialised in to 0
 and may be modified by the user in \texttt{useli1}.\\
-With gas combustion, pulverised coal or electric arc, SSROM is
+With gas combustion, pulverised coal or electric arc, {\tt ssrom} is
 automatically used after the second time-step. With Joule effect,
 the user decides whether or not it will be used in \texttt{uselph}
 from the coding law giving the density.}\\
 always useful with gas combustion, pulversized coal or the electric module.
 
-\motcleb{P0}{RA}{real number}{1.013D5}{O}{L1}
-{for each phase IPHAS, P0(IPHAS) is the reference pressure for the total
+\motcleb{p0}{ra}{real number}{$1.013e-5$}{O}{L1}
+{for each phase {\tt iphas}, {\tt p0(iphas)} is the reference pressure for the total
 pressure\\
 except with the compressible module, the total pressure $P$ is evaluated
 from the reduced pressure $P^*$ so that $P$
-is equal to P0 at the reference position $\vect{x}_0$ (given by XYZP0)\\
+is equal to {\tt p0} at the reference position $\vect{x}_0$ (given by {\tt xyzp0})\\
 with the compressible module, the total pressure is solved directly\\
 always useful}
 
-\motcle{PRED0}{RA}{real number}{0.D0}{O}{L3}
-{for each phase IPHAS, PRED0(IPHAS) is the reference value for the reduced
-pressure $P^*$ (see RO0)\\
+\motcle{pred0}{ra}{real number}{0}{O}{L3}
+{for each phase {\tt iphas}, {\tt pred0(iphas)} is the reference value for the reduced
+pressure $P^*$ (see {\tt ro0})\\
 it is especially used to initialise the reduced pressure and as a reference
 value for the outlet boundary conditions\\
-for an optimised precision in the resolution of $P^*$, it is wiser to keep PRED0
+for an optimised precision in the resolution of $P^*$, it is wiser to keep {\tt pred0}
 to 0\\
 with the compressible module, the ``pressure'' variable appearing in the
 equations directly represents the total pressure. It is therefore initialised
-to P0 and not PRED0 (see RO0)\\
+to {\tt p0} and not {\tt pred0} (see {\tt ro0})\\
 always useful, except with the compressible module}
 
-\motcleb{XYZP0}{RA}{3 real numbers}{0.D0,0.D0,0.D0}{O}{L1}
-{for each phase IPHAS, XYZP0(II,IPHAS) is the II coordinate
+\motcleb{xyzp0}{ra}{3 real numbers}{0,0,0}{O}{L1}
+{for each phase {\tt iphas}, {\tt xyzp0(ii,iphas)} is the {\tt ii} coordinate
 (1$\leqslant$II$\leqslant$3) of the reference point $\vect{x}_0$ for the
 total pressure\\
-when there are no Dirichlet conditions for the pressure (closed domain), XYZP0
+when there are no Dirichlet conditions for the pressure (closed domain), {\tt xyzp0}
 does not need to be specified (unless the total pressure has a clear physical
 meaning in the configuration treated)\\
 when Dirichlet conditions on the pressure are specified but only through stantard
 outlet conditions (as it is in most configurations),
-XYZP0 does not need to be specified by the user, since it will be set to the
+{\tt xyzp0} does not need to be specified by the user, since it will be set to the
 coordinates of the reference outlet face ({\em i.e.} the code will automatically
 select a
-reference outlet boundary face and set XYZP0 so that $P$ equals P0 at this
-face). Nontheless, if XYZP0 is pecified by the user, the calculation will remain
+reference outlet boundary face and set {\tt xyzp0} so that $P$ equals {\tt p0} at this
+face). Nontheless, if {\tt xyzp0} is pecified by the user, the calculation will remain
 correct\\
 when direct Dirichlet conditions are specified by the user (specific value set
 on specific boundary faces), it is better to specify the corresponding reference
-point ({\em i.e.} specifiy where the total pressure is P0). This way, the
-boundary conditions for the reduced pressure will be close to PRED0, ensuring an
-optimal precision in the resolution. If XYZP0 is not specified, the reduced
+point ({\em i.e.} specifiy where the total pressure is {\tt p0}). This way, the
+boundary conditions for the reduced pressure will be close to {\tt pred0}, ensuring an
+optimal precision in the resolution. If {\tt xyzp0} is not specified, the reduced
 pressure will be shifted, but the calculations will remain correct.\\
 with the compressible module, the ``pressure'' variable appearing in the
-equations directly represents the total pressure. XYZP0 is therefore not used.\\
+equations directly represents the total pressure. {\tt xyzp0} is therefore not used.\\
 always useful, except with the compressible module}
 
-\motcleb{T0}{RA}{real number}{0.D0}{O}{L1}
-{for each phase IPHAS, T0(IPHAS) is the reference temperature \\
+\motcleb{t0}{ra}{real number}{0}{O}{L1}
+{for each phase {\tt iphas}, {\tt t0(iphas)} is the reference temperature \\
 useful for the specific physics gas or coal combustion (initialisation
 of the density), for the electricity modules to initialise the domain
 temperature and for the comperssible module (initialisations). It must be given
 in Kelvin.}
 
-\motcleb{CP0}{RA}{real number $>$ 0}{\tt -GRAND*10}{O}{L1}
-{for each phase IPHAS, CP0(IPHAS) is the reference specific heat\\
-useful if there is 1$\leqslant$N$\leqslant$NSCAUS\footnote{none of the scalars
-from the specific physics is a temperature} so that ISCSTH(N)=1
+\motcleb{cp0}{ra}{real number $>$ 0}{\tt -grand*10}{O}{L1}
+{for each phase {\tt iphas}, {\tt cp0(iphas)} is the reference specific heat\\
+useful if there is 1$\leqslant$n$\leqslant$nscaus\footnote{none of the scalars
+from the specific physics is a temperature} so that {\tt iscsth(n)}=1
 (there is a scalar ``temperature''), unless the user specifies the
 specific heat in the user subroutine \texttt{usphyv}\footnote{when using the
-Graphical Interface, CP0 is also used to calculate the diffusivity of the
+Graphical Interface, {\tt cp0} is also used to calculate the diffusivity of the
 thermal scalars, based on their conductivity; it is therefore needed, unless the
-diffusivity is also specified in \texttt{usphyv}} (ICP(IPHAS) $>$ 0)\\
-with the compressible module or coal combustion, CP0 is also needed even when
+diffusivity is also specified in \texttt{usphyv}} ({\tt icp(iphas)} $>$ 0)\\
+with the compressible module or coal combustion, {\tt cp0} is also needed even when
 there is no user scalar}
 
-\motcleb{ICP}{IA}{0 or 1}{0}{O}{L1}
-{for each phase IPHAS, indicates if the specific heat $C_p$ is variable
-(ICP(IPHAS)=1) or not (0)\\
-When gas or coal combustion is activated, ICP is automatically set to 0
+\motcleb{icp}{ia}{0 or 1}{0}{O}{L1}
+{for each phase {\tt iphas}, indicates if the specific heat $C_p$ is variable
+({\tt icp(iphas)}=1) or not (0)\\
+When gas or coal combustion is activated, {\tt icp} is automatically set to 0
 (constant $C_p$). With the electric module, it is automatically set to 1.
 The user is not allowed to modify these default choices.\\
-When ICP(IPHAS)=1 is specified, the code automatically modifies this value to
-make ICP(IPHAS) designate the effective index-number of the property
-``specific heat of the phase IPHAS''. For each cell IEL, the value of
+When {\tt icp(iphas)}=1 is specified, the code automatically modifies this value to
+make {\tt icp(iphas)} designate the effective index-number of the property
+``specific heat of the phase {\tt iphas}''. For each cell {\tt iel}, the value of
 $C_p$ is then specified by the user in the appropriate subroutine
 (\texttt{usphyv} for the standard physics) and stored in the array\\
-PROPCE(IEL,IPPROC(ICP(IPHAS)))
+{\tt propce(iel,ipproc(icp(iphas)))}
 ({\em see p.\pageref{prg_propvar} for specific conditions of use})\\
-useful if there is 1$\leqslant$N$\leqslant$NSCAL so that ISCSTH(N)=1
+useful if there is 1$\leqslant$N$\leqslant${\tt nscal} so that {\tt iscsth(n)}=1
 (there is a scalar ``temperature'') or with the compressible module for non
 perfect gases}
 
-\motcleb{VISLS0}{RA}{real number $>$ 0}{\tt -GRAND*10}{C}{L1}
-{VISLS0(J): reference molecular diffusivity related to the scalar J
+\motcleb{visls0}{ra}{real number $>$ 0}{\tt -grand*10}{C}{L1}
+{{\tt visls0(j)}: reference molecular diffusivity related to the scalar J
 ($kg.m^{-1}.s^{-1}$)\\
 negative value: not initialised\\
-useful if 1$\leqslant$J$\leqslant$ NSCAL, unless the user specifies the
+useful if 1$\leqslant$J$\leqslant$ {\tt nscal}, unless the user specifies the
 molecular diffusivity in the appropriate user subroutine (\texttt{usphyv} for
-the standard physics) (IVISLS(ISCAL) $>$ 0)\\
-{\em Warning : VISLS0 corresponds to the diffusivity. For the temperature, it is
+the standard physics) ({\tt ivisls(iscal)} $>$ 0)\\
+{\em Warning: {\tt visls0} corresponds to the diffusivity. For the temperature, it is
 therefore defined as $\lambda/C_p$ where $\lambda$ and $C_p$ are the
 conductivity and specific heat. When using the Graphical Inteface, $\lambda$ and
-$C_p$ are specified separately, and VISLS0 is calculated automatically\\
-With the compressible module, VISLS0 (given in \texttt{uscfxi2}) is directly the
+$C_p$ are specified separately, and {\tt visls0} is calculated automatically\\
+With the compressible module, {\tt visls0} (given in \texttt{uscfxi2}) is directly the
 thermal conductivity $W.m^{-1}.K^{-1}$\\
 With gas or coal combustion, the molecular diffusivity of the enthalpy
-($kg.m^{-1}.s^{-1}$) must be specified by the user in the variable DIFTL0 (\texttt{usebu1},
-\texttt{usd3p1}, \texttt{uslwc1}, \texttt{uscpi1}, \texttt{uscpl1})\\
+($kg.m^{-1}.s^{-1}$) must be specified by the user in the variable {\tt diftl0}
+(\texttt{usebu1}, \texttt{usd3p1}, \texttt{uslwc1}, \texttt{uscpi1}, \texttt{uscpl1})\\
 With the electric module, for the Joule effect, the diffusivity is specified by
 the user in \texttt{uselph} (even if it is constant). For the electric arc, it
 is calculated from the thermochemical data file}}
 
-\motcleb{IVISLS}{IA}{positive or zero integer}{0}{O}{L1}
-{indicates if the viscosity related to the scalar ISCAL is variable
-(IVISLS(ISCAL)=1) or not (0). The user must specify IVISLS only for the
-user scalars (ISCAL $\leqslant$ NSCAUS).\\
-When IVISLS(ISCAL)=1 is specified, the code automatically modifies this value to
-make IVISLS(ISCAL) designate the effective index-number of the property
-``diffusivity of the scalar ISCAL''. For each cell IEL, the value
+\motcleb{ivisls}{ia}{positive or zero integer}{0}{O}{L1}
+{indicates if the viscosity related to the scalar {\tt iscal} is variable
+({\tt ivisls(iscal)}=1) or not (0). The user must specify {\tt ivisls} only for the
+user scalars ({\tt iscal} $\leqslant$ {\tt nscaus}).\\
+When {\tt ivisls(iscal)}=1 is specified, the code automatically modifies this value to
+make {\tt ivisls(iscal)} designate the effective index-number of the property
+``diffusivity of the scalar {\tt iscal}''. For each cell {\tt iel}, the value
 is then specified by the user in the appropriate subroutine
 (\texttt{usphyv} for the standard physics) and stored in the array\\
-PROPCE(IEL,IPPROC(IVISLS(IPHAS)))
+{\tt propce(iel,ipproc(ivisls(iphas)))}
 ({\em see p.\pageref{prg_propvar} for specific conditions of use})\\
-useful if 1$\leqslant$N$\leqslant$NSCAL}
+useful if 1$\leqslant${\tt n}$\leqslant${\tt nscal}}
 
 
-\motcleb{DIFTL0}{R}{real number $>$ 0}{\tt -GRAND}{C}{L1}
+\motcleb{diftl0}{r}{real number $>$ 0}{\tt -grand}{C}{L1}
 {molecular diffusivity for the enthalpy ($kg.m^{-1}.s^{-1}$) for gas or coal
-combustion (the code then automatically sets VISLS0 to DIFTL0 for the scalar
+combustion (the code then automatically sets {\tt visls0} to {\tt diftl0} for the scalar
 representing the enthalpy)\\
 always useflu for gas or coal combustion}
 
-\motcleb{SCAMIN}{RA}{real number}{\tt GRAND}{O}{L1}
-{SCAMIN(ISCAL) is the lower limit value for the scalar ISCAL. At each time step,
-in every cell where the calculated value for RTP(IEL,ISCA(ISCAL)) is lower than
-\mbox{SCAMIN(ISCAL)}, RTP(IEL,ISCA(ISCAL)) will be reset to
-\mbox{SCAMIN(ISCAL)}\\
-there is no limitation if SCAMIN(ISCAL)$>$SCAMAX(ISCAL)\\
-SCAMIN shall not be specified for non-user scalars (specific physics) or for
+\motcleb{scamin}{ra}{real number}{\tt grand}{O}{L1}
+{{\tt scamin(iscal)} is the lower limit value for the scalar {\tt iscal}. At each time step,
+in every cell where the calculated value for {\tt rtp(iel,isca(iscal))} is lower than
+\mbox{\tt scamin(iscal)}, {\tt rtp(iel,isca(iscal))} will be reset to
+\mbox{\tt scamin(iscal)}\\
+there is no limitation if {\tt scamin(iscal)}$>${\tt scamax(iscal)}\\
+{\tt scamin} shall not be specified for non-user scalars (specific physics) or for
 scalar variances\\
-useful if and only if 1$\leqslant$ISCAL$\leqslant$ NSCAUS}
-
-\motcleb{SCAMAX}{RA}{real number}{\tt -GRAND}{O}{L1}
-{SCAMAX(ISCAL) is the higher limit value for the scalar ISCAL. At each time step,
-in every cell where the calculated value for RTP(IEL,ISCA(ISCAL)) is higher than
-\mbox{SCAMAX(ISCAL)}, RTP(IEL,ISCA(ISCAL)) will be reset to
-\mbox{SCAMAX(ISCAL)}\\
-there is no limitation if SCAMIN(ISCAL)$>$SCAMAX(ISCAL)\\
-SCAMAX shall not be specified for non-user scalars (specific physics) or for
-scalar variances\\
-useful if and only if 1$\leqslant$ISCAL$\leqslant$ NSCAUS}
-
-\motcle{SIGMAS}{RA}{real number $>$ 0}{1D0}{O}{L2}
-{SIGMAS(ISCAL): turbulent Prandtl (or Schmidt) number for the scalar ISCAL\\
-useful if and only if  1$\leqslant$ISCAL$\leqslant$ NSCAUS}
-
-\motcle{RVARFL}{RA}{real number $>$ 0}{0.8D0}{O}{L2}
-{when ISCAVR(ISCAL)$>$0, RVARFL(ISCAL) is the coefficient $R_f$ in the
-dissipation term $\displaystyle -\frac{\rho}{R_f}\frac{\varepsilon}{k}$
-of the equation concerning the scalar ISCAL,
+useful if and only if 1$\leqslant${\tt iscal}$\leqslant$ {\tt nscaus}}
+
+\motcleb{scamax}{ra}{real number}{\tt -grand}{O}{L1}
+{{\tt scamax(iscal)} is the higher limit value for the scalar {\tt iscal}. At each time step,
+in every cell where the calculated value for {\tt rtp(iel,isca(iscal))} is higher than
+\mbox{\tt scamax(iscal)}, {\tt rtp(iel,isca(iscal))} will be reset to
+\mbox{\tt scamax(iscal)}\\
+there is no limitation if {\tt scamin(iscal)}$>${\tt scamax(iscal)}\\
+{\tt scamax} shall not be specified for non-user scalars (specific physics)
+ or for scalar variances\\
+useful if and only if 1$\leqslant${\tt iscal}$\leqslant$ {\tt nscaus}}
+
+\motcle{sigmas}{ra}{real number $>$ 0}{1}{O}{L2}
+{{\tt sigmas(iscal)}: turbulent Prandtl (or Schmidt) number for the scalar
+ {\tt iscal}\\
+useful if and only if  1$\leqslant${\tt iscal}$\leqslant$ {\tt nscaus}}
+
+\motcle{rvarfl}{ra}{real number $>$ 0}{0.8}{O}{L2}
+{when {\tt iscavr(iscal)}$>$0, {\tt rvarfl(iscal)} is the coefficient $R_f$ in
+the dissipation term $\displaystyle -\frac{\rho}{R_f}\frac{\varepsilon}{k}$
+of the equation concerning the scalar {\tt iscal},
 which represents the root mean square of the
-fluctuations of the scalar ISCAVR(ISCAL)\\
-useful if and only if there is 1$\leqslant$ISCAL$\leqslant$ NSCAL such as
- ISCAVR(ISCAL)$>$0}
+fluctuations of the scalar {\tt iscavr(iscal)}\\
+useful if and only if there is 1$\leqslant${\tt iscal}$\leqslant$ {\tt nscal} such as
+ {\tt iscavr(iscal)}$>$0}
 
 
 %==================================
 \subsubsection{Modeling parameters}
 %==================================
 
-\motcleb{XLOMLG}{RA}{real number $>$ 0}{\tt -GRAND*10}{O}{L1}
-{for each phase IPHAS, XLOMLG(IPHAS) is the mixing length\\
-useful if and only if there is a phase IPHAS so that ITURB(IPHAS)= 10
+\motcleb{xlomlg}{ra}{real number $>$ 0}{\tt -grand*10}{O}{L1}
+{for each phase {\tt iphas}, {\tt xlomlg(iphas)} is the mixing length\\
+useful if and only if there is a phase {\tt iphas} so that {\tt iturb(iphas)}= 10
 (mixing length)}
 
-\motcle{ALMAX}{RA}{\texttt{-GRAND}, real number $>$ 0}{\tt -GRAND*10}{O}{L2}
-{for each phase IPHAS, ALMAX(IPHAS) is a characteristic macroscopic
+\motcle{almax}{ra}{\texttt{-grand}, real number $>$ 0}{\tt -grand*10}{O}{L2}
+{for each phase {\tt iphas}, {\tt almax(iphas)} is a characteristic macroscopic
 length of the domain, used for the initialisation of the turbulence and
-the potential clipping (with ICLKEP(IPHAS)=1)\\
+the potential clipping (with {\tt iclkep(iphas)}=1)\\
 negative value: not initialised (the code then uses the cubic root of
 the domain volume)\\
-useful if and only if there is a phase IPHAS such as
-TURB(IPHAS)= 20, 21, 30, 31, 50 or 60 (RANS models)}
+useful if and only if there is a phase {\tt iphas} such as
+{\tt turb(iphas)}= 20, 21, 30, 31, 50 or 60 (RANS models)}
 
-\motcleb{UREF}{RA}{real number $>$ 0}{\tt -GRAND*10}{C}{L1}
-{for each phase IPHAS, UREF(IPHAS) is the characteristic flow velocity,
+\motcleb{uref}{ra}{real number $>$ 0}{\tt -grand*10}{C}{L1}
+{for each phase {\tt iphas}, {\tt uref(iphas)} is the characteristic flow velocity,
 used for the initialisation of the turbulence\\
 negative value: not initialised\\
-useful if and only if there is a phase IPHAS such as
-ITURB(IPHAS)= 20, 21, 30, 31, 50 ou 60 (RANS model)
+useful if and only if there is a phase {\tt iphas} such that
+{\tt iturb(iphas)}= 20, 21, 30, 31, 50 or 60 (RANS model)
 and the turbulence is not initialised somewhere
 else (restart file or subroutine \texttt{usiniv})}
 
 
 \minititre{Basic constants of the $k-\varepsilon$ and the other RANS models}
 
-\motcle{XKAPPA}{R}{real number $>$ 0}{0.42D0}{O}{L3}
+\motcle{xkappa}{r}{real number $>$ 0}{0.42}{O}{L3}
 {K\'arm\'an constant\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)$\geqslant$10
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}$\geqslant$10
 (mixing length, $k-\varepsilon$, $R_{ij}-\varepsilon$, LES, v2f or $k-\omega$)}
 
-\motcle{CSTLOG}{R}{real number $>$ 0}{5.2D0}{O}{L3}
+\motcle{cstlog}{r}{real number $>$ 0}{5.2}{O}{L3}
 {constant of the logarithmic wall function\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)$\geqslant$10
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}$\geqslant$10
 (mixing length, $k-\varepsilon$, $R_{ij}-\varepsilon$, LES, v2f or $k-\omega$)}
 
-\motcle{CMU}{R}{real number $>$ 0}{0.09D0}{O}{L3}
+\motcle{cmu}{r}{real number $>$ 0}{0.09}{O}{L3}
 {constant $C_\mu$ for all the RANS turbulence models except for the v2f model
-(see CV2FMU\index{CV2FMU} for the value of $C_\mu$ in case of v2f modeling)\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)= 20,
+(see {\tt cv2fmu\index{cv2fmu}} for the value of $C_\mu$ in case of v2f modeling)\\
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}= 20,
 21, 30, 31 or 60 ($k-\varepsilon$, $R_{ij}-\varepsilon$ or $k-\omega$)}
 
-\motcle{CE1}{R}{real number $>$ 0}{1.44D0}{O}{L3}
+\motcle{ce1}{r}{real number $>$ 0}{1.44}{O}{L3}
 {constant $C_{\varepsilon 1}$ for all the RANS turbulence models except
 for the v2f and the $k-\omega$ models\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)= 20,
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}= 20,
 21, 30 or 31 ($k-\varepsilon$ or $R_{ij}-\varepsilon$)}
 
-\motcle{CE2}{R}{real number $>$ 0}{1.92D0}{O}{L3}
+\motcle{ce2}{r}{real number $>$ 0}{1.92}{O}{L3}
 {constant $C_{\varepsilon 2}$ for the $k-\varepsilon$ and
 $R_{ij}-\varepsilon$ LRR models\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)= 20, 21 or 30
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}= 20, 21 or 30
 ($k-\varepsilon$ or $R_{ij}-\varepsilon$ LRR)}
 
-%\motcle{CE3}{R}{real number $>$ 0}{1.D0}{O}{L3}
+%\motcle{ce3}{r}{real number $>$ 0}{1}{O}{L3}
 %{constante $C_{\varepsilon 3}$\\
 %ne sert pas dans la version consid\'er\'ee}
 
-\motcle{CE4}{R}{real number $>$ 0}{1.2D0}{O}{L3}
+\motcle{ce4}{r}{real number $>$ 0}{1.2}{O}{L3}
 {constant $C_{\varepsilon 4}$ for the interfacial term (Lagrangian module) in
 case of two-way coupling\\
 useful in case of Lagrangian modeling, in $k-\varepsilon$ and $R_{ij}-\varepsilon$
@@ -2622,225 +2626,227 @@ with two-way coupling}
 %c'est aussi implante en k-omega mais en ``imitant''le k-eps et sans aucune verif
 % ... et d'ailleurs ca ne marche pas !!
 
-\motcle{SIGMAK}{R}{real number $>$ 0}{1.00D0}{O}{L3}
+\motcle{sigmak}{r}{real number $>$ 0}{1.0}{O}{L3}
 {Prandtl number for $k$ with $k-\varepsilon$ and v2f models\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=20, 21 or 50
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=20, 21 or 50
 ($k-\varepsilon$ or v2f)}
 
-\motcle{SIGMAE}{R}{real number $>$ 0}{1.30D0}{O}{L3}
+\motcle{sigmae}{r}{real number $>$ 0}{1.3}{O}{L3}
 {Prandtl number for $\varepsilon$\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)= 20,
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}= 20,
 21, 30, 31 or 50 ($k-\varepsilon$, $R_{ij}-\varepsilon$ or v2f)}
 
-\minititre{Constants specific to the $R_{ij}-\varepsilon$ LRR model (ITURB=30)}
+\minititre{Constants specific to the $R_{ij}-\varepsilon$ LRR model ({\tt iturb}=30)}
 
-\motcle{CRIJ1}{R}{real number $>$ 0}{1.8D0}{O}{L3}
+\motcle{crij1}{r}{real number $>$ 0}{1.8}{O}{L3}
 {constant $C_1$ for the $R_{ij}-\varepsilon$ LRR model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=30
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=30
 ($R_{ij}-\varepsilon$ LRR)}
 
-\motcle{CRIJ2}{R}{real number $>$ 0}{0.6D0}{O}{L3}
+\motcle{crij2}{r}{real number $>$ 0}{0.6}{O}{L3}
 {constant $C_2$ for the $R_{ij}-\varepsilon$ LRR model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=30
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=30
 ($R_{ij}-\varepsilon$ LRR)}
 
-\motcle{CRIJ3}{R}{real number $>$ 0}{0.55D0}{O}{L3}
+\motcle{crij3}{r}{real number $>$ 0}{0.55}{O}{L3}
 {constant $C_3$ for the $R_{ij}-\varepsilon$ LRR model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=30
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=30
 ($R_{ij}-\varepsilon$ LRR)}
 
-\motcle{CRIJEP}{R}{real number $>$ 0}{0.18D0}{O}{L3}
+\motcle{crijep}{r}{real number $>$ 0}{0.18}{O}{L3}
 {constant $C_\varepsilon$ for the $R_{ij}-\varepsilon$ LRR model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=30
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=30
 ($R_{ij}-\varepsilon$ LRR)}
 
-\motcle{CSRIJ}{R}{real number $>$ 0}{0.22D0}{O}{L3}
+\motcle{csrij}{r}{real number $>$ 0}{0.22}{O}{L3}
 {constant $C_s$ for the $R_{ij}-\varepsilon$ LRR model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=30
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=30
 ($R_{ij}-\varepsilon$ LRR)}
 
-\motcle{CRIJP1}{R}{real number $>$ 0}{0.5D0}{O}{L3}
+\motcle{crijp1}{r}{real number $>$ 0}{0.5}{O}{L3}
 {constant $C_1^\prime$ for the $R_{ij}-\varepsilon$ LRR model, corresponding to
 the wall echo terms\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=30 and IRIJEC(IPHAS)=1
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=30
+and {\tt irijec(iphas)}=1
 ($R_{ij}-\varepsilon$ LRR)}
 
-\motcle{CRIJP2}{R}{real number $>$ 0}{0.3D0}{O}{L3}
+\motcle{crijp2}{r}{real number $>$ 0}{0.3}{O}{L3}
 {constant $C_2^\prime$ for the $R_{ij}-\varepsilon$ LRR model, corresponding to
 the wall echo terms\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=30 and IRIJEC(IPHAS)=1
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=30 and {\tt irijec(iphas)}=1
 ($R_{ij}-\varepsilon$ LRR)}
 
 \minititre{Constants specific to the $R_{ij}-\varepsilon$ SSG model}
 
-\motcle{CSSGS1}{R}{real number $>$ 0}{1.7D0}{O}{L3}
+\motcle{cssgs1}{r}{real number $>$ 0}{1.7}{O}{L3}
 {constant $C_{s1}$ for the $R_{ij}-\varepsilon$ SSG model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=31
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=31
 ($R_{ij}-\varepsilon$ SSG)}
 
-\motcle{CSSGS2}{R}{real number $>$ 0}{-1.05D0}{O}{L3}
+\motcle{cssgs2}{r}{real number $>$ 0}{-1.05}{O}{L3}
 {constant $C_{s2}$ for the $R_{ij}-\varepsilon$ SSG model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=31
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=31
 ($R_{ij}-\varepsilon$ SSG)}
 
-\motcle{CSSGR1}{R}{real number $>$ 0}{0.9D0}{O}{L3}
+\motcle{cssgr1}{r}{real number $>$ 0}{0.9}{O}{L3}
 {constant $C_{r1}$ for the $R_{ij}-\varepsilon$ SSG model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=31
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=31
 ($R_{ij}-\varepsilon$ SSG)}
 
-\motcle{CSSGR2}{R}{real number $>$ 0}{0.8D0}{O}{L3}
+\motcle{cssgr2}{r}{real number $>$ 0}{0.8}{O}{L3}
 {constant $C_{r2}$ for the $R_{ij}-\varepsilon$ SSG model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=31
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=31
 ($R_{ij}-\varepsilon$ SSG)}
 
-\motcle{CSSGR3}{R}{real number $>$ 0}{0.65D0}{O}{L3}
+\motcle{cssgr3}{r}{real number $>$ 0}{0.65}{O}{L3}
 {constant $C_{r3}$ for the $R_{ij}-\varepsilon$ SSG model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=31
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=31
 ($R_{ij}-\varepsilon$ SSG)}
 
-\motcle{CSSGR4}{R}{real number $>$ 0}{0.625D0}{O}{L3}
+\motcle{cssgr4}{r}{real number $>$ 0}{0.625}{O}{L3}
 {constant $C_{r4}$ for the $R_{ij}-\varepsilon$ SSG model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=31
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=31
 ($R_{ij}-\varepsilon$ SSG)}
 
-\motcle{CSSGR5}{R}{real number $>$ 0}{0.2D0}{O}{L3}
+\motcle{cssgr5}{r}{real number $>$ 0}{0.2}{O}{L3}
 {constant $C_{r1}$ for the $R_{ij}-\varepsilon$ SSG model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=31
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=31
 ($R_{ij}-\varepsilon$ SSG)}
 
-\motcle{CSSGE2}{R}{real number $>$ 0}{1.83D0}{O}{L3}
+\motcle{cssge2}{r}{real number $>$ 0}{1.83}{O}{L3}
 {constant $C_{\varepsilon 2}$ for the $R_{ij}-\varepsilon$ SSG model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=31
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=31
 ($R_{ij}-\varepsilon$ SSG)}
 
 \minititre{Constants specific to the v2f $\varphi$-model}
 
-\motcle{CV2FA1}{R}{real number $>$ 0}{0.05D0}{O}{L3}
+\motcle{cv2fa1}{r}{real number $>$ 0}{0.05}{O}{L3}
 {constant $a_1$ for the v2f $\varphi$-model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=50
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=50
 (v2f $\varphi$-model)}
 
-\motcle{CV2FE2}{R}{real number $>$ 0}{1.85D0}{O}{L3}
+\motcle{cv2fe2}{r}{real number $>$ 0}{1.85}{O}{L3}
 {constant $C_{\varepsilon 2}$ for the v2f $\varphi$-model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=50
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=50
 (v2f $\varphi$-model)}
 
-\motcle{CV2FMU}{R}{real number $>$ 0}{0.22D0}{O}{L3}
+\motcle{cv2fmu}{r}{real number $>$ 0}{0.22}{O}{L3}
 {constant $C_\mu$ for the v2f $\varphi$-model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=50
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=50
 (v2f $\varphi$-model)}
 
-\motcle{CV2FC1}{R}{real number $>$ 0}{1.4D0}{O}{L3}
+\motcle{cv2fc1}{r}{real number $>$ 0}{1.4}{O}{L3}
 {constant $C_1$ for the v2f $\varphi$-model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=50
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=50
 (v2f $\varphi$-model)}
 
-\motcle{CV2FC2}{R}{real number $>$ 0}{0.3D0}{O}{L3}
+\motcle{cv2fc2}{r}{real number $>$ 0}{0.3}{O}{L3}
 {constant $C_2$ for the v2f $\varphi$-model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=50
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=50
 (v2f $\varphi$-model)}
 
-\motcle{CV2FCT}{R}{real number $>$ 0}{6.D0}{O}{L3}
+\motcle{cv2fct}{r}{real number $>$ 0}{6}{O}{L3}
 {constant $C_T$ for the v2f $\varphi$-model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=50
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=50
 (v2f $\varphi$-model)}
 
-\motcle{CV2FCL}{R}{real number $>$ 0}{0.25D0}{O}{L3}
+\motcle{cv2fcl}{r}{real number $>$ 0}{0.25}{O}{L3}
 {constant $C_L$ for the v2f $\varphi$-model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=50
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=50
 (v2f $\varphi$-model)}
 
-\motcle{CV2FET}{R}{real number $>$ 0}{110.D0}{O}{L3}
+\motcle{cv2fet}{r}{real number $>$ 0}{110}{O}{L3}
 {constant $C_\eta$ for the v2f $\varphi$-model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=50
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=50
 (v2f $\varphi$-model)}
 
 \minititre{Constants specific to the $k-\omega$ SST model}
 
-\motcle{CKWSK1}{R}{real number $>$ 0}{1.D0/0.85D0}{O}{L3}
+\motcle{ckwsk1}{r}{real number $>$ 0}{1/0.85}{O}{L3}
 {constant $\sigma_{k1}$ for the $k-\omega$ SST model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=60
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=60
 ($k-\omega$ SST)}
 
-\motcle{CKWSK2}{R}{real number $>$ 0}{2.D0}{O}{L3}
+\motcle{ckwsk2}{r}{real number $>$ 0}{2}{O}{L3}
 {constant $\sigma_{k2}$ for the $k-\omega$ SST model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=60
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=60
 ($k-\omega$ SST)}
 
-\motcle{CKWSW1}{R}{real number $>$ 0}{2.D0}{O}{L3}
+\motcle{ckwsw1}{r}{real number $>$ 0}{2}{O}{L3}
 {constant $\sigma_{\omega 1}$ for the $k-\omega$ SST model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=60
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=60
 ($k-\omega$ SST)}
 
-\motcle{CKWSW2}{R}{real number $>$ 0}{1.D0/0.856D0}{O}{L3}
+\motcle{ckwsw2}{r}{real number $>$ 0}{1/0.856}{O}{L3}
 {constant $\sigma_{\omega 2}$ for the $k-\omega$ SST model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=60
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=60
 ($k-\omega$ SST)}
 
-\motcle{CKWBT1}{R}{real number $>$ 0}{0.075D0}{O}{L3}
+\motcle{ckwbt1}{r}{real number $>$ 0}{0.075}{O}{L3}
 {constant $\beta_1$ for the $k-\omega$ SST model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=60
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=60
 ($k-\omega$ SST)}
 
-\motcle{CKWBT2}{R}{real number $>$ 0}{0.0828D0}{O}{L3}
+\motcle{ckwbt2}{r}{real number $>$ 0}{0.0828}{O}{L3}
 {constant $\beta_2$ for the $k-\omega$ SST model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=60
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=60
 ($k-\omega$ SST)}
 
-\motcle{CKWGM1}{R}{real number $>$ 0}
+\motcle{ckwgm1}{r}{real number $>$ 0}
 {$\frac{\beta_1}{C_\mu}-\frac{\kappa^2}{\sqrt{C_\mu}\sigma_{\omega 1}}$}{O}{L3}
 {constant $\gamma_1$ for the $k-\omega$ SST model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=60
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=60
 ($k-\omega$ SST)\\
 {\em Warning: $\gamma_1$ is calculated before the call to
 \texttt{usini1}. Hence, if $\beta_1$, $C_\mu$, $\kappa$ or $\sigma_{\omega 1}$
 is modified in \texttt{usini1}, CKWGM1 must also be modified in accordance}}
 
-\motcle{CKWGM2}{R}{real number $>$ 0}
+\motcle{ckwgm2}{r}{real number $>$ 0}
 {$\frac{\beta_2}{C_\mu}-\frac{\kappa^2}{\sqrt{C_\mu}\sigma_{\omega 2}}$}{O}{L3}
 {constant $\gamma_2$ for the $k-\omega$ SST model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=60
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=60
 ($k-\omega$ SST)\\
 {\em Warning: $\gamma_2$ is calculated before the call to
 \texttt{usini1}. Hence, if $\beta_2$, $C_\mu$, $\kappa$ or $\sigma_{\omega 2}$
-is modified in \texttt{usini1}, CKWGM2 must also be modified in accordance}}
+is modified in \texttt{usini1}, \texttt{ckwgm2} must also be modified in
+accordance}}
 
-\motcle{CKWA1}{R}{real number $>$ 0}{0.31D0}{O}{L3}
+\motcle{ckwa1}{r}{real number $>$ 0}{0.31}{O}{L3}
 {constant $a_1$ for the $k-\omega$ SST model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=60
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=60
 ($k-\omega$ SST)}
 
-\motcle{CKWC1}{R}{real number $>$ 0}{10.D0}{O}{L3}
+\motcle{ckwc1}{r}{real number $>$ 0}{10}{O}{L3}
 {constant $c_1$ for the $k-\omega$ SST model\\
-useful if and only if there is a phase IPHAS such as ITURB(IPHAS)=60
+useful if and only if there is a phase {\tt iphas} such as {\tt iturb(iphas)}=60
 ($k-\omega$ SST)}
 
 
 %==================================
 \subsection{ALE}
 %==================================
-\motcleb{IALE}{I}{0 or 1}{C}{O}{L1}
+\motcleb{iale}{i}{0 or 1}{C}{O}{L1}
 {activates (=1) or not (=0), activate the ALE module}
 
-\motcleb{NALINF}{I}{0 or positive integer}{C}{0}{L2}
-{The number of under-iterations of initialization of the fluid}
+\motcleb{nalinf}{i}{0 or positive integer}{0}{C}{L2}
+{The number of sub-iterations of initialization of the fluid}
 
-\motcleb{NBSTR}{I}{0 or positive integer}{C}{0}{L1}
-{number of structure}
+\motcleb{nbstr}{i}{0 or positive integer}{0}{C}{L1}
+{number of structures}
 
-\motcleb{ALPNMK}{R}{real}{C}{0.D0}{L3}
+\motcleb{alpnmk}{r}{real}{0}{C}{L3}
 {$alpha$ newmark's method}
 
-\motcleb{BETNMK}{R}{real}{C}{-GRAND}{L3}
+\motcleb{betnmk}{r}{real}{\texttt{-grand}}{C}{L3}
 {$beta$ newmark's method}
 
-\motcleb{GAMNMK}{R}{real}{C}{-GRAND}{L3}
+\motcleb{gamnmk}{r}{real}{\texttt{-grand}}{C}{L3}
 {$gamma$ newmark's method}
 
-\motcleb{NALIMX}{I}{positive integer}{C}{15}{L2}
-{maximum number of iterations of implicitation of the structure displacement }
+\motcleb{nalimx}{i}{positive integer}{15}{C}{L2}
+{maximum number of imlicitation iterations of of the structure displacement}
 
-\motcleb{EPALIM}{R}{positive real}{C}{1.D-5}{L2}
+\motcleb{epalim}{r}{positive real}{$1.10^{-5}$}{C}{L2}
 {Relative precision of implicitation of the structure displacement }
 
 
@@ -2853,11 +2859,11 @@ All the following key words may be modified in the user subroutines
 It is however not recommended to modify those which do not belong to
 level L1.
 
-\motcleb{IRAYON}{IA}{0, 1, 2}{0}{O}{L1}
-{for each phase IPHAS, IRAYON(IPHAS) activates ($>0$) or deactivates
+\motcleb{irayon}{ia}{0, 1, 2}{0}{O}{L1}
+{for each phase {\tt iphas}, {\tt irayon(iphas)} activates ($>0$) or deactivates
 (=0) the radiation module\\
-if a specific physics is activated (in that case, NSCAPP$>$0),
-IRAYON(IPHAS) must be kept to 0 (see IRAYPP)\\
+if a specific physics is activated (in that case, {\tt nscapp}$>$0),
+{\tt irayon(iphas)} must be kept to 0 (see {\tt iraypp})\\
 The different values correspond to the following modelings:\\
 \hspace*{1.3cm} = 1 discrete ordinates
 (standard option for radiation in semi-transparent media)\\
@@ -2866,74 +2872,76 @@ The different values correspond to the following modelings:\\
 may only be applied to media with uniform large optical thickness, such as
 some cases of pulverised coal combustion}}
 
-\motcleb{IRAYPP}{I}{0, 1, 2, 3 or 4}{0}{O}{L1}
+\motcleb{iraypp}{i}{0, 1, 2, 3 or 4}{0}{O}{L1}
 {when a specific physics is activated\footnote{except with the compressible
 module, which is not compatible with radiation}
-(NPHAS=1, compulsory) IRAYPP
+({\tt nphas}=1, compulsory) {\tt iraypp}
 indicates if thermal radiative transfers are calculated ($>0$) or not
 (=0).\\
-The value of IRAYPP is given {\em via} a data file (gas combustion:
+The value of {\tt iraypp} is given {\em via} a data file (gas combustion:
 {\em dp\_C3P}, {\em dp\_C3PSJ}, or {\em dp\_C4P};
 pulverised coal combustion: {\em dp\_FCP}; electric module: {\em dp\_ELE})\\
-IRAYPP allows to choose between the discrete ordinates method and the
-P-1 method (see IRAYON) and to choose the method used to calculate the
+{\tt iraypp} allows to choose between the discrete ordinates method and the
+P-1 method (see {\tt irayon}) and to choose the method used to calculate the
 absorption coefficient. The absorption coefficient may be set by the
-user in the data file (then, \mbox{IMODAK=0}) or calculated using
+user in the data file (then, \mbox{{\tt imodak}=0}) or calculated using
 ``Modak\footnote{for details about the calculation of the absorption
-coefficient, please refer to MODAK A.T., ``Radiation from products
-of combustion''}'' (then, IMODAK=1).
+coefficient, please refer to Modak A.T., ``Radiation from products
+of combustion''}'' (then, {\tt imodak}=1).
 The options are the followings:\\
 \hspace*{1.3cm} = 1 discrete ordinates method with the absorption coefficient
-given by the user in the data file (IMODAK=0)\\
+given by the user in the data file ({\tt imodak}=0)\\
 \hspace*{1.3cm} = 2 discrete ordinates method using Modak for the
-calculation of the absorption coefficient (IMODAK=1)\\
+calculation of the absorption coefficient ({\tt imodak}=1)\\
 \hspace*{1.3cm} = 3 ``P-1'' model  with the absorption coefficient
-given by the user in the data file (IMODAK=0)\\
+given by the user in the data file ({\tt imodak}=0)\\
 \hspace*{1.3cm} = 4 ``P-1'' model using Modak for the
-calculation of the absorption coefficient (IMODAK=1)\\
-For the electric module, IRAYPP is not set directly in the data file, but
-deduced from the type of XKABEL specified in the file (given by IXKABE).
-In that case, IRAYPP can only be equal to 0 (IXKABE=0 or 2) or 1 (IXKABE=1)}
-
-\motcle{IMODAK}{I}{0 or 1}{0}{O}{L3}
-{when gas or coal combustion is activated, IMODAK indicates whether the
+calculation of the absorption coefficient ({\tt imodak}=1)\\
+For the electric module, {\tt iraypp} is not set directly in the data file, but
+deduced from the type of {\tt xkabel} specified in the file
+(given by {\tt ixkabe}). In that case, {\tt iraypp} can only be equal
+to 0 ({\tt ixkabe}=0 or 2) or 1 ({\tt ixkabe}=1)}
+
+\motcle{imodak}{i}{0 or 1}{0}{O}{L3}
+{when gas or coal combustion is activated, {\tt imodak} indicates whether the
 absorption coefficient shall be calculated ``automatically'' (=1) or read from
-the data file (=0) (see IRAYPP)\\
-useful if the radiation module is activated; IMODAK is then automatically set
-from the value of IRAYPP, without intervention of the user}
+the data file (=0) (see {\tt iraypp})\\
+useful if the radiation module is activated; {\tt imodak} is then
+automatically set from the value of IRAYPP, without intervention of the user}
 
-\motcleb{ISUIRD}{I}{0 or 1}{ISUITE}{C}{L1}
+\motcleb{isuird}{i}{0 or 1}{isuite}{C}{L1}
 {indicates whether the radiation variables should be initialised (=0) or read
 from a restart file (=1)\\
 useful if and only if the radiation module is activated (in this case, a
 restart file {\em rayamo} must be available)}
 
-\motcleb{NFREQR}{I}{strictly positive integer}{1}{O}{L1}
+\motcleb{nfreqr}{i}{strictly positive integer}{1}{O}{L1}
 {period of the radiation module\\
-the radiation module is called every NFREQR time steps (more precisely, every
-time NTCABS is a multiple of NFREQR). Also, in order to have proper
-initialisation of the variables, whatever the value of NFREQR, the radiation
-module is called at the first time step of a calculation (restart or not)\\
+the radiation module is called every {\tt nfreqr} time steps (more precisely,
+every time {\tt ntcabs} is a multiple of {\tt nfreqr}). Also, in order to
+have proper initialisation of the variables, whatever the value of {\tt nfreqr},
+the radiation module is called at the first time step of a calculation
+(restart or not)\\
 useful if and only if the radiation module is activated}
 
-\motcleb{NDIREC}{I}{32 ou 128}{32}{O}{L1}
+\motcleb{ndirec}{i}{32 or 128}{32}{O}{L1}
 {number of directions for the angular discretisation of the radiation
-propagation with the DOM model (IRAYON=1)\\
+propagation with the DOM model ({\tt irayon}=1)\\
 no other possible value, because of the way the directions are calculated\\
 the calculation with 32 directions may break the symmetry of
 physically axisymmetric cases (but the cost in CPU time is much lower
  than with 128 directions)\\
 useful if and only if the radiation module is activated with the DOM method}
 
-\motcle{XNP1MX}{R}{real number}{10}{O}{L3}
-{with the P-1 model (IRAYON=2), XNP1MX is the percentage of cells of
+\motcle{xnp1mx}{r}{real number}{10}{O}{L3}
+{with the P-1 model ({\tt irayon}=2), {\tt xnp1mx} is the percentage of cells of
 the calculation domain for which it is acceptable that the optical
 thickness is lower than unity\footnote{more precisely, where $KL$ is lower than
 1, where $K$ is the absorption coefficient of the medium and $L$ is a
 characteristic length of the domain}, although it is not to be desired\\
 useful if and only if the radiation module is activated with the P-1 method}
 
-\motcleb{IDIVER}{I}{0, 1 or 2}{2}{C}{L1}
+\motcleb{idiver}{i}{0, 1 or 2}{2}{C}{L1}
 {indicates the method used to calculate the radiative source term:\\
 \hspace*{1.3cm}= 0: semi-analytic calculation (compulsory with transparent
 media)\\
@@ -2943,7 +2951,7 @@ globally consevative\\
 useful if and only if the radiation module is activated\\
 {\em Note: if the medium is transparent, the choice has no effect on the calculation}}
 
-\motcleb{IIMPAR}{I}{0, 1 or 2}{1}{O}{L1}
+\motcleb{iimpar}{i}{0, 1 or 2}{1}{O}{L1}
 {choice of the display level in the listing concerning the calculation of
 the wall temperatures:\\
 \hspace*{1.3cm}= 0: no display\\
@@ -2951,7 +2959,7 @@ the wall temperatures:\\
 \hspace*{1.3cm}= 2: complete\\
 useful if and only if the radiation module is activated}
 
-\motcleb{IIMLUM}{I}{0, 1 or 2}{1}{O}{L1}
+\motcleb{iimlum}{i}{0, 1 or 2}{1}{O}{L1}
 {choice of the display level in the listing concerning the solution of
 the radiative transfer equation:\\
 \hspace*{1.3cm}= 0: no display\\
@@ -2959,88 +2967,88 @@ the radiative transfer equation:\\
 \hspace*{1.3cm}= 2: complete\\
 useful if and only if the radiation module is activated}
 
-\motcleb{NBRVAP}{CA}{string of less than 80 characters}{name\_IPHAS}{O}{L1}
+\motcleb{nbrvap}{ca}{string of less than 80 characters}{name\_iphas}{O}{L1}
 {name associated for the post-processing to each of the following variables,
 defined at the cell centers ({\it see}
 \cite{Douce02} for more details concerning their definitions):\\
-\hspace*{1.3cm} NBRVAP(ITSRAY,IPHAS): radiative source term ($W/m^3$)\\
-\hspace*{1.3cm} NBRVAP(IQRAYP,IPHAS): radiative flux density vector ($W/m^2$)\\
-\hspace*{1.3cm} NBRVAP( IABSP,IPHAS): absorption part in the source term
+\hspace*{1.3cm} {\tt nbrvap(itsray,iphas)}: radiative source term ($W/m^3$)\\
+\hspace*{1.3cm} {\tt nbrvap(iqrayp,iphas)}: radiative flux density vector ($W/m^2$)\\
+\hspace*{1.3cm} {\tt nbrvap(iabsp,iphas)}: absorption part in the source term
 ($W/m^3$)\\
-\hspace*{1.3cm} NBRVAP( IEMIP,IPHAS): emission part in the source term
+\hspace*{1.3cm} {\tt nbrvap(iemip,iphas)}: emission part in the source term
 ($W/m^3$)\\
-\hspace*{1.3cm} NBRVAP( ICAKP,IPHAS): absorption coefficient of the
+\hspace*{1.3cm} {\tt nbrvap(icakp,iphas)}: absorption coefficient of the
 medium ($m^{-1}$)\\
 the default values are: \\
-\hspace*{1.3cm} NBRVAP(ITSRAY,IPHAS) = Srad\_IPHAS \\
-\hspace*{1.3cm} NBRVAP(IQRAYP,IPHAS) = Qrad\_IPHAS \\
-\hspace*{1.3cm} NBRVAP( IABSP,IPHAS) = Absorp\_IPHAS \\
-\hspace*{1.3cm} NBRVAP( IEMIP,IPHAS) = Emiss\_IPHAS \\
-\hspace*{1.3cm} NBRVAP( ICAKP,IPHAS) = CoefAb\_IPHAS \\
+\hspace*{1.3cm} {\tt nbrvap(itsray,iphas)} = Srad\_iphas \\
+\hspace*{1.3cm} {\tt nbrvap(iqrayp,iphas)} = Qrad\_iphas \\
+\hspace*{1.3cm} {\tt nbrvap(iabsp,iphas)} = Absorp\_iphas \\
+\hspace*{1.3cm} {\tt nbrvap(iemip,iphas)} = Emiss\_iphas \\
+\hspace*{1.3cm} {\tt nbrvap(icakp,iphas)} = CoefAb\_iphas \\
 useful if and only if the radiation module is activated}
 
-\motcleb{IRAYVP}{IA}{-1 or 1}{-1}{O}{L1}
+\motcleb{irayvp}{ia}{-1 or 1}{-1}{O}{L1}
 {activates (=1) or deactivates (=-1) the post-processing for the each of the
 followiing variables defined at the cell centers:\\
-\hspace*{1.3cm} IRAYVP(ITSRAY,IPHAS): radiative source term ($W/m^3$)\\
-\hspace*{1.3cm} IRAYVP(IQRAYP,IPHAS): radiative flux density vector ($W/m^2$)\\
-\hspace*{1.3cm} IRAYVP(IABSP,IPHAS): absorption part in the source term
+\hspace*{1.3cm} {\tt irayvp(itsray,iphas)}: radiative source term ($W/m^3$)\\
+\hspace*{1.3cm} {\tt irayvp(iqrayp,iphas)}: radiative flux density vector ($W/m^2$)\\
+\hspace*{1.3cm} {\tt irayvp(iabsp,iphas)}: absorption part in the source term
 ($W/m^3$)\\
-\hspace*{1.3cm} IRAYVP(IEMIP,IPHAS): emission part in the source term
+\hspace*{1.3cm} {\tt irayvp(iemip,iphas)}: emission part in the source term
 ($W/m^3$)\\
-\hspace*{1.3cm} IRAYVP(ICAKP,IPHAS): absorption coefficient of the
+\hspace*{1.3cm} {\tt irayvp(icakp,iphas)}: absorption coefficient of the
 medium ($m^{-1}$)\\
 useful if and only if the radiation module is activated}
 
-\motcleb{NBRVAF}{CA}{string of less than 80 characters}{name\_IPHAS}{O}{L1}
+\motcleb{nbrvaf}{ca}{string of less than 80 characters}{name\_iphas}{O}{L1}
 {name associated for the post-processing to each of the following variables,
 defined at the boundary faces ({\it see}
 \cite{Douce02} for more details concerning their definitions):\\
-\hspace*{1.3cm} NBRVAF(ITPARP,IPHAS): wall temperature at the boundary
+\hspace*{1.3cm} {\tt nbrvaf(itparp,iphas)}: wall temperature at the boundary
 faces ($K$)\\
-\hspace*{1.3cm} NBRVAF(IQINCP,IPHAS): radiative incident flux density
+\hspace*{1.3cm} {\tt nbrvaf(iqincp,iphas)}: radiative incident flux density
 ($W/m^2$)\\
-\hspace*{1.3cm} NBRVAF(IXLAMP,IPHAS): thermal conductivity of the
+\hspace*{1.3cm} {\tt nbrvaf(ixlamp,iphas)}: thermal conductivity of the
 boundary faces ($W/m/K$)\\
-\hspace*{1.3cm} NBRVAF(IEPAP,IPHAS): wall thickness ($m$)\\
-\hspace*{1.3cm} NBRVAF(IEPSP,IPHAS): wall emissivity \\
-\hspace*{1.3cm} NBRVAF(IFNETP,IPHAS): net radiative flux density ($W/m^2$)\\
-\hspace*{1.3cm} NBRVAF(IFCONP,IPHAS): convective flux density ($W/m^2$)\\
-\hspace*{1.3cm} NBRVAF(IHCONP,IPHAS): convective exchange coefficient
+\hspace*{1.3cm} {\tt nbrvaf(iepap,iphas)}: wall thickness ($m$)\\
+\hspace*{1.3cm} {\tt nbrvaf(iepsp,iphas)}: wall emissivity \\
+\hspace*{1.3cm} {\tt nbrvaf(ifnetp,iphas)}: net radiative flux density ($W/m^2$)\\
+\hspace*{1.3cm} {\tt nbrvaf(ifconp,iphas)}: convective flux density ($W/m^2$)\\
+\hspace*{1.3cm} {\tt nbrvaf(ihconp,iphas)}: convective exchange coefficient
 ($W/m^2/K$)\\
 The default values are: \\
-\hspace*{1.3cm} NBRVAF(ITPARP,IPHAS) = Temp\_paroi\_IPHAS \\
-\hspace*{1.3cm} NBRVAF(IQINCP,IPHAS) = Flux\_incident\_IPHAS \\
-\hspace*{1.3cm} NBRVAF(IXLAMP,IPHAS) = Conductivite\_th\_IPHAS \\
-\hspace*{1.3cm} NBRVAF(IEPAP,IPHAS)  = Epaisseur\_IPHAS \\
-\hspace*{1.3cm} NBRVAF(IEPSP,IPHAS)  = Emissivite\_IPHAS \\
-\hspace*{1.3cm} NBRVAF(IFNETP,IPHAS) = Flux\_net\_IPHAS \\
-\hspace*{1.3cm} NBRVAF(IFCONP,IPHAS) = Flux\_convectif\_IPHAS \\
-\hspace*{1.3cm} NBRVAF(IHCONP,IPHAS) = Coef\_ech\_convectif\_IPHAS \\
+\hspace*{1.3cm} {\tt nbrvaf(itparp)} = Wall\_temp \\
+\hspace*{1.3cm} {\tt nbrvaf(iqincp)} = Incident\_flux \\
+\hspace*{1.3cm} {\tt nbrvaf(ixlamp)} = Th\_conductivity \\
+\hspace*{1.3cm} {\tt nbrvaf(iepap)} = Thickness \\
+\hspace*{1.3cm} {\tt nbrvaf(iepsp)} = Emissivity \\
+\hspace*{1.3cm} {\tt nbrvaf(ifnetp)} = Net\_flux \\
+\hspace*{1.3cm} {\tt nbrvaf(ifconp)} = Convective\_flux \\
+\hspace*{1.3cm} {\tt nbrvaf(ihconp)} = Convective\_exch\_coef \\
 useful if and only if the radiation module is activated}
 
-\motcleb{IRAYVF}{IA}{-1 or 1}{-1}{O}{L1}
+\motcleb{irayvf}{ia}{-1 or 1}{-1}{O}{L1}
 {activates (=1) or deactivates (=-1) the post-processing for each of the
 followiing variables defined at the boundary faces:\\
-\hspace*{1.3cm} IRAYVF(ITPARP,IPHAS): wall temperature at the boundary
+\hspace*{1.3cm} {\tt irayvf(itparp)}: wall temperature at the boundary
 faces ($K$)\\
-\hspace*{1.3cm} IRAYVF(IQINCP,IPHAS): radiative incident flux density
+\hspace*{1.3cm} {\tt irayvf(iqincp)}: radiative incident flux density
 ($W/m^2$)\\
-\hspace*{1.3cm} IRAYVF(IXLAMP,IPHAS): thermal conductivity of the
+\hspace*{1.3cm} {\tt irayvf(ixlamp)}: thermal conductivity of the
 boundary faces ($W/m/K$)\\
-\hspace*{1.3cm} IRAYVF( IEPAP,IPHAS): wall thickness ($m$)\\
-\hspace*{1.3cm} IRAYVF( IEPSP,IPHAS): wall emissivity \\
-\hspace*{1.3cm} IRAYVF(IFNETP,IPHAS): net radiative flux density ($W/m^2$)\\
-\hspace*{1.3cm} IRAYVF(IFCONP,IPHAS): convective flux density ($W/m^2$)\\
-\hspace*{1.3cm} IRAYVF(IHCONP,IPHAS): convective exchange coefficient
+\hspace*{1.3cm} {\tt irayvf(iepap)}: wall thickness ($m$)\\
+\hspace*{1.3cm} {\tt irayvf(iepsp)}: wall emissivity \\
+\hspace*{1.3cm} {\tt irayvf(ifnetp)}: net radiative flux density ($W/m^2$)\\
+\hspace*{1.3cm} {\tt irayvf(ifconp)}: convective flux density ($W/m^2$)\\
+\hspace*{1.3cm} {\tt irayvf(ihconp)}: convective exchange coefficient
 ($W/m^2/K$)\\
 useful if and only if the radiation module is activated}
 
-\motcle{TMIN}{R}{real number positif}{0.D0}{O}{L3}
+\motcle{tmin}{r}{real number positif}{0}{O}{L3}
 {minimum allowed value for the wall temperatures in Kelvin\\
 useful if and only if the radiation module is activated}
 
-\motcle{TMAX}{R}{real number positif}{GRAND + 273.15D0}{O}{L3}
+\motcle{tmax}{r}{real number positif}{{\tt grand} + 273.15}{O}{L3}
 {maximum allowed value for the wall temperatures in Kelvin\\
 useful if and only if the radiation module is activated}
 
@@ -3049,8 +3057,8 @@ useful if and only if the radiation module is activated}
 %==================================
 
 The electric module is composed of a Joule effect module
-(IPPMOD(IELJOU)\index{IELJOU}) and an electric arc module
-(IPPMOD(IELARC)\index{IELARC}).
+(\texttt{ippmod(ieljou)\index{ieljou}}) and an electric arc module
+(\texttt{ippmod(ielarc)\index{ielarc}}).
 
 The Joule effect module is designed to take into account the Joule effect
 (for instance in glass furnaces) with real or complex potential in the
@@ -3066,50 +3074,50 @@ The key words used in the global settings are quite few. They are
 found in the subroutine \texttt{useli1} (see the description of this
 user subroutine \S\ref{prg_useli1}).
 
-\motcleb{IELCOR}{I}{0, 1}{0}{O}{L1}
-{when IELCOR=1, the boundary conditions for the potential will be tuned at each
-time step in order to reach a user-specified target dissipated power PUISIM
-(Joule effect) or a user-specified target current intensity COUIMP (electric
-arc)\\
+\motcleb{ielcor}{i}{0, 1}{0}{O}{L1}
+{when \texttt{ielcor}=1, the boundary conditions for the potential will be
+tuned at each time step in order to reach a user-specified target dissipated
+power \texttt{puisim} (Joule effect) or a user-specified target current
+intensity \texttt{couimp} (electric arc)\\
 the boundary condition tuning is controlled by the subroutine \texttt{uselrc}\\
 alway useful}
 
-\motcleb{COUIMP}{R}{real number $\geqslant 0$}{0}{O}{L1}
-{with the electric arc module, COUIMP is the target current intensity ($A$)
+\motcleb{couimp}{r}{real number $\geqslant 0$}{0}{O}{L1}
+{with the electric arc module, \texttt{couimp} is the target current intensity ($A$)
 for the calculations with boundary condition tuning for the potential\\
 the target intensity will be reached if the boundary conditions are expressed
-using the variable DPOT or if the initial boundary conditions are multiplied by
-the variable COEJOU\\
-useful with the electric arc module if IELCOR=1}
+using the variable \texttt{dpot} or if the initial boundary conditions are multiplied by
+the variable \texttt{coejou}\\
+useful with the electric arc module if \texttt{ielcor}=1}
 
-\motcleb{PUISIM}{R}{real number $\geqslant 0$}{0}{O}{L1}
-{with the Joule effect module, PUISIM is the target dissipated power ($W$)
+\motcleb{puisim}{r}{real number $\geqslant 0$}{0}{O}{L1}
+{with the Joule effect module, \texttt{puisim} is the target dissipated power ($W$)
 for the calculations with boundary condition tuning for the potential\\
 the target power will be reached if the boundary conditions are expressed
-using the variable DPOT or if the initial boundary conditions are multiplied by
-the variable COEJOU\\
-useful with the Joule effect module if IELCOR=1}
+using the variable \texttt{dpot} or if the initial boundary conditions are multiplied by
+the variable \texttt{coejou}\\
+useful with the Joule effect module if \texttt{ielcor}=1}
 
-\motcleb{DPOT}{R}{real number $\geqslant 0$}{0}{O}{L1}
-{DPOT is the potential difference ($V$) which generates the current (and the Joule effect) for the
+\motcleb{dpot}{r}{real number $\geqslant 0$}{0}{O}{L1}
+{\texttt{dpot} is the potential difference ($V$) which generates the current (and the Joule effect) for the
 calculations with boundary conditions tuning for the potential. This value is
 initialised set by the user (\texttt{useli1}). It is then automatically tuned
 depending on the value of dissipated power (Joule effect module) or the
 intensity of current (electric arc module).
 In order for the correct power or intensity to be reached, the boundary
-conditions for the potential must be expressed with DPOT (\texttt{uselcl}). The
-tuning can be controlled in \texttt{uselrc}\\
-useful if IELCOR=1}
-
-\motcle{COEJOU}{R}{real number $\geqslant 0$}{1}{O}{L2}
-{only with the Joule effect, COEJOU can be used if the user does not
-wish to use DPOT. COEJOU is the coefficient to be applied to the initial
-potential difference to reach the target dissipated power. Its value is
-automatically initialised to 1 and is updated during the calculation.
-In order for the correct power to be reached, the boundary
-conditions for the potential must be expressed with COEJOU (\texttt{uselcl}). The
-tuning can be controlled in \texttt{uselrc}\\
-Useful if IELCOR=1}
+conditions for the potential must be expressed with \texttt{dpot}
+(\texttt{uselcl}). The tuning can be controlled in \texttt{uselrc}\\
+useful if \texttt{ielcor}=1}
+
+\motcle{coejou}{r}{real number $\geqslant 0$}{1}{O}{L2}
+{only with the Joule effect, \texttt{coejou} can be used if the user does not
+wish to use \texttt{dpot}; \texttt{coejou} is the coefficient to be applied
+to the initial potential difference to reach the target dissipated power.
+Its value is automatically initialised to 1 and is updated during the
+calculation. In order for the correct power to be reached, the boundary
+conditions for the potential must be expressed with \texttt{coejou}
+(\texttt{uselcl}). The tuning can be controlled in \texttt{uselrc}\\
+Useful if \texttt{ielcor}=1}
 
 %=================================================
 \subsection{Compressible module: specificities}
@@ -3119,15 +3127,15 @@ The key words used in the global settings are quite few. They are
 found in the subroutines \texttt{uscfx1} and \texttt{uscfx2} (see the
 description of these user subroutines, \S\ref{prg_uscfx12}).
 
-\motcleb{ICFGRP}{IA}{0 or 1}{1}{C}{L1}
-{for each phase IPHAS, ICFGRP(IPHAS) indicates if the boundary
+\motcleb{icfgrp}{ia}{0 or 1}{1}{C}{L1}
+{for each phase \texttt{iphas}, \texttt{icfgrp(iphas)} indicates if the boundary
 conditions should take into account (=1) or not (=0) the hydrostatic balance.\\
 always useful.\\
 In the cases where gravity is predominant, taking into account the hydrostatic
 pressure allows to get rid of the disturbances which may appear near the
 horizontal walls when the flow is little convective.\\
 %
-Otherwise, when ICFGRP=0, the pressure condition is calculated
+Otherwise, when \texttt{icfgrp}=0, the pressure condition is calculated
 from the solution of the unidimensional Euler equations for a perfect
 gas near a wall, for the variables ``normal velocity'', ``density'' and
 ``pressure'':
@@ -3159,11 +3167,11 @@ with $M = \displaystyle\frac{\vect{u}_i \cdot \vect{n}}{c_i}$, internal
 \end{list}
 }
 
-\motcleb{IVISCV}{IA}{0 or 1}{\tt 0}{C}{L1}
-{for each phase IPHAS, IVISCV(IPHAS)=0 indicates that the volume
-viscosity is constant and equal to the reference volume viscosity
-VISCV0(IPHAS).\\
-IVISCV(IPHAS)=1 indicates that the volume viscosity is variable: its
+\motcleb{iviscv}{ia}{0 or 1}{\texttt{0}}{C}{L1}
+{for each phase \texttt{iphas}, \texttt{iviscv(iphas)=0} indicates that
+the volume viscosity is constant and equal to the reference volume viscosity
+\texttt{viscv0(iphas)}.\\
+\texttt{iviscv(iphas)}=1 indicates that the volume viscosity is variable: its
 variation law must be specified in the user subroutine \texttt{uscfpv}.\\
 always useful\\
 The volume viscosity $\kappa$ is defined by the formula expressing the stress:
@@ -3173,14 +3181,14 @@ The volume viscosity $\kappa$ is defined by the formula expressing the stress:
 \end{equation}
 }
 
-\motcleb{VISCV0}{RA}{real number $\ge$ 0}{0.D0}{O}{L1}
-{for each phase IPHAS, VISCV0(IPHAS) is the reference volume viscosity
-(noted $\kappa$ in the equation expressing $\tens{\sigma}$ in the
-paragraph dedicated to IVISCV)\\
+\motcleb{viscv0}{ra}{real number $\ge$ 0}{0}{O}{L1}
+{for each phase \texttt{iphas}, \texttt{viscv0(iphas)} is the reference volume
+viscosity (noted $\kappa$ in the equation expressing $\tens{\sigma}$ in the
+paragraph dedicated to \texttt{iviscv})\\
 always useful, it is the used value, unless the user specifies the volume
 viscosity in the user subroutine \texttt{uscfpv}}
 
-\motcle{IGRDPP}{I}{0 ou 1}{0}{O}{L3}
+\motcle{igrdpp}{i}{0 or 1}{0}{O}{L3}
 {indicates whether the pressure should be updated (=1) or not (=0) after the
 solution of the acoustic equation\\
 always useful}
@@ -3205,7 +3213,7 @@ two-way coupling is not compatible with the $k-\omega$ SST model.
 
 \subsubsection{Global settings}
 
-\motcleb{IILAGR}{I}{0, 1, 2, 3}{0}{C}{L1}
+\motcleb{iilagr}{I}{0, 1, 2, 3}{0}{C}{L1}
 {activates ($>$0) or deactivates (=0) the Lagrangian module\\
 the different values correspond to the following modelings: \\
 \hspace*{1.3cm} = 1 Lagrangian two-phase flow in one-way coupling (no influence of
@@ -3216,84 +3224,90 @@ It must be noted that the two-way coupling is taken
 into account only for the first eulerian phase. Dynamics,
 temperature and mass may be coupled independently\\
 \hspace*{1.3cm} = 3 Lagrangian two-phase flow on frozen continuous phase. This option can
-only be used in case of a calculation restart (ISUITE = 1). All the eulerian
-fields are frozen (including the scalar fields). This option automatically
-implies ICCVFG = 1\\
+only be used in case of a calculation restart (\texttt{isuite} = 1). All the
+eulerian fields are frozen (including the scalar fields). This option
+automatically implies \texttt{iccvfg} = 1\\
 always useful}
 
-\motcleb{ISUILA}{I}{0, 1}{0}{C}{L1}
+\motcleb{isuila}{i}{0, 1}{0}{C}{L1}
 {activation (=1) or not (=0) of a Lagrangian calculation restart.
-The calculation restart file read when this option is activated (FICAML)
-only contains the data related to the particles (see also ISUIST)\\
-the global calculation must also be a restart calculation (ISUITE=1)\\
+The calculation restart file read when this option is activated (\texttt{ficaml})
+only contains the data related to the particles (see also \texttt{isuist})\\
+the global calculation must also be a restart calculation (\texttt{isuite}=1)\\
 always useful}
 
-\motcleb{ISUIST}{I}{0, 1}{0}{C}{L1}
+\motcleb{isuist}{i}{0, 1}{0}{C}{L1}
 {during a Lagrangian calculation restart, indicates whether the particle
 statistics (volume and boundary) and two-way coupling terms are to be read from
-a restart file (=1) or reinitialised (=0). The file to be read is FICMLS\\
-useful if ISUILA = 1}
+a restart file (=1) or reinitialised (=0). The file to be read is
+\texttt{ficmls}\\
+useful if \texttt{isuila} = 1}
 
-\motcleb{NBPMAX}{I}{positive or null integer}{1000}{C}{L1}
+\motcleb{nbpmax}{i}{positive or null integer}{1000}{C}{L1}
 {maximum number of particles allowed simultaneously in the calculation
 domain. It must be reminded that the required memory evolves accordingly}
 
-\motcle{NBPART}{I}{positive or null integer}{0}{O}{L3}
+\motcle{nbpart}{i}{positive or null integer}{0}{O}{L3}
 {number of particles treated during one Lagrangian time step\\
-NBPART must always be lower than NBPMAX\\
+\texttt{nbpart} must always be lower than \texttt{nbpmax}\\
 always useful, but initialised and updated without intervention of the user}
 
-\motcle{NVLS}{I}{integer between 0 and 10}{0}{O}{L2}
+\motcle{nvls}{i}{integer between 0 and 10}{0}{O}{L2}
 {number of additional variables related to the particles\\
 the additional variables can be accessed in the arrays
-ETTP\index{ETTP} and ETTPA\index{ETTPA} by means of the pointer
-JVLS\index{JVLS}: ETTP(NBPT,JVLS(II)) and ETTPA(NBPT,JVLS(II)) (NBPT is
-the index-number of the treated particle, and II an integer between 1 and NVLS)}
+\texttt{ettp\index{ettp}} and \texttt{ettpa\index{ettpa}} by means of the
+pointer \texttt{jvls\index{jvls}}: \texttt{ettp(nbpt,jvls(ii))} and
+\texttt{ettpa(nbpt,jvls(ii))} (\texttt{nbpt} is
+the index-number of the treated particle, and \texttt{ii} an integer
+between 1 and \texttt{nvls})}
 
-\motcleb{ISTTIO}{I}{0, 1}{0}{C}{L1}
+\motcleb{isttio}{i}{0, 1}{0}{C}{L1}
 {indicates the steady (=1) or unsteady (=0) state of the
 continuous phase flow\\
-in particular, ISTTIO = 1 is needed in order to: \\
+in particular, \texttt{isttio} = 1 is needed in order to: \\
 \hspace*{1cm}calculate stationary statistics in the volume or at the boundaries
-(starting respectively from the Lagrangian iterations NSTIST and NSTBOR) \\
+(starting respectively from the Lagrangian iterations \texttt{nstist} and
+\texttt{nstbor}) \\
 \hspace*{1cm}calculate time-averaged two-way coupling source terms (from the
-Lagrangian iteration NSTITS) \\
-useful if IILAGR=1 or IILAGR=2 (if IILAGR=3, then ISTTIO=1 automatically)}
+Lagrangian iteration \texttt{nstits}) \\
+useful if \texttt{iilagr}=1 or \texttt{iilagr}=2 (if \texttt{iilagr}=3,
+then \texttt{isttio}=1 automatically)}
 
-\motcleb{INJCON}{I}{0, 1}{0}{O}{L1}
+\motcleb{injcon}{i}{0, 1}{0}{O}{L1}
 {activates (=1) or not (=0) the continuous injection of particles\\
 this option allows to inject particles continuously during the duration of the
-Lagrangian time step DTP\index{DTP} rather than only once at the
+Lagrangian time step \texttt{dtp\index{dtp}} rather than only once at the
 beginning of the Lagrangian iteration. It helps avoiding the fractioning of
 the particle cloud close to the injection areas}
 
-\motcleb{IROULE}{I}{0, 1}{0}{O}{L1}
+\motcleb{iroule}{i}{0, 1}{0}{O}{L1}
 {activates (=1) or not (=0) of the particle cloning/fusion technique
 (option also called ``Russian roulette'')\\
-when IROULE = 1, the importance function must be specified {\em via} the
-array CROULE\index{CROULE} in the user subroutine \texttt{uslaru}}
+when \texttt{iroule} = 1, the importance function must be specified {\em via} the
+array \texttt{croule\index{croule}} in the user subroutine \texttt{uslaru}}
 
-\motcle{ISUIVI}{I}{0, 1}{0 or 1}{O}{L2}
+\motcle{isuivi}{i}{0, 1}{0 or 1}{O}{L2}
 {specifies if a particle should be followed (=1) or will disappear from the
 domain (=0) after an interaction with a boundary:\\
 \hspace*{1.3cm} = 0: the particle must not be followed in the
 calculation domain after an iteraction between its trajectory and a
-boundary face, for instance entry (IENTRL), outlet (ISORTL), definitive
-deposition on a wall (IDEPO1, IDEPO2)\\
+boundary face, for instance entry (\texttt{ientrl}), outlet (\texttt{isortl}),
+definitive deposition on a wall (\texttt{idepo1}, \texttt{idepo2})\\
 \hspace*{1.3cm} = 1: the particle must still be followed in the
 calculation domain after an iteraction between its trajectory and a
-boundary face, for instance rebound (IREBOL), deposition with potential
-resuspension (IDEPO3)\\
-the value of ISUIVI (ISUIVI = 0 or ISUIVI = 1) for a type of interaction
-can be defined as a function of the particle behaviour or properties. It
-is for example the default case for the fouling interaction type (IENCRL)\\
+boundary face, for instance rebound (\texttt{irebol}), deposition with potential
+resuspension (\texttt{idepo3})\\
+the value of \texttt{isuivi} (\texttt{isuivi} = 0 or \texttt{isuivi} = 1)
+for a type of interaction can be defined as a function of the particle
+behaviour or properties. It is for example the default case for the fouling
+interaction type (\texttt{iencrl})\\
 always useful}
 
-\motcle{TTCLAG}{R}{positive real number}{0}{O}{L3}
+\motcle{\texttt{ttclag}}{r}{positive real number}{0}{O}{L3}
 {physical time of the Lagrangian simulation \\
 always useful}
 
-\motcle{IPLAS}{I}{integer $>$ 0}{1}{O}{L3}
+\motcle{iplas}{i}{integer $>$ 0}{1}{O}{L3}
 {absolute iteration number (including the restarts) in the Lagrangian
 module ({\em i.e.} Lagrangian time step number) \\
 always useful}
@@ -3303,7 +3317,7 @@ always useful}
 \subsubsection{Specific physics models associated with the particles}
 %==================================================
 
-\motcleb{IPHYLA}{I}{0, 1, 2}{0}{C}{L1}
+\motcleb{iphyla}{i}{0, 1, 2}{0}{C}{L1}
 {activates ($>$0) or deactivates (=0) the physical models associated to the
 particles:\\
 \hspace*{1.3cm} = 1: allows to associate with the particles evolution
@@ -3316,217 +3330,223 @@ associated with the particles. This option is available only if the
 continuous phase represents a pulverised coal flame\\
 always useful}
 
-\motcleb{IDPVAR}{I}{0, 1}{0}{O}{L1}
+\motcleb{idpvar}{i}{0, 1}{0}{O}{L1}
 {activation (=1) or not (=0) of an evolution equation on the particle
 diameter\\
-useful if IPHYLA = 1}
+useful if \texttt{iphyla} = 1}
 
-\motcleb{ITPVAR}{I}{0, 1}{0}{O}{L1}
+\motcleb{itpvar}{i}{0, 1}{0}{O}{L1}
 {activation (=1) or not (=0) of an evolution equation on the particle
 temperature (in degrees Celsius)\\
-useful if IPHYLA = 1 and if there is a thermal scalar associated with
+useful if \texttt{iphyla} = 1 and if there is a thermal scalar associated with
 the continuous phase}
 
-\motcleb{IMPVAR}{I}{0, 1}{0}{O}{L1}
+\motcleb{impvar}{i}{0, 1}{0}{O}{L1}
 {activation (=1) or not (=0) of an evolution equation on the
 particle mass\\
-useful if si IPHYLA = 1}
+useful if si \texttt{iphyla} = 1}
 
-\motcleb{TPART}{R}{real number $>$ TKELVN}{700.D0}{O}{L1}
+\motcleb{tpart}{r}{real number $>$ \texttt{tkelvn}}{700}{O}{L1}
 {initialisation temperature (in degree Celsius) for the particles already
 present in the calculation domain when an evolution equation on
-the particle temperature is activated during a calculation (IPHYLA =
-1 and ITPVAR = 1)\\
-useful if ISUILA = 1 and ITPVAR = 0 in the previous calculation}
+the particle temperature is activated during a calculation (\texttt{iphyla} =
+1 and \texttt{itpvar} = 1)\\
+useful if \texttt{isuila} = 1 and \texttt{itpvar} = 0 in the previous
+calculation}
 
-\motcleb{CPPART}{R}{positive real number}{5200.D0}{O}{L1}
+\motcleb{cppart}{r}{positive real number}{5200}{O}{L1}
 {initialisation value for the specific heat ($J.kg^{-1}.K^{-1}$) of the
 particles already present in the calculation domain when an evolution equation
-on the particle temperature is activated during a calculation (IPHYLA =
-1 and ITPVAR = 1)\\
-useful if ISUILA = 1 and ITPVAR = 0 in the previous calculation}
+on the particle temperature is activated during a calculation
+(\texttt{iphyla} = 1 and \texttt{itpvar} = 1)\\
+useful if \texttt{isuila} = 1 and \texttt{itpvar} = 0 in the previous calculation}
 
-\motcleb{IENCRA}{I}{0, 1}{0}{O}{L1}
+\motcleb{iencra}{i}{0, 1}{0}{O}{L1}
 {activates (=1) or not (=0) the option of coal particle
 fouling. It then is necessary to specify the domain boundaries
 on which fouling may take place.\\
-useful if IPHYLA = 2}
+useful if \texttt{iphyla} = 2}
 
-\motcleb{TPRENC}{R}{real number $>$ TKELVN}{600.D0}{O}{L1}
+\motcleb{tprenc}{r}{real number $>$ \texttt{tkelvn}}{600}{O}{L1}
 {limit temperature (in degree Celsius) below which the coal particles do
 not cause any fouling (if the fouling model is activated)\\
-useful if IPHYLA = 2 and IENCRA = 1}
+useful if \texttt{iphyla} = 2 and \texttt{iencra} = 1}
 
-\motcleb{VISREF}{R}{positive real number}{10000.D0}{O}{L1}
+\motcleb{visref}{r}{positive real number}{10000}{O}{L1}
 {ash critical viscosity in $kg.m^{-1}.s^{-1}$, in the fouling model
 \footnote{J.D. Watt
 et T. Fereday (\textit{J.Inst.Fuel}, Vol.42-p99)}\\
-useful if IPHYLA = 2 and IENCRA = 1}
+useful if \texttt{iphyla} = 2 and \texttt{iencra} = 1}
 
 %==================================================
 \subsubsection{Options for two-way coupling}
 %==================================================
 
-\motcleb{NSTITS}{I}{strictly positive integer}{1}{O}{L1}
+\motcleb{nstits}{i}{strictly positive integer}{1}{O}{L1}
 {number of absolute Lagrangian iterations (including the restarts)
 after which a time-average of the two-way coupling source terms is
 calculated\\
-indeed, if the flow is steady (ISTTIO=1), the average quantities that appear in
-the two-way coupling source terms can be calculated over different time steps,
-in order to get a better precision\\
+indeed, if the flow is steady (\texttt{isttio}=1), the average quantities
+that appear in the two-way coupling source terms can be calculated over
+different time steps, in order to get a better precision\\
 if the number of absolute Lagrangian iterations is strictly inferior to
-NSTITS, the code considers that the flow has not yet reached its steady state
-(transition period) and the averages appearing in the source terms are
-reinitialised at each time step, as it is the case for unsteady flows (ISTTIO=0)\\
-useful if IILAGR = 2 and ISTTIO = 1}
+\texttt{nstits}, the code considers that the flow has not yet reached its
+steady state (transition period) and the averages appearing in the source
+terms are reinitialised at each time step, as it is the case for unsteady
+flows (\texttt{isttio}=0)\\
+useful if \texttt{iilagr} = 2 and \texttt{isttio} = 1}
 
-\motcleb{LTSDYN}{I}{0, 1}{0}{O}{L1}
+\motcleb{ltsdyn}{i}{0, 1}{0}{O}{L1}
 {activation (=1) or not (=0) of the two-way coupling on the dynamics of the
 continuous phase\\
-useful if IILAGR = 2 and ICCVFG = 0}
+useful if \texttt{iilagr} = 2 and \texttt{iccvfg} = 0}
 
-\motcleb{LTSMAS}{I}{0, 1}{0}{O}{L1}
+\motcleb{ltsmas}{i}{0, 1}{0}{O}{L1}
 {activation (=1) or not (=0) of the two-way coupling on the mass\\
-useful if IILAGR = 2, IPHYLA = 1 and IMPVAR = 1}
+useful if \texttt{iilagr} = 2, \texttt{iphyla} = 1 and \texttt{impvar} = 1}
 
-\motcleb{LTSTHE}{I}{0, 1}{0}{O}{L1}
-{if IPHYLA = 1 and ITPVAR = 1, LTSTHE activates (=1) or not (=0) the
-two-way coupling on temperature\\
-if IPHYLA = 2, LTSTHE activates (=1) or not (=0) the two-way coupling
-on the eulerian variables related to pulverised coal combustion\\
-useful if IILAGR = 2}
+\motcleb{ltsthe}{i}{0, 1}{0}{O}{L1}
+{if \texttt{iphyla} = 1 and \texttt{itpvar} = 1, \texttt{ltsthe}
+ activates (=1) or not (=0) the two-way coupling on temperature\\
+if \texttt{iphyla} = 2, \texttt{ltsthe} activates (=1) or not (=0) the
+two-way coupling on the eulerian variables related to pulverised coal
+combustion\\
+useful if \texttt{iilagr} = 2}
 
 %==================================================
 \subsubsection{Numerical modeling}
 %==================================================
 
-\motcle{NORDRE}{I}{1, 2}{2}{O}{L2}
+\motcle{nordre}{i}{1, 2}{2}{O}{L2}
 {order of integration for the stochastic differential equations\\
 \hspace*{1.3cm} = 1 integration using a first-order scheme\\
 \hspace*{1.3cm} = 2 integration using a second-order scheme\\
 always useful}
 
-\motcle{ILAPOI}{I}{0, 1}{0}{O}{L3}
+\motcle{ilapoi}{i}{0, 1}{0}{O}{L3}
 {activation (=1) or not (=0) of the solution of a Poisson's equation for
 the correction of the particle instantaneous velocities (in order to obtain a
 null divergence)\\
 this option is not validated and reserved to the development team. Do not change
 the default value}
 
-\motcle{IDISTU}{I}{0, 1}{1}{O}{L3}
+\motcle{idistu}{i}{0, 1}{1}{O}{L3}
 {activation (=1) or not (=0) of the particle turbulent dispersion\\
 the turbulent dispersion is compatible only with the RANS turbulent models
 ($k-\varepsilon$, $R_{ij}-\varepsilon$, v2f or $k-\omega$)\\
-(ITURB(IPHAS)=20, 21, 30, 31, 50 or 60 with IPHAS = 1)\\
+(\texttt{iturb(iphas)}=20, 21, 30, 31, 50 or 60 with IPHAS = 1)\\
 always useful}
 
-\motcle{IDIFFL}{I}{0, 1}{0}{O}{L3}
-{IDIFFL=1 suppresses the crossing trajectory effect, making turbulent dispersion
-for the particles identical to the turbulent diffusion of fluid particles\\
-useful if IDISTU=1}
+\motcle{idiffl}{i}{0, 1}{0}{O}{L3}
+{\texttt{idiffl}=1 suppresses the crossing trajectory effect, making
+turbulent dispersion for the particles identical to the turbulent
+diffusion of fluid particles\\
+useful if \texttt{idistu}=1}
 
-\motcleb{MODCPL}{I}{positive integer}{0}{O}{L1}
+\motcleb{modcpl}{i}{positive integer}{0}{O}{L1}
 {activates ($>$0) or not (=0) the complete turbulent dispersion model\\
-when MODCPL is strictly positive, its value is interpreted as the absolute
-Lagrangian time step number (including restarts) after which the complete model
-is applied\\
-since the complete model uses volume statistics, MODCPL must either be 0 or be
-larger than IDSTNT\\
-useful if ISTALA = 1}
-
-\motcleb{IDIRLA}{I}{1, 2, 3}{1}{O}{L1}
+when \texttt{modcpl} is strictly positive, its value is interpreted as the
+absolute Lagrangian time step number (including restarts) after which the
+complete model is applied\\
+since the complete model uses volume statistics, \texttt{modcpl} must
+either be 0 or be larger than \texttt{idstnt}\\
+useful if \texttt{istala} = 1}
+
+\motcleb{idirla}{i}{1, 2, 3}{1}{O}{L1}
 {$x$, $y$ or $z$ direction of the complete model\\
 it corresponds to the main directions of the flow\\
-useful if MODCPL $>$ 0}
+useful if \texttt{modcpl} $>$ 0}
 
 %==================================================
 \subsubsection{Volume statistics}
 %==================================================
 
-\motcleb{ISTALA}{I}{0, 1}{0}{C}{L1}
+\motcleb{istala}{i}{0, 1}{0}{C}{L1}
 {activation (=1) or not (=0) of the calculation of the volume
 statistics related to the dispersed phase\\
-if ISTALA = 1, the calculation of the statistics is activated starting from the
-absolute iteration (including the restarts) IDSTNT\\
+if \texttt{istala} = 1, the calculation of the statistics is activated
+starting from the absolute iteration (including the restarts) \texttt{idstnt}\\
 by default, the statistics are not stationary (reset to zero at every
-Lagrangian iteration). But if ISTTIO=1, since the flow is steady, the statistics
-will be averaged overt he different time steps\\
+Lagrangian iteration). But if \texttt{isttio}=1, since the flow is steady,
+the statistics will be averaged overt he different time steps\\
 the statistics represent the significant results on the particle cloud\\
 always useful}
 
-\motcleb{SEUIL}{R}{positive real number}{0.D0}{O}{L1}
+\motcleb{seuil}{r}{positive real number}{0}{O}{L1}
 {every cell of the calculation domain contains a certain quantity of
 particles, representing a certain statistical weight (sum of the
-statistical weights of all the particles present in the cell). SEUIL is
-the limit statistical weight value, below which the contribution of the
+statistical weights of all the particles present in the cell). \texttt{seuil}
+is the limit statistical weight value, below which the contribution of the
 cell in term of statistical weight is not taken into account in the volume
 statistics (for the complete turbulent dispersion model, in the
 Poisson's equation used to correct the mean velocities or in the listing and
 post-processing outputs)\\
-useful if ISTALA = 1}
+useful if \texttt{istala} = 1}
 
-\motcleb{IDSTNT}{I}{strictly positive integer}{1}{C}{L1}
+\motcleb{idstnt}{i}{strictly positive integer}{1}{C}{L1}
 {absolute Lagrangian iteration number (includings the restarts) after
 which the calculation of the volume statistics is activated\\
-useful if ISTALA = 1}
+useful if \texttt{istala} = 1}
 
-\motcleb{NSTIST}{I}{integer $\geqslant$ IDSTNT}{IDSTNT}{O}{L1}
+\motcleb{nstist}{i}{integer $\geqslant$ \texttt{idstnt}}{\texttt{idstnt}}{O}{L1}
 {absolute Lagrangian iteration number (includings the restarts) after
 which the volume statistics are cumulated over time (they are then said to be
 stationary)\\
-if the absolute Lagrangian iteration number is lower than NSTIST, or if the flow
-is unsteady (ISTTIO=0), the statistics are reset to zero at every Lagrangian
-iteration (the volume statistics are then said to be non-stationary)\\
-useful if ISTALA=1 and ISTTIO=1}
+if the absolute Lagrangian iteration number is lower than \texttt{nstist},
+or if the flow is unsteady (\texttt{isttio}=0), the statistics are reset
+to zero at every Lagrangian iteration (the volume statistics are then said
+to be non-stationary)\\
+useful if \texttt{istala}=1 and \texttt{isttio}=1}
 
-\motcleb{NOMLAG}{CA}{string of less than 50 characters}{VarLagXXXX}{O}{L1}
+\motcleb{nomlag}{ca}{string of less than 50 characters}{VarLagXXXX}{O}{L1}
 {name of the volumetric statistics, displayed in the listing
 and the post-processing files. The default value is given above, with ``XXXX''
 representing a four digit number (for instance 0001, 0011 ...)\\
-useful if ISTALA = 1\\
+useful if \texttt{istala} = 1\\
 {\em Warning: this name is also used to reference information in the restart file
-\mbox{(ISUIST =1)}. If the name of a variable is changed between two
+\mbox{(\texttt{isuist} =1)}. If the name of a variable is changed between two
 calculations, it will not be possible to read its value from the restart file}}
 
-\motcleb{NVLSTS}{I}{0 $\leqslant$ integer $\leqslant$ NUSSTA=20}{0}{O}{L1}
+\motcleb{nvlsts}{i}{0 $\leqslant$ integer $\leqslant$ \texttt{nussta}=20}{0}{O}{L1}
 {number of additional user volume statistics\\
 the additional statistics (or their cumulated value in the stationary
-case) can be accessed in the array STATIS by means of the pointer
-ILVU\index{ILVU}: STATIS(IEL,ILVU(II)\index{STATIS}) (IEL is the cell
-index-number and II an integer between 1 and NVLSTS)\\
-useful if ISTALA = 1}
+case) can be accessed in the array \texttt{statis} by means of the pointer
+\texttt{ilvu\index{ilvu}}: \texttt{statis(iel,ilvu(ii)\index{statis}})
+(\texttt{iel} is the cell index-number and \texttt{ii} an integer between
+1 and \texttt{nvlsts})\\
+useful if \texttt{istala} = 1}
 
-\motcle{NPST}{I}{positive integer}{0}{O}{L3}
+\motcle{npst}{i}{positive integer}{0}{O}{L3}
 {number of iterations during which stationary volume statistics have
 been cumulated\\
-useful if ISTALA=1, ISTTIO=1 and if NSTIST is inferior or equal to
-the current Lagrangian iteration\\
-NPST is initialised and updated automatically by the code, its value is not to
-be modified by the user}
+useful if \texttt{istala}=1, \texttt{isttio}=1 and if \texttt{nstist} is
+inferior or equal to the current Lagrangian iteration\\
+\texttt{npst} is initialised and updated automatically by the code, its
+value is not to be modified by the user}
 
-\motcle{NPSTT}{I}{positive integer}{0}{O}{L3}
+\motcle{npstt}{i}{positive integer}{0}{O}{L3}
 {number of iterations during which volume statistics have been
 calculated (the potential iterations during which non-stationary
-statistics have been calculated are counted in NPSTT)\\
-useful if ISTALA=1\\
-NPSTT is initialised and updated automatically by the code, its value is not to
-be modified by the user}
+statistics have been calculated are counted in \texttt{npstt})\\
+useful if \texttt{istala}=1\\
+\texttt{npstt} is initialised and updated automatically by the code,
+its value is not to be modified by the user}
 
-\motcle{TSTAT}{R}{positive real number}{DTP}{O}{L3}
-{if the volume statistics are calculated in a stationary way, TSTAT
+\motcle{tstat}{r}{positive real number}{\texttt{dtp}}{O}{L3}
+{if the volume statistics are calculated in a stationary way, \texttt{tstat}
 represents the physical time during which the statistics have been cumulated\\
 if the volume statistics are calculated in a non-stationary way,
-then TSTAT=DTP\index{DTP} (it is the Lagrangian time step, because the
+then \texttt{tstat=dtp\index{dtp}} (it is the Lagrangian time step, because the
 statistics are reset to zero at every iteration)\\
-useful if ISTALA=1\\
-TSTAT is initialised and updated automatically by the code, its value is not to
-be modified by the user}
+useful if \texttt{istala}=1\\
+\texttt{tstat} is initialised and updated automatically by the code,
+its value is not to be modified by the user}
 
 %==================================================
 \subsubsection{Display of trajectories and particle movements}
 %==================================================
 
-\motcleb{IENSI1}{I}{0, 1}{0}{O}{L1}
+\motcleb{iensi1}{i}{0, 1}{0}{O}{L1}
 {activation (=1) or not (=0) of the post-processing in trajectory mode\\
 this option generates files allowing to display the trajectory of
 some pre-selected particles in the \textit{EnSight6} format\\
@@ -3534,7 +3554,7 @@ always useful\\
 {\em Warning: this option very expensive with regards to CPU time and may
 generate very large files}}
 
-\motcleb{IENSI2}{I}{0, 1}{0}{O}{L1}
+\motcleb{iensi2}{i}{0, 1}{0}{O}{L1}
 {activation (=1) or not (=0) of the post-processing in movement
 mode\\
 This option generates files allowing to display the movement of
@@ -3543,209 +3563,215 @@ always useful\\
 {\em Warning: this option very expensive with regards to CPU time and may
 generate very large files}}
 
-\motcleb{NBVIS}{I}{positive integer}{NLISTE}{O}{L1}
+\motcleb{nbvis}{i}{positive integer}{nliste}{O}{L1}
 {number of particles selected for post-processing display in trajectory or
 movement mode\\
-NBVIS must be lower than NBPMAX and NLISTE (set to 500 in \texttt{lagpar.h} and
+\texttt{nbvis} must be lower than \texttt{nbpmax} and \texttt{nliste}
+(set to 500 in \texttt{lagpar.h} and
 not to be modified)\\
-useful if IENSI1 = 1 or IENSI2 = 1}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1}
 
-\motcleb{NVISLA}{I}{strictly positive integer}{1}{O}{L1}
+\motcleb{nvisla}{i}{strictly positive integer}{1}{O}{L1}
 {output period for the post-processing in trajectory or
 movement mode\\
 may be useful to diminish the size of the post-processing files\\
-useful if IENSI1 = 1 or IENSI2 = 1}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1}
 
-\motcleb{LISTE}{IA}{positive integers}{between 1 and 500}{O}{L1}
+\motcleb{liste}{ia}{positive integers}{between 1 and 500}{O}{L1}
 {contains the index-numbers of the particles selected for the display in
 trajectory or movement mode\\
-useful if IENSI1 = 1 or IENSI2 = 1}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1}
 
-\motcleb{IVISV1}{I}{0, 1}{0}{O}{L1}
+\motcleb{ivisv1}{i}{0, 1}{0}{O}{L1}
 {associates (=1) or not (=0) the variable ``velocity of the locally
 undisturbed fluid flow field'' with the display in trajectory or
 movement mode\\
-useful if IENSI1 = 1 or IENSI2 = 1}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1}
 
-\motcleb{IVISV2}{I}{0, 1}{0}{O}{L1}
+\motcleb{ivisv2}{i}{0, 1}{0}{O}{L1}
 {associates (=1) or not (=0) the variable ``particle velocity''
 with the display in trajectory or movement mode\\
-useful if IENSI1 = 1 ou IENSI2 = 1}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1}
 
-\motcleb{IVISTP}{I}{0, 1}{0}{O}{L1}
+\motcleb{ivistp}{i}{0, 1}{0}{O}{L1}
 {associates (=1) or not (=0) the variable ``residence time''
 with the display in trajectory or movement mode\\
-useful if IENSI1 = 1 or IENSI2 = 1}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1}
 
-\motcleb{IVISDM}{I}{0, 1}{0}{O}{L1}
+\motcleb{ivisdm}{i}{0, 1}{0}{O}{L1}
 {associates (=1) or not (=0) the variable ``particle diameter''
 with the display in trajectory or movement mode\\
-useful if IENSI1 = 1 or IENSI2 = 1}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1}
 
-\motcleb{IVISTE}{I}{0, 1}{0}{O}{L1}
+\motcleb{iviste}{i}{0, 1}{0}{O}{L1}
 {associates (=1) or not (=0) the variable ``particle temperature''
 with the display in trajectory or movement mode\\
-useful if IENSI1 = 1 or IENSI2 = 1}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1}
 
-\motcleb{IVISMP}{I}{0, 1}{0}{O}{L1}
+\motcleb{ivismp}{i}{0, 1}{0}{O}{L1}
 {associates (=1) or not (=0) the variable ``particle mass''
 with the display in trajectory or movement mode\\
-useful if IENSI1 = 1 or IENSI2 = 1}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1}
 
-\motcleb{IVISHP}{I}{0, 1}{0}{O}{L1}
+\motcleb{ivishp}{i}{0, 1}{0}{O}{L1}
 {associates (=1) or not (=0) the variable ``temperature of the coal particles''
 with the display in trajectory or movement mode\\
-useful if IENSI1 = 1 or IENSI2 = 1, if and only if IPHYLA = 2}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1, if and only
+if \texttt{iphyla} = 2}
 
-\motcleb{IVISDK}{I}{0, 1}{0}{O}{L1}
+\motcleb{ivisdk}{i}{0, 1}{0}{O}{L1}
 {associates (=1) or not (=0) the variable ``shrinking core diameter of
 the coal particles'' with the display in trajectory or movement mode\\
-useful if IENSI1 = 1 or IENSI2 = 1, if and only if IPHYLA = 2}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1, if and only if
+\texttt{iphyla} = 2}
 
-\motcleb{IVISCH}{I}{0, 1}{0}{O}{L1}
+\motcleb{ivisch}{i}{0, 1}{0}{O}{L1}
 {associates (=1) or not (=0) the variable ``mass of reactive coal of the
 coal particles'' with the display in trajectory or movement mode\\
-useful if IENSI1 = 1 or IENSI2 = 1, if and only if IPHYLA = 2}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1, if and only if
+\texttt{iphyla} = 2}
 
-\motcleb{IVISCK}{I}{0, 1}{0}{O}{L1}
+\motcleb{ivisck}{i}{0, 1}{0}{O}{L1}
 {associates (=1) or not (=0) the variable ``mass of char of the
 coal particles'' with the display in trajectory or movement mode\\
-useful if IENSI1 = 1 or IENSI2 = 1, if and only if IPHYLA = 2}
+useful if \texttt{iensi1} = 1 or \texttt{iensi2} = 1, if and only if
+\texttt{iphyla} = 2}
 
 %==================================================
 \subsubsection{Display of the particle/boundary interactions and the statistics at the boundaries}
 %==================================================
 
-\motcleb{IENSI3}{I}{0, 1}{0}{C}{L1}
+\motcleb{iensi3}{i}{0, 1}{0}{C}{L1}
 {activation (=1) or not (=0) of the recording of the particle/boundary
-interactions in  PARBOR\index{PARBOR}, and of the calculation of the
+interactions in  \texttt{parbor\index{parbor}}, and of the calculation of the
 statistics at the corresponding boundaries, for post-processing
 (\textit{EnSight6} format)\\
 By default, the statistics are non-stationary (reset to zero at every
-Lagrangian iteration). They may be stationary if ISTTIO=1 ({\em i.e.}
+Lagrangian iteration). They may be stationary if \texttt{isttio}=1 ({\em i.e.}
 calculation of a cumulated value over time, and then calculation of an
 average over time or over the number of interactions with the boundary)\\
 always useful}
 
-\motcleb{NSTBOR}{I}{strictly positive integer}{1}{O}{L1}
+\motcleb{nstbor}{i}{strictly positive integer}{1}{O}{L1}
 {number of absolute Lagrangian iterations (including the restarts)
 after which the statistics at the boundaries are considered stationary and are
 averaged (over time or over the number of interactions)\\
-If the number of absolute Lagrangian iterations is lower than NSTBOR, or if
-ISTTIO=0, the statistics are reset to zero at every Lagrangian iteration
-(non-stationary statistics)\\
-useful if IENSI3=1 and ISTTIO=1}
+If the number of absolute Lagrangian iterations is lower than \texttt{nstbor},
+or if \texttt{isttio}=0, the statistics are reset to zero at every
+Lagrangian iteration (non-stationary statistics)\\
+useful if \texttt{iensi3}=1 and \texttt{isttio}=1}
 
-\motcleb{SEUILF}{R}{positive real number}{0.D0}{O}{L1}
+\motcleb{seuilf}{r}{positive real number}{0}{O}{L1}
 {every boundary face of the mesh undergoes a certain number of
 interactions with particles, expressed in term of statistical weight
 (sum of the statistical weights of all the particles which have
-interacted with the boundary face). SEUILF is
+interacted with the boundary face). \texttt{seuilf} is
 the limit statistical weight value, below which the contribution of the
 face is not taken into account in the
 statistics at the boundaries for post-processing\\
-useful if IENSI3=1}
+useful if \texttt{iensi3}=1}
 
-\motcleb{INBRBD}{I}{0, 1}{1}{O}{L1}
+\motcleb{inbrbd}{i}{0, 1}{1}{O}{L1}
 {activation (=1) or not (=0) of the recording of the number of particle/boundary
 interactions, and of the calculation of the associated boundary statistics.\\
-INBRD = 1 is a compulsory condition to use the particulate average
-IMOYBR = 2\\
+\texttt{inbrd} = 1 is a compulsory condition to use the particulate average
+\texttt{imoybr} = 2\\
 the selection of the type of interactions that are to be recorded is specified
 in the subroutine \texttt{uslabo}\\
-useful if IENSI3=1}
+useful if \texttt{iensi3}=1}
 
-\motcleb{IFLMBD}{I}{0, 1}{0}{O}{L1}
+\motcleb{iflmbd}{i}{0, 1}{0}{O}{L1}
 {activation (=1) or not (=0) of the recording of the particulate mass flow
 related to the particle/boundary interactions, and of the calculation of
 the associated boundary statistics\\
 the selection of the type of interactions that are to be recorded is specified
 in the subroutine \texttt{uslabo}\\
-INBRD = 1 is a compulsory condition to use IFLMBD=1\\
-useful if IENSI3=1 and INBRBD=1}
+\texttt{inbrd} = 1 is a compulsory condition to use \texttt{iflmbd}=1\\
+useful if \texttt{iensi3}=1 and \texttt{inbrbd}=1}
 
 
-\motcleb{IANGBD}{I}{0, 1}{0}{O}{L1}
+\motcleb{iangbd}{i}{0, 1}{0}{O}{L1}
 {activation (=1) or not (=0) of the recording of the angle between a
 particle trajectory and a boundary face involved in a particle/boundary
 interaction, and of the calculation of the associated boundary statistics\\
 the selection of the type of interactions that are to be recorded is specified
 in the subroutine \texttt{uslabo}\\
-useful if IENSI3=1}
+useful if \texttt{iensi3}=1}
 
-\motcleb{IVITBD}{I}{0, 1}{0}{O}{L1}
+\motcleb{ivitbd}{i}{0, 1}{0}{O}{L1}
 {activation (=1) or not (=0) of the recording of the velocity of a particle
 involved in a particle/boundary interaction, and of the calculation of
 the associated boundary statistics\\
 the selection of the type of interactions that are to be recorded is specified
 in the subroutine \texttt{uslabo}\\
-useful if IENSI3=1}
+useful if \texttt{iensi3}=1}
 
-\motcleb{IENCBD}{I}{0, 1}{0}{O}{L1}
+\motcleb{iencbd}{i}{0, 1}{0}{O}{L1}
 {activation (=1) or not (=0) of the recording of the mass of coal particles
-stuck to the wall due to fouling, on the boundary faces of the IENCRL
+stuck to the wall due to fouling, on the boundary faces of the \texttt{iencrl}
 interaction type\\
-useful if IENSI3=1, IPHYLA=2,
-IENCRA=1, and if there is at least one boundary face of the IENCRL interaction
+useful if \texttt{iensi3}=1, \texttt{iphyla}=2, \texttt{iencra}=1, and if
+there is at least one boundary face of the \texttt{iencrl} interaction
 type}
 
-\motcleb{NUSBOR}{I}{positive integer}{0}{O}{L1}
+\motcleb{nusbor}{i}{positive integer}{0}{O}{L1}
 {number additional user data to record for the calculation
-of additional boundary statistics in PARBOR\index{PARBOR}\\
-useful if IENSI3=1}
+of additional boundary statistics in \texttt{parbor\index{parbor}}\\
+useful if \texttt{iensi3}=1}
 
-\motcleb{NOMBRD}{CA}{string of less than 50 characters}{see
+\motcleb{nombrd}{ca}{string of less than 50 characters}{see
 \texttt{uslag1}}{O}{L1}
 {name of the boundary statistics, displayed in the listing
 and the post-processing files\\
-useful if IENSI3=1\\
+useful if \texttt{iensi3}=1\\
 {\em Warning: this name is also used to reference information in the restart file
-\mbox{(ISUIST =1)}. If the name of a variable is changed between two
+\mbox{(\texttt{isuist} =1)}. If the name of a variable is changed between two
 calculations, it will not be possible to read its value from the restart file}}
 
-\motcleb{IMOYBR}{IA}{0, 1, 2}{0 , 1 or 2}{O}{L1}
-{the recordings in PARBOR at every particle/boundary interaction are
+\motcleb{imoybr}{ia}{0, 1, 2}{0 , 1 or 2}{O}{L1}
+{the recordings in \texttt{parbor} at every particle/boundary interaction are
 cumulated values (possibly reset to zero at every iteration in the
 non-stationary case). They must therefore be divided by a quantity to
 get boundary statistics. The user can choose between two average types:\\
 \hspace*{1.3cm} = 0: no average is applied to the recorded cumulated values\\
 \hspace*{1.3cm} = 1: a time-average is calculated. The cumulated value
 is divided by the physical duration in the case of stationary
-averages (ISTTIO=1). The cumulated value is divided by the value of
-the last time step in the case of non-stationary averages (ISTTIO=0),
+averages (\texttt{isttio}=1). The cumulated value is divided by the value of
+the last time step in the case of non-stationary averages (\texttt{isttio}=0),
 and also in the case of stationary averages while the
-absolute Lagrangian iteration number is inferior to NSTBOR\\
+absolute Lagrangian iteration number is inferior to \texttt{nstbor}\\
 \hspace*{1.3cm} = 2: a particulate average is calculated. The cumulated
-value is divided by the number of particle/boundary interactions (in term of
-statistical weight) recorded in PARBOR(NFABOR,INBR). This average can only
-be calculated when INBRBD=1. The average is calculated if the number
-of interactions (in statistical weight) of the considered boundary face
-is strictly higher than SEUILF, otherwise the average at the face is set
-to zero\\
+value is divided by the number of particle/boundary interactions (in terms of
+statistical weight) recorded in \texttt{parbor(nfabor,inbr)}. This average
+can only be calculated when \texttt{inbrbd}=1. The average is calculated if
+the number of interactions (in statistical weight) of the considered
+boundary face is strictly higher than \texttt{seuilf}, otherwise the average
+at the face is set to zero\\
 only the cumulated value is recorded in the restart file\\
-useful if IENSI3=1}
+useful if \texttt{iensi3}=1}
 
-\motcle{NPSTF}{I}{positive integer}{0}{O}{L3}
+\motcle{npstf}{i}{positive integer}{0}{O}{L3}
 {number of iterations during which stationary boundary statistics have
 been cumulated\\
-useful if IENSI3=1, ISTTIO=1 and NSTBOR inferior or equal to the
-current Lagrangian iteration\\
-NPSTF is initialised and updated automatically by the code, its value is not to
-be modified by the user}
+useful if \texttt{iensi3}=1, \texttt{isttio}=1 and \texttt{nstbor} inferior
+or equal to the current Lagrangian iteration\\
+\texttt{npstf} is initialised and updated automatically by the code,
+its value is not to be modified by the user}
 
-\motcle{NPSTFT}{I}{positive integer}{0}{O}{L3}
+\motcle{npstft}{i}{positive integer}{0}{O}{L3}
 {number of iterations during which boundary statistics have
 been calculated
 (the potential iterations during which non-stationary
-statistics have been calculated are counted in NPSTFT)\\
-useful if IENSI3=1\\
-NPSTFT is initialised and updated automatically by the code, its value is not to
-be modified by the user}
-
-\motcle{TSTATP}{R}{positive real number}{DTP}{O}{L3}
-{if the recording of the boundary statistics is stationary, TSTATP contains
-the cumulated physical duration of the recording of the boundary statistics\\
+statistics have been calculated are counted in \texttt{npstft})\\
+useful if \texttt{iensi3}=1\\
+\texttt{npstft} is initialised and updated automatically by the code,
+its value is not to be modified by the user}
+
+\motcle{tstatp}{r}{positive real number}{\texttt{dtp}}{O}{L3}
+{if the recording of the boundary statistics is stationary, \texttt{tstatp}
+contains the cumulated physical duration of the recording of the boundary
+statistics\\
 if the recording of the boundary statisticss is non-stationary, then
-TSTAT=DTP\index{DTP} (it is the Lagrangian time step, because the
+\texttt{tstat=dtp\index{dtp}} (it is the Lagrangian time step, because the
 statistics are reset to zero at every time step)\\
-useful if IENSI3=1}
+useful if \texttt{iensi3}=1}
diff --git a/extras/bash_completion/code_saturne b/extras/bash_completion/code_saturne
new file mode 100644
index 0000000..beb35c7
--- /dev/null
+++ b/extras/bash_completion/code_saturne
@@ -0,0 +1,283 @@
+#------------------------------------------------------------------------------
+#   This file is part of the Code_Saturne Kernel, element of the
+#   Code_Saturne CFD tool.
+#
+#   Copyright (C) 2009 EDF S.A., France
+#
+#   The Code_Saturne Kernel is free software; you can redistribute it
+#   and/or modify it under the terms of the GNU General Public License
+#   as published by the Free Software Foundation; either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   The Code_Saturne Kernel is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+#   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public Licence
+#   along with the Code_Saturne Kernel; if not, write to the
+#   Free Software Foundation, Inc.,
+#   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#-------------------------------------------------------------------------------
+
+# Batch completion script for:
+# - "code_saturne" user Python script
+# - "cs_solver" binary executable
+
+_code_saturne() {
+
+    local cur prev opt cmds cmdOpts opt i
+
+    COMPREPLY=()
+
+    cur="${COMP_WORDS[COMP_CWORD]}"
+    prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+    # Possible commands except "help", as given by "code_saturne help"
+    cmds="check_consistency check_mesh plot_probes"
+    cmds="${cmds} compile config create gui info"
+
+    # Help and Case options
+    local helpOpts="-h --help"
+    local caseOpts="-c --case"
+
+    # Readers and guides
+    local readers="evince gpdf kpdf xpdf acroread"
+    local guides="refcard theory tutorial user"
+
+    # Boolean values
+    local isCmd=0
+    local isOptCase=0
+
+    if [[ ${COMP_CWORD} -eq 1 ]]; then
+        COMPREPLY=( $(compgen -W "help ${cmds}" -- ${cur}) )
+        return 0
+    fi
+
+    # Certain tokens preclude further activity
+    if [[ ${prev} == @(-h|--help|-v|--version) ]]; then
+        return 0
+    fi
+
+    # Check if previous token is a command or not
+    [[ ${prev} == @(${cmds// /|}) ]] && isCmd=1
+
+    # Parse arguments and set various variables about what was found.
+    #
+    # cmd: the current command if available
+    local cmd=${COMP_WORDS[1]}
+
+    # Check options depending on the command and the previous token
+    case ${cmd} in
+        help)
+            case ${prev} in
+                help)
+                    COMPREPLY=( $(compgen -W "${cmds}" -- ${cur}) )
+                    return 0
+                    ;;
+                *) return 0;;
+            esac
+            ;;
+        check_consistency)
+            case ${prev} in
+                -p|--param)  _filedir; return 0;;
+                -s|--source) _filedir -d; return 0;;
+                -n|--nproc)  COMPREPLY=( ); return 0;;
+                *) cmdOpts="-p --param -s --source -n --nproc";;
+            esac
+            ;;
+        compile)
+            case ${prev} in
+                -d|--dest)   _filedir -d; return 0;;
+                -s|--source) _filedir -d; return 0;;
+                *) cmdOpts="-t --test -f --force -s --source -d --dest \
+                     --opt-libs --syrthes";;
+            esac
+            ;;
+        create)
+            case ${prev} in
+                -c|--case)     COMPREPLY=( ); return 0;;
+                -s|--study)    COMPREPLY=( ); return 0;;
+                --nsat|--nsyr) COMPREPLY=( ); return 0;;
+                --copy-from)   _filedir -d; return 0;;
+                *) cmdOpts="-s --study -c --case -n --nogui --noref --copy-from \
+                     --new-runcase --nsat --nsyr -q --quiet -v --verbose";;
+            esac
+            ;;
+        gui)
+            case ${prev} in
+                -f|--file)  _filedir; return 0;;
+                -b|--batch) COMPREPLY=( ); return 0;;
+                *) cmdOpts="-f --file -b --batch -n --new -m --matisse \
+                     --no-tree -z --no-splash";;
+            esac
+            ;;
+        info)
+            case ${prev} in
+                -r|--reader)
+                    COMPREPLY=( $(compgen -W "${readers}" -- ${cur}) )
+                    return 0
+                    ;;
+                -g|--guide)
+                    COMPREPLY=( $(compgen -W "${guides}" -- ${cur}) )
+                    return 0
+                    ;;
+                *) cmdOpts="-r --reader -g --guide --version"
+            esac
+            ;;
+        plot_probes)
+            case ${prev} in
+                plot_probes) _filedir "dat";;
+                *) return 0;;
+            esac
+            ;;
+        *)
+            cmdOpts=""
+            ;;
+    esac
+
+    # Take out options already given
+    for (( i=2; i<=$COMP_CWORD-1; ++i ))
+    do
+        opt=${COMP_WORDS[$i]}
+
+        local optBase
+
+        # Remove leading dashes and arguments
+        case $opt in
+            --*)    optBase=${opt/=*/} ;;
+            -*)     optBase=${opt:0:2} ;;
+        esac
+
+        cmdOpts=" $cmdOpts "
+        cmdOpts=${cmdOpts/ ${optBase} / }
+
+        # Take out alternatives and mutually exclusives
+        case $optBase in
+            -b)              cmdOpts=${cmdOpts/ --batch / } ;;
+            --batch)         cmdOpts=${cmdOpts/ -b / }
+                             cmdOpts=${cmdOpts/ --new / };;
+            -c)              cmdOpts=${cmdOpts/ --case / }; isOptcase=1 ;;
+            --case)          cmdOpts=${cmdOpts/ -c / }; isOptcase=1 ;;
+            -d)              cmdOpts=${cmdOpts/ --dest / } ;;
+            --dest)          cmdOpts=${cmdOpts/ -d / } ;;
+            -f)              cmdOpts=${cmdOpts/ --file / } ;;
+            --file)          cmdOpts=${cmdOpts/ -f / } ;;
+            -g)              cmdOpts=${cmdOpts/ --guide / } ;;
+            --guide)         cmdOpts=${cmdOpts/ -g / } ;;
+            -m)              cmdOpts=${cmdOpts/ --matisse / } ;;
+            --matisse)       cmdOpts=${cmdOpts/ -m / } ;;
+            -n)
+                case ${cmd} in
+                    check_consistency) cmdOpts=${cmdOpts/ --nproc / } ;;
+                    gui)               cmdOpts=${cmdOpts/ --new / } ;;
+                esac ;;
+            --new)           cmdOpts=${cmdOpts/ -n / }
+                             cmdOpts=${cmdOpts/ --batch / }
+                             cmdOpts=${cmdOpts/ --file / } ;;
+            --nproc)         cmdOpts=${cmdOpts/ -n / } ;;
+            --opt-libs)      cmdOpts=${cmdOpts/ --syrthes / } ;;
+            -p)              cmdOpts=${cmdOpts/ --param / } ;;
+            --param)         cmdOpts=${cmdOpts/ -p / } ;;
+            -q)              cmdOpts=${cmdOpts/ --quiet / } ;;
+            --quiet)         cmdOpts=${cmdOpts/ -q / } ;;
+            -r)              cmdOpts=${cmdOpts/ --reader / } ;;
+            --reader)        cmdOpts=${cmdOpts/ -r / } ;;
+            -s)
+                case ${cmd} in
+                    compile) cmdOpts=${cmdOpts/ --source / } ;;
+                    create)  cmdOpts=${cmdOpts/ --study / } ;;
+                esac ;;
+            --source)        cmdOpts=${cmdOpts/ -s / } ;;
+            --study)         cmdOpts=${cmdOpts/ -s / } ;;
+            --syrthes)       cmdOpts=${cmdOpts/ --opt-libs / } ;;
+            -t)              cmdOpts=${cmdOpts/ --test / } ;;
+            --test)          cmdOpts=${cmdOpts/ -t / } ;;
+            -v)              cmdOpts=${cmdOpts/ --verbose / } ;;
+            --verbose)       cmdOpts=${cmdOpts/ -v / } ;;
+        esac
+
+    done
+
+    # Add case options (may appear several times in command line)
+    [[ $isOptCase -eq 1 ]] && cmdOpts="${caseOpts} ${cmdOpts}"
+
+    # Add help options for every command but "help"
+    [[ $isCmd -eq 1 ]] && cmdOpts="${helpOpts} ${cmdOpts}"
+
+
+    COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "${cmdOpts}" -- ${cur}) )
+
+}
+complete -F _code_saturne code_saturne
+
+# -------------------------------------------------
+
+_cs_solver() {
+
+    local cur prev options i
+
+    COMPREPLY=()
+
+    cur="${COMP_WORDS[COMP_CWORD]}"
+    prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+    options="--solcom --mpi --mpi-io -q --quality --benchmark --cwf \
+             --log --logp -p --param --syr-socket"
+
+    local versOpts="--version"
+    local helpOpts="-h --help"
+
+    local allOpts="${helpOpts} ${versOpts} ${options}"
+
+
+    if [[ ${COMP_CWORD} -eq 1 ]]; then
+        COMPREPLY=( $(compgen -W "${allOpts}" -- ${cur}) )
+        return 0
+    fi
+
+    # Certain tokens preclude further activity
+    if [[ ${prev} == @(-h|--help|-v|--version) ]]; then
+        return 0
+    fi
+
+    case "${prev}" in
+        --cwf|--syr-socket) COMPREPLY=( ); return 0;;
+        --log)  COMPREPLY=( $(compgen -W "0 1" -- ${cur}) ); return 0;;
+        --logp) COMPREPLY=( $(compgen -W "-1 0 1" -- ${cur}) ); return 0;;
+        -p|--param) _filedir; return 0;;
+    esac
+
+    # Take out options already given
+    for (( i=1; i<=$COMP_CWORD-1; ++i ))
+    do
+        opt=${COMP_WORDS[$i]}
+
+        local optBase
+
+        # Remove leading dashes and arguments
+        case $opt in
+            --*)    optBase=${opt/=*/} ;;
+            -*)     optBase=${opt:0:2} ;;
+        esac
+
+        options=" $options "
+        options=${options/ ${optBase} / }
+
+        # Take out alternatives and mutually exclusives
+        case $optBase in
+            --mpi|--mpi-io)  options=${options/ --solcom / } ;;
+            -p)              options=${options/ --param / } ;;
+            --param)         options=${options/ -p / } ;;
+            -q)              options=${options/ --quality / } ;;
+            --quality)       options=${options/ -p / } ;;
+            --solcom)        options=${options/ --mpi / }
+                             options=${options/ --mpi-io / };;
+        esac
+
+    done
+
+    COMPREPLY=( $(compgen -W "${options}" -- ${cur}) )
+
+}
+complete -F _cs_solver cs_solver
diff --git a/extras/installer/README.txt b/extras/installer/README.txt
new file mode 100644
index 0000000..b516098
--- /dev/null
+++ b/extras/installer/README.txt
@@ -0,0 +1,285 @@
+INSTALLATION PROCEDURE FOR CODE_SATURNE
+=======================================
+=======================================
+
+For more information about the different modules and external libraries
+necessary or compliant with Code_Saturne, refer to the COMPATIBILITY file
+in the Kernel distribution (ncs-x.y.z).
+
+Section I   gives information on the automatic installer
+Section II  gives information for manual installation
+Section III gives information for using the code
+
+
+I) AUTOMATIC INSTALL
+====================
+The Install directory contains a python script for automatic
+installation of the Code_Saturne elements and associated routines.
+In most cases, it will be enough. In case of problems, switch to
+section II for element by element install.
+These scripts are given in the hope that they will be useful, but
+WITHOUT ANY WARRANTY.
+
+The script can download every packages needed by the code to run
+properly. If this behaviour is not wanted, set the "download" variable
+to "no" in the setup script.
+
+It is possible to specify her/his own Python executable through the "python"
+variable, as well as BLAS libraries through the "blas" variable.
+
+SYRTHES installation path (for coupling with the thermal code SYRTHES) will be
+provided with the "syrthes" variable.
+
+Lastly, the possibility is given to compile Code_Saturne with debugging symbols
+("debug" variable), to disable the Graphical User Interface ("disable_gui"
+variable), and to specify the language (between English and French).
+
+On some architectures and for some elements (MED and FVM for instance)
+it is preferable if the "make" command refers to the GNU "make". Otherwise
+some problems can occur (problem with libtool, need to copy the sources in
+the build directory, ...)
+
+* install_saturne.py:
+  This python script will install the different elements of Code_Saturne and
+  associated libraries. Due to dependencies between the different modules, the
+  order of install should be the following:
+  - libxml2 (it is advised to use the distrib own package)
+  - swig (it is advised to use the distrib own package)
+  - Metis
+  - MPI
+  - CGNS
+  - HDF5
+  - MED
+  - BFT (Code_Saturne Base Functions and Types library)
+  - FVM (Code_Saturne Finite Volume Mesh library)
+  - MEI (Code_Saturne Mathematical Expressions Interpreter library)
+  - ECS (Code_Saturne Preprocessor)
+  - NCS (Code_Saturne Kernel and Graphical User Interface)
+
+  The following packages cannot be installed
+  - Zlib
+  - BLAS
+  - PyQT
+  - Python
+
+
+  The install script uses the "setup" file to determine which library to
+  install or to use. For each element, there are four options:
+
+  - to not use the element (for optional libraries like MPI)
+     In this case, specify "no" in the "Usage" and "Install" columns. The other
+     elements will be installed in accordance. The "Path" column is not used.
+
+  - to automatically detect some element (especially useful for libxml2 or swig)
+     In this case, specify "auto" in the "Usage". The other elements will be
+      installed in accordance. The "Path" and "Install" column are not used.
+
+  - to use a pre-installed library in a non standard path
+     In this case, specify "yes" in the Usage column and "no" in the Install
+     column. The "Path" column should contain the location of the library
+     (up to the name of the library itself).
+
+  - to install and use a library
+     In this case, specify "yes" in the "Usage" and "Install" columns. The
+     script will download the library and install it default install directory.
+     If download has been set to "no", package archive are looked for at the
+     same location than the installation script (the right number and archive
+     name are needed, accordingly to what is prescribed in the script).
+     After each element has been installed, the "setup" file is modified, the
+     column "Install" of the concerned element is set to "no" and the "Path"
+     column is filled so that the element is not installed a second time if
+     the script is relaunched (if there was a problem with a later element).
+
+   Before using the "install_saturne.py" script, the C and Fortran compilers
+   to be used can be specified next to the CompC and CompF keywords.
+   An optional MPI wrapper compiler (for the C language) can be specified to
+   be used for FVM and the Kernel installation.
+
+   If the "use_arch" variable is set to "yes", then the "arch" keyword refers
+   to the architecture of the machine. Leaving it blank will make it
+   automatically detected with the "uname" command."arch" should be specified
+   if you want different implementations on the same architecture
+   (for instance Linux_LAM and Linux_MPICH).
+
+   Commonly used compilers for different architectures :
+   SunOS : compC = cc -Xa
+           compF = f90
+   
+   IRIX64 : compC = cc -64
+            compF = f90 -64
+
+
+
+    
+II) MANUAL INSTALL
+==================
+If the automatic install script fails, you should install each module
+individually. Except for the modules developped by EDF (Kernel, Preprocessor,
+BFT, FVM and MEI), you should refer to the installation procedure provided by
+the distributor of the module.
+
+Herebelow, $version stands for the current version of Code_Saturne and $prefix
+for the directory where you want to install Code_Saturne.
+
+
+  Installing BFT
+  --------------
+  - create a "build" directory (usually bft-x.y.z.build)
+
+  - from within the build directory, run the configure command:
+
+      ../bft-x.y.z/configure --prefix=$prefix/cs-$version
+
+    Depending on the elements wanted, additional options can be added
+    to the configure:
+      --with-zlib=... for Zlib support
+      CC=...          to specify the compiler if necessary
+
+  - run the "make" commands:
+      make
+      make install
+      make clean
+
+    For further information, refer to the INSTALL file in the BFT directory.
+
+
+  Installing FVM
+  --------------
+  - create a "build" directory (usually fvm-x.y.z.build)
+
+  - from within the build directory, run the configure command:
+
+      ../fvm-x.y.z/configure --prefix=$prefix/cs-$version \
+         --with-bft=$prefix/cs-$version
+
+    Depending on the elements wanted, additional options can be added
+    to the configure:
+      --with-cgns=... for CGNS support
+      --with-hdf5=... for HDF5 (compulsory for MED)
+      --with-med=...  for MED
+      --with-mpi=...  for MPI
+      CC=...          to specify the compiler
+                         (especially if mpicc should be used, to get
+                          the proper links to MPI libraries)
+
+  - run the "make" commands:
+      make
+      make install
+      make clean
+
+    For further information, refer to the INSTALL file in the FVM directory.
+
+
+  Installing MEI
+  --------------
+  - create a "build" directory (usually mei-x.y.z.build)
+
+  - from within the build directory, run the configure command:
+
+      ../mei-x.y.z/configure --prefix=$prefix/cs-$version \
+         --with-bft=$prefix/cs-$version
+
+    Depending on the elements wanted, additional options can be added
+    to the configure:
+      --with-python-exec=...  for specific Python executable
+      --with-swig-exec=...    for SWIG (Python bindings)
+
+  - run the "make" commands:
+      make
+      make install
+      make clean
+
+    For further information, refer to the INSTALL file in the MEI directory.
+
+
+  Installing the Preprocessor (ecs)
+  ---------------------------------
+  - create a "build" directory (usually ecs-x.y.z.build)
+
+  - from within the build directory, run the configure command:
+
+      ../ecs-x.y.z/configure --prefix=$prefix/cs-$version \
+         --with-bft=$prefix/cs-$version
+
+    Depending on the elements wanted, additional options can be added
+    to the configure:
+      --with-adf=...    for ADF support (compulsory for CCM if no CGNS)
+      --with-ccm=...    for CCM support
+      --with-cgns=...   for CGNS support
+      --with-hdf5=...   for HDF5 (compulsory for MED)
+      --with-med=...    for MED
+      --with-metis=...  for Metis optimised domain partitioning
+                            (strongly advised for parallel computing)
+      --with-scotch=... for Scotch optimised domain partitioning
+                           (alternative for Metis)
+      CC=...            to specify the compiler if necessary
+
+  - run the "make" commands:
+      make
+      make install
+      make clean
+
+    For further information, refer to the INSTALL file in the ECS directory.
+
+
+  Installing the Kernel (ncs)
+  ---------------------------
+
+  - create a "build" directory (usually ncs-x.y.z.build)
+
+  - from within the build directory, run the configure command:
+
+      ../ncs-x.y.z/configure --prefix=$prefix/cs-$version \
+         --with-bft=$prefix/cs-$version \
+         --with-fvm=$prefix/cs-$version \
+         --with-mei=$prefix/cs-$version \
+         --with-prepro=$prefix/cs-$version
+
+    Depending on the elements wanted, additional options can be added
+    to the configure:
+      --with-libxml2=...      for Libxml2 support (compulsory for the Interface)
+      --with-blas=...         for BLAS
+      --with-mpi=...          for MPI
+      --with-syrthes=...      for SYRTHES coupling
+      --with-python-exec=...  for specific Python executable
+      --with-pyqt4-exec=...   for PyQt4 developper tools
+      CC=...           to specify the compiler if necessary
+                         (especially if mpicc should be used, to get
+                          the proper links to MPI libraries)
+      FC=...           to specify the Fortran compiler if necessary
+
+  - run the "make" commands:
+      make
+      make install
+      make clean
+
+
+  - documentation can be compiled (if LaTeX is available) and installed
+    by running:
+      make pdf
+      make install-pdf
+
+    The compiled libraries will be put in $prefix/cs-$version
+    
+
+
+III) Before using Code_Saturne
+==============================
+Each user of Code_Saturne must set her/his PATH accordingly with Code_Saturne
+installation before using the code. The easiest way is to put the following
+lines in each of the users ".profile" (depending on the shell).
+
+cspath=$prefix/cs-$version/bin
+#(adjust path to your system)
+if [ -d $cspath ] ; then  
+  export PATH=$cspath:$PATH
+fi
+
+After changing the user ".profile", it is advised to logout and login,
+so that there is no mix-up in the PATH variable.
+
+For more information refer to the Code_Saturne documentation, available
+through the "code_saturne info -g refcard" and "code_saturnes info -g user"
+commands.
+
+Code_Saturne support: saturne-support at edf.fr
diff --git a/extras/installer/install_saturne.py b/extras/installer/install_saturne.py
new file mode 100755
index 0000000..fd94da3
--- /dev/null
+++ b/extras/installer/install_saturne.py
@@ -0,0 +1,1159 @@
+#!/usr/bin/env python
+
+#-------------------------------------------------------------------------------
+# Library modules import
+#-------------------------------------------------------------------------------
+
+import sys
+
+if sys.version_info[:2] < (2,3):
+    sys.stderr.write("This script needs Python 2.3 at least\n")
+
+import platform
+
+if platform.system == 'Windows':
+    sys.stderr.write("This script only works on Unix-like platforms\n")
+
+import os, shutil
+import string
+import subprocess
+
+#-------------------------------------------------------------------------------
+# Global variable
+#-------------------------------------------------------------------------------
+
+verbose = 'no'
+
+#-------------------------------------------------------------------------------
+# Global methods
+#-------------------------------------------------------------------------------
+
+def run_command(cmd, stage, app, log):
+    """
+    Run a command via the subprocess module.
+    """
+
+    if verbose == 'yes':
+        sys.stdout.write("   o " + stage + "...\n")
+
+    p = subprocess.Popen(cmd,
+                         shell=True,
+                         stdout=subprocess.PIPE,
+                         stderr=subprocess.STDOUT)
+
+    output = p.communicate()
+    log.write(output[0])
+
+    if p.returncode != 0:
+        sys.stderr.write("Error during " + string.lower(stage) +
+                         " stage of " + app + ".\n")
+        sys.stderr.write("See " + log.name + " for more information.\n")
+        sys.exit(1)
+
+
+def run_test(cmd):
+    """
+    Run a test for a given command via the subprocess module.
+    """
+
+    if verbose == 'yes':
+        sys.stdout.write("   o Checking for " + os.path.basename(cmd) + "...  ")
+
+    cmd = "type " + cmd
+
+    p = subprocess.Popen(cmd,
+                         shell=True,
+                         stdout=subprocess.PIPE,
+                         stderr=subprocess.STDOUT)
+
+    output = p.communicate()
+    if verbose == 'yes':
+        if p.returncode == 0: log_str = output[0].split()[2]
+        else: log_str = "not found"
+        sys.stdout.write("%s\n" % log_str)
+
+    return p.returncode
+
+#-------------------------------------------------------------------------------
+# Class definition for a generic package
+#-------------------------------------------------------------------------------
+
+class Package:
+
+    def __init__(self, name, description, package, version, archive, url):
+
+        # Package information
+        self.name = name
+        self.description = description
+        self.package = package
+        self.version = version
+        self.archive = archive
+        self.url = url % self.archive
+
+        # Installation information
+        self.use = 'no'
+        self.installation = 'no'
+        self.installation_pdf = 'no'
+        self.source_dir = None
+        self.install_dir = None
+        self.config_opts = ''
+        self.log_file = sys.stdout
+        self.cc = None
+        self.fc = None
+        self.vpath_support = True
+        self.create_install_dirs = False
+
+
+    def info(self):
+
+        sys.stdout.write("\n"
+                         "   %(s_name)s (%(l_name)s)\n"
+                         "   version: %(vers)s\n"
+                         "   url: %(url)s\n"
+                         "   package: %(pack)s\n"
+                         "   source_dir: %(src)s\n"
+                         "   install_dir: %(inst)s\n"
+                         "   config_opts: %(opts)s\n\n"
+                         % {'s_name':self.name, 'l_name':self.description,
+                            'vers':self.version, 'url':self.url,
+                            'pack':self.package,
+                            'src':self.source_dir, 'inst':self.install_dir,
+                            'opts':self.config_opts})
+
+
+    def download(self):
+
+        import urllib
+
+        try:
+            urllib.urlretrieve(self.url, self.archive)
+        except:
+            sys.stderr.write("Error while retrieving %s\n" % self.url)
+            sys.exit(1)
+
+
+    def extract(self):
+
+        import tarfile
+
+        if not tarfile.is_tarfile(self.archive):
+            sys.stderr.write("%s is not a tar archive\n" % self.archive)
+            sys.exit(1)
+
+        tar = tarfile.open(self.archive)
+
+        first_member = tar.next()
+        relative_source_dir = first_member.name.split(os.path.sep)[0]
+        self.source_dir = os.path.abspath(relative_source_dir)
+
+        try:
+            tar.extractall()
+        except AttributeError:
+            for tarinfo in tar:
+                tar.extract(tarinfo)
+
+        tar.close()
+
+
+    def install(self):
+
+        current_dir = os.getcwd()
+
+        build_dir = self.source_dir + '.build'
+        if os.path.isdir(build_dir): shutil.rmtree(build_dir)
+
+        # Create some install directories in case install script does not work
+        if self.create_install_dirs and self.install_dir is not None:
+            inc_dir = os.path.join(self.install_dir, 'include')
+            lib_dir = os.path.join(self.install_dir, 'lib')
+            for dir in [inc_dir, lib_dir]:
+                if not os.path.isdir(dir):
+                    os.makedirs(dir)
+
+        # Copy source files in build directory if VPATH feature is unsupported
+        if self.vpath_support:
+            os.makedirs(build_dir)
+        else:
+            shutil.copytree(self.source_dir, build_dir)
+        os.chdir(build_dir)
+
+        # Set command line for configure pass
+        configure = os.path.join(self.source_dir, 'configure')
+        if self.install_dir is not None:
+            configure = configure + ' --prefix=' + self.install_dir
+        configure = configure + ' ' + self.config_opts
+
+        # Add compilers
+        if self.cc is not None: configure = configure + ' CC=\"' + self.cc + '\"'
+        if self.fc is not None: configure = configure + ' FC=\"' + self.fc + '\"'
+
+        # Install the package
+        run_command(configure, "Configure", self.name, self.log_file)
+        run_command("make", "Compile", self.name, self.log_file)
+        run_command("make install", "Install", self.name, self.log_file)
+
+        # Install pdf documentation if needed
+        if self.installation_pdf == 'yes':
+            try:
+                run_command("make pdf", "Generate documentation",
+                            self.name, self.log_file)
+                run_command("make install-pdf", "Install documentation",
+                            self.name, self.log_file)
+            except:
+                pass
+
+        # Clean build directory
+        run_command("make clean", "Clean", self.name, self.log_file)
+
+        # End of installation
+        os.chdir(current_dir)
+
+#-------------------------------------------------------------------------------
+# Class definition for Metis library (to circumvent a difficult installation)
+#-------------------------------------------------------------------------------
+
+class MetisPackage(Package):
+
+    def install(self):
+
+        current_dir = os.getcwd()
+
+        if self.install_dir is not None: install_dir = self.install_dir
+        else: install_dir = '/usr'
+
+        os.chdir(self.source_dir)
+
+        run_command("make", "Compile", self.name, self.log_file)
+
+        # Install the package
+        incdir = os.path.join(install_dir, 'include')
+        bindir = os.path.join(install_dir, 'bin')
+        libdir = os.path.join(install_dir, 'lib')
+
+        if not os.path.isdir(incdir): os.makedirs(incdir)
+        if not os.path.isdir(bindir): os.makedirs(bindir)
+        if not os.path.isdir(libdir): os.makedirs(libdir)
+
+        for file in os.listdir(os.path.join(self.source_dir, "Lib")):
+            if file.find('.h') >= 0:
+                shutil.copy(os.path.join(self.source_dir, "Lib", file),
+                            os.path.join(incdir, file))
+
+        for file in ['graphchk','kmetis','mesh2dual','mesh2nodal','oemetis',
+                     'onmetis','partdmesh','partnmesh','pmetis']:
+            shutil.copy(os.path.join(self.source_dir, file),
+                        os.path.join(bindir, file))
+
+        for file in ['libmetis.a']:
+            shutil.copy(os.path.join(self.source_dir, file),
+                        os.path.join(libdir, file))
+
+        run_command("make clean", "Clean", self.name, self.log_file)
+
+        os.chdir(current_dir)
+
+#-------------------------------------------------------------------------------
+# Class definition for Code_Saturne setup
+#-------------------------------------------------------------------------------
+
+class Setup:
+
+    def __init__(self):
+
+        # Code_Saturne libraries
+        self.satlibs = ['bft', 'fvm', 'mei', 'ecs', 'ncs']
+
+        # Optional libraries
+        self.optlibs = ['cgns', 'hdf5', 'med', 'metis', 'mpi', 'libxml2', 'swig']
+
+        self.libs = self.optlibs + self.satlibs
+
+        # Code_Saturne version 
+        self.version='2.0-beta2'
+
+        # Logging file
+        self.log_file = sys.stdout
+
+        # Download packages
+        self.download = 'yes'
+
+        # Code_Saturne language (may be en/fr)
+        self.language='en'
+
+        # Code_Saturne installation with debugging symbols
+        self.debug='no'
+
+        # Default compilers
+        self.cc = None
+        self.fc = None
+        self.mpicc = None
+
+        # Disable GUI
+        self.disable_gui = 'no'
+
+        # Python interpreter path
+        self.python = None
+
+        # BLAS library path
+        self.blas = None
+
+        # SYRTHES path
+        self.syrthes = None
+
+        # Architecture name
+        self.arch = None
+
+        # Global installation prefix
+        # (if None, standard directory "/usr" will be used)
+        self.prefix = None
+
+        # Code_Saturne installation prefix
+        self.cs_prefix = None
+
+
+        # Packages definition
+        self.packages = {}
+
+        url_cs = "http://research.edf.com/fichiers/fckeditor/Commun/Innovation/logiciels/%s"
+        url_cs = "https://code-saturne.info/products/code-saturne/forums/announces/918391265/724961558/%s"
+
+        # BFT library
+
+        self.packages['bft'] = \
+            Package(name="BFT",
+                    description="Basic Functions and Tools",
+                    package="bft",
+                    version="1.1.2",
+                    archive="bft-112.tgz",
+                    url=url_cs)
+
+        # FVM library
+
+        self.packages['fvm'] = \
+            Package(name="FVM",
+                    description="Finite Volume Mesh",
+                    package="fvm",
+                    version="0.15.0",
+                    archive="fvm-0150.tgz",
+                    url=url_cs)
+
+        p = self.packages['fvm']
+        p.use_lib_mpi_wrapper = True
+
+        # MEI library
+
+        self.packages['mei'] = \
+            Package(name="MEI",
+                    description="Mathematical Expressions Interpreter",
+                    package="mei",
+                    version="1.0.1",
+                    archive="mei-101.tgz",
+                    url=url_cs)
+
+        # Code_Saturne Preprocessor
+
+        self.packages['ecs'] = \
+            Package(name="ECS",
+                    description="Code_Saturne Preprocessor",
+                    package="ecs",
+                    version="2.0-rc1",
+                    archive="ecs-200rc1.tgz",
+                    url=url_cs)
+
+        # Code_Saturne Kernel
+
+        self.packages['ncs'] = \
+            Package(name="NCS",
+                    description="Code_Saturne Kernel",
+                    package="ncs",
+                    version="2.0-rc1",
+                    archive="ncs-200rc1.tgz",
+                    url=url_cs)
+
+        p = self.packages['ncs']
+        p.use_lib_mpi_wrapper = True
+
+        # CGNS library
+
+        self.packages['cgns'] = \
+            Package(name="CGNS",
+                    description="CFD General Notation System",
+                    package="cgnslib",
+                    version="2.5.4",
+                    archive="cgnslib_2.5-4.tar.gz",
+                    url="http://sourceforge.net/projects/cgns/files/cgnslib_2.5/Release%%204/%s/download")
+
+        p = self.packages['cgns']
+        p.config_opts = "--enable-64bit --enable-lfs"
+        p.vpath_support=False
+        p.create_install_dirs=True
+
+        # HDF5 library
+
+        self.packages['hdf5'] = \
+            Package(name="HDF5",
+                    description="Hierarchical Data Format",
+                    package="hdf5",
+                    version="1.6.10",
+                    archive="hdf5-1.6.10.tar.gz",
+                    url="http://www.hdfgroup.org/ftp/HDF5/current16/src/%s")
+
+        p = self.packages['hdf5']
+        p.config_opts = "--enable-production"
+
+        # MED library
+
+        self.packages['med'] = \
+            Package(name="MED",
+                    description="Model for Exchange of Data",
+                    package="med",
+                    version="2.3.6",
+                    archive="med-fichier_2.3.6.tar.gz",
+                    url="http://files.opencascade.com/Salome/Salome5.1.3/%s")
+
+        p = self.packages['med']
+        p.config_opts = "--with-med_int=int"
+
+        # CCMIO library
+
+        self.packages['ccmio'] = \
+            Package(name="CCMIO",
+                    description="I/O library for Star-CCM files",
+                    package="libccmio",
+                    version="2.6.1",
+                    archive="libccmio-2.6.1.tar.gz",
+                    url="https://wci.llnl.gov/codes/visit/3rd_party/%s")
+
+        # Metis library
+
+        self.packages['metis'] = \
+            MetisPackage(name="Metis",
+                         description="Graph partitioner",
+                         package="metis",
+                         version="4.0.1",
+                         archive="metis-4.0.tar.gz",
+                         url="http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/%s")
+
+        # MPI library
+
+        self.packages['mpi'] = \
+            Package(name="MPI",
+                    description="Message Passing Interface",
+                    package="openmpi",
+                    version="1.4.1",
+                    archive="openmpi-1.4.1.tar.gz",
+                    url="http://www.open-mpi.org/software/ompi/v1.4/downloads/%s")
+
+        # Libxml2 library (official url "ftp://xmlsoft.org/libxml2/%s")
+
+        self.packages['libxml2'] = \
+            Package(name="libxml2",
+                    description="XML library",
+                    package="libxml2",
+                    version="2.6.32",
+                    archive="libxml2-2.6.32.tar.gz",
+                    url="ftp://fr.rpmfind.net/pub/libxml/%s")
+
+
+        p = self.packages['libxml2']
+        p.config_opts = "--with-ftp=no --with-http=no"
+
+        # Swig library
+
+        self.packages['swig'] = \
+            Package(name="Swig",
+                    description="Wrapper Python",
+                    package="swig",
+                    version="1.3.40",
+                    archive="swig-1.3.40.tar.gz",
+                    url="http://sourceforge.net/projects/swig/files/swig/swig-1.3.40/%s/download")
+
+        p = self.packages['swig']
+        p.config_opts = "--without-alllang"
+
+
+    def read_setup(self):
+        
+        #
+        # setup file reading
+        #
+        try:
+            setupFile = file('setup', mode='r')
+        except IOError:
+            sys.stderr.write('Error : opening setup file\n')
+            sys.exit(1)
+
+        shutil.copy('setup','setup_ini')
+
+        while 1:
+
+            line = setupFile.readline()
+            if line == '': break
+            if line[0] == '#': continue
+
+            # splitlines necessary to get rid of carriage return on IRIX64
+            line = line.splitlines()
+            list = line[0].split()
+
+            key = list[0]
+            
+            if len(list) > 1:
+                if key == 'download': self.download = list[1]
+                elif key == 'prefix': self.prefix = list[1]
+                elif key == 'debug': self.debug = list[1]
+                elif key == 'language': self.language = list[1]
+                elif key == 'use_arch': self.use_arch = list[1]
+                elif key == 'arch': self.arch = list[1]
+                elif key == 'compC': self.cc = list[1]
+                elif key == 'compF': self.fc = list[1]
+                elif key == 'mpiCompC': self.mpicc = list[1]
+                elif key == 'disable_gui': self.disable_gui = list[1]
+                elif key == 'python': self.python = list[1]
+                elif key == 'blas': self.blas = list[1]
+                elif key == 'syrthes': self.syrthes = list[1]
+                else:
+                    p = self.packages[key]
+                    p.use = list[2]
+                    p.installation = list[3]
+                    if (p.use == 'yes' or p.use == 'auto') \
+                            and p.installation == 'no':
+                        if list[1] != 'None':
+                            p.install_dir = list[1]
+
+        # Specify architecture name
+        if self.use_arch == 'yes' and self.arch is None:
+            self.arch = os.uname()[0] + '_' + os.uname()[4]
+
+        # Expand user variables
+        if self.prefix is not None:
+            self.prefix = os.path.expanduser(self.prefix)
+            self.prefix = os.path.expandvars(self.prefix)
+            self.prefix = os.path.abspath(self.prefix)
+
+        if self.python is not None:
+            self.python = os.path.expanduser(self.python)
+            self.python = os.path.expandvars(self.python)
+            self.python = os.path.abspath(self.python)
+
+        if self.blas is not None:
+            self.blas = os.path.expanduser(self.blas)
+            self.blas = os.path.expandvars(self.blas)
+            self.blas = os.path.abspath(self.blas)
+
+        if self.syrthes is not None:
+            self.syrthes = os.path.expanduser(self.syrthes)
+            self.syrthes = os.path.expandvars(self.syrthes)
+            self.syrthes = os.path.abspath(self.syrthes)
+
+        # Compute Code_Saturne installation prefix
+        if self.prefix is not None:
+            subdir = os.path.join('cs-' + self.version)
+            if self.arch is not None:
+                subdir = os.path.join(subdir, 'arch', self.arch)
+                if self.debug == 'yes': subdir = subdir + '_dbg'
+            self.cs_prefix= os.path.join(self.prefix, subdir)
+
+
+    def check_setup(self):
+
+        check = """
+Check the setup file and some utilities presence.
+"""
+
+        sys.stdout.write(check)
+        if verbose == 'yes':
+            sys.stdout.write("\n")
+
+        # Testing download option
+        if self.download not in ['yes', 'no']:
+            sys.stderr.write("\n*** Aborting installation:\n"
+                             "\'download\' option in the setup file "
+                             "should be \'yes\' or \'no\'.\n"
+                             "Please check your setup file.\n\n")
+            sys.exit(1)
+
+        # Testing debug option
+        if self.debug not in ['yes', 'no']:
+            sys.stderr.write("\n*** Aborting installation:\n"
+                             "\'debug\' option in the setup file "
+                             "should be \'yes\' or \'no\'.\n"
+                             "Please check your setup file.\n\n")
+            sys.exit(1)
+
+        # Testing debug option
+        if self.disable_gui not in ['yes', 'no']:
+            sys.stderr.write("\n*** Aborting installation:\n"
+                             "\'disable_gui\' option in the setup file "
+                             "should be \'yes\' or \'no\'.\n"
+                             "Please check your setup file.\n\n")
+            sys.exit(1)
+
+        # Testing language option
+        if self.language not in ['en', 'fr']:
+            sys.stderr.write("\n*** Aborting installation:\n"
+                             "\'language\' option in the setup file "
+                             "should be \'en\' or \'fr'.\n"
+                             "Please check your setup file.\n\n")
+            sys.exit(1)
+            
+        # Testing prefix directory
+        if self.prefix is not None and not os.path.isdir(self.prefix):
+            sys.stderr.write("\n*** Aborting installation:\n"
+                             "\'%s\' prefix directory is provided in the setup "
+                             "file but is not a directory.\n"
+                             "Please check your setup file.\n\n"
+                             % self.prefix)
+            sys.exit(1)
+
+        # Testing architecture option
+        if self.use_arch not in ['yes', 'no']:
+            sys.stderr.write("\n*** Aborting installation:\n"
+                             "\'use_arch\' option in the setup file "
+                             "should be \'yes\' or \'no\'.\n"
+                             "Please check your setup file.\n\n")
+            sys.exit(1)
+
+        # Looking for compilers provided by the user
+        for compiler in [self.cc, self.fc, self.mpicc]:
+            if compiler is not None:
+                ret = run_test(compiler)
+                if ret != 0:
+                    sys.stderr.write("\n*** Aborting installation:\n"
+                                     "\'%s\' compiler is provided in the setup "
+                                     "file but cannot be found.\n"
+                                     "Please check your setup file.\n\n"
+                                     % compiler)
+                    sys.exit(1)
+        
+        # Looking for Python executable provided by the user
+        if self.python is not None:
+            python_exe = os.path.join(self.python, 'python')
+        else:
+            python_exe = "python"
+
+        ret = run_test(python_exe)
+        if ret != 0:
+            if self.python is not None:
+                sys.stderr.write("\n*** Aborting installation:\n"
+                                 "\'%s\' Python path is provided in the setup "
+                                 "file but no executable can be found.\n"
+                                 "Please check your setup file.\n\n"
+                                 % self.python)
+            sys.exit(1)
+        else:
+            cmd = python_exe + " -c \'import sys; print sys.version[:3]\'"
+            if verbose == 'yes':
+                sys.stdout.write("     Python version is ")
+            p = subprocess.Popen(cmd,
+                                 shell=True,
+                                 stdout=subprocess.PIPE,
+                                 stderr=subprocess.STDOUT)
+
+            output = p.communicate()
+            if verbose == 'yes':
+                if p.returncode == 0:
+                    sys.stdout.write(output[0])
+
+        # Checking libraries options
+        for lib in self.libs:
+            p = self.packages[lib]
+            if p.use not in ['yes', 'no', 'auto']:
+                sys.stderr.write("\n*** Aborting installation:\n"
+                                 "\'%s\' use option in the setup file "
+                                 "should be \'yes\', \'no' or \'auto\'.\n"
+                                 "Please check your setup file.\n\n"
+                                 % lib)
+                sys.exit(1)
+            if p.installation not in ['yes', 'no']:
+                sys.stderr.write("\n*** Aborting installation:\n"
+                                 "\'%s\' install option in the setup file "
+                                 "should be \'yes\' or \'no'.\n"
+                                 "Please check your setup file.\n\n"
+                                 % lib)
+                sys.exit(1)
+            if p.installation == 'no' and p.use == 'yes':
+                if not os.path.isdir(p.install_dir):
+                    sys.stderr.write("\n*** Aborting installation:\n"
+                                     "\'%(path)s\' path is provided for "
+                                     "\'%(lib)s\' in the setup "
+                                     "file but is not a directory.\n"
+                                     "Please check your setup file.\n\n"
+                                     % {'path':p.install_dir, 'lib':lib})
+                    sys.exit(1)
+
+        # Looking for BLAS path probided by the user
+        if self.blas is not None and not os.path.isdir(self.blas):
+            sys.stderr.write("\n*** Aborting installation:\n"
+                             "\'%s\' BLAS directory is provided in the setup "
+                             "file but is not a directory.\n"
+                             "Please check your setup file.\n\n"
+                             % self.blas)
+            sys.exit(1)
+            
+        # Looking for SYRTHES path probided by the user
+        if self.syrthes is not None and not os.path.isdir(self.syrthes):
+            sys.stderr.write("\n*** Aborting installation:\n"
+                             "\'%s\' BLAS directory is provided in the setup "
+                             "file but is not a directory.\n"
+                             "Please check your setup file.\n\n"
+                             % self.syrthes)
+            sys.exit(1)
+
+        # Looking for make utility
+        ret = run_test("make")
+        if ret != 0:
+            sys.stderr.write("\n*** Aborting installation:\n"
+                             "\'make\' utility is mandatory for Code_Saturne "
+                             "compilation.\n"
+                             "Please install development tools.\n\n")
+            sys.exit(1)
+
+        # Looking for pdflatex for potential documentation compilation
+        ret = run_test("pdflatex")
+        if ret != 0:
+            sys.stderr.write("\n*** Warning: "
+                             "pdflatex utility cannot be found\n"
+                             "Code_Saturne documentation will not be "
+                             "installed\n")
+        else:
+            self.packages['ncs'].installation_pdf = 'yes'
+
+        if verbose == 'yes':
+            sys.stdout.write("\n")
+
+
+    def update_package_opts(self):
+
+        # Update log file, installation directory and compilers
+        for lib in self.libs:
+            p = self.packages[lib]
+            # Update logging file
+            p.log_file = self.log_file
+            # Installation directory
+            if p.installation == 'yes':
+                if lib in self.satlibs:
+                    p.install_dir = self.cs_prefix
+                else:
+                    subdir = os.path.join(p.package + '-' + p.version)
+                    if self.arch is not None:
+                        subdir = os.path.join(subdir, 'arch', self.arch)
+                    p.install_dir = os.path.join(self.prefix, subdir)
+            # Compilers
+            if lib in ['fvm', 'ncs'] and self.mpicc is not None:
+                p.cc = self.mpicc
+            else:
+                p.cc = self.cc
+            if lib in ['med', 'lib']:
+                p.fc = self.fc
+
+        # Update configuration options
+
+        if self.debug == 'yes':
+            for lib in self.satlibs:
+                p = self.packages[lib]
+                p.config_opts = p.config_opts + " --enable-debug"
+
+        bft = self.packages['bft']
+        fvm = self.packages['fvm']
+        mei = self.packages['mei']
+        ecs = self.packages['ecs']
+        ncs = self.packages['ncs']
+
+        cgns = self.packages['cgns']
+        hdf5 = self.packages['hdf5']
+        med= self.packages['med']
+        mpi = self.packages['mpi']
+        metis = self.packages['metis']
+        libxml2 = self.packages['libxml2']
+        swig = self.packages['swig']
+
+        # Disable GUI
+
+        if self.disable_gui == 'yes':
+            mei.installation = 'no'
+            mei.use = 'no'
+            ncs.config_opts = ncs.config_opts + " --disable-gui"
+
+        # BFT
+
+        for p in [fvm, mei, ecs, ncs]:
+            p.config_opts = p.config_opts + " --with-bft=" + bft.install_dir
+
+        # FVM
+
+        ncs.config_opts = ncs.config_opts + " --with-fvm=" + fvm.install_dir
+
+        # MEI
+
+        if mei.use == 'yes':
+            ncs.config_opts = ncs.config_opts + " --with-mei=" + mei.install_dir
+
+        # Preprocessor
+
+        ncs.config_opts = ncs.config_opts + " --with-prepro=" + ecs.install_dir
+
+        # CGNS
+
+        for p in [fvm, ecs]:
+            if cgns.use == 'no':
+                p.config_opts = p.config_opts + " --without-cgns"
+            else:
+                if cgns.install_dir is not None:
+                    p.config_opts = p.config_opts + \
+                        " --with-cgns=" + cgns.install_dir
+
+        # HDF5
+
+        if med.use == 'yes':
+            med.config_opts = med.config_opts + " --with-hdf5=" + hdf5.install_dir
+
+        for p in [fvm, ecs]:
+            if hdf5.use == 'no':
+                p.config_opts = p.config_opts + " --without-hdf5"
+            else:
+                if hdf5.install_dir is not None:
+                    p.config_opts = p.config_opts + \
+                        " --with-hdf5=" + hdf5.install_dir
+
+        # MED
+
+        for p in [fvm, ecs]:
+            if med.use == 'no':
+                p.config_opts = p.config_opts + " --without-med"
+            else:
+                if med.install_dir is not None:
+                    p.config_opts = p.config_opts + \
+                        " --with-med=" + med.install_dir
+
+        # MPI
+
+        for p in [fvm, ncs]:
+            if mpi.use == 'no' and self.mpicc is None:
+                p.config_opts = p.config_opts + " --without-mpi"
+            else:
+                if mpi.install_dir is not None:
+                    p.config_opts = p.config_opts + \
+                        " --with-mpi=" + mpi.install_dir
+
+        if mpi.use == 'yes' or self.mpicc is not None:
+            fvm.config_opts = fvm.config_opts + " --disable-mpi-io"
+
+        # Metis
+
+        if metis.use == 'no':
+            ecs.config_opts = ecs.config_opts + " --without-metis"
+        else:
+            if metis.install_dir is not None:
+                ecs.config_opts = ecs.config_opts + \
+                    " --with-metis=" + metis.install_dir
+
+        # Libxml2
+
+        if libxml2.use == 'no':
+            ncs.config_opts = ncs.config_opts + " --without-libxml2"
+        else:
+            if libxml2.install_dir is not None:
+                ncs.config_opts = ncs.config_opts + \
+                    " --with-libxml2=" + libxml2.install_dir
+            
+        # Swig
+
+        if swig.use == 'no':
+            mei.config_opts = mei.config_opts + " --disable-python-bindings"
+        else:
+            if swig.install_dir is not None:
+                mei.config_opts = mei.config_opts + \
+                    " --with-swig-exec=" + os.path.join(swig.install_dir, 'bin')
+
+        # Python
+
+        for p in [mei, ncs]:
+            if self.python is not None:
+                p.config_opts = p.config_opts + \
+                    " --with-python-exec=" + self.python
+
+        if self.python is not None:
+            swig.config_opts = swig.config_opts + \
+                " --with-python=" + os.path.dirname(self.python)
+        else:
+            swig.config_opts = swig.config_opts + " --with-python"
+
+        # BLAS
+
+        if self.blas is not None:
+            ncs.config_opts = ncs.config_opts + " --with-blas=" + self.blas
+
+        # SYRTHES
+
+        if self.syrthes is not None:
+            ncs.config_opts = ncs.config_opts + " --with-syrthes=" + self.syrthes
+
+        # Language
+
+        if self.language == 'fr':
+            ncs.config_opts = ncs.config_opts + " --enable-french"
+
+
+    def install(self):
+
+        for lib in self.libs:
+            p = self.packages[lib]
+            if p.installation == 'yes':
+                sys.stdout.write("Installation of %s\n" % p.name)
+                if self.download == 'yes':
+                    p.download()
+                p.extract()
+                if verbose == 'yes':
+                    p.info()
+                p.install()
+                p.installation = 'no'
+                self.write_setup()
+                if verbose == 'yes':
+                    sys.stdout.write("\n")
+
+
+    def write_setup(self):
+        #
+        # setup file update
+        #
+        sf = file(os.path.join(os.getcwd(), "setup"), mode='w')
+
+        setupMain = \
+"""#========================================================
+#  Setup file for Code_Saturne installation
+#========================================================
+#
+#--------------------------------------------------------
+# Download packages
+#--------------------------------------------------------
+download  %(download)s
+#
+#--------------------------------------------------------
+# Language
+#    default: "en" english
+#    others:  "fr" french
+#--------------------------------------------------------
+language  %(lang)s
+#
+#--------------------------------------------------------
+# Install Code_Saturne with debugging symbols
+#--------------------------------------------------------
+debug     %(debug)s
+#
+#--------------------------------------------------------
+# Installation directory
+#--------------------------------------------------------
+prefix    %(prefix)s
+#
+#--------------------------------------------------------
+# Architecture Name
+#--------------------------------------------------------
+use_arch  %(use_arch)s
+arch      %(arch)s
+#
+#--------------------------------------------------------
+# C compiler
+#--------------------------------------------------------
+compC     %(cc)s
+#
+#--------------------------------------------------------
+# Fortran compiler
+#--------------------------------------------------------
+compF     %(fc)s
+#
+#--------------------------------------------------------
+# MPI wrapper for C compiler
+#--------------------------------------------------------
+mpiCompC  %(mpicc)s
+#
+#--------------------------------------------------------
+# Disable Graphical user Interface
+#--------------------------------------------------------
+disable_gui  %(disable_gui)s
+#
+#--------------------------------------------------------
+# Python is mandatory to launch the Graphical User
+# Interface and to use Code_Saturne scripts.
+# It has to be compiled with PyQt 4 support.
+#
+# It is highly recommended to use the Python provided
+# by the distribution and to install PyQt through
+# the package manager if needed.
+#
+# If you need to provide your own Python, just set
+# the following variable to the bin directory of Python
+#--------------------------------------------------------
+python    %(python)s
+#
+#--------------------------------------------------------
+# BLAS For hardware-optimized Basic Linear Algebra
+# Subroutines. If no system BLAS is used, one reverts
+# to an internal BLAS emulation, which may be somewhat
+# slower.
+#
+# ATLAS (or another BLAS) should be available for most
+# platforms through the package manager. If using the
+# Intel or IBM compilers, IMKL or ESSL may be used in
+# place of ATLAS respectively.
+# For a fine-tuning of BLAS library support, it may
+# be necessary to install Code_Saturne Kernel manually.
+#--------------------------------------------------------
+blas      %(blas)s
+#
+#--------------------------------------------------------
+# SYRTHES installation path for an optional coupling.
+#
+# Only coupling with the SYRTHES thermal code version 3
+# is handled at the moment.
+#
+# SYRTHES has to be installed before Code_Saturne for
+# a correct detection. However, it is still possible to
+# update the scripts after Code_Saturne installation.
+#--------------------------------------------------------
+syrthes   %(syrthes)s
+#
+#========================================================
+#  Name     Path                      Use         Install
+#========================================================
+"""
+        setupLibSat = \
+"""#
+#--------------------------------------------------------
+# Code_Saturne kernel and module libraries
+#--------------------------------------------------------
+#
+"""
+        setupLibOpt = \
+"""#
+#--------------------------------------------------------
+# Optional packages:
+# ------------------
+#
+# MED / HDF5  For MED file format support
+#             (used by SALOME and now by Gmsh)
+#
+# CGNS        For CGNS file support
+#             (used by many meshers)
+#
+# Open MPI (or MPICH2) + Metis
+#
+#   For Linux workstations, MPI, HDF5, and even MED
+# packages may be available through the package manager.
+# HDF5 is also often available on large systems such as
+# IBM Blue Gene or Cray XT.
+#
+#   For massively parallel architectures, it is
+# recommended to use the system's default MPI library.
+#
+#   Metis is more rarely found in Linux distributions,
+# but may already be installed on massively parallel
+# machines and on clusters. For good parallel
+# performance, it is highly recommended.
+# For meshes larger than 15 million cells, Metis 5.0
+# beta is recommended, as Metis 4 may fail above
+# the 20-35 million cells. But if Metis 5.0 is chosen,
+# its installation must be done manually.
+#
+#   Libxml2 is needed to read xml files output by the
+# Graphical User Interface, and swig is needed by the
+# Graphical User Interface to handle mathematical
+# expressions. Both should be installed by you package
+# manager.
+#--------------------------------------------------------
+#
+"""
+        setupLib= \
+"""%(lib)s    %(dir)s    %(use)s  %(install)s
+"""
+        setupEnd= \
+"""#
+#========================================================
+"""
+
+        # Clean some potentially not-defined variables for output
+        if self.prefix is None: self.prefix = ''
+        if self.arch is None: self.arch = ''
+        if self.cc is None: self.cc = ''
+        if self.fc is None: self.fc = ''
+        if self.mpicc is None: self.mpicc = ''
+        if self.python is None: self.python = ''
+        if self.blas is None: self.blas = ''
+        if self.syrthes is None: self.syrthes = ''
+
+        sf.write(setupMain
+                 % { 'download':self.download, 'prefix':self.prefix,
+                     'lang':self.language, 'debug':self.debug,
+                     'use_arch':self.use_arch, 'arch':self.arch,
+                     'cc':self.cc, 'fc':self.fc, 'mpicc':self.mpicc,
+                     'disable_gui':self.disable_gui,
+                     'python':self.python, 'blas':self.blas,
+                     'syrthes':self.syrthes })
+
+        sf.write(setupLibSat)
+        for lib in self.satlibs:
+            p = self.packages[lib]
+            sf.write(setupLib % { 'lib':lib, 'dir':p.install_dir,
+                                  'use':p.use, 'install':p.installation })
+
+        sf.write(setupLibOpt)
+        for lib in self.optlibs:
+            p = self.packages[lib]
+            sf.write(setupLib % { 'lib':lib, 'dir':p.install_dir,
+                                  'use':p.use, 'install':p.installation })
+
+        sf.write(setupEnd)
+        sf.close()
+
+#-------------------------------------------------------------------------------
+# Main
+#-------------------------------------------------------------------------------
+
+if __name__ == "__main__":
+
+    # Messages
+    # --------
+    welcome = \
+        """
+        Installation of Code_Saturne
+        ____________________________
+        
+The process will take several minutes.
+You can have a look at the log file meanwhile.
+"""
+
+    finalize = \
+"""
+Before using Code_Saturne, please update your path with:
+
+  cspath=%(cspath)s
+  export PATH=$cspath:$PATH
+
+The documentation should then be available through the commands:
+  code_saturne info -g refcard
+  code_saturne info -g user
+
+"""
+
+    thanks = \
+"""
+Thank you for choosing Code_Saturne!
+
+"""
+
+    # Setup process
+    # -------------
+    sys.stdout.write(welcome)
+
+    setup = Setup()
+
+    setup.log_file = open('install_saturne.log', mode='w')
+
+    setup.read_setup()
+    setup.check_setup()
+    setup.update_package_opts()
+    setup.install()
+    
+    setup.log_file.close()
+
+    sys.stdout.write(finalize % {'cspath':os.path.join(setup.cs_prefix, 'bin')})
+    sys.stdout.write(thanks)
diff --git a/extras/installer/setup b/extras/installer/setup
new file mode 100644
index 0000000..51e72bb
--- /dev/null
+++ b/extras/installer/setup
@@ -0,0 +1,152 @@
+#========================================================
+#  Setup file for Code_Saturne installation
+#========================================================
+#
+#--------------------------------------------------------
+# Download packages
+#--------------------------------------------------------
+download  yes
+#
+#--------------------------------------------------------
+# Language
+#    default: "en" english
+#    others:  "fr" french
+#--------------------------------------------------------
+language  en
+#
+#--------------------------------------------------------
+# Install Code_Saturne with debugging symbols
+#--------------------------------------------------------
+debug     no
+#
+#--------------------------------------------------------
+# Installation directory
+#--------------------------------------------------------
+prefix    ~/opt
+#
+#--------------------------------------------------------
+# Architecture Name
+#--------------------------------------------------------
+use_arch  no
+arch
+#
+#--------------------------------------------------------
+# C compiler
+#--------------------------------------------------------
+compC     
+#
+#--------------------------------------------------------
+# Fortran compiler
+#--------------------------------------------------------
+compF     
+#
+#--------------------------------------------------------
+# MPI wrapper for C compiler
+#--------------------------------------------------------
+mpiCompC  
+#
+#--------------------------------------------------------
+# Disable Graphical user Interface
+#--------------------------------------------------------
+disable_gui  no
+#
+#--------------------------------------------------------
+# Python is mandatory to launch the Graphical User
+# Interface and to use Code_Saturne scripts.
+# It has to be compiled with PyQt 4 support.
+#
+# It is highly recommended to use the Python provided
+# by the distribution and to install PyQt through
+# the package manager if needed.
+#
+# If you need to provide your own Python, just set
+# the following variable to the bin directory of Python
+#--------------------------------------------------------
+python
+#
+#--------------------------------------------------------
+# BLAS For hardware-optimized Basic Linear Algebra
+# Subroutines. If no system BLAS is used, one reverts
+# to an internal BLAS emulation, which may be somewhat
+# slower.
+#
+# ATLAS (or another BLAS) should be available for most
+# platforms through the package manager. If using the
+# Intel or IBM compilers, IMKL or ESSL may be used in
+# place of ATLAS respectively.
+# For a fine-tuning of BLAS library support, it may
+# be necessary to install Code_Saturne Kernel manually.
+#--------------------------------------------------------
+blas      
+#
+#--------------------------------------------------------
+# SYRTHES installation path for an optional coupling.
+#
+# Only coupling with the SYRTHES thermal code version 3
+# is handled at the moment.
+#
+# SYRTHES has to be installed before Code_Saturne for
+# a correct detection. However, it is still possible to
+# update the scripts after Code_Saturne installation.
+#--------------------------------------------------------
+syrthes
+#
+#========================================================
+#  Name     Path                      Use         Install
+#========================================================
+#
+#--------------------------------------------------------
+# Code_Saturne kernel and module libraries
+#--------------------------------------------------------
+#
+bft    None    yes  yes
+fvm    None    yes  yes
+mei    None    yes  yes
+ecs    None    yes  yes
+ncs    None    yes  yes
+#
+#--------------------------------------------------------
+# Optional packages:
+# ------------------
+#
+# MED / HDF5  For MED file format support
+#             (used by SALOME and now by Gmsh)
+#
+# CGNS        For CGNS file support
+#             (used by many meshers)
+#
+# Open MPI (or MPICH2) + Metis
+#
+#   For Linux workstations, MPI, HDF5, and even MED
+# packages may be available through the package manager.
+# HDF5 is also often available on large systems such as
+# IBM Blue Gene or Cray XT.
+#
+#   For massively parallel architectures, it is
+# recommended to use the system's default MPI library.
+#
+#   Metis is more rarely found in Linux distributions,
+# but may already be installed on massively parallel
+# machines and on clusters. For good parallel
+# performance, it is highly recommended.
+# For meshes larger than 15 million cells, Metis 5.0
+# beta is recommended, as Metis 4 may fail above
+# the 20-35 million cells. But if Metis 5.0 is chosen,
+# its installation must be done manually.
+#
+#   Libxml2 is needed to read xml files output by the
+# Graphical User Interface, and swig is needed by the
+# Graphical User Interface to handle mathematical
+# expressions. Both should be installed by you package
+# manager.
+#--------------------------------------------------------
+#
+cgns       None    yes   yes
+hdf5       None    yes   yes
+med        None    yes   yes
+metis      None    yes   yes
+mpi        None    yes   yes
+libxml2    None    auto  no
+swig       None    auto  no
+#
+#========================================================
diff --git a/gui/Base/BrowserView.py b/gui/Base/BrowserView.py
index 6e67955..4e5c038 100644
--- a/gui/Base/BrowserView.py
+++ b/gui/Base/BrowserView.py
@@ -426,7 +426,11 @@ Thermophysical models
     Pulverized coal combustion
     Electrical models
     Radiative transfers
+    Conjugate heat transfer
     Atmospheric flows
+Additional scalars
+    Definition and initialization
+    Physicals properties
 Physical properties
     Reference values
     Fluid properties
@@ -435,14 +439,11 @@ Volume conditions
     Volume regions definition
     Initialization
     Head losses
-Additional scalars
-    Definition and initialization
-    Physicals properties
 Particles and droplets tracking
     Global settings
     Statistics
     Output
-Boundary conditions 
+Boundary conditions
     Definition of boundary regions
     Boundary conditions
     Particles boundary conditions
@@ -648,8 +649,10 @@ Calculation management
         Public method.
         Configures the browser with users data.
         """
-
-        # FIXME: Initialization to delete
+        try:
+            import cs_config
+        except:
+            self.setRowClose(self.tr('Mesh quality criteria'))
 
         self.setRowClose(self.tr('Particles and droplets tracking'))
         self.setRowClose(self.tr('Gas combustion'))
@@ -657,12 +660,12 @@ Calculation management
         self.setRowClose(self.tr('Pulverized coal combustion'))
         self.setRowClose(self.tr('Electrical models'))
         self.setRowClose(self.tr('Radiative transfers'))
+        self.setRowClose(self.tr('Conjugate heat transfer'))
         self.setRowClose(self.tr('Atmospheric flows'))
         self.setRowClose(self.tr('Radiative boundary conditions'))
         self.setRowClose(self.tr('Particles boundary conditions'))
         self.setRowClose(self.tr('Steady flow management'))
         self.setRowClose(self.tr('Surface solution control'))
-        self.setRowClose(self.tr('Time averages'))
         self.setRowClose(self.tr('Time step'))
         self.setRowClose(self.tr('Storage system description'))
         self.setRowClose(self.tr('Thermohydraulic parameters'))
@@ -689,13 +692,11 @@ Calculation management
         nodeSteady = nodeanal.xmlGetNode('steady_management')
 
         if nodeSteady['status'] == 'on':
-            self.setRowClose(self.tr('Time averages'))
             self.setRowClose(self.tr('Time step'))
             self.setRowOpen(self.tr('Steady flow management'))
         else:
             nodeSteady['status'] = 'off'
             self.setRowClose(self.tr('Steady flow management'))
-            self.setRowOpen(self.tr('Time averages'))
             self.setRowOpen(self.tr('Time step'))
 
         # Multi-phase flow
@@ -733,6 +734,7 @@ Calculation management
             self.setRowClose(self.tr('Thermal model'))
             self.setRowOpen(self.tr('Gas combustion'))
             self.setRowOpen(self.tr('Radiative transfers'))
+            self.setRowOpen(self.tr('Conjugate heat transfer'))
             if node5.xmlGetAttribute('model') != 'off':
                 self.setRowOpen(self.tr('Radiative boundary conditions'))
 
@@ -741,6 +743,7 @@ Calculation management
             self.setRowOpen(self.tr('Current species'))
             self.setRowOpen(self.tr('Pulverized coal combustion'))
             self.setRowOpen(self.tr('Radiative transfers'))
+            self.setRowOpen(self.tr('Conjugate heat transfer'))
             if node5.xmlGetAttribute('model') != 'off':
                 self.setRowOpen(self.tr('Radiative boundary conditions'))
 
@@ -748,6 +751,7 @@ Calculation management
             self.setRowClose(self.tr('Thermal model'))
             self.setRowOpen(self.tr('Electrical models'))
             self.setRowOpen(self.tr('Radiative transfers'))
+            self.setRowOpen(self.tr('Conjugate heat transfer'))
             if node5.xmlGetAttribute('model') != 'off':
                 self.setRowOpen(self.tr('Radiative boundary conditions'))
 
@@ -755,6 +759,7 @@ Calculation management
             self.setRowClose(self.tr('Thermal model'))
             self.setRowOpen(self.tr('Atmospheric flows'))
             self.setRowOpen(self.tr('Radiative transfers'))
+            self.setRowOpen(self.tr('Conjugate heat transfer'))
             if node5.xmlGetAttribute('model') != 'off':
                 self.setRowOpen(self.tr('Radiative boundary conditions'))
 
@@ -762,6 +767,7 @@ Calculation management
             self.setRowOpen(self.tr('Thermal model'))
             if node4.xmlGetAttribute('model') != 'off':
                 self.setRowOpen(self.tr('Radiative transfers'))
+                self.setRowOpen(self.tr('Conjugate heat transfer'))
                 if node5.xmlGetAttribute('model') != 'off':
                     self.setRowOpen(self.tr('Radiative boundary conditions'))
 
@@ -775,7 +781,7 @@ Calculation management
 
     def __hideRow(self):
         """Only for developpement purpose"""
-        self.setRowClose(self.tr('Head losses'))
+        #self.setRowClose(self.tr('Head losses'))
         self.setRowClose(self.tr('Current species'))
 
 
diff --git a/gui/Base/CommandLine.py b/gui/Base/CommandLine.py
deleted file mode 100644
index a3e0d32..0000000
--- a/gui/Base/CommandLine.py
+++ /dev/null
@@ -1,209 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-#
-#-------------------------------------------------------------------------------
-#
-#     This file is part of the Code_Saturne User Interface, element of the
-#     Code_Saturne CFD tool.
-#
-#     Copyright (C) 1998-2009 EDF S.A., France
-#
-#     contact: saturne-support at edf.fr
-#
-#     The Code_Saturne User Interface is free software; you can redistribute it
-#     and/or modify it under the terms of the GNU General Public License
-#     as published by the Free Software Foundation; either version 2 of
-#     the License, or (at your option) any later version.
-#
-#     The Code_Saturne User Interface is distributed in the hope that it will be
-#     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-#     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#     GNU General Public License for more details.
-#
-#     You should have received a copy of the GNU General Public License
-#     along with the Code_Saturne Kernel; if not, write to the
-#     Free Software Foundation, Inc.,
-#     51 Franklin St, Fifth Floor,
-#     Boston, MA  02110-1301  USA
-#
-#-------------------------------------------------------------------------------
-
-"""
-This module describes what to do when the line command is parsed.
-
-This module defines the following functions:
-- usage
-- process_cmd_line
-"""
-
-#-------------------------------------------------------------------------------
-# Library modules import
-#-------------------------------------------------------------------------------
-
-import os, sys, types, string, getopt
-
-#-------------------------------------------------------------------------------
-# Application modules import
-#-------------------------------------------------------------------------------
-
-#-------------------------------------------------------------------------------
-# Usage/help message
-#-------------------------------------------------------------------------------
-
-def usage():
-    """
-    Usage of the GUI.
-    """
-    txt="""
-Usage:\n\ncs_gui [options]... [xml file name]
-
-Valid options are one or more of the following:
-
--f [xml file name]
---file [xml file name]
-
-     Upload a previous case at the interface start.
-
--n
---new
-
-     Open a new case. None effect if '-f' option is used.
-
--v
---version
-
-     Prints the GUI version.
-
--h
---help
-
-     Prints this help message.
-
--z
---no-splash
-
-     Without splash screen.
-
--m
---matisse
-
-    Load matisse version.
-
--b [batchfile]
---batch (batchfile]
-
-    Set batchrunning window with batch file
-    (-f or --file option is mandatory).
-
--t
---no-tree
-
-    No tree window loaded.
-
-
-Examples:
-
-     cs_gui -f name_of_file.xml
-
-     cs_gui --file name_of_file.xml
-
-     cs_gui -n
-
-----------------------------------------------------------------------
-"""
-    return txt
-
-
-#-------------------------------------------------------------------------------
-# Processes the passed command line arguments
-#-------------------------------------------------------------------------------
-
-
-def process_cmd_line (arg):
-    """
-    Processes the passed command line arguments.
-
-    Input Argument:
-      arg -- This can be either a list of arguments as in
-             sys.argv[1:] or a string that is similar to the one
-             passed on the command line.  If it is a string the
-             string is split to create a list of arguments.
-    Returned Values:
-      case -- Name of the file. If the variable case is set 
-              to "new case" GUI is open with a new case.
-    """
-
-    # The "-n" option has none effect when "-f" is used
-    #
-    if ( ('-n' in arg) or ('--new' in arg) ) and \
-       ( ('-f' in arg) or ('--file' in arg) ):
-        try:
-            del arg[arg.index('-n')]
-        except:
-            del arg[arg.index('--new')]
-
-    # When xml file name is the only one argument
-    #
-    if type(arg) is types.StringType:
-        arg = "-f " + arg
-        arg = string.split(arg)
-
-    options = "f:b:mntrz"
-    long_opts = ['file=', 'batch=', 'matisse', 'new', 'no-tree', 'read-only', 'no-splash']
-
-    try:
-        opts, args = getopt.getopt(arg, options, long_opts)
-    except getopt.error, msg:
-        print "\nWarning:\n", msg
-        print usage()
-        print "Warning:\n", msg, "\n"
-        sys.exit(1)
-
-    if (opts and args) or len(args) > 1: 
-        print usage()
-        sys.exit(1)
-
-    case = ""
-    matisse = False
-    batch_window = False
-    batch_file = 'lance'
-    tree_window = True
-    read_only = False
-    splash = True
-
-    if not opts and args :
-        case = args[0]
-
-    for o, a in opts:
-
-        if o in ('-f', '--file'):
-            case = a
-
-        if o in ('-n', '--new'):
-            case = "new case"
-
-        if o in ('-m', '--matisse'):
-            matisse = True
-
-        if o in ('-b', '--batch'):
-            batch_window = True
-            batch_file = os.path.basename(a)
-            if not case:
-                print usage()
-                sys.exit(1)
-
-        if o in ('-z', '--no-splash'):
-            splash = False
-
-        if o in ('-t', '--no-tree'):
-            tree_window = False
-
-        if o in ('-r', '--read-only'):
-            read_only = True
-
-
-    return case, splash, matisse, batch_window, batch_file, tree_window, read_only
-
-
-#-------------------------------------------------------------------------------
-# End
-#-------------------------------------------------------------------------------
diff --git a/gui/Base/Common.py b/gui/Base/Common.py
index 5176bbd..52b9bf7 100644
--- a/gui/Base/Common.py
+++ b/gui/Base/Common.py
@@ -42,27 +42,17 @@ import os
 #-------------------------------------------------------------------------------
 
 #-------------------------------------------------------------------------------
-# Version number
-#-------------------------------------------------------------------------------
-
-base_path = os.path.dirname(os.path.abspath(__file__))
-version = os.path.join(os.path.dirname(base_path), "VERSION")
-
-f = open(version,'r')
-VERSION = f.read()
-f.close()
-
-#-------------------------------------------------------------------------------
 # Global Parameters
 #-------------------------------------------------------------------------------
 
 # xml_doc_version modifie le 10/12/07
-XML_DOC_VERSION = "1.0"
+XML_DOC_VERSION = "2.0"
 
 LABEL_LENGTH_MAX = 32
 
+base_path = os.path.dirname(os.path.abspath(__file__))
 icon_base_path = os.path.join(base_path, 'icons')
 
 #-------------------------------------------------------------------------------
 # End of Common
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Base/IdView.py b/gui/Base/IdView.py
index f219927..8932c63 100644
--- a/gui/Base/IdView.py
+++ b/gui/Base/IdView.py
@@ -49,7 +49,7 @@ from PyQt4 import QtGui, QtCore
 from IdForm import Ui_IdForm
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class IdView(QtGui.QWidget, Ui_IdForm):
diff --git a/gui/Base/MainView.py b/gui/Base/MainView.py
index 0a43ce2..4d78333 100644
--- a/gui/Base/MainView.py
+++ b/gui/Base/MainView.py
@@ -64,7 +64,7 @@ import XMLengine
 from XMLinitialize import *
 from XMLmodel import *
 from Toolbox import GuiParam, displaySelectedPage
-from Common import VERSION, XML_DOC_VERSION
+from Common import XML_DOC_VERSION
 
 try:
     import Pages
@@ -99,7 +99,7 @@ class MainView(QMainWindow, Ui_MainForm):
                  cmd_batch_file   = 'runcase',
                  cmd_tree_window  = True,
                  cmd_read_only    = False,
-                 cmd_salome       = False):
+                 cmd_salome       = None):
         """
         Initializes a Main Window for a new document:
           1. finish the Main Window layout
@@ -827,12 +827,14 @@ class MainView(QMainWindow, Ui_MainForm):
          - version
          - contact
         """
-        msg = "Code_Saturne\n"                              +\
-              "version " + VERSION + "\n"                   +\
-              "For information about this application "     +\
-              "please contact:\n\n"                         +\
-              "saturne-support at edf.fr\n\n"                  +\
-              "Please visit our site:\n"                    +\
+        import cs_config
+
+        msg = "Code_Saturne\n"                                +\
+              "version " + cs_config.package.version + "\n\n" +\
+              "For information about this application "       +\
+              "please contact:\n\n"                           +\
+              "saturne-support at edf.fr\n\n"                    +\
+              "Please visit our site:\n"                      +\
               "http://www.code-saturne.org"
         QMessageBox.about(self, 'Code_Saturne Interface', msg)
 
diff --git a/gui/Base/Makefile.am b/gui/Base/Makefile.am
index 24c233c..66d795f 100644
--- a/gui/Base/Makefile.am
+++ b/gui/Base/Makefile.am
@@ -20,25 +20,12 @@
 #   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #-------------------------------------------------------------------------------
 
-all-local:
-	@$(PYTHON) $(top_srcdir)/gui/sbin/mkpyqt.py --build $(srcdir)
+# Python files
 
-clean-local:
-	@$(PYTHON) $(top_srcdir)/gui/sbin/mkpyqt.py --clean $(srcdir)
-
-# Install Python library
-
-basedir = $(pkgpythondir)/Base
-base_PYTHON = \
-__init__.py \
-resource_base_rc.py \
-BrowserForm.py \
+PYFILES = \
 BrowserView.py \
-CommandLine.py \
 Common.py \
-IdForm.py \
 IdView.py \
-MainForm.py \
 MainView.py \
 QtPage.py \
 Toolbox.py \
@@ -46,3 +33,44 @@ XMLengine.py \
 XMLinitialize.py \
 XMLmodel.py \
 XMLvariables.py
+
+# PyQt User Interface files
+
+UIFILES = \
+BrowserForm.ui \
+IdForm.ui \
+MainForm.ui
+
+# PyQt Resources files
+
+QRCFILES = \
+resource_base.qrc
+
+# Generated files
+
+FORMS = $(UIFILES:.ui=.py)
+RESOURCES = $(QRCFILES:.qrc=_rc.py)
+
+# Specific rules
+
+SUFFIXES = .ui .qrc _rc.py
+
+.ui.py:
+	$(PYUIC4) -o $@ $<
+
+.qrc_rc.py:
+	$(PYRCC4) -o $@ $<
+
+all-local: $(FORMS) $(RESOURCES)
+
+clean-local:
+	-rm -f $(FORMS) $(RESOURCES)
+
+# Install Python library
+
+basedir = $(pkgpythondir)/Base
+base_PYTHON = \
+__init__.py \
+$(FORMS) \
+$(RESOURCES) \
+$(PYFILES)
\ No newline at end of file
diff --git a/gui/Base/Makefile.in b/gui/Base/Makefile.in
index 7b9924f..9c8c229 100644
--- a/gui/Base/Makefile.in
+++ b/gui/Base/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -35,10 +36,13 @@
 #   Free Software Foundation, Inc.,
 #   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #-------------------------------------------------------------------------------
+
+# Python files
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -61,6 +65,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -76,6 +81,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -83,9 +89,23 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(basedir)"
-basePYTHON_INSTALL = $(INSTALL_DATA)
 py_compile = $(top_srcdir)/config/py-compile
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -130,6 +150,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -166,11 +188,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -185,15 +205,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -238,7 +261,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -255,8 +279,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -279,19 +306,10 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-
-# Install Python library
-basedir = $(pkgpythondir)/Base
-base_PYTHON = \
-__init__.py \
-resource_base_rc.py \
-BrowserForm.py \
+PYFILES = \
 BrowserView.py \
-CommandLine.py \
 Common.py \
-IdForm.py \
 IdView.py \
-MainForm.py \
 MainView.py \
 QtPage.py \
 Toolbox.py \
@@ -300,21 +318,50 @@ XMLinitialize.py \
 XMLmodel.py \
 XMLvariables.py
 
+
+# PyQt User Interface files
+UIFILES = \
+BrowserForm.ui \
+IdForm.ui \
+MainForm.ui
+
+
+# PyQt Resources files
+QRCFILES = \
+resource_base.qrc
+
+
+# Generated files
+FORMS = $(UIFILES:.ui=.py)
+RESOURCES = $(QRCFILES:.qrc=_rc.py)
+
+# Specific rules
+SUFFIXES = .ui .qrc _rc.py
+
+# Install Python library
+basedir = $(pkgpythondir)/Base
+base_PYTHON = \
+__init__.py \
+$(FORMS) \
+$(RESOURCES) \
+$(PYFILES)
+
 all: all-am
 
 .SUFFIXES:
+.SUFFIXES: .ui .qrc _rc.py .py
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gui/Base/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gui/Base/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gui/Base/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gui/Base/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -332,6 +379,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -341,15 +389,20 @@ clean-libtool:
 install-basePYTHON: $(base_PYTHON)
 	@$(NORMAL_INSTALL)
 	test -z "$(basedir)" || $(MKDIR_P) "$(DESTDIR)$(basedir)"
-	@list='$(base_PYTHON)'; dlist=''; for p in $$list; do\
+	@list='$(base_PYTHON)'; dlist=; list2=; test -n "$(basedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
 	  if test -f $$b$$p; then \
-	    f=$(am__strip_dir) \
+	    $(am__strip_dir) \
 	    dlist="$$dlist $$f"; \
-	    echo " $(basePYTHON_INSTALL) '$$b$$p' '$(DESTDIR)$(basedir)/$$f'"; \
-	    $(basePYTHON_INSTALL) "$$b$$p" "$(DESTDIR)$(basedir)/$$f"; \
+	    list2="$$list2 $$b$$p"; \
 	  else :; fi; \
 	done; \
+	for file in $$list2; do echo $$file; done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(basedir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(basedir)" || exit $$?; \
+	done || exit $$?; \
 	if test -n "$$dlist"; then \
 	  if test -z "$(DESTDIR)"; then \
 	    PYTHON=$(PYTHON) $(py_compile) --basedir "$(basedir)" $$dlist; \
@@ -360,12 +413,17 @@ install-basePYTHON: $(base_PYTHON)
 
 uninstall-basePYTHON:
 	@$(NORMAL_UNINSTALL)
-	@list='$(base_PYTHON)'; dlist=''; for p in $$list; do\
-	  f=$(am__strip_dir) \
-	  rm -f "$(DESTDIR)$(basedir)/$$f"; \
-	  rm -f "$(DESTDIR)$(basedir)/$${f}c"; \
-	  rm -f "$(DESTDIR)$(basedir)/$${f}o"; \
-	done
+	@list='$(base_PYTHON)'; test -n "$(basedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	filesc=`echo "$$files" | sed 's|$$|c|'`; \
+	fileso=`echo "$$files" | sed 's|$$|o|'`; \
+	echo " ( cd '$(DESTDIR)$(basedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(basedir)" && rm -f $$files || exit $$?; \
+	echo " ( cd '$(DESTDIR)$(basedir)' && rm -f" $$filesc ")"; \
+	cd "$(DESTDIR)$(basedir)" && rm -f $$filesc || exit $$?; \
+	echo " ( cd '$(DESTDIR)$(basedir)' && rm -f" $$fileso ")"; \
+	cd "$(DESTDIR)$(basedir)" && rm -f $$fileso
 tags: TAGS
 TAGS:
 
@@ -389,13 +447,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -426,6 +488,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -444,6 +507,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -452,18 +517,28 @@ install-data-am: install-basePYTHON
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -500,11 +575,17 @@ uninstall-am: uninstall-basePYTHON
 	uninstall-basePYTHON
 
 
-all-local:
-	@$(PYTHON) $(top_srcdir)/gui/sbin/mkpyqt.py --build $(srcdir)
+.ui.py:
+	$(PYUIC4) -o $@ $<
+
+.qrc_rc.py:
+	$(PYRCC4) -o $@ $<
+
+all-local: $(FORMS) $(RESOURCES)
 
 clean-local:
-	@$(PYTHON) $(top_srcdir)/gui/sbin/mkpyqt.py --clean $(srcdir)
+	-rm -f $(FORMS) $(RESOURCES)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gui/Base/QtPage.py b/gui/Base/QtPage.py
index 91f81fa..138c161 100644
--- a/gui/Base/QtPage.py
+++ b/gui/Base/QtPage.py
@@ -290,6 +290,7 @@ class IntValidator(QtGui.QIntValidator):
 
         self.exclusiveMin = False
         self.exclusiveMax = False
+        self.exclusiveValues = []
 
         self.default = 0
         self.fix = False
@@ -337,6 +338,19 @@ class IntValidator(QtGui.QIntValidator):
         self.parent.setStatusTip(QtCore.QString(msg))
 
 
+    def setExclusiveValues(self, l):
+        if type(l) != list and type(l) != tuple:
+            raise ValueError, "The given parameter is not a list or a tuple."
+        self.exclusiveValues = l
+
+        msg = ""
+        for v in l:
+            if self.__min > vmin or self.__max < vmax:
+                msg = self.tr("All integers value must be greater than %i and lower than %i" % (self.__min, self.__max))
+
+        self.parent.setStatusTip(QtCore.QString(msg))
+
+
     def setFixup(self, v):
         if type(v) != int:
             raise ValueError, "The given parameter is not an integer."
@@ -366,7 +380,9 @@ class IntValidator(QtGui.QIntValidator):
         if state == QtGui.QValidator.Acceptable:
             if self.exclusiveMin and x == self.bottom():
                 state = QtGui.QValidator.Intermediate
-            if self.exclusiveMax and x == self.top():
+            elif self.exclusiveMax and x == self.top():
+                state = QtGui.QValidator.Intermediate
+            elif x in self.exclusiveValues:
                 state = QtGui.QValidator.Intermediate
 
         palette = self.parent.palette()
@@ -488,7 +504,7 @@ class DoubleValidator(QtGui.QDoubleValidator):
         if state == QtGui.QValidator.Acceptable:
             if self.exclusiveMin and x == self.bottom():
                 state = QtGui.QValidator.Intermediate
-            if self.exclusiveMax and x == self.top():
+            elif self.exclusiveMax and x == self.top():
                 state = QtGui.QValidator.Intermediate
 
         palette = self.parent.palette()
diff --git a/gui/Base/Toolbox.py b/gui/Base/Toolbox.py
index 3057808..1e127ff 100644
--- a/gui/Base/Toolbox.py
+++ b/gui/Base/Toolbox.py
@@ -100,10 +100,6 @@ def displaySelectedPage(page_name, root, case, stbar=None, study=None, tree=None
         import Pages.SolutionDomainView as Page
         thisPage = Page.SolutionDomainView(root, case, stbar)
 
-    elif page_name == tr("Wall thermal coupling"):
-        import Pages.SyrthesView as Page
-        thisPage = Page.SyrthesView(root, case)
-
     elif page_name == tr("Mesh quality criteria"):
         import Pages.SolutionVerifView as Page
         thisPage = Page.SolutionVerifView(root, case)
@@ -176,13 +172,17 @@ def displaySelectedPage(page_name, root, case, stbar=None, study=None, tree=None
         import Pages.ThermalRadiationView as Page
         thisPage = Page.ThermalRadiationView(root, case, tree)
 
+    elif page_name == tr("Conjugate heat transfer"):
+        import Pages.ConjugateHeatTransferView as Page
+        thisPage = Page.ConjugateHeatTransferView(root, case)
+
     elif page_name == tr("Initialization"):
         import Pages.InitializationView as Page
         thisPage = Page.InitializationView(root, case, stbar)
 
     elif page_name == tr("Head losses"):
         import Pages.HeadLossesView as Page
-        thisPage = Page.HeadLossesView(root, case, stbar)
+        thisPage = Page.HeadLossesView(root, case)
 
     elif page_name == tr("Reference values"):
         import Pages.ReferenceValuesView as Page
@@ -298,11 +298,11 @@ def displaySelectedPage(page_name, root, case, stbar=None, study=None, tree=None
 
     elif page_name == tr("Fluid structure interaction"):
         import Pages.FluidStructureInteractionView as Page
-        thisPage = Page.FluidStructureInteractionView(root, case)   
+        thisPage = Page.FluidStructureInteractionView(root, case)
 
     elif page_name == tr("Atmospheric flows"):
         import Pages.AtmosphericFlowsView as Page
-        thisPage = Page.AtmosphericFlowsView(root, case)   
+        thisPage = Page.AtmosphericFlowsView(root, case)
 
 
     else:
@@ -330,13 +330,13 @@ def dicoLabel(name):
     Correspondence between the names and the labels according to
     whether one is in French or in English.
     """
-    for (n, labF, labE) in [('velocity_U',           "VitesseX", "VelocitU"),
-                            ('velocity_V',           "VitesseY", "VelocitV"),
-                            ('velocity_W',           "VitesseZ", "VelocitW"),
+    for (n, labF, labE) in [('velocity_U',           "VitesseX", "VelocityX"),
+                            ('velocity_V',           "VitesseY", "VelocityY"),
+                            ('velocity_W',           "VitesseZ", "VelocityZ"),
                             ('pressure',             "Pression", "Pressure"),
                             ('turb_k',               "EnerTurb", "TurbEner"),
                             ('turb_eps',             "Dissip",   "Dissip"),
-                            ('turb_viscosity',       "visc. tu", "turb. vi"),
+                            ('turb_viscosity',       "ViscTurb", "TurbVisc"),
                             ('component_R11',        "R11",      "R11"),
                             ('component_R22',        "R22",      "R22"),
                             ('component_R33',        "R33",      "R33"),
@@ -344,19 +344,19 @@ def dicoLabel(name):
                             ('component_R13',        "R13",      "R13"),
                             ('component_R23',        "R23",      "R23"),
                             ('turb_phi',             "phi",  "phi"),
-                            ('turb_fb',              "fb",   "fb"),
+                            ('turb_fb',              "f_barre",   "f_bar"),
                             ('turb_omega',           "omega",    "omega"),
                             ('smagorinsky_constant', "Csdyn2",   "Csdyn2"),
-                            ('temperature_celsius',  "Temp.C",   "Temp.C"),
-                            ('temperature_kelvin',   "Temp.K",   "Temp.K"),
-                            ('enthalpy',             "Enthal.",  "Enthalpy"),
-                            ('density',              "Masse vo", "Density"),
-                            ('molecular_viscosity',  "Visc. la", "Lam. vis"),
-                            ('specific_heat',        "Ch.spec.", "Sp. heat"),
-                            ('thermal_conductivity', "Cond. th", "Th. cond"),
-                            ('local_time_step',      "pdtlocal", "loc.time"),
-                            ('courant_number',       "Nb Courant", "Courant nb"),
-                            ('fourier_number',       "Nb Fourier", "Fourier nb"),
+                            ('temperature_celsius',  "TempC",   "TempC"),
+                            ('temperature_kelvin',   "TempK",   "TempK"),
+                            ('enthalpy',             "Enthalpie",  "Enthalpy"),
+                            ('density',              "MasseVol", "Density"),
+                            ('molecular_viscosity',  "ViscLam", "LamVisc"),
+                            ('specific_heat',        "ChSpec", "SpecHeat"),
+                            ('thermal_conductivity', "CondTherm", "ThermalCond"),
+                            ('local_time_step',      "pdtlocal", "LocalTime"),
+                            ('courant_number',       "NbCourant", "CourantNb"),
+                            ('fourier_number',       "NbFourier", "FourierNb"),
                             ('weight_matrix_X',      "VPsolve1",       "VPsolve1"),
                             ('weight_matrix_Y',      "VPsolve2",       "VPsolve2"),
                             ('weight_matrix_Z',      "VPsolve3",       "VPsolve3")]:
diff --git a/gui/Base/XMLengine.py b/gui/Base/XMLengine.py
index 93b0497..354aa2f 100644
--- a/gui/Base/XMLengine.py
+++ b/gui/Base/XMLengine.py
@@ -44,7 +44,7 @@ This module defines the following classes:
 # String for the root node of the xml document from the case
 #-------------------------------------------------------------------------------
 
-rootNode = '<Code_Saturne_GUI study="" case="" version="1.0"/>'
+rootNode = '<Code_Saturne_GUI study="" case="" version="2.0"/>'
 #rootNode = '<NeptuneCFD study="" case=""/>'
 
 #-------------------------------------------------------------------------------
@@ -924,7 +924,7 @@ class XMLElement:
 ##    def writexml(self, writer, indent="", addindent="", newl=""):
 ##        """
 ##        """
-##        writer.write('<?xml version="1.0" encoding="%s" ?>\n' % enc)
+##        writer.write('<?xml version="2.0" encoding="%s" ?>\n' % enc)
 ##        for node in self.childNodes:
 ##            node.writexml(writer, indent, addindent, newl)
 
@@ -948,7 +948,7 @@ class XMLDocument(XMLElement):
     def root(self):
         """
         This function return the only one root element of the document
-        (higher level of ELEMENT_NODE after the <?xml version="1.0" ?> markup).
+        (higher level of ELEMENT_NODE after the <?xml version="2.0" ?> markup).
         """
         return self._inst(self.doc.documentElement)
 
@@ -1458,12 +1458,12 @@ class XMLengineTestCase(unittest.TestCase):
         d = XMLDocument()
         d.parseString(u'<français a="àùè">tâché</français>')
 
-        t = u'<?xml version="1.0" encoding="utf-8"?>\n' \
+        t = u'<?xml version="2.0" encoding="utf-8"?>\n' \
             u'<français a="àùè">tâché</français>'
         t = t.encode(enc)
         assert d.toString() == t, 'Could not use the parseString method with utf-8 encoding'
 
-        t = u'<?xml version="1.0" encoding="utf-8"?>\n' \
+        t = u'<?xml version="2.0" encoding="utf-8"?>\n' \
             u'<français a="àùè">\n\ttâché\n</français>\n'
         t = t.encode(enc)
         assert d.toPrettyString() == t, 'Could not use the parseString method with utf-8 encoding'
@@ -1703,7 +1703,7 @@ class XMLchek:
 ##class _Document(Document):
 ##
 ##    def writexml(self, writer, indent="", addindent="", newl=""):
-##        writer.write('<?xml version="1.0" encoding="%s" ?>\n' % enc)
+##        writer.write('<?xml version="2.0" encoding="%s" ?>\n' % enc)
 ##        for node in self.childNodes:
 ##            node.writexml(writer, indent, addindent, newl)
 ##
@@ -1843,7 +1843,7 @@ if __name__ == "__main__":
                       "- Type:", field.xmlGetAttribute("type")
 
 
-    ndoc.parseString('<?xml version="1.0" encoding="utf-8" ?><foo><baré/></foo>')
+    ndoc.parseString('<?xml version="2.0" encoding="utf-8" ?><foo><baré/></foo>')
     print "1 XML DOC:\n", ndoc
 
     ndoc.parse("../misc/foo.txt")
diff --git a/gui/Base/XMLinitialize.py b/gui/Base/XMLinitialize.py
index 91b0d9b..93e2524 100644
--- a/gui/Base/XMLinitialize.py
+++ b/gui/Base/XMLinitialize.py
@@ -91,6 +91,7 @@ class XMLinit(Variables):
         # Create the missing heading.
 
         self.initHeading()
+        self.backwardCompatibility()
 
         # Initialization (order is important, see turbulenceModelsList method)
 
@@ -192,6 +193,14 @@ class XMLinit(Variables):
                 self._errorExit(msg)
 
 
+    def backwardCompatibility(self):
+        """
+        Change XML in order to ensure backward compatibility.
+        """
+        for node in self.case.xmlGetNodeList('initial_value', 'zone'):
+            n = self.case.xmlGetNode('zone', name = node['zone'])
+            node['label'] = n['label']
+
 #-------------------------------------------------------------------------------
 # XMLinit test case
 #-------------------------------------------------------------------------------
@@ -242,15 +251,15 @@ class XMLinitTestCase(unittest.TestCase):
         '<thermophysical_models>'\
                 '<velocity_pressure>'\
                         '<variable label="Pressure" name="pressure"/>'\
-                        '<variable label="VelocitU" name="velocity_U"/>'\
-                        '<variable label="VelocitV" name="velocity_V"/>'\
-                        '<variable label="VelocitW" name="velocity_W"/>'\
+                        '<variable label="VelocityX" name="velocity_U"/>'\
+                        '<variable label="VelocityY" name="velocity_V"/>'\
+                        '<variable label="VelocityZ" name="velocity_W"/>'\
                         '<property label="total_pressure" name="total_pressure"/>'\
                 '</velocity_pressure>'\
                 '<turbulence model="k-epsilon">'\
                         '<variable label="TurbEner" name="turb_k"/>'\
                         '<variable label="Dissip" name="turb_eps"/>'\
-                        '<property label="turb. vi" name="turb_viscosity"/>'\
+                        '<property label="TurbVisc" name="turb_viscosity"/>'\
                         '<initialization choice="reference_velocity">'\
                                 '<reference_velocity>1.0</reference_velocity>'\
                         '</initialization>'\
@@ -272,17 +281,17 @@ class XMLinitTestCase(unittest.TestCase):
                                 '<postprocessing_recording status="off"/>'\
                                 '<initial_value>1.17862</initial_value>'\
                         '</property>'\
-                        '<property choice="constant" label="Lam. vis" name="molecular_viscosity">'\
+                        '<property choice="constant" label="LamVisc" name="molecular_viscosity">'\
                                 '<listing_printing status="off"/>'\
                                 '<postprocessing_recording status="off"/>'\
                                 '<initial_value>1.83e-05</initial_value>'\
                         '</property>'\
-                        '<property choice="constant" label="Sp. heat" name="specific_heat">'\
+                        '<property choice="constant" label="SpecHeat" name="specific_heat">'\
                                 '<listing_printing status="off"/>'\
                                 '<postprocessing_recording status="off"/>'\
                                 '<initial_value>1017.24</initial_value>'\
                         '</property>'\
-                        '<property choice="constant" label="Th. cond" name="thermal_conductivity">'\
+                        '<property choice="constant" label="ThermalCond" name="thermal_conductivity">'\
                                 '<listing_printing status="off"/>'\
                                 '<postprocessing_recording status="off"/>'\
                                 '<initial_value>0.02495</initial_value>'\
@@ -294,8 +303,8 @@ class XMLinitTestCase(unittest.TestCase):
         '<analysis_control>'\
                 '<time_parameters>'\
                         '<time_step_ref>0.1</time_step_ref>'\
-                        '<property label="Nb Courant" name="courant_number">'\
-                        '<property label="Nb Fourier" name="fourier_number">'\
+                        '<property label="CourantNb" name="courant_number">'\
+                        '<property label="FourierNb" name="fourier_number">'\
                 '</time_parameters>'\
         '</analysis_control>'\
         '<calcul_management/>'\
diff --git a/gui/Base/XMLvariables.py b/gui/Base/XMLvariables.py
index 3d965a3..ad43a4b 100644
--- a/gui/Base/XMLvariables.py
+++ b/gui/Base/XMLvariables.py
@@ -72,7 +72,7 @@ class Model:
 
     def isList(self, liste):
         """This method verifies that list is not empty"""
-        if type(liste) != list: 
+        if type(liste) != list:
             msg = "There is an error: " + string.join(liste) + " is not a list\n"
             raise ValueError, msg
         return True
@@ -80,7 +80,7 @@ class Model:
 
     def isInt(self, ival):
         """This method verifies that ival is a int value"""
-        if type(ival) != int: 
+        if type(ival) != int:
             msg = "There is an error: this value " + str(ival) + " is not an integer\n"
             raise ValueError, msg
         return True
@@ -89,7 +89,7 @@ class Model:
     def isPositiveInt(self, ival):
         """This method verifies that ival is a int value > or = 0"""
         if self.isInt(ival):
-            if ival < 0: 
+            if ival < 0:
                 msg = "There is an error: this value " + str(ival) + " must not be negative\n"
                 raise ValueError, msg
         return True
@@ -98,7 +98,7 @@ class Model:
 #    def isStrictPositiveInt(self, ival):
 #        """This method verifies that ival is a int value > 0"""
 #        if self.isInt(ival):
-#            if ival <= 0: 
+#            if ival <= 0:
 #                msg = "There is an error: this value " + str(ival) + "\n"\
 #                      "must not be neither negative neither 0\n"
 #                raise ValueError, msg
@@ -108,7 +108,7 @@ class Model:
     def isIntEqual(self, ival1,  ival2):
         """This method verifies that val1 = val2"""
         if self.isInt(ival1) and self.isInt(ival2):
-            if ival1 != ival2: 
+            if ival1 != ival2:
                 msg = "There is an error: this value " + str(ival1) + "\n"\
                       "must be equal to " + str(ival2) + "\n"
                 raise ValueError, msg
@@ -117,7 +117,7 @@ class Model:
 ##    def isStrictBetweenInt(self, ival,  imin, imax):
 ##        """This method verifies that ival is in imin and imax"""
 ##        if self.isInt(ival):
-##            if ival <= imin or ival >= imax: 
+##            if ival <= imin or ival >= imax:
 ##                msg = "There is an error: this value " + str(ival) + "\n"\
 ##                      "must be strictly between " + str(imin) + "and" + str(imax) + "\n"
 ##                raise ValueError, msg
@@ -127,7 +127,7 @@ class Model:
 ##    def isBetweenInt(self, ival,  imin, imax):
 ##        """This method verifies that ival is in imin and imax"""
 ##        if self.isInt(ival):
-##            if ival < imin or ival > imax: 
+##            if ival < imin or ival > imax:
 ##                msg = "There is an error: this value " + str(ival) + "\n"\
 ##                      "must be between " + str(imin) + "and" + str(imax) + "\n"
 ##                raise ValueError, msg
@@ -146,7 +146,7 @@ class Model:
 
     def isFloat(self, val):
         """This method verifies that val is a float value > 0"""
-        if type(val) != float and type(val) != int: 
+        if type(val) != float and type(val) != int:
             msg = "There is an error: this value " + str(val) + " is not a float value\n"
             raise ValueError, msg
         return True
@@ -155,7 +155,7 @@ class Model:
     def isPositiveFloat(self, val):
         """This method verifies that val is a float value > or = 0"""
         if self.isFloat(val):
-            if val < 0: 
+            if val < 0:
                 msg = "There is an error: this value " + str(val) + " must not be negative\n"
                 raise ValueError, msg
         return True
@@ -164,7 +164,7 @@ class Model:
     def isStrictPositiveFloat(self, val):
         """This method verifies that val is a float value > 0"""
         if self.isFloat(val):
-            if val <= 0: 
+            if val <= 0:
                 msg = "There is an error: this value " + str(val) + "\n"\
                       "must not be neither negative neither 0\n"
                 raise ValueError, msg
@@ -174,7 +174,7 @@ class Model:
     def isFloatEqual(self, val1, val2):
         """This method verifies that val1 = val2"""
         if self.isFloat(val1) and self.isFloat(val2):
-            if val1 > (val2 + 1e-6) or val1 < (val2 - 1e-6): 
+            if val1 > (val2 + 1e-6) or val1 < (val2 - 1e-6):
                 msg = "There is an error: this value " + str(val1) + "\n"\
                       "must be equal to " + str(val2) + "\n"
                 raise ValueError, msg
@@ -184,7 +184,7 @@ class Model:
     def isGreater(self, val,  min):
         """This method verifies that val > min"""
         if self.isFloat(val):
-            if val <= min: 
+            if val <= min:
                 msg = "There is an error: this value " + str(val) + "\n"\
                       "must be greater than " + str(min) + "\n"
                 raise ValueError, msg
@@ -194,7 +194,7 @@ class Model:
     def isGreaterOrEqual(self, val,  min):
         """This method verifies that val >= min"""
         if self.isFloat(val):
-            if val < min: 
+            if val < min:
                 msg = "There is an error: this value " + str(val) + "\n"\
                       "must be greater or equal than " + str(min) + "\n"
                 raise ValueError, msg
@@ -204,7 +204,7 @@ class Model:
     def isLower(self, val,  max):
         """This method verifies that val < max"""
         if self.isFloat(val):
-            if val >= max: 
+            if val >= max:
                 msg = "There is an error: this value " + str(val) + "\n"\
                       "must be lower than " + str(max) + "\n"
                 raise ValueError, msg
@@ -214,7 +214,7 @@ class Model:
     def isLowerOrEqual(self, val,  max):
         """This method verifies that val <= max"""
         if self.isFloat(val):
-            if val > max: 
+            if val > max:
                 msg = "There is an error: this value " + str(val) + "\n"\
                       "must be lower or equal than " + str(max) + "\n"
                 raise ValueError, msg
@@ -267,7 +267,7 @@ class Variables:
     """
     This class creates <variable>, <scalar> and <property> markups.
     Each new markup has a 'name' and a 'label' attribute.
-    Each new markup has <listing_printing status='on'>, 
+    Each new markup has <listing_printing status='on'>,
     <postprocessing_recording status='on'> and several
     <probe_recording name="XX"> (if any <probe> exists) as child markups.
     """
@@ -287,7 +287,7 @@ class Variables:
 ##        default['temperature_celsius'] = 20.0
 ##        default['temperature_kelvin'] = 293.15
 ##        default['enthalpy'] = 297413.
-##    
+##
 ##        #Initial values for properties: 20 degC air at atmospheric pressure.
 ##        default['density'] = 1.17862
 ##        default['molecular_viscosity'] = 1.83e-05
@@ -425,7 +425,7 @@ class Variables:
 ##        if nodeList != None:
 ##            for node in nodeList :
 ##                node.xmlRemoveNode()
-    
+
 
     def setNewProperty(self, node, tag):
         """
@@ -577,7 +577,7 @@ def runTest():
     runner = unittest.TextTestRunner()
     runner.run(suite1())
 ##    runner.run(suite2())
-        
+
 #-------------------------------------------------------------------------------
 # Variables test case
 #-------------------------------------------------------------------------------
@@ -590,7 +590,7 @@ def runTest():
 ##        """This method is executed before all "check" methods."""
 ##        import XMLengine
 ##        self.doc = XMLengine.XMLDocument("")
-##        self.case = self.doc.parseString('<?xml version="1.0" ?>'\
+##        self.case = self.doc.parseString('<?xml version="2.0" ?>'\
 ##                                         '<Code_Saturne_GUI/>')
 ##        self.case.root().xmlAddChild('analysis_control')
 ##
diff --git a/gui/Base/__init__.py b/gui/Base/__init__.py
index 0ba72c0..8f5ddc6 100644
--- a/gui/Base/__init__.py
+++ b/gui/Base/__init__.py
@@ -29,7 +29,7 @@
 
 """
 This file makes this directory Base a Python package.
-                               ==== 
+                               ====
 """
 
 
diff --git a/gui/Makefile.am b/gui/Makefile.am
index fae1c36..9ac477b 100644
--- a/gui/Makefile.am
+++ b/gui/Makefile.am
@@ -31,5 +31,4 @@ cs_gui.py
 # Install data
 
 nobase_pkgpython_DATA = \
-$(srcdir)/Base/icons/SplashScreen/logocs.png \
-VERSION
+$(srcdir)/Base/icons/SplashScreen/logocs.png
diff --git a/gui/Makefile.in b/gui/Makefile.in
index 228887a..55ab6ce 100644
--- a/gui/Makefile.in
+++ b/gui/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -38,8 +39,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -62,6 +64,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -77,6 +80,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -91,19 +95,60 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(pkgpythondir)" \
 	"$(DESTDIR)$(pkgpythondir)"
-dist_pkgpythonPYTHON_INSTALL = $(INSTALL_DATA)
 py_compile = $(top_srcdir)/config/py-compile
-nobase_pkgpythonDATA_INSTALL = $(install_sh_DATA)
 DATA = $(nobase_pkgpython_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AR = @AR@
@@ -146,6 +191,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -182,11 +229,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -201,15 +246,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -254,7 +302,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -271,8 +320,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -305,8 +357,7 @@ cs_gui.py
 
 # Install data
 nobase_pkgpython_DATA = \
-$(srcdir)/Base/icons/SplashScreen/logocs.png \
-VERSION
+$(srcdir)/Base/icons/SplashScreen/logocs.png
 
 all: all-recursive
 
@@ -315,14 +366,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gui/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gui/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gui/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gui/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -340,6 +391,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -349,15 +401,20 @@ clean-libtool:
 install-dist_pkgpythonPYTHON: $(dist_pkgpython_PYTHON)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgpythondir)" || $(MKDIR_P) "$(DESTDIR)$(pkgpythondir)"
-	@list='$(dist_pkgpython_PYTHON)'; dlist=''; for p in $$list; do\
+	@list='$(dist_pkgpython_PYTHON)'; dlist=; list2=; test -n "$(pkgpythondir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
 	  if test -f $$b$$p; then \
-	    f=$(am__strip_dir) \
+	    $(am__strip_dir) \
 	    dlist="$$dlist $$f"; \
-	    echo " $(dist_pkgpythonPYTHON_INSTALL) '$$b$$p' '$(DESTDIR)$(pkgpythondir)/$$f'"; \
-	    $(dist_pkgpythonPYTHON_INSTALL) "$$b$$p" "$(DESTDIR)$(pkgpythondir)/$$f"; \
+	    list2="$$list2 $$b$$p"; \
 	  else :; fi; \
 	done; \
+	for file in $$list2; do echo $$file; done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgpythondir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgpythondir)" || exit $$?; \
+	done || exit $$?; \
 	if test -n "$$dlist"; then \
 	  if test -z "$(DESTDIR)"; then \
 	    PYTHON=$(PYTHON) $(py_compile) --basedir "$(pkgpythondir)" $$dlist; \
@@ -368,31 +425,40 @@ install-dist_pkgpythonPYTHON: $(dist_pkgpython_PYTHON)
 
 uninstall-dist_pkgpythonPYTHON:
 	@$(NORMAL_UNINSTALL)
-	@list='$(dist_pkgpython_PYTHON)'; dlist=''; for p in $$list; do\
-	  f=$(am__strip_dir) \
-	  rm -f "$(DESTDIR)$(pkgpythondir)/$$f"; \
-	  rm -f "$(DESTDIR)$(pkgpythondir)/$${f}c"; \
-	  rm -f "$(DESTDIR)$(pkgpythondir)/$${f}o"; \
-	done
+	@list='$(dist_pkgpython_PYTHON)'; test -n "$(pkgpythondir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	filesc=`echo "$$files" | sed 's|$$|c|'`; \
+	fileso=`echo "$$files" | sed 's|$$|o|'`; \
+	echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$files || exit $$?; \
+	echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$filesc ")"; \
+	cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$filesc || exit $$?; \
+	echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$fileso ")"; \
+	cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$fileso
 install-nobase_pkgpythonDATA: $(nobase_pkgpython_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgpythondir)" || $(MKDIR_P) "$(DESTDIR)$(pkgpythondir)"
-	@$(am__vpath_adj_setup) \
-	list='$(nobase_pkgpython_DATA)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  $(am__vpath_adj) \
-	  echo " $(nobase_pkgpythonDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgpythondir)/$$f'"; \
-	  $(nobase_pkgpythonDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgpythondir)/$$f"; \
+	@list='$(nobase_pkgpython_DATA)'; test -n "$(pkgpythondir)" || list=; \
+	$(am__nobase_list) | while read dir files; do \
+	  xfiles=; for file in $$files; do \
+	    if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+	    else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+	  test -z "$$xfiles" || { \
+	    test "x$$dir" = x. || { \
+	      echo "$(MKDIR_P) '$(DESTDIR)$(pkgpythondir)/$$dir'"; \
+	      $(MKDIR_P) "$(DESTDIR)$(pkgpythondir)/$$dir"; }; \
+	    echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(pkgpythondir)/$$dir'"; \
+	    $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(pkgpythondir)/$$dir" || exit $$?; }; \
 	done
 
 uninstall-nobase_pkgpythonDATA:
 	@$(NORMAL_UNINSTALL)
-	@$(am__vpath_adj_setup) \
-	list='$(nobase_pkgpython_DATA)'; for p in $$list; do \
-	  $(am__vpath_adj) \
-	  echo " rm -f '$(DESTDIR)$(pkgpythondir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pkgpythondir)/$$f"; \
-	done
+	@list='$(nobase_pkgpython_DATA)'; test -n "$(pkgpythondir)" || list=; \
+	$(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$files
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -401,7 +467,7 @@ uninstall-nobase_pkgpythonDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -418,7 +484,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -426,7 +492,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -452,16 +518,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -469,14 +535,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -488,7 +554,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -497,29 +563,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -540,29 +611,44 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
 	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -595,6 +681,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -613,6 +700,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -622,18 +711,28 @@ install-data-am: install-dist_pkgpythonPYTHON \
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -655,8 +754,8 @@ ps-am:
 uninstall-am: uninstall-dist_pkgpythonPYTHON \
 	uninstall-nobase_pkgpythonDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-libtool \
@@ -674,6 +773,7 @@ uninstall-am: uninstall-dist_pkgpythonPYTHON \
 	uninstall uninstall-am uninstall-dist_pkgpythonPYTHON \
 	uninstall-nobase_pkgpythonDATA
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gui/Pages/AnalysisFeaturesView.py b/gui/Pages/AnalysisFeaturesView.py
index 31cb6d7..f658815 100644
--- a/gui/Pages/AnalysisFeaturesView.py
+++ b/gui/Pages/AnalysisFeaturesView.py
@@ -105,7 +105,7 @@ class AnalysisFeaturesView(QWidget, Ui_AnalysisFeaturesForm):
         self.scal  = DefineUserScalarsModel(self.case)
         self.std   = SteadyManagementModel(self.case)
         self.atmo  = AtmosphericFlowsModel(self.case)
- 
+
         # Set models and number of elements for combo boxes
 
         self.modelSteadyFlow         = QtPage.ComboModel(self.comboBoxSteadyFlow,2,1)
@@ -171,6 +171,7 @@ class AnalysisFeaturesView(QWidget, Ui_AnalysisFeaturesForm):
 
         val = self.atmo.getAtmosphericFlowsModel()
         self.modelAtmospheric.setItem(str_model=val)
+        self.modelAtmospheric.disableItem(str_model='humid')
 
         self.modelGasCombustionModel.setItem(str_model='off') # to delete
         self.modelGasCombustionModel.disableItem(str_model='ebu') # to delete
@@ -290,7 +291,7 @@ class AnalysisFeaturesView(QWidget, Ui_AnalysisFeaturesForm):
         Private Method.
         Change to DISABLED the state of the reactive flow OptionMenu buttons.
         """
-        self.comboBoxSteadyFlow.setEnabled(False)
+        #self.comboBoxSteadyFlow.setEnabled(False)
         #self.comboBoxLagrangian.setEnabled(False)
         self.comboBoxGasCombustionModel.setEnabled(False)
         self.comboBoxPulverizedCoal.setEnabled(False)
diff --git a/gui/Pages/AtmosphericFlowsModel.py b/gui/Pages/AtmosphericFlowsModel.py
index 209753a..3a8e24d 100644
--- a/gui/Pages/AtmosphericFlowsModel.py
+++ b/gui/Pages/AtmosphericFlowsModel.py
@@ -150,12 +150,11 @@ class AtmosphericFlowsModel(Model):
         """
         Update scalars and properties depending on model
         """
+        model = self.getAtmosphericFlowsModel()
         node = self.__node_atmos
 
         # Update only if getMeteoDataStatus is not off
-        if self.getMeteoDataStatus() != AtmosphericFlowsModel.off:
-
-            model = self.getAtmosphericFlowsModel()
+        if model != AtmosphericFlowsModel.off:
 
             if model == AtmosphericFlowsModel.dry:
                 self.__removeScalar(node, 'liquid_potential_temperature')
@@ -231,7 +230,7 @@ class AtmosphericFlowsModel(Model):
         parentNode.xmlRemoveChild('property', name = nameStr)
 
 #-------------------------------------------------------------------------------
-# AtmosphericFlowsModel test case 
+# AtmosphericFlowsModel test case
 #-------------------------------------------------------------------------------
 
 class AtmosphericFlowsTestCase(ModelTest):
@@ -240,7 +239,7 @@ class AtmosphericFlowsTestCase(ModelTest):
     """
     def checkAtmosphericFlowsInstantiation(self):
         """
-        Check whether the AtmosphericFlowsModel class could be instantiated 
+        Check whether the AtmosphericFlowsModel class could be instantiated
         """
         model = None
         model = AtmosphericFlowsModel(self.case)
@@ -251,10 +250,10 @@ class AtmosphericFlowsTestCase(ModelTest):
         """Check whether the AtmosphericFlowsModel class could be set and get the model"""
         mdl = AtmosphericFlowsModel(self.case)
         mdl.setAtmosphericFlowsModel(AtmosphericFlowsModel.dry)
-        
+
         doc = """<atmospheric_flows model="dry">
                     <read_meteo_data status="off"/>
-                 </atmospheric_flows>"""       
+                 </atmospheric_flows>"""
         assert mdl.atmosphericFlowsNode() == self.xmlNodeFromString(doc), \
             'Could not set atmospheric flows model'
         assert mdl.getAtmosphericFlowsModel() == AtmosphericFlowsModel.dry, \
@@ -266,10 +265,10 @@ class AtmosphericFlowsTestCase(ModelTest):
         mdl = AtmosphericFlowsModel(self.case)
         mdl.setAtmosphericFlowsModel(AtmosphericFlowsModel.constant)
         mdl.setMeteoDataStatus('on')
-        
+
         doc = """<atmospheric_flows model="constant">
                     <read_meteo_data status="on"/>
-                 </atmospheric_flows>"""       
+                 </atmospheric_flows>"""
 
         assert mdl.atmosphericFlowsNode() == self.xmlNodeFromString(doc), \
             'Could not set meteo data status'
@@ -279,13 +278,13 @@ class AtmosphericFlowsTestCase(ModelTest):
 
     def checkDryModel(self):
         """
-        Check whether the AtmosphericFlowsModel class could set the correct 
+        Check whether the AtmosphericFlowsModel class could set the correct
         properties and scalar for dry model
         """
         mdl = AtmosphericFlowsModel(self.case)
         mdl.setAtmosphericFlowsModel(AtmosphericFlowsModel.dry)
         mdl.setMeteoDataStatus('on')
-        
+
         doc = """<atmospheric_flows model="dry">
                     <read_meteo_data status="on">
                         <scalar label="Potential temp" name="potential_temperature" type="model"/>
@@ -300,13 +299,13 @@ class AtmosphericFlowsTestCase(ModelTest):
 
     def checkHumidModel(self):
         """
-        Check whether the AtmosphericFlowsModel class could set the correct 
+        Check whether the AtmosphericFlowsModel class could set the correct
         properties and scalar for humid model
         """
         mdl = AtmosphericFlowsModel(self.case)
         mdl.setAtmosphericFlowsModel(AtmosphericFlowsModel.humid)
         mdl.setMeteoDataStatus('on')
-        
+
         doc = """<atmospheric_flows model="humid">
                     <read_meteo_data status="on">
                         <scalar label="Liq potential temp" name="liquid_potential_temperature" type="model"/>
@@ -315,7 +314,7 @@ class AtmosphericFlowsTestCase(ModelTest):
                         <property label="Real temp" name="real_temperature"/>
                         <property label="Liquid water" name="liquid_water"/>
                     </read_meteo_data>
-                </atmospheric_flows>"""       
+                </atmospheric_flows>"""
 
         assert mdl.atmosphericFlowsNode() == self.xmlNodeFromString(doc), \
             'Could not set scalars and properties for humid model'
@@ -330,7 +329,7 @@ def suite():
 
 
 def runTest():
-    """ 
+    """
     run test
     """
     print "AtmosphericFlowsTestCase"
diff --git a/gui/Pages/AtmosphericFlowsView.py b/gui/Pages/AtmosphericFlowsView.py
index 343993b..b466e58 100644
--- a/gui/Pages/AtmosphericFlowsView.py
+++ b/gui/Pages/AtmosphericFlowsView.py
@@ -49,6 +49,7 @@ from PyQt4.QtGui  import QWidget, QFileDialog, QMessageBox
 # Application modules import
 #-------------------------------------------------------------------------------
 
+from Base.Toolbox import GuiParam
 from Pages.AtmosphericFlowsForm   import Ui_AtmosphericFlowsForm
 from Pages.AtmosphericFlowsModel  import AtmosphericFlowsModel
 from Base.QtPage                  import setGreenColor
@@ -59,7 +60,7 @@ from Base.QtPage                  import setGreenColor
 
 logging.basicConfig()
 log = logging.getLogger("AtmosphericFlowsView")
-log.setLevel(logging.DEBUG)
+log.setLevel(GuiParam.DEBUG)
 
 #-------------------------------------------------------------------------------
 # Main class
@@ -78,14 +79,14 @@ class AtmosphericFlowsView(QWidget, Ui_AtmosphericFlowsForm):
         Ui_AtmosphericFlowsForm.__init__(self)
         self.setupUi(self)
 
-        # create model 
+        # create model
         model = AtmosphericFlowsModel(case)
         self.__model = model
         self.__case = case
 
         # Define connection
         self.connect(self.checkBoxMeteoData,
-                     SIGNAL("clicked(bool)"), 
+                     SIGNAL("clicked(bool)"),
                      self.__slotCheckBoxMeteoData)
         self.connect(self.pushButtonMeteoData,
                      SIGNAL("pressed()"),
diff --git a/gui/Pages/BatchRunningAdvancedOptionsDialogForm.ui b/gui/Pages/BatchRunningAdvancedOptionsDialogForm.ui
index b7b0143..1163ab8 100644
--- a/gui/Pages/BatchRunningAdvancedOptionsDialogForm.ui
+++ b/gui/Pages/BatchRunningAdvancedOptionsDialogForm.ui
@@ -5,15 +5,15 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>743</width>
-    <height>473</height>
+    <width>755</width>
+    <height>486</height>
    </rect>
   </property>
   <property name="windowTitle" >
    <string>Dialog</string>
   </property>
   <layout class="QGridLayout" name="gridLayout_2" >
-   <item row="0" column="0" >
+   <item rowspan="5" row="0" column="0" >
     <spacer name="horizontalSpacer_8" >
      <property name="orientation" >
       <enum>Qt::Horizontal</enum>
@@ -27,250 +27,183 @@
     </spacer>
    </item>
    <item row="0" column="1" >
-    <layout class="QVBoxLayout" name="verticalLayout" >
-     <item>
-      <layout class="QGridLayout" name="gridLayout" >
-       <item row="0" column="0" >
-        <widget class="QLabel" name="label" >
-         <property name="text" >
-          <string>Prefix of temporary execution
+    <layout class="QGridLayout" name="gridLayout" >
+     <item row="0" column="0" >
+      <widget class="QLabel" name="label" >
+       <property name="text" >
+        <string>Prefix of temporary execution
 directory (CS_TMP_PREFIX)</string>
-         </property>
-        </widget>
-       </item>
-       <item row="0" column="1" >
-        <spacer name="horizontalSpacer" >
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>13</width>
-           <height>34</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="0" column="2" >
-        <widget class="QLineEdit" name="lineEdit" />
-       </item>
-       <item row="0" column="3" colspan="2" >
-        <widget class="QToolButton" name="toolButton" >
-         <property name="text" >
-          <string>...</string>
-         </property>
-        </widget>
-       </item>
-       <item row="1" column="0" >
-        <widget class="QLabel" name="label_2" >
-         <property name="text" >
-          <string>Pre-processing (EXEC_PREPROCESS)</string>
-         </property>
-        </widget>
-       </item>
-       <item row="1" column="1" >
-        <spacer name="horizontalSpacer_2" >
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>13</width>
-           <height>21</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="1" column="2" colspan="3" >
-        <widget class="QComboBox" name="comboBox" />
-       </item>
-       <item row="2" column="0" >
-        <widget class="QLabel" name="label_3" >
-         <property name="text" >
-          <string>Partitioning (EXEC_PARTITION)</string>
-         </property>
-        </widget>
-       </item>
-       <item row="2" column="1" >
-        <spacer name="horizontalSpacer_3" >
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>13</width>
-           <height>37</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="2" column="2" colspan="3" >
-        <widget class="QComboBox" name="comboBox_2" >
-         <property name="sizePolicy" >
-          <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="minimumSize" >
-          <size>
-           <width>490</width>
-           <height>40</height>
-          </size>
-         </property>
-        </widget>
-       </item>
-       <item row="3" column="0" >
-        <widget class="QLabel" name="label_4" >
-         <property name="text" >
-          <string>Calculation (EXEC_KERNEL)</string>
-         </property>
-        </widget>
-       </item>
-       <item row="3" column="1" >
-        <spacer name="horizontalSpacer_4" >
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>13</width>
-           <height>21</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="3" column="2" colspan="3" >
-        <widget class="QComboBox" name="comboBox_3" />
-       </item>
-       <item row="4" column="0" >
-        <widget class="QLabel" name="label_5" >
-         <property name="text" >
-          <string>List of partitionings for use by later
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1" >
+      <widget class="QComboBox" name="comboBoxCSTMPPREFIX" />
+     </item>
+     <item row="0" column="2" >
+      <widget class="QLineEdit" name="lineEdit" />
+     </item>
+     <item row="0" column="3" >
+      <widget class="QToolButton" name="toolButton" >
+       <property name="text" >
+        <string>...</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0" >
+      <widget class="QLabel" name="label_2" >
+       <property name="text" >
+        <string>Pre-processing (EXEC_PREPROCESS)</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1" colspan="3" >
+      <widget class="QComboBox" name="comboBox" />
+     </item>
+     <item row="2" column="0" >
+      <widget class="QLabel" name="label_3" >
+       <property name="text" >
+        <string>Partitioning (EXEC_PARTITION)</string>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1" colspan="3" >
+      <widget class="QComboBox" name="comboBox_2" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize" >
+        <size>
+         <width>490</width>
+         <height>40</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item row="3" column="0" >
+      <widget class="QLabel" name="label_4" >
+       <property name="text" >
+        <string>Calculation (EXEC_KERNEL)</string>
+       </property>
+      </widget>
+     </item>
+     <item row="3" column="1" colspan="3" >
+      <widget class="QComboBox" name="comboBox_3" />
+     </item>
+     <item row="4" column="0" >
+      <widget class="QLabel" name="label_5" >
+       <property name="text" >
+        <string>List of partitionings for use by later
  calculation (PARTITION_LIST)</string>
-         </property>
-        </widget>
-       </item>
-       <item row="4" column="1" >
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>13</width>
-           <height>34</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="4" column="2" colspan="3" >
-        <widget class="QLineEdit" name="lineEdit_2" />
-       </item>
-       <item row="5" column="0" >
-        <widget class="QLabel" name="label_7" >
-         <property name="text" >
-          <string>valgrind (VALGRIND)</string>
-         </property>
-        </widget>
-       </item>
-       <item row="5" column="1" >
-        <spacer name="horizontalSpacer_7" >
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>13</width>
-           <height>25</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="5" column="2" colspan="2" >
-        <widget class="QLineEdit" name="lineEdit_3" />
-       </item>
-       <item row="5" column="4" >
-        <widget class="QToolButton" name="toolButton_2" >
-         <property name="text" >
-          <string>...</string>
-         </property>
-        </widget>
-       </item>
-       <item row="6" column="0" >
-        <widget class="QLabel" name="label_8" >
-         <property name="text" >
-          <string>List of external libraries
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="1" colspan="3" >
+      <widget class="QLineEdit" name="lineEdit_2" />
+     </item>
+     <item row="5" column="0" >
+      <widget class="QLabel" name="label_7" >
+       <property name="text" >
+        <string>valgrind (VALGRIND)</string>
+       </property>
+      </widget>
+     </item>
+     <item row="5" column="1" colspan="2" >
+      <widget class="QLineEdit" name="lineEdit_3" />
+     </item>
+     <item row="5" column="3" >
+      <widget class="QToolButton" name="toolButton_2" >
+       <property name="text" >
+        <string>...</string>
+       </property>
+      </widget>
+     </item>
+     <item row="6" column="0" >
+      <widget class="QLabel" name="label_8" >
+       <property name="text" >
+        <string>List of external libraries
  for link (CS_LIB_ADD)</string>
-         </property>
-        </widget>
-       </item>
-       <item row="6" column="1" >
-        <spacer name="horizontalSpacer_6" >
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>13</width>
-           <height>34</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="6" column="2" colspan="3" >
-        <widget class="QLineEdit" name="lineEdit_4" />
-       </item>
-       <item row="7" column="0" >
-        <widget class="QLabel" name="label_9" >
-         <property name="text" >
-          <string>Elementary test of the mesh 
+       </property>
+      </widget>
+     </item>
+     <item row="6" column="1" colspan="3" >
+      <widget class="QLineEdit" name="lineEdit_4" />
+     </item>
+     <item row="7" column="0" >
+      <widget class="QLabel" name="label_9" >
+       <property name="text" >
+        <string>Elementary test of the mesh 
  (ARG_CS_VERIF)</string>
-         </property>
-        </widget>
-       </item>
-       <item row="7" column="1" >
-        <spacer name="horizontalSpacer_5" >
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>13</width>
-           <height>34</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="7" column="2" colspan="3" >
-        <widget class="QComboBox" name="comboBox_5" />
-       </item>
-      </layout>
+       </property>
+      </widget>
+     </item>
+     <item row="7" column="1" colspan="3" >
+      <widget class="QComboBox" name="comboBox_5" />
+     </item>
+    </layout>
+   </item>
+   <item row="0" column="2" >
+    <spacer name="horizontalSpacer_9" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>3</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="1" column="1" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>20</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
      </item>
      <item>
-      <layout class="QHBoxLayout" >
-       <item>
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>20</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="QGroupBox" name="groupBox" >
-         <property name="title" >
-          <string>Output redirection management (ARG_CS_OUTPUT)</string>
-         </property>
-         <layout class="QGridLayout" >
-          <item row="0" column="0" >
-           <layout class="QHBoxLayout" >
-            <item>
+      <widget class="QGroupBox" name="groupBox" >
+       <property name="title" >
+        <string>Output redirection management (ARG_CS_OUTPUT)</string>
+       </property>
+       <layout class="QGridLayout" >
+        <item row="0" column="0" >
+         <layout class="QHBoxLayout" >
+          <item>
+           <spacer>
+            <property name="orientation" >
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>20</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <layout class="QGridLayout" >
+            <item row="0" column="0" >
+             <widget class="QLabel" name="label_10" >
+              <property name="text" >
+               <string>Redirection for single processor job or for 
+ processor rank 0 of multi-processors job (--log)</string>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="1" >
              <spacer>
               <property name="orientation" >
                <enum>Qt::Horizontal</enum>
@@ -283,153 +216,115 @@ directory (CS_TMP_PREFIX)</string>
               </property>
              </spacer>
             </item>
-            <item>
-             <layout class="QGridLayout" >
-              <item row="0" column="0" >
-               <widget class="QLabel" name="label_10" >
-                <property name="text" >
-                 <string>Redirection for single processor job or for 
- processor rank 0 of multi-processors job (--log)</string>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="1" >
-               <spacer>
-                <property name="orientation" >
-                 <enum>Qt::Horizontal</enum>
-                </property>
-                <property name="sizeHint" stdset="0" >
-                 <size>
-                  <width>20</width>
-                  <height>20</height>
-                 </size>
-                </property>
-               </spacer>
-              </item>
-              <item row="0" column="2" >
-               <widget class="QComboBox" name="comboBox_6" />
-              </item>
-              <item row="1" column="0" >
-               <widget class="QLabel" name="label_11" >
-                <property name="text" >
-                 <string>Redirection for processors from rank 1 to N-& 
+            <item row="0" column="2" >
+             <widget class="QComboBox" name="comboBox_6" />
+            </item>
+            <item row="1" column="0" >
+             <widget class="QLabel" name="label_11" >
+              <property name="text" >
+               <string>Redirection for processors from rank 1 to N-& 
  of multi-processors job (--logp)</string>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="1" >
-               <spacer>
-                <property name="orientation" >
-                 <enum>Qt::Horizontal</enum>
-                </property>
-                <property name="sizeHint" stdset="0" >
-                 <size>
-                  <width>20</width>
-                  <height>20</height>
-                 </size>
-                </property>
-               </spacer>
-              </item>
-              <item row="1" column="2" >
-               <widget class="QComboBox" name="comboBox_7" />
-              </item>
-             </layout>
+              </property>
+             </widget>
             </item>
-            <item>
+            <item row="1" column="1" >
              <spacer>
               <property name="orientation" >
                <enum>Qt::Horizontal</enum>
               </property>
               <property name="sizeHint" stdset="0" >
                <size>
-                <width>16</width>
+                <width>20</width>
                 <height>20</height>
                </size>
               </property>
              </spacer>
             </item>
+            <item row="1" column="2" >
+             <widget class="QComboBox" name="comboBox_7" />
+            </item>
            </layout>
           </item>
+          <item>
+           <spacer>
+            <property name="orientation" >
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>16</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
          </layout>
-        </widget>
-       </item>
-       <item>
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>16</width>
-           <height>16</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
+        </item>
+       </layout>
+      </widget>
      </item>
      <item>
-      <layout class="QHBoxLayout" >
-       <item>
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>20</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="QDialogButtonBox" name="buttonBox" >
-         <property name="layoutDirection" >
-          <enum>Qt::LeftToRight</enum>
-         </property>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="standardButtons" >
-          <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-         </property>
-         <property name="centerButtons" >
-          <bool>true</bool>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>16</width>
-           <height>16</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>16</width>
+         <height>16</height>
+        </size>
+       </property>
+      </spacer>
      </item>
     </layout>
    </item>
-   <item row="0" column="2" >
-    <spacer name="horizontalSpacer_9" >
-     <property name="orientation" >
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="sizeHint" stdset="0" >
-      <size>
-       <width>3</width>
-       <height>20</height>
-      </size>
-     </property>
-    </spacer>
+   <item row="3" column="1" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>20</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QDialogButtonBox" name="buttonBox" >
+       <property name="layoutDirection" >
+        <enum>Qt::LeftToRight</enum>
+       </property>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="standardButtons" >
+        <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+       </property>
+       <property name="centerButtons" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>16</width>
+         <height>16</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
    </item>
-   <item row="1" column="1" >
+   <item row="5" column="1" >
     <spacer>
      <property name="orientation" >
       <enum>Qt::Vertical</enum>
diff --git a/gui/Pages/BatchRunningModel.py b/gui/Pages/BatchRunningModel.py
index 8b4a6dc..8203a74 100644
--- a/gui/Pages/BatchRunningModel.py
+++ b/gui/Pages/BatchRunningModel.py
@@ -15,7 +15,7 @@
 #     the License, or (at your option) any later version.
 #
 #     The Code_Saturne User Interface is distributed in the hope that it will be
-#     useful, but WITHOUT ANY WARRANTY; without even the implied warranty 
+#     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
 #     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #     GNU General Public License for more details.
 #
@@ -115,8 +115,7 @@ class BatchRunningModel(Model):
         self.dicoValues = {}
         self.dicoValues['SOLCOM'] = '0'
         self.dicoValues['PARAM'] = ""
-        self.dicoValues['VERSION'] = ""
-        self.dicoValues['NUMBER_OF_PROCESSORS'] = '1'
+        self.dicoValues['NUMBER_OF_PROCESSORS'] = ""
         self.dicoValues['PROCESSOR_LIST'] = ""
         self.dicoValues['PARTITION_LIST'] = ""
         self.dicoValues['USER_INPUT_FILES'] = ""
@@ -127,7 +126,6 @@ class BatchRunningModel(Model):
         self.dicoValues['COMMAND_JOIN'] = ""
         self.dicoValues['COMMAND_CWF'] = ""
         self.dicoValues['COMMAND_PERIO'] = ""
-        self.dicoValues['COMMAND_SYRTHES'] = ""
         self.dicoValues['PBS_JOB_NAME'] = ""
         self.dicoValues['PBS_nodes'] = '1'
         self.dicoValues['PBS_ppn'] = '2'
@@ -144,7 +142,7 @@ class BatchRunningModel(Model):
         self.dicoValues['METEO_DATA'] = ""
 
         if self.case['salome']:
-            self.mdl.dicoValues['ARG_CS_OUTPUT'] = "--log 0"
+            self.dicoValues['ARG_CS_OUTPUT'] = "--log 0"
 
 
     def _getRegex(self, word):
@@ -154,7 +152,7 @@ class BatchRunningModel(Model):
 ##  fonctionne mais incomplet:      regex = re.compile(r"""(^\s*""" + word + r""".*$)""")
 ##  fonctionne en tenant compte des lignes commencant par # :
 ##      regex = re.compile(r"""(^(?#)^\s*""" + word + r""".*$)""")
-        #tient compte a  la fois des commentaires et des "$word":
+        #tient compte a la fois des commentaires et des "$word":
         regex = re.compile(r"""(^(?#)^\s*(?<!$)""" + word + r""".*$)""")
 
         return regex
@@ -311,20 +309,16 @@ class BatchRunningModel(Model):
         self.dicoValues['COMMAND_JOIN'] = sdm.getJoinCommand()
         self.dicoValues['COMMAND_CWF'] = sdm.getCutCommand()
         self.dicoValues['COMMAND_PERIO'] = sdm.getPerioCommand()
-        self.dicoValues['COMMAND_SYRTHES'] = sdm.getSyrthesCommand()
         self.dicoValues['PARAM'] = os.path.basename(self.case['xmlfile'])
 
         # User 1D profiles are loaded as user result files
 
-        list = prm.getProfilesLabelsList()
-        if list:
+        if prm.getProfilesLabelsList():
             if self.dicoValues['USER_OUTPUT_FILES']:
-                vlist = string.split(self.dicoValues['USER_OUTPUT_FILES'])
+                v = string.split(self.dicoValues['USER_OUTPUT_FILES'])
             else:
-                vlist = []
-            for file in list:
-                if file not in vlist:
-                    vlist.append(file)
+                v = []
+            vlist = prm.updateOutputFiles(v)
             self.dicoValues['USER_OUTPUT_FILES'] = string.join(vlist, " ")
 
         # Specific data file for specific physics
@@ -353,7 +347,8 @@ class BatchRunningModel(Model):
         self.isInList(keyword, l)
         lines = self.lines
 
-        if self.case['computer'] == "pbs":
+        if self.case['computer'] == "pbs" \
+          or str(self.dicoValues['NUMBER_OF_PROCESSORS']) == "1":
             self.dicoValues['NUMBER_OF_PROCESSORS'] = ""
 
         for k in self.dicoValues.keys():
@@ -436,7 +431,6 @@ class BatchRunningModelTestCase(unittest.TestCase):
         '#SOLCOM=6\n'\
         'SOLCOM=999\n'\
         'PARAM=NEW.xml\n'\
-        'VERSION=tutu\n'\
         'NUMBER_OF_PROCESSORS=2\n'\
         'PROCESSOR_LIST=\n'\
         'PARTITION_LIST=\n'\
@@ -448,7 +442,6 @@ class BatchRunningModelTestCase(unittest.TestCase):
         'COMMAND_JOIN=" --j  --color 98 99  --fraction 0.1  --plane 0.8"\n'\
         'COMMAND_CWF="--cwf 0.001"\n'\
         'COMMAND_PERIO=\n'\
-        'COMMAND_SYRTHES=\n'\
         'EXEC_PREPROCESS=yes\n'\
         'EXEC_PARTITION=yes\n'\
         'EXEC_KERNEL=yes\n'\
@@ -578,7 +571,6 @@ class BatchRunningModelTestCase(unittest.TestCase):
         #   MESH
         #   COMMAND_JOIN
         #   COMMAND_CWF
-        #   COMMAND_SYRTHES
         #   COMMAND_PERIO
         #   COMMAND_REORIENT
         #
@@ -596,9 +588,7 @@ class BatchRunningModelTestCase(unittest.TestCase):
         'USER_INPUT_FILES': 'data',
         'COMMAND_JOIN': '',
         'COMMAND_REORIENT': ' --reorient ',
-        'VERSION': 'tutu',
         'CS_TMP_PREFIX': '/home/toto',
-        'COMMAND_SYRTHES': '',
         'PBS_ppn': '2',
         'PBS_walltime': '1:00:00',
         'PBS_mem': '320',
@@ -610,7 +600,7 @@ class BatchRunningModelTestCase(unittest.TestCase):
         'VALGRIND':'',
         'ARG_CS_OUTPUT':'',
         'ARG_CS_VERIF':'',
-        'THERMOCHEMISTRY_DATA':'', 
+        'THERMOCHEMISTRY_DATA':'',
         'METEO_DATA':''}
         for k in mdl.dicoValues.keys():
             if mdl.dicoValues[k] != dico[k]:
@@ -632,7 +622,6 @@ class BatchRunningModelTestCase(unittest.TestCase):
         #   MESH
         #   COMMAND_JOIN
         #   COMMAND_CWF
-        #   COMMAND_SYRTHES
         #   COMMAND_PERIO
         #
         #
@@ -643,12 +632,11 @@ class BatchRunningModelTestCase(unittest.TestCase):
         'COMMAND_CWF': ' --cwf 0.0321',
         'SOLCOM': '0',
         'PARAM': 'NEW.xml',
-        'NUMBER_OF_PROCESSORS': '1',
+        'NUMBER_OF_PROCESSORS': '',
         'USER_INPUT_FILES': '',
         'COMMAND_JOIN': '',
         'COMMAND_REORIENT': ' --reorient ',
         'CS_TMP_PREFIX': '',
-        'COMMAND_SYRTHES': '',
         'PBS_ppn': '1',
         'PBS_walltime': '34:77:22',
         'PBS_mem': '832',
diff --git a/gui/Pages/BatchRunningView.py b/gui/Pages/BatchRunningView.py
index 941f111..58b9cb1 100644
--- a/gui/Pages/BatchRunningView.py
+++ b/gui/Pages/BatchRunningView.py
@@ -481,7 +481,10 @@ class BatchRunningAdvancedOptionsDialogView(QDialog, Ui_BatchRunningAdvancedOpti
         self.default = default
         self.result  = self.default.copy()
 
+        self.lineEdit.setReadOnly(True)
+
         # Combo models
+        self.modelCSTMPPREFIX  = ComboModel(self.comboBoxCSTMPPREFIX, 2, 1)
         self.modelExecPrepro   = ComboModel(self.comboBox, 2, 1)
         self.modelExecPartit   = ComboModel(self.comboBox_2, 2, 1)
         self.modelExecKernel   = ComboModel(self.comboBox_3, 2, 1)
@@ -490,6 +493,9 @@ class BatchRunningAdvancedOptionsDialogView(QDialog, Ui_BatchRunningAdvancedOpti
         self.modelCSOUT2       = ComboModel(self.comboBox_7, 3, 1)
 
         # Combo items
+        self.modelCSTMPPREFIX.addItem(self.tr("automatic"), 'automatic')
+        self.modelCSTMPPREFIX.addItem(self.tr("prescribed"), 'prescribed')
+
         self.modelExecPrepro.addItem(self.tr("Run the preprocessor"), 'yes')
         self.modelExecPrepro.addItem(self.tr("Use existing DATA/preprocessor_output"), 'no')
 
@@ -511,6 +517,7 @@ class BatchRunningAdvancedOptionsDialogView(QDialog, Ui_BatchRunningAdvancedOpti
         self.modelCSOUT2.addItem(self.tr("to listing_n<N>"), 'listing')
 
         # connections
+        self.connect(self.comboBoxCSTMPPREFIX, SIGNAL("activated(const QString&)"), self.slotCSTMPPREFIX)
         self.connect(self.toolButton, SIGNAL("clicked()"), self.slotSearchDirectory)
         self.connect(self.comboBox, SIGNAL("activated(const QString&)"), self.slotExePrepro)
         self.connect(self.comboBox_2, SIGNAL("activated(const QString&)"), self.slotExePartit)
@@ -524,8 +531,16 @@ class BatchRunningAdvancedOptionsDialogView(QDialog, Ui_BatchRunningAdvancedOpti
         self.connect(self.comboBox_7, SIGNAL("activated(const QString&)"), self.slotArgCsOutput)
 
         # Previous values
-        self.exe_name = self.default['CS_TMP_PREFIX']
-        self.lineEdit.setText(QString(self.exe_name))
+        self.dir_name = self.default['CS_TMP_PREFIX']
+        self.lineEdit.setText(QString(self.dir_name))
+        if self.dir_name == "":
+            self.lineEdit.setEnabled(False)
+            self.toolButton.setEnabled(False)
+            self.modelCSTMPPREFIX.setItem(str_model='automatic')
+        else:
+            self.lineEdit.setEnabled(True)
+            self.toolButton.setEnabled(True)
+            self.modelCSTMPPREFIX.setItem(str_model='prescribed')
 
         self.exe_prepro = self.default['EXEC_PREPROCESS']
         self.modelExecPrepro.setItem(str_model=self.exe_prepro)
@@ -548,8 +563,23 @@ class BatchRunningAdvancedOptionsDialogView(QDialog, Ui_BatchRunningAdvancedOpti
         self.setArgCsVerif()
         self.setArgCsOutput()
 
-        self.dir_name = self.default['CS_TMP_PREFIX']
-        self.lineEdit.setEnabled(False)
+
+    @pyqtSignature("const QString &")
+    def slotCSTMPPREFIX(self, text):
+        """
+        Select mode for CS_TMP_PREFIX.
+        """
+        if self.modelCSTMPPREFIX.dicoV2M[str(text)] == 'prescribed':
+            self.dir_name = self.default['CS_TMP_PREFIX']
+            self.lineEdit.setEnabled(True)
+            self.toolButton.setEnabled(True)
+            setGreenColor(self.toolButton, True)
+        else:
+            self.dir_name = ""
+            self.lineEdit.setEnabled(False)
+            self.toolButton.setEnabled(False)
+            setGreenColor(self.toolButton, False)
+        self.lineEdit.setText(QString(self.dir_name))
 
 
     @pyqtSignature("const QString &")
@@ -675,19 +705,16 @@ class BatchRunningAdvancedOptionsDialogView(QDialog, Ui_BatchRunningAdvancedOpti
         """
         Choice temporary directory for batch
         """
-        self.dir_name = ''
-
         title    = self.tr("Select directory")
         default  = os.getcwd()
         options  = QFileDialog.ShowDirsOnly # | QFileDialog.DontResolveSymlinks
         dir_name = QFileDialog.getExistingDirectory(self, title, default, options)
 
-        self.dir_name = str(dir_name)
-        if self.dir_name:
-            self.exe_name = self.dir_name
-        else:
-            self.exe_name = ""
-        self.lineEdit.setText(QString(self.exe_name))
+        dir = str(dir_name)
+        if dir:
+            self.dir_name = dir
+            setGreenColor(self.toolButton, False)
+        self.lineEdit.setText(QString(self.dir_name))
 
         return self.dir_name
 
@@ -982,8 +1009,8 @@ class BatchRunningView(QWidget, Ui_BatchRunningForm):
 
         key = self.case['computer']
 
-        script = self.case['scripts_path'] + "/" + self.case['batchScript'][key]
-        batch1 = self.case['scripts_path'] + "/" + "batch"
+        script = os.path.join(self.case['scripts_path'], self.case['batchScript'][key])
+        batch1 = os.path.join(self.case['scripts_path'], "batch")
         batch2 = batch1 + '~'
 
         if key == 'station':
@@ -1005,9 +1032,8 @@ class BatchRunningView(QWidget, Ui_BatchRunningForm):
             pass
 
         if self.case['salome']:
-            from SalomeHandler import runSolver
-            cmd = ['nice', 'nohup', script]
-            runSolver(self.case, cmd, self.mdl, batch1)
+            import  SalomeHandler
+            SalomeHandler.runSolver(self.case, script)
         else:
             os.system(cmd)
 
diff --git a/gui/Pages/BodyForcesModel.py b/gui/Pages/BodyForcesModel.py
index 36e9e67..851c4ed 100644
--- a/gui/Pages/BodyForcesModel.py
+++ b/gui/Pages/BodyForcesModel.py
@@ -87,7 +87,7 @@ class BodyForcesModel(Model):
         """
         self.isInList(var, self.nodes)
         gravity = self.node_gravity.xmlGetDouble(var)
-        if gravity == None: 
+        if gravity == None:
             gravity = self.defaultBodyForcesValues()['gravity']
             self.setGravity(var, gravity)
 
diff --git a/gui/Pages/BodyForcesView.py b/gui/Pages/BodyForcesView.py
index 590082c..4c8d262 100644
--- a/gui/Pages/BodyForcesView.py
+++ b/gui/Pages/BodyForcesView.py
@@ -70,7 +70,7 @@ class BodyForcesView(QWidget, Ui_BodyForcesForm):
     """
     Class to open the Body Forces (gravity) Page.
     """
-    
+
     def __init__(self, parent, case):
         """
         Constructor
@@ -164,7 +164,7 @@ class BodyForcesView(QWidget, Ui_BodyForcesForm):
         """
         Translation
         """
-        return text 
+        return text
 
 
 #-------------------------------------------------------------------------------
diff --git a/gui/Pages/Boundary.py b/gui/Pages/Boundary.py
index 22d2eb5..b78437a 100644
--- a/gui/Pages/Boundary.py
+++ b/gui/Pages/Boundary.py
@@ -57,7 +57,7 @@ log.setLevel(GuiParam.DEBUG)
 
 class Boundary(object) :
     """
-    Abstract class 
+    Abstract class
     """
     def __new__(cls, nature , label, case) :
         """
@@ -112,15 +112,15 @@ class Boundary(object) :
         else:
             if nature == "coal_inlet":
                 self.boundNode = self._XMLBoundaryConditionsNode.xmlInitNode('inlet', label = label)
-    
+
             elif nature in ["radiative_wall",
                             "mobile_boundary",
                             "coupling_mobile_boundary"]:
                 self.boundNode = self._XMLBoundaryConditionsNode.xmlInitNode('wall', label = label)
-    
+
             elif nature == "meteo_inlet":
                 self.boundNode = self._XMLBoundaryConditionsNode.xmlInitNode('inlet', label = label)
-    
+
             elif nature == "meteo_outlet":
                 self.boundNode = self._XMLBoundaryConditionsNode.xmlInitNode('outlet', label = label)
 
@@ -143,7 +143,7 @@ class Boundary(object) :
         if self.sca_model.getScalarType(label) == 'thermal':
             Model().isInList(self.sca_model.getScalarName(label), self._thermalLabelsList)
         elif self.sca_model.getScalarType(label) == 'user':
-            Model().isInList(self.sca_model.getScalarName(label)[:6], ('scalar')) 
+            Model().isInList(self.sca_model.getScalarName(label)[:6], ('scalar'))
         scalarNode['name'] = self.sca_model.getScalarName(label)
         scalarNode['type'] = self.sca_model.getScalarType(label)
 
@@ -710,7 +710,7 @@ class CoalInletBoundary(InletBoundary) :
         Return value of flow for coal
         """
         Model().isInt(coal_idx)
-        
+
         n = self.boundNode.xmlGetNode('velocity_pressure')
         num = '%2.2i' % (coal_idx+1)
         n2 = n.xmlInitNode('coal', name = "coal"+num)
@@ -848,13 +848,13 @@ class CoalInletBoundary(InletBoundary) :
 
 
     def deleteCoalFlow(self, coal, nbCoals):
-        """ 
+        """
         Delete coal with name = coal.
         Usefull only for CoalCombustionView.
         """
         Model().isInt(coal)
         Model().isInt(nbCoals)
-        
+
         n = self.boundNode.xmlGetNode('velocity_pressure')
         if n:
             num = '%2.2i' % (coal+1)
@@ -868,23 +868,23 @@ class CoalInletBoundary(InletBoundary) :
 
 
     def __renameCoalFlow(self, coal):
-        """ 
+        """
         coaln become coaln-1.
         Usefull only for CoalCombustionView.
-       """ 
+       """
         Model().isInt(coal)
-        
+
         n = self.boundNode.xmlGetNode('velocity_pressure')
         if n:
             num = '%2.2i' % (coal+1)
             newNum = '%2.2i' % coal
             n2 = n.xmlGetNode('coal', name="coal"+ num)
             if n2:
-                n2['name'] = "coal"+newNum 
+                n2['name'] = "coal"+newNum
 
 
     def updateCoalRatios(self, coal):
-        """ 
+        """
         Delete ratio with name = classe. Usefull only for CoalCombustionView.
         """
         Model().isInt(coal)
@@ -900,9 +900,9 @@ class CoalInletBoundary(InletBoundary) :
 
 
     def deleteCoals(self):
-        """ 
+        """
         Delete all information of coal combustion in boundary conditions.
-        """ 
+        """
         n = self.boundNode.xmlGetNode('velocity_pressure')
         n.xmlRemoveChild('oxydant')
         n.xmlRemoveChild('coal')
@@ -927,22 +927,22 @@ class OutletBoundary(Boundary) :
         Initialize the boundary, add nodes in the boundary node
         """
         self._scalarChoicesList = ['dirichlet', 'neumann']
-        
+
         self.getReferencePressure()
-        
+
         for label in self.sca_model.getScalarLabelsList():
             self.getScalar(label)
 
 
     def __deleteScalarNodes(self, label, tag):
         """
-        Delete nodes of scalars 
+        Delete nodes of scalars
         """
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isInList(tag, self._scalarChoicesList)
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
-        
+
         for tt in self._scalarChoicesList:
             if tt != tag:
                 scalarNode.xmlRemoveChild(tt)
@@ -968,7 +968,7 @@ class OutletBoundary(Boundary) :
         Model().isInList(label, self.sca_model.getScalarLabelsList())
 
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
-        
+
         #update type and name of scalar
         self.updateScalarTypeAndName(scalarNode, label)
 
@@ -976,7 +976,7 @@ class OutletBoundary(Boundary) :
         if not choice:
             choice = self.__defaultValues()['scalarChoice']
             self.setScalarChoice(label, choice)
-            
+
         return choice
 
 
@@ -986,15 +986,15 @@ class OutletBoundary(Boundary) :
         """
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isInList(choice, self._scalarChoicesList)
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
 
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         if scalarNode['choice'] == choice:
-            return  
-            
+            return
+
         scalarNode['choice'] = choice
         if choice == 'dirichlet':
             self.getScalar(label)
@@ -1009,12 +1009,12 @@ class OutletBoundary(Boundary) :
         Get variableName variable
         """
         Model().isInList(label, self.sca_model.getScalarLabelsList())
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
-        
+
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         choice = self.getScalarChoice(label)
 
         value = scalarNode.xmlGetChildDouble(choice)
@@ -1030,12 +1030,12 @@ class OutletBoundary(Boundary) :
         """
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isFloat(value)
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
 
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         choice = self.getScalarChoice(label)
         if choice == 'neumann':
             Model().isInList(value, (0.,))
@@ -1092,9 +1092,9 @@ class OutletBoundary(Boundary) :
         Get reference pressure
         """
         pressure = self.boundNode.xmlGetDouble('dirichlet', name='pressure')
-        if pressure == None: 
+        if pressure == None:
             return 0
-            
+
         return pressure
 
 
@@ -1103,7 +1103,7 @@ class OutletBoundary(Boundary) :
         Set reference pressure
         """
         Model().isPositiveFloat(value)
-        
+
         node = self.boundNode.xmlInitNode('dirichlet', name='pressure')
         if value == 0:
             node.xmlRemoveNode()
@@ -1151,7 +1151,7 @@ class WallBoundary(Boundary) :
         """
         self._fluxChoices=['temperature', 'flux']
         self._scalarChoices = ['dirichlet', 'neumann', 'exchange_coefficient']
-        
+
         # Initialize nodes if necessary
         self.getVelocityChoice()
         self.getRoughnessChoice()
@@ -1163,7 +1163,7 @@ class WallBoundary(Boundary) :
 
     def __deleteVelocities(self, node):
         """
-        Delete nodes of velocity 
+        Delete nodes of velocity
         """
         node.xmlRemoveChild('dirichlet', name='velocity_U')
         node.xmlRemoveChild('dirichlet', name='velocity_V')
@@ -1172,13 +1172,13 @@ class WallBoundary(Boundary) :
 
     def __deleteScalarNodes(self, label, tag):
         """
-        Delete nodes of scalars 
+        Delete nodes of scalars
         """
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isInList(tag, self._scalarChoices)
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
-        
+
         if tag == 'exchange_coefficient':
             scalarNode.xmlRemoveChild('dirichlet')
         else:
@@ -1204,7 +1204,7 @@ class WallBoundary(Boundary) :
 
     def getVelocityChoice(self):
         """
-        Get the velocity choice 
+        Get the velocity choice
         """
         node = self.boundNode.xmlInitNode('velocity_pressure', 'choice')
         choice = node['choice']
@@ -1244,7 +1244,7 @@ class WallBoundary(Boundary) :
         """
         node = self.boundNode.xmlInitNode('velocity_pressure')
         Model().isInList(node['choice'],('on',))
-        
+
         n = node.xmlGetChildNode('dirichlet', name='velocity_U')
         if n:
             u = node.xmlGetChildDouble('dirichlet', name='velocity_U')
@@ -1272,10 +1272,10 @@ class WallBoundary(Boundary) :
         Model().isFloat(u)
         Model().isFloat(v)
         Model().isFloat(w)
-        
+
         node = self.boundNode.xmlInitNode('velocity_pressure')
         Model().isInList(node['choice'],('on',))
-        
+
         node.xmlSetData('dirichlet', u, name='velocity_U')
         node.xmlSetData('dirichlet', v, name='velocity_V')
         node.xmlSetData('dirichlet', w, name='velocity_W')
@@ -1289,7 +1289,7 @@ class WallBoundary(Boundary) :
         Model().isInList(component, ('velocity_U', 'velocity_V', 'velocity_W'))
         node = self.boundNode.xmlInitNode('velocity_pressure')
         Model().isInList(node['choice'], ('on', 'off'))
-        
+
         node.xmlSetData('dirichlet', val, name=component)
 
 
@@ -1336,7 +1336,7 @@ class WallBoundary(Boundary) :
         Put value of roughness height in xmlfile
         """
         Model().isGreaterOrEqual(value, 0.)
-        
+
         node = self.boundNode.xmlInitNode('velocity_pressure', 'choice')
         if value == 0.:
             node.xmlRemoveChild('roughness')
@@ -1349,9 +1349,9 @@ class WallBoundary(Boundary) :
         Get scalar choice
         """
         Model().isInList(label, self.sca_model.getScalarLabelsList())
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
-        
+
         #update type and name of scalar
         self.updateScalarTypeAndName(scalarNode, label)
 
@@ -1359,7 +1359,7 @@ class WallBoundary(Boundary) :
         if not choice:
             choice = self.__defaultValues()['scalarChoice']
             self.setScalarChoice(label, choice)
-            
+
         return choice
 
 
@@ -1369,12 +1369,12 @@ class WallBoundary(Boundary) :
         """
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isInList(choice, self._scalarChoices)
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
 
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         if scalarNode['choice'] == choice:
             return
 
@@ -1402,7 +1402,7 @@ class WallBoundary(Boundary) :
 
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         choice = self.getScalarChoice(label)
         if choice == 'exchange_coefficient':
             choice = 'neumann'
@@ -1420,12 +1420,12 @@ class WallBoundary(Boundary) :
         """
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isFloat(value)
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
 
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         choice = self.getScalarChoice(label)
         if choice == 'exchange_coefficient':
             choice = 'neumann'
@@ -1439,12 +1439,12 @@ class WallBoundary(Boundary) :
         """
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isInList(self.getScalarChoice(label), ('dirichlet',))
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
 
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         value = scalarNode.xmlGetChildDouble('dirichlet')
         if not value:
             value = self.__defaultValues()['scalarValue']
@@ -1460,12 +1460,12 @@ class WallBoundary(Boundary) :
         Model().isFloat(value)
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isInList(self.getScalarChoice(label), ('dirichlet',))
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
-            
+
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         scalarNode.xmlSetData('dirichlet', value)
 
 
@@ -1475,12 +1475,12 @@ class WallBoundary(Boundary) :
         """
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isInList(self.getScalarChoice(label), ('neumann', 'exchange_coefficient'))
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
-        
+
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         value = scalarNode.xmlGetChildDouble('neumann')
         if not value:
             value = self.__defaultValues()['scalarValue']
@@ -1496,12 +1496,12 @@ class WallBoundary(Boundary) :
         Model().isFloat(value)
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isInList(self.getScalarChoice(label), ('neumann', 'exchange_coefficient'))
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
 
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         scalarNode.xmlSetData('neumann', value)
 
 
@@ -1511,12 +1511,12 @@ class WallBoundary(Boundary) :
         """
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isInList(self.getScalarChoice(label), ('exchange_coefficient',))
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
 
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         value = scalarNode.xmlGetChildDouble('exchange_coefficient')
         if not value:
             value = self.__defaultValues()['scalarValue']
@@ -1532,12 +1532,12 @@ class WallBoundary(Boundary) :
         Model().isFloat(value)
         Model().isInList(label, self.sca_model.getScalarLabelsList())
         Model().isInList(self.getScalarChoice(label), ('exchange_coefficient',))
-        
+
         scalarNode = self.boundNode.xmlInitNode('scalar', label=label)
-            
+
         #update name and type of scalar
         self.updateScalarTypeAndName(scalarNode, label)
-        
+
         scalarNode.xmlSetData('exchange_coefficient', value)
 
 
@@ -1575,7 +1575,7 @@ class RadiativeWallBoundary(Boundary) :
         """
         Model().isInList(choice, self._radiativeChoices)
         list = []
-        if choice == 'itpimp': 
+        if choice == 'itpimp':
             list = ('emissivity', 'internal_temperature_profile', 'output_zone')
         elif choice == 'ipgrno':
             list = ('emissivity', 'thermal_conductivity', 'thickness',
@@ -1609,7 +1609,7 @@ class RadiativeWallBoundary(Boundary) :
         """
         nod_ray_cond = self.boundNode.xmlInitChildNode('radiative_data')
         choice = nod_ray_cond['choice']
-        if not choice: 
+        if not choice:
             choice = self.__defaultValues()['choice_condition']
             self.setRadiativeChoice(choice)
         return choice
@@ -1638,7 +1638,7 @@ class RadiativeWallBoundary(Boundary) :
         if not val:
             val = self.__defaultValues()['emissivity']
             self.setEmissivity(val)
-        
+
         return val
 
 
@@ -1648,7 +1648,7 @@ class RadiativeWallBoundary(Boundary) :
         """
         Model().isGreaterOrEqual(val, 0.)
         Model().isLowerOrEqual(val, 1.)
-        
+
         nod_ray_cond = self.boundNode.xmlInitChildNode('radiative_data')
         nod_ray_cond.xmlSetData('emissivity', val)
 
@@ -1662,7 +1662,7 @@ class RadiativeWallBoundary(Boundary) :
         if not val:
             val = self.__defaultValues()['thermal_conductivity']
             self.setThermalConductivity(val)
-            
+
         return val
 
 
@@ -1671,7 +1671,7 @@ class RadiativeWallBoundary(Boundary) :
         Put value of thermal conductivity for the radiative wall
         """
         Model().isGreaterOrEqual(val, 0.)
-        
+
         nod_ray_cond = self.boundNode.xmlInitChildNode('radiative_data')
         nod_ray_cond.xmlSetData('thermal_conductivity', val)
 
@@ -1685,7 +1685,7 @@ class RadiativeWallBoundary(Boundary) :
         if not val:
             val = self.__defaultValues()['thickness']
             self.setThickness(val)
-            
+
         return val
 
 
@@ -1694,7 +1694,7 @@ class RadiativeWallBoundary(Boundary) :
         Put value of thickness for the radiative wall
         """
         Model().isGreaterOrEqual(val, 0.)
-        
+
         nod_ray_cond = self.boundNode.xmlInitChildNode('radiative_data')
         nod_ray_cond.xmlSetData('thickness', val)
 
@@ -1717,7 +1717,7 @@ class RadiativeWallBoundary(Boundary) :
         Put value of external temperature profile for the radiative wall
         """
         Model().isGreaterOrEqual(val, 0.)
-        
+
         nod_ray_cond = self.boundNode.xmlInitChildNode('radiative_data')
         nod_ray_cond.xmlSetData('external_temperature_profile',val)
 
@@ -1740,7 +1740,7 @@ class RadiativeWallBoundary(Boundary) :
         Put value of internal temperature profile for the radiative wall
         """
         Model().isGreaterOrEqual(val, 0.)
-        
+
         nod_ray_cond = self.boundNode.xmlInitChildNode('radiative_data')
         nod_ray_cond.xmlSetData('internal_temperature_profile',val)
 
@@ -1755,7 +1755,7 @@ class RadiativeWallBoundary(Boundary) :
 ##            val = self.__defaultValues()['flux']
 ##            self.setFlux(val)
         val = self.getValRay('flux')
-        
+
         return val
 
 
@@ -1764,7 +1764,7 @@ class RadiativeWallBoundary(Boundary) :
         Put value of flux for the radiative wall
         """
         Model().isGreaterOrEqual(val, 0.)
-        
+
 ##        nod_ray_cond = self.boundNode.xmlInitChildNode('radiative_data')
 ##        nod_ray_cond.xmlSetData('flux', val)
         self.setValRay(val, 'flux')
@@ -1788,7 +1788,7 @@ class RadiativeWallBoundary(Boundary) :
         Put value of output radiative zone for the radiative wall
         """
         Model().isInt(ival)
-        
+
         nod_ray_cond = self.boundNode.xmlInitChildNode('radiative_data')
         nod_ray_cond.xmlSetData('output_zone', ival)
 
@@ -1798,7 +1798,7 @@ class RadiativeWallBoundary(Boundary) :
         Return value of radiative variable named 'var' for the radiative wall
         """
         Model().isInList(rayvar, self.head_list)
-        
+
         nod_ray_cond = self.boundNode.xmlInitChildNode('radiative_data')
         if rayvar == "output_zone":
             val = nod_ray_cond.xmlGetInt(rayvar)
@@ -1842,7 +1842,7 @@ class MobilWallBoundary(Boundary) :
         """
         Initialize the possible choices.
         """
-        self.__ALEChoices = ["fixed_boundary", 
+        self.__ALEChoices = ["fixed_boundary",
                              "sliding_boundary",
                              "internal_coupling",
                              "external_coupling",
@@ -1864,7 +1864,7 @@ class MobilWallBoundary(Boundary) :
         """
         node = self.boundNode.xmlInitNode('ale', 'choice')
         choice = node['choice']
-        
+
         # Create a defaut choice if it does not exist.
         if not node['choice']:
             choice = self._defaultValues['ale_choice']
@@ -1951,13 +1951,15 @@ class CouplingMobilWallBoundary(Boundary) :
         self._defaultValues['equilibrium_displacement_X'] = 0
         self._defaultValues['equilibrium_displacement_Y'] = 0
         self._defaultValues['equilibrium_displacement_Z'] = 0
-        
-        defaultMatrix = 'm11=0;\nm22=0;\nm33=0;\nm12=0;\nm13=0;\nm23=0;'
-        defaultFluidMatrix = "Fx=0;\nFy=0;\nFz=0;"
 
-        self._defaultValues['mass_matrix_formula'       ] = defaultMatrix
-        self._defaultValues['damping_matrix_formula'    ] = defaultMatrix
-        self._defaultValues['stiffness_matrix_formula'  ] = defaultMatrix
+        defaultMatrix = '%(t)s11=0;\n%(t)s22=0;\n%(t)s33=0;\n'
+        defaultMatrix += '%(t)s12=0;\n%(t)s13=0;\n%(t)s23=0;\n'
+        defaultMatrix += '%(t)s21=0;\n%(t)s31=0;\n%(t)s32=0;'
+        defaultFluidMatrix = "fx = fluid_fx;\nfy = fluid_fy;\nfz = fluid_fz;"
+
+        self._defaultValues['mass_matrix_formula'       ] = defaultMatrix % {'t':'m'}
+        self._defaultValues['damping_matrix_formula'    ] = defaultMatrix % {'t':'c'}
+        self._defaultValues['stiffness_matrix_formula'  ] = defaultMatrix % {'t':'k'}
         self._defaultValues['fluid_force_matrix_formula'] = defaultFluidMatrix
         self._defaultValues['DDLX_choice'               ] = 'off'
         self._defaultValues['DDLY_choice'               ] = 'off'
@@ -1979,7 +1981,7 @@ class CouplingMobilWallBoundary(Boundary) :
     def _getDoubleData(self, nodeName, subNodeName, setter ):
         """
         Get value from xml file.
-        """ 
+        """
         aleNode = self.boundNode.xmlGetNode('ale')
         node = aleNode.xmlInitChildNode(nodeName)
         value = node.xmlGetChildDouble(subNodeName)
@@ -1992,7 +1994,7 @@ class CouplingMobilWallBoundary(Boundary) :
     def _getStringData(self, nodeName, subNodeName, setter ):
         """
         Get value from xml file.
-        """ 
+        """
         aleNode = self.boundNode.xmlGetNode('ale')
         node = aleNode.xmlInitChildNode(nodeName)
         value = node.xmlGetChildString(subNodeName)
@@ -2008,42 +2010,42 @@ class CouplingMobilWallBoundary(Boundary) :
     def setInitialDisplacementX(self, value ):
         """
         Set value of initial displacement X into xml file.
-        """ 
+        """
         self._setData('initial_displacement', 'X', value)
 
 
     def getInitialDisplacementX(self ):
         """
         Get value of initial displacement X from xml file.
-        """ 
+        """
         return self._getDoubleData('initial_displacement', 'X', self.setInitialDisplacementX)
 
 
     def setInitialDisplacementY(self, value ):
         """
         Set value of initial displacement Y into xml file.
-        """ 
+        """
         self._setData('initial_displacement', 'Y', value)
 
 
     def getInitialDisplacementY(self ):
         """
         Get value of initial displacement Y from xml file.
-        """ 
+        """
         return self._getDoubleData('initial_displacement', 'Y', self.setInitialDisplacementY)
 
 
     def setInitialDisplacementZ(self, value ):
         """
         Set value of initial displacement Z into xml file.
-        """ 
+        """
         self._setData('initial_displacement', 'Z', value)
 
 
     def getInitialDisplacementZ(self ):
         """
         Get value of initial displacement Z from xml file.
-        """ 
+        """
         return self._getDoubleData('initial_displacement', 'Z', self.setInitialDisplacementZ)
 
 
@@ -2053,42 +2055,42 @@ class CouplingMobilWallBoundary(Boundary) :
     def setEquilibriumDisplacementX(self, value):
         """
         Set value of equilibrium displacement X into xml file.
-        """ 
+        """
         self._setData('equilibrium_displacement', 'X', value)
 
 
     def getEquilibriumDisplacementX(self):
         """
         Get value of equilibrium displacement X from xml file.
-        """ 
+        """
         return self._getDoubleData('equilibrium_displacement', 'X', self.setEquilibriumDisplacementX)
 
 
     def setEquilibriumDisplacementY(self, value):
         """
         Set value of equilibrium displacement Y into xml file.
-        """ 
+        """
         self._setData('equilibrium_displacement', 'Y', value)
 
 
     def getEquilibriumDisplacementY(self):
         """
         Get value of equilibrium displacement Y from xml file.
-        """ 
+        """
         return self._getDoubleData('equilibrium_displacement', 'Y', self.setEquilibriumDisplacementY)
 
 
     def setEquilibriumDisplacementZ(self, value):
         """
         Set value of equilibrium displacement Z into xml file.
-        """ 
+        """
         self._setData('equilibrium_displacement', 'Z', value)
 
 
     def getEquilibriumDisplacementZ(self):
         """
         Get value of equilibrium displacement X from xml file.
-        """ 
+        """
         return self._getDoubleData('equilibrium_displacement', 'Z', self.setEquilibriumDisplacementZ)
 
 
@@ -2098,112 +2100,112 @@ class CouplingMobilWallBoundary(Boundary) :
     def setInitialVelocityX(self, value):
         """
         Set value of initial velocity X into xml file.
-        """ 
+        """
         self._setData('initial_velocity', 'X', value)
 
 
     def getInitialVelocityX(self):
         """
         Get value of initial velocity X from xml file.
-        """ 
+        """
         return self._getDoubleData('initial_velocity', 'X', self.setInitialVelocityX)
 
 
     def setInitialVelocityY(self, value):
         """
         Set value of initial velocity Y into xml file.
-        """ 
+        """
         self._setData('initial_velocity', 'Y', value)
 
 
     def getInitialVelocityY(self):
         """
         Get value of initial velocity Y from xml file.
-        """ 
+        """
         return self._getDoubleData('initial_velocity', 'Y', self.setInitialVelocityY)
 
 
     def setInitialVelocityZ(self, value):
         """
         Set value of initial velocity Z into xml file.
-        """ 
+        """
         self._setData('initial_velocity', 'Z', value)
 
 
     def getInitialVelocityZ(self):
         """
         Get value of initial velocity Z from xml file.
-        """ 
+        """
         return self._getDoubleData('initial_velocity', 'Z', self.setInitialVelocityZ)
 
 
     # Matrix
-    #-------   
+    #-------
 
     def setMassMatrix(self, value):
         """
         Set values of massMatrix into xml file.
-        """ 
+        """
         self._setData('mass_matrix', 'formula', value)
 
 
     def getMassMatrix(self):
         """
         Get values of massMatrix from xml file.
-        """ 
+        """
         return self._getStringData('mass_matrix', 'formula', self.setMassMatrix)
 
 
     def setStiffnessMatrix(self, value):
         """
         Set values of stiffnessMatrix into xml file.
-        """ 
+        """
         self._setData('stiffness_matrix', 'formula', value)
 
 
     def getStiffnessMatrix(self):
         """
         Get values of stiffnessMatrix from xml file.
-        """ 
+        """
         return self._getStringData('stiffness_matrix', 'formula', self.setStiffnessMatrix)
 
 
     def setDampingMatrix(self, value):
         """
         Set values of dampingMatrix into xml file.
-        """ 
+        """
         self._setData('damping_matrix', 'formula', value)
 
 
     def getDampingMatrix(self):
         """
         Get values of dampingMatrix from xml file.
-        """ 
+        """
         return self._getStringData('damping_matrix', 'formula', self.setDampingMatrix)
 
 
     def setFluidForceMatrix(self, value):
         """
         Set values of fluid force matrix into xml file.
-        """ 
+        """
         self._setData('fluid_force_matrix', 'formula', value)
 
 
     def getFluidForceMatrix(self):
         """
         Get values of fluid force matrix from xml file.
-        """ 
+        """
         return self._getStringData('fluid_force_matrix', 'formula', self.setFluidForceMatrix)
 
     # DDL
-    #----  
+    #----
 
     def _setChoice(self, nodeName, value):
         """
         Set the choice
         """
         Model().isInList(value, ['on', 'off'])
-        aleNode = self.boundNode.xmlGetNode('ale')        
+        aleNode = self.boundNode.xmlGetNode('ale')
         node = aleNode.xmlInitNode(nodeName)
         node['choice'] = value
 
@@ -2212,7 +2214,7 @@ class CouplingMobilWallBoundary(Boundary) :
         """
         Get the choice
         """
-        aleNode = self.boundNode.xmlGetNode('ale')        
+        aleNode = self.boundNode.xmlGetNode('ale')
         node = aleNode.xmlInitNode(nodeName, 'choice')
         choice = node['choice']
 
@@ -2277,7 +2279,7 @@ class InletBoundaryTestCase(ModelTest):
     """
     def checkInletBoundaryInstantiation(self):
         """
-        Check whether the InletBoundary class could be instantiated 
+        Check whether the InletBoundary class could be instantiated
         """
         model = None
         model = Boundary("inlet", "entree1", self.case)
@@ -2316,11 +2318,11 @@ class InletBoundaryTestCase(ModelTest):
         model = Boundary("inlet", "entree1", self.case)
         model.setVelocityChoice('flow1+direction')
         node =  model._XMLBoundaryConditionsNode
-        
+
         model.setFlow('flow1', 3.5)
 ##        model.setFlow('flow2', 3.5)
         model.setDirection('direction_z', 2.0)
-        
+
         doc = '''<boundary_conditions>
                     <inlet label="entree1">
                         <velocity_pressure choice="flow1+direction">
@@ -2334,7 +2336,7 @@ class InletBoundaryTestCase(ModelTest):
                         </turbulence>
                     </inlet>
                 </boundary_conditions>'''
-                
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set mass flow or volumic flow and directions for inlet boundary'
 
@@ -2362,7 +2364,7 @@ class InletBoundaryTestCase(ModelTest):
                             </turbulence>
                         </inlet>
                  </boundary_conditions>'''
-                
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set velocity norm for inlet boundary'
 
@@ -2376,7 +2378,7 @@ class InletBoundaryTestCase(ModelTest):
         node =  model._XMLBoundaryConditionsNode
         model.setVelocityChoice('norm')
         model.setTurbulenceChoice('turbulent_intensity')
-        
+
         doc = '''<boundary_conditions>
                     <inlet label="entree1">
                         <velocity_pressure choice="norm">
@@ -2398,7 +2400,7 @@ class InletBoundaryTestCase(ModelTest):
 
     def checkSetAndGetHydraulicDiameterAndTurbulentIntensity(self):
         """
-        Check whether the hydraulic_diameter and turbulent_intensity could be 
+        Check whether the hydraulic_diameter and turbulent_intensity could be
         set and get for inlet boundary.
         """
         model = Boundary("inlet", "entree1", self.case)
@@ -2408,7 +2410,7 @@ class InletBoundaryTestCase(ModelTest):
 
         model.setHydraulicDiameter(120.)
         model.setTurbulentIntensity(0.005)
-        
+
         doc = '''<boundary_conditions>
                     <inlet label="entree1">
                         <velocity_pressure choice="norm">
@@ -2437,7 +2439,7 @@ class InletBoundaryTestCase(ModelTest):
         model.setVelocityChoice('norm')
         model.setTurbulenceChoice('hydraulic_diameter')
         model.th_model.setThermalModel('temperature_celsius')
-        model.setScalar("Temp.C", 15.)
+        model.setScalar("TempC", 15.)
 
         doc = '''<boundary_conditions>
                     <inlet label="entree1">
@@ -2447,7 +2449,7 @@ class InletBoundaryTestCase(ModelTest):
                         <turbulence choice="hydraulic_diameter">
                             <hydraulic_diameter>1</hydraulic_diameter>
                         </turbulence>
-                        <scalar choice="dirichlet" label="Temp.C" name="temperature_celsius" type="thermal">
+                        <scalar choice="dirichlet" label="TempC" name="temperature_celsius" type="thermal">
                             <dirichlet>15</dirichlet>
                         </scalar>
                     </inlet>
@@ -2456,7 +2458,7 @@ class InletBoundaryTestCase(ModelTest):
         assert node == self.xmlNodeFromString(doc),\
            'Could not set thermal scalar value for inlet boundary'
 
-        assert model.getScalar("Temp.C") == 15,\
+        assert model.getScalar("TempC") == 15,\
            'Could not get thermal scalar value for inlet boundary'
 
 
@@ -2517,7 +2519,7 @@ class CoalInletBoundaryTestCase(ModelTest):
     """
     def checkCoalInletBoundaryInstantiation(self):
         """
-        Check whether the CoalInletBoundary class could be instantiated 
+        Check whether the CoalInletBoundary class could be instantiated
         """
         from CoalCombustionModel import CoalCombustionModel
         CoalCombustionModel(self.case).setCoalCombustionModel('coal_homo')
@@ -2553,13 +2555,13 @@ class CoalInletBoundaryTestCase(ModelTest):
                         </turbulence>
                     </inlet>
                 </boundary_conditions>'''
-        
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set coalFlow type for coal inlet boundary'
 
         assert coal_model.getInletType() == "coalFlow",\
            'Could not get coalFlow type for coal inlet boundary'
-           
+
         coal_model.setInletType('oxydantFlow')
         doc1 = '''<boundary_conditions>
                     <inlet label="charb1">
@@ -2591,7 +2593,7 @@ class CoalInletBoundaryTestCase(ModelTest):
         coal_model.setInletType('coalFlow')
         coal_model.setOxydantTemperature(500.)
         coal_model.setCoalTemperature(999.99, 0)
-        
+
         doc = '''<boundary_conditions>
                     <inlet label="charb1">
                         <velocity_pressure choice="norm">
@@ -2608,13 +2610,13 @@ class CoalInletBoundaryTestCase(ModelTest):
                         </turbulence>
                     </inlet>
                 </boundary_conditions>'''
-        
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set oxydant temperature for coal inlet boundary'
 
         assert coal_model.getOxydantTemperature() == 500.,\
            'Could not get oxydant temperature for coal inlet boundary'
-        
+
         assert coal_model.getCoalTemperature(0) == 999.99,\
            'Could not get coal temperature for coal inlet boundary'
 
@@ -2657,11 +2659,11 @@ class CoalInletBoundaryTestCase(ModelTest):
 
     def checkSetAndGetCoalRatios(self):
         """Check whether the ratio of classes could be set and get for coal inlet boundary."""
-        os.remove("dp_FCP")        
+        os.remove("dp_FCP")
         from CoalCombustionModel import CoalCombustionModel
         m = CoalCombustionModel(self.case)
         m.setCoalCombustionModel('coal_homo')
-        
+
         # creation du fichier dp_FCP avec 2 charbons et 3 classes
         self.case['data_path'] = "."
         from CoalThermoChemistry import CoalThermoChemistryModel, Coal
@@ -2682,7 +2684,7 @@ class CoalInletBoundaryTestCase(ModelTest):
 
         model = Boundary("inlet", "charb1", self.case)
         coal_model = Boundary("coal_inlet", "charb1", self.case)
-        
+
         model.setVelocityChoice('flow1')
         model.setVelocity(12.5)
         coal_model.setInletType('coalFlow')
@@ -2726,11 +2728,11 @@ class CoalInletBoundaryTestCase(ModelTest):
 
     def checkDeleteCoalAndClassesRatios(self):
         """Check whether coal or classes could be deleted for coal inlet boundary."""
-        os.remove("dp_FCP")        
+        os.remove("dp_FCP")
         from CoalCombustionModel import CoalCombustionModel
         m = CoalCombustionModel(self.case)
         m.setCoalCombustionModel('coal_homo')
-        
+
         # creation du fichier dp_FCP avec 3 charbons et 6 classes
         self.case['data_path'] = "."
         from CoalThermoChemistry import CoalThermoChemistryModel, Coal
@@ -2757,7 +2759,7 @@ class CoalInletBoundaryTestCase(ModelTest):
         # fin de la creation du fichier dp_FCP
         model = Boundary("inlet", "charb1", self.case)
         coal_model = Boundary("coal_inlet", "charb1", self.case)
-        
+
         model.setVelocityChoice('flow1')
         model.setVelocity(12.5)
         coal_model.setInletType('coalFlow')
@@ -2797,7 +2799,7 @@ class CoalInletBoundaryTestCase(ModelTest):
                         </turbulence>
                     </inlet>
                 </boundary_conditions>'''
-                
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set ratios for classes for coal inlet boundary'
 
@@ -2825,7 +2827,7 @@ class CoalInletBoundaryTestCase(ModelTest):
                         </turbulence>
                     </inlet>
                 </boundary_conditions>'''
-                
+
         assert node == self.xmlNodeFromString(doc1),\
            'Could not delete one coal for coal inlet boundary'
         coal_model.updateCoalRatios(1)
@@ -2852,10 +2854,10 @@ class CoalInletBoundaryTestCase(ModelTest):
                         </turbulence>
                     </inlet>
                 </boundary_conditions>'''
-                
+
         assert node == self.xmlNodeFromString(doc2),\
            'Could not delete one class of one coal for coal inlet boundary'
-           
+
 
 def suite2():
     testSuite = unittest.makeSuite(CoalInletBoundaryTestCase, "check")
@@ -2892,7 +2894,7 @@ class WallBoundaryTestCase(ModelTest):
         model = Boundary("wall", "fenetre", self.case)
         model.setVelocityChoice('off')
         node =  model._XMLBoundaryConditionsNode
-        
+
         doc = '''<boundary_conditions>
                     <wall label="mur">
                         <velocity_pressure choice="on">
@@ -2905,13 +2907,13 @@ class WallBoundaryTestCase(ModelTest):
                         <velocity_pressure choice="off"/>
                     </wall>
                 </boundary_conditions>'''
-        
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set choice of velocity for wall boundary'
 
         assert model.getVelocityChoice() == 'off',\
            'Could not get set choice of velocity for wall boundary'
-           
+
         model = Boundary("wall", "mur", self.case)
         model.setVelocityChoice('off')
 
@@ -2923,7 +2925,7 @@ class WallBoundaryTestCase(ModelTest):
                         <velocity_pressure choice="off"/>
                     </wall>
                 </boundary_conditions>'''
-           
+
         assert node == self.xmlNodeFromString(doc2),\
            'Could not set choice of velocity for wall boundary'
 
@@ -2934,7 +2936,7 @@ class WallBoundaryTestCase(ModelTest):
         model.setVelocityChoice('on')
         model.setVelocities(1., 2., 3.)
         node =  model._XMLBoundaryConditionsNode
-        
+
         doc = '''<boundary_conditions>
                     <wall label="mur">
                         <velocity_pressure choice="on">
@@ -2944,12 +2946,12 @@ class WallBoundaryTestCase(ModelTest):
                         </velocity_pressure>
                     </wall>
                 </boundary_conditions>'''
-        
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set values of velocity for wall boundary'
 
         assert model.getVelocities() == (1, 2 ,3),\
-           'Could not get set values of velocity for wall boundary'       
+           'Could not get set values of velocity for wall boundary'
 
 
     def checkSetAndGetRoughnessChoiceAndValue(self):
@@ -2957,7 +2959,7 @@ class WallBoundaryTestCase(ModelTest):
         model = Boundary("wall", "mur", self.case)
         model.setRoughnessChoice('on')
         node =  model._XMLBoundaryConditionsNode
-      
+
         doc = '''<boundary_conditions>
                     <wall label="mur">
                         <velocity_pressure choice="off">
@@ -2965,10 +2967,10 @@ class WallBoundaryTestCase(ModelTest):
                         </velocity_pressure>
                     </wall>
                 </boundary_conditions>'''
-        
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not update roughness choice for wall boundary'
-           
+
         model.setRoughness(15.33)
         doc1 = '''<boundary_conditions>
                     <wall label="mur">
@@ -2977,7 +2979,7 @@ class WallBoundaryTestCase(ModelTest):
                         </velocity_pressure>
                     </wall>
                  </boundary_conditions>'''
-                
+
         assert node == self.xmlNodeFromString(doc1),\
            'Could not set roughness value for wall boundary'
 
@@ -3001,7 +3003,7 @@ class WallBoundaryTestCase(ModelTest):
                         </scalar>
                     </wall>
                 </boundary_conditions>'''
-                
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set scalar choice for wall boundary'
 
@@ -3010,7 +3012,7 @@ class WallBoundaryTestCase(ModelTest):
 
         assert model.getScalarChoice('sca1') == 'neumann',\
            'Could not get scalar choice for wall boundary'
-           
+
         model.setScalarChoice('sca1', 'exchange_coefficient')
         doc1 = '''<boundary_conditions>
                     <wall label="mur">
@@ -3024,14 +3026,14 @@ class WallBoundaryTestCase(ModelTest):
                         </scalar>
                     </wall>
                  </boundary_conditions>'''
-                 
+
         assert node == self.xmlNodeFromString(doc1),\
            'Could not set scalar choice for wall boundary'
-           
+
         assert model.getScalarChoice('sca1') == 'exchange_coefficient',\
            'Could not get scalar choice for wall boundary'
-           
-           
+
+
     def checkSetAndGetScalarImposedValueFluxAndExchangeCoefficient(self):
         """Check whether the scalar values could be set and get for wall boundary."""
         model = Boundary("wall", "mur", self.case)
@@ -3056,7 +3058,7 @@ class WallBoundaryTestCase(ModelTest):
                         </scalar>
                     </wall>
                  </boundary_conditions>'''
-                 
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set scalar imposed value, flux and exchange_coefficient for wall boundary'
 
@@ -3065,11 +3067,11 @@ class WallBoundaryTestCase(ModelTest):
 
         assert model.getScalarImposedFlux('sca1') == 130.,\
             'Could not get scalar imposed value for wall boundary'
-            
+
         assert model.getScalarExchangeCoefficient('sca1') == 0.130,\
             'Could not get scalar imposed value for wall boundary'
- 
-      
+
+
 def suite3():
     testSuite = unittest.makeSuite(WallBoundaryTestCase, "check")
     return testSuite
@@ -3096,7 +3098,7 @@ class RadiativeWallBoundaryTestCase(ModelTest):
         """
         from ThermalRadiationModel import ThermalRadiationModel
         ThermalRadiationModel(self.case).setRadiativeModel('dom')
-        
+
         model = None
         model = Boundary("radiative_wall", "paroi", self.case)
         assert model != None, 'Could not instantiate '
@@ -3106,13 +3108,13 @@ class RadiativeWallBoundaryTestCase(ModelTest):
         """Check whether the type of condition could be set and get for radiative wall boundary."""
         from ThermalRadiationModel import ThermalRadiationModel
         ThermalRadiationModel(self.case).setRadiativeModel('dom')
-        
+
         model = Boundary("wall", "mur", self.case)
         model.setVelocityChoice('off')
         model = Boundary("radiative_wall", "radiateur", self.case)
         model.setRadiativeChoice('ipgrno')
         node =  model._XMLBoundaryConditionsNode
-        
+
         doc = '''<boundary_conditions>
                     <wall label="mur">
                         <velocity_pressure choice="off"/>
@@ -3140,14 +3142,14 @@ class RadiativeWallBoundaryTestCase(ModelTest):
         """Check whether the emissivity could be set and get for radiative wall boundary."""
         from ThermalRadiationModel import ThermalRadiationModel
         ThermalRadiationModel(self.case).setRadiativeModel('dom')
-        
+
         model = Boundary("wall", "mur", self.case)
         model.setVelocityChoice('off')
         model = Boundary("radiative_wall", "radiateur", self.case)
         model.setRadiativeChoice('ipgrno')
         model.setEmissivity(0.22)
         node =  model._XMLBoundaryConditionsNode
-        
+
         doc = '''<boundary_conditions>
                     <wall label="mur">
                         <velocity_pressure choice="off"/>
@@ -3175,14 +3177,14 @@ class RadiativeWallBoundaryTestCase(ModelTest):
         """Check whether the thermal conductivity could be set and get for radiative wall boundary."""
         from ThermalRadiationModel import ThermalRadiationModel
         ThermalRadiationModel(self.case).setRadiativeModel('dom')
-        
+
         model = Boundary("wall", "mur", self.case)
         model.setVelocityChoice('off')
         model = Boundary("radiative_wall", "radiateur", self.case)
         model.setRadiativeChoice('ipgrno')
         model.setThermalConductivity(5.6)
         node =  model._XMLBoundaryConditionsNode
-        
+
         doc = '''<boundary_conditions>
                     <wall label="mur">
                         <velocity_pressure choice="off"/>
@@ -3204,20 +3206,20 @@ class RadiativeWallBoundaryTestCase(ModelTest):
 
         assert model.getThermalConductivity() == 5.6,\
            'Could not get thermal conductivity for radiative wall boundary'
-    
+
 
     def checkSetAndGetThickness(self):
         """Check whether the thickness could be set and get for radiative wall boundary."""
         from ThermalRadiationModel import ThermalRadiationModel
         ThermalRadiationModel(self.case).setRadiativeModel('dom')
-        
+
         model = Boundary("wall", "mur", self.case)
         model.setVelocityChoice('off')
         model = Boundary("radiative_wall", "radiateur", self.case)
         model.setRadiativeChoice('ipgrno')
         model.setThickness(2.)
         node =  model._XMLBoundaryConditionsNode
-        
+
         doc = '''<boundary_conditions>
                     <wall label="mur">
                         <velocity_pressure choice="off"/>
@@ -3239,16 +3241,16 @@ class RadiativeWallBoundaryTestCase(ModelTest):
 
         assert model.getThickness() == 2.0,\
            'Could not get thickness for radiative wall boundary'
-    
-    
+
+
     def checkSetAndGetExternalAndInternalTemperatureProfile(self):
         """
-        Check whether the external and internal temperature profile 
+        Check whether the external and internal temperature profile
         could be set and get for radiative wall boundary.
         """
         from ThermalRadiationModel import ThermalRadiationModel
         ThermalRadiationModel(self.case).setRadiativeModel('dom')
-        
+
         model = Boundary("wall", "mur", self.case)
         model.setVelocityChoice('off')
         model = Boundary("radiative_wall", "radiateur", self.case)
@@ -3256,7 +3258,7 @@ class RadiativeWallBoundaryTestCase(ModelTest):
         model.setExternalTemperatureProfile(55.55)
         model.setInternalTemperatureProfile(987.)
         node =  model._XMLBoundaryConditionsNode
-        
+
         doc = '''<boundary_conditions>
                     <wall label="mur">
                         <velocity_pressure choice="off"/>
@@ -3278,27 +3280,27 @@ class RadiativeWallBoundaryTestCase(ModelTest):
 
         assert model.getExternalTemperatureProfile() == 55.55,\
            'Could not get external temperature profile for radiative wall boundary'
-           
+
         assert model.getInternalTemperatureProfile() == 987.,\
            'Could not get internal temperature profile for radiative wall boundary'
-           
-        
-    
+
+
+
     def checkSetAndGetOutputRadiativeZone(self):
         """
-        Check whether the output radiative zone could be set and get for 
+        Check whether the output radiative zone could be set and get for
         radiative wall boundary.
         """
         from ThermalRadiationModel import ThermalRadiationModel
         ThermalRadiationModel(self.case).setRadiativeModel('dom')
-        
+
         model = Boundary("wall", "mur", self.case)
         model.setVelocityChoice('off')
         model = Boundary("radiative_wall", "radiateur", self.case)
         model.setRadiativeChoice('ipgrno')
         model.setOutputRadiativeZone(21)
         node =  model._XMLBoundaryConditionsNode
-        
+
         doc = '''<boundary_conditions>
                     <wall label="mur">
                         <velocity_pressure choice="off"/>
@@ -3320,20 +3322,20 @@ class RadiativeWallBoundaryTestCase(ModelTest):
 
         assert model.getOutputRadiativeZone() == 21,\
            'Could not get output radiative zone for radiative wall boundary'
-    
-    
+
+
     def checkSetAndGetFlux(self):
         """Check whether the flux could be set and get for radiative wall boundary."""
         from ThermalRadiationModel import ThermalRadiationModel
         ThermalRadiationModel(self.case).setRadiativeModel('dom')
-        
+
         model = Boundary("wall", "mur", self.case)
         model.setVelocityChoice('off')
         model = Boundary("radiative_wall", "radiateur", self.case)
         model.setRadiativeChoice('ifgrno')
         model.setFlux(5.65)
         node =  model._XMLBoundaryConditionsNode
-        
+
         doc = '''<boundary_conditions>
                     <wall label="mur">
                         <velocity_pressure choice="off"/>
@@ -3353,7 +3355,7 @@ class RadiativeWallBoundaryTestCase(ModelTest):
 
         assert model.getFlux() == 5.65,\
            'Could not get flux for radiative wall boundary'
-           
+
 def suite4():
     testSuite = unittest.makeSuite(RadiativeWallBoundaryTestCase, "check")
     return testSuite
@@ -3393,7 +3395,7 @@ class OutletBoundaryTestCase(ModelTest):
                         <dirichlet name="pressure">111333</dirichlet>
                     </outlet>
                 </boundary_conditions>'''
-                
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set reference pressure for outlet boundary'
 
@@ -3427,7 +3429,7 @@ class OutletBoundaryTestCase(ModelTest):
 
         assert model.getScalarChoice('sca1') == 'dirichlet',\
            'Could not get choice of scalar for outlet boundary'
-           
+
         assert model.getScalar('sca2') == 0,\
            'Could not get choice of scalar for outlet boundary'
 
@@ -3452,7 +3454,7 @@ class MobilWallBoundaryTestCase(ModelTest):
     """
     def checkMobilWallBoundaryInstantiation(self):
         """
-        Check whether the MobilWallBoundary class could be instantiated 
+        Check whether the MobilWallBoundary class could be instantiated
         """
         model = None
         model = Boundary("mobile_boundary", "wall_1", self.case)
@@ -3522,7 +3524,7 @@ class CouplingMobilWallBoundaryTestCase(ModelTest):
     """
     def checkCouplingMobilWallBoundaryInstantiation(self):
         """
-        Check whether the MobilWallBoundary class could be instantiated 
+        Check whether the MobilWallBoundary class could be instantiated
         """
         model = None
         model = Boundary("coupling_mobile_boundary", "Wall_1", self.case)
diff --git a/gui/Pages/BoundaryConditionsCoalInletView.py b/gui/Pages/BoundaryConditionsCoalInletView.py
index 96c4ca5..93560a0 100644
--- a/gui/Pages/BoundaryConditionsCoalInletView.py
+++ b/gui/Pages/BoundaryConditionsCoalInletView.py
@@ -222,7 +222,7 @@ class StandardItemModelCoalMass(QStandardItemModel):
         else:
             return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable
 
-    
+
     def headerData(self, section, orientation, role):
         if orientation == Qt.Horizontal and role == Qt.DisplayRole:
             return QVariant("Coal" + " " + str(section+1))
@@ -230,7 +230,7 @@ class StandardItemModelCoalMass(QStandardItemModel):
             return QVariant("Class" + " " + str(section+1))
         return QVariant()
 
-    
+
     def setData(self, index, value, role):
         if not hasattr(self, "modelBoundary"):
             log.debug("ERROR in setData (StandardItemModelCoalMass): no Boundary model defined")
@@ -492,7 +492,7 @@ class BoundaryConditionsCoalInletView(QWidget, Ui_BoundaryConditionsCoalInletFor
         # fill the flow and temperature of the coal
         for coal in range(0, self.__coalNumber):
             self.__modelCoal.insertItem(self.tr("Coal ") + " " + str(coal+1),
-                                        self.__boundary.getCoalFlow(coal), 
+                                        self.__boundary.getCoalFlow(coal),
                                         self.__boundary.getCoalTemperature(coal))
 
         # fill the ratio of mass for each class for each coal
@@ -666,7 +666,7 @@ class BoundaryConditionsCoalInletView(QWidget, Ui_BoundaryConditionsCoalInletFor
         exp = self.__boundary.getDirection('direction_formula')
 
         req = [('dir_x', 'Direction of the flow along X'),
-               ('dir_y', 'Direction of the flow along Y'), 
+               ('dir_y', 'Direction of the flow along Y'),
                ('dir_z', 'Direction of the flow along Z')]
 
         exa = "dir_x = 3.0;\ndir_y = 1.0;\ndir_z = 0.0;\n"
@@ -680,7 +680,7 @@ class BoundaryConditionsCoalInletView(QWidget, Ui_BoundaryConditionsCoalInletFor
 
         dialog = QMeiEditorView(self,expression = exp,
                                      required   = req,
-                                     symbols    = sym, 
+                                     symbols    = sym,
                                      examples   = exa)
         if dialog.exec_():
             result = dialog.get_result()
diff --git a/gui/Pages/BoundaryConditionsMobileMeshView.py b/gui/Pages/BoundaryConditionsMobileMeshView.py
index bf241fd..48d85ce 100644
--- a/gui/Pages/BoundaryConditionsMobileMeshView.py
+++ b/gui/Pages/BoundaryConditionsMobileMeshView.py
@@ -123,7 +123,7 @@ class BoundaryConditionsMobileMeshView(QWidget, Ui_BoundaryConditionsMobileMeshF
         """
         exp = self.__boundary.getFormula()
         aleChoice = self.__boundary.getALEChoice();
-        
+
         if aleChoice == "fixed_velocity":
             if not exp:
                 exp = 'mesh_u ='
@@ -143,7 +143,7 @@ class BoundaryConditionsMobileMeshView(QWidget, Ui_BoundaryConditionsMobileMeshF
                  ('t', 'current time'),
                  ('iter', 'number of iteration')]
 
-        dialog = QMeiEditorView(self, 
+        dialog = QMeiEditorView(self,
                                 expression = exp,
                                 required   = req,
                                 symbols    = symbs,
@@ -158,7 +158,7 @@ class BoundaryConditionsMobileMeshView(QWidget, Ui_BoundaryConditionsMobileMeshF
     @pyqtSignature("const QString&")
     def __slotCombo(self, text):
         """
-        Called when the combobox changed. 
+        Called when the combobox changed.
         """
         modelData = self.__comboModel.dicoV2M[str(text)]
         # Enable/disable formula button.
diff --git a/gui/Pages/BoundaryConditionsParticlesModel.py b/gui/Pages/BoundaryConditionsParticlesModel.py
index 69698aa..9a6ff0a 100644
--- a/gui/Pages/BoundaryConditionsParticlesModel.py
+++ b/gui/Pages/BoundaryConditionsParticlesModel.py
@@ -115,7 +115,7 @@ class LagrangianBoundariesModel(Model):
         return default
 
 
-    def setBoundaryChoice(self, nature, labelbc, value): 
+    def setBoundaryChoice(self, nature, labelbc, value):
         """
         Update value for the boundary condition. Here we defined the xml nodes
         'self.node_boundary' and 'self.node_particles' used in many functions.
@@ -136,7 +136,7 @@ class LagrangianBoundariesModel(Model):
         self.setCurrentBoundaryNode(nature, labelbc)
 
 
-    def getBoundaryChoice(self, nature, labelbc): 
+    def getBoundaryChoice(self, nature, labelbc):
         """
         Return value for the boundary condition.
         """
@@ -157,11 +157,11 @@ class LagrangianBoundariesModel(Model):
         """
         self.node_boundary = self.node_boundaries.xmlInitChildNode(nature, label=labelbc)
         self.node_particles = self.node_boundary.xmlInitChildNode('particles', 'choice')
-        
+
 
     def newClassNode(self):
         """
-        Add a new 'class' node with child nodes. 
+        Add a new 'class' node with child nodes.
         """
         node_class = self.node_particles.xmlAddChild('class')
         node_class.xmlSetData('number', self.default['number'])
@@ -202,12 +202,12 @@ class LagrangianBoundariesModel(Model):
             for i in range(value-nnodes):
                 self.newClassNode()
         else:
-            for i in range(nnodes-value): 
+            for i in range(nnodes-value):
                 node_list[-1].xmlRemoveNode()
             # redefine self.node_class
             self.setCurrentClassNode(labelbc, value)
-            
-        
+
+
     def getNumberOfClassesValue(self, labelbc):
         """
         Return the number of classes.
@@ -237,7 +237,7 @@ class LagrangianBoundariesModel(Model):
             nnodes = len(nodes_list)
             self.isLowerOrEqual(iclass, nnodes)
             self.node_class = nodes_list[iclass-1]
-        
+
 
 ##     def getCurrentClassNode(self):
 ##         """
@@ -257,7 +257,7 @@ class LagrangianBoundariesModel(Model):
 ##         node = self.node_class.xmlInitChildNode('number')
 ##         node.xmlSetTextNode(value)
         self.node_class.xmlSetData('number', value)
-        
+
 
     def getNumberOfParticulesInClassValue(self, label, iclass):
         """
@@ -278,7 +278,7 @@ class LagrangianBoundariesModel(Model):
         self.isInt(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('frequency', value)
-        
+
 
     def getInjectionFrequencyValue(self, label, iclass):
         """
@@ -298,7 +298,7 @@ class LagrangianBoundariesModel(Model):
         self.isInt(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('statistical_groups', value)
-        
+
 
     def getParticleGroupNumberValue(self, label, iclass):
         """
@@ -318,7 +318,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('mass_flow_rate', value)
-        
+
 
     def getMassFlowRateValue(self, label, iclass):
         """
@@ -360,7 +360,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('statistical_weight', value)
-        
+
 
     def getStatisticalWeightValue(self, label, iclass):
         """
@@ -380,7 +380,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('density', value)
-        
+
 
     def getDensityValue(self, label, iclass):
         """
@@ -431,7 +431,7 @@ class LagrangianBoundariesModel(Model):
         choice = node_velocity['choice']
         self.isInList(choice, ["norm"])
         node_velocity.xmlSetData('norm', value)
-        
+
 
     def getVelocityNormValue(self, label, iclass):
         """
@@ -455,7 +455,7 @@ class LagrangianBoundariesModel(Model):
         choice = node_velocity['choice']
         self.isInList(choice, ["components"])
         node_velocity.xmlSetData('velocity_' + idir, value)
-        
+
 
     def getVelocityDirectionValue(self, label, iclass, idir):
         """
@@ -498,7 +498,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('temperature', value)
-        
+
 
     def getTemperatureValue(self, label, iclass):
         """
@@ -518,7 +518,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('specific_heat', value)
-        
+
 
     def getSpecificHeatValue(self, label, iclass):
         """
@@ -538,7 +538,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('emissivity', value)
-        
+
 
     def getEmissivityValue(self, label, iclass):
         """
@@ -580,7 +580,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('diameter', value)
-        
+
 
     def getDiameterValue(self, label, iclass):
         """
@@ -600,7 +600,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('diameter_standard_deviation', value)
-        
+
 
     def getDiameterVarianceValue(self, label, iclass):
         """
@@ -620,7 +620,7 @@ class LagrangianBoundariesModel(Model):
         self.isInt(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('coal_number', value)
-        
+
 
     def getCoalNumberValue(self, label, iclass):
         """
@@ -640,7 +640,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('coal_temperature', value)
-        
+
 
     def getCoalTemperatureValue(self, label, iclass):
         """
@@ -660,7 +660,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('raw_coal_mass_fraction', value)
-        
+
 
     def getCoalMassValue(self, label, iclass):
         """
@@ -680,7 +680,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('char_mass_fraction', value)
-        
+
 
     def getCokeMassValue(self, label, iclass):
         """
@@ -724,7 +724,7 @@ class LagrangianBoundariesTestCase(unittest.TestCase):
         """
         model = None
         model = LagrangianBoundariesModel(self.case)
-        
+
         assert model != None, 'Could not instantiate LagrangianBoundariesModel'
 
 
@@ -743,7 +743,7 @@ def suite():
     testSuite = unittest.makeSuite(LagrangianBoundariesTestCase, "check")
     return testSuite
 
-    
+
 def runTest():
     print "LagrangianBoundariesTestCase A COMPLETER *********."
     runner = unittest.TextTestRunner()
diff --git a/gui/Pages/BoundaryConditionsParticlesView.py b/gui/Pages/BoundaryConditionsParticlesView.py
index c47b2d6..66b2236 100644
--- a/gui/Pages/BoundaryConditionsParticlesView.py
+++ b/gui/Pages/BoundaryConditionsParticlesView.py
@@ -77,7 +77,7 @@ log.setLevel(GuiParam.DEBUG)
 
 
 #-------------------------------------------------------------------------------
-# Line edit delegate with an integere validator 
+# Line edit delegate with an integere validator
 #-------------------------------------------------------------------------------
 
 
@@ -112,14 +112,14 @@ class ParticleBoundaryInteractionDelegate(QItemDelegate):
     """
     Use of a combo box in the table.
     """
-    def __init__(self, parent): 
+    def __init__(self, parent):
         super(ParticleBoundaryInteractionDelegate, self).__init__(parent)
         self.parent = parent
 
 
     def createEditor(self, parent, option, index):
         editor = QComboBox(parent)
-        self.combo_mdl = ComboModel(editor,1,1) 
+        self.combo_mdl = ComboModel(editor,1,1)
         nature = index.model()._data[index.row()][1]
         self.dico = index.model().dicoM2V[nature]
         for k, v in self.dico.items():
@@ -147,7 +147,7 @@ class ParticleBoundaryInteractionDelegate(QItemDelegate):
 
 
     def tr(self, text):
-        return text 
+        return text
 
 
 #-------------------------------------------------------------------------------
@@ -178,14 +178,14 @@ class StandardItemModelBoundaries(QStandardItemModel):
             "outlet" : { "outlet" : self.tr("Particles outlet zone") },
             "symmetry" : { "bounce" : self.tr("Particles rebound zone") }
             }
-        
+
         self.dicoV2M = {}
         for key in self.dicoM2V.keys():
             dico = self.dicoM2V[key]
             self.dicoV2M[key] = {}
             for k, v in dico.items():
                 self.dicoV2M[key][v] = k
-                
+
         # Initialization
         for zone in LocalizationModel('BoundaryZone', self.case).getZones():
             label = zone.getLabel()
@@ -197,11 +197,11 @@ class StandardItemModelBoundaries(QStandardItemModel):
             row = self.rowCount()
             self.setRowCount(row+1)
 
-        
+
     def data(self, index, role):
         if not index.isValid():
             return QVariant()
-        
+
         if role == Qt.DisplayRole:
             row = index.row()
             col = index.column()
@@ -211,7 +211,7 @@ class StandardItemModelBoundaries(QStandardItemModel):
                 return QVariant(dico[self._data[row][col]])
             else:
                 return QVariant(self._data[row][col])
-            
+
         if role == Qt.ToolTipRole:
             if index.column() == 2:
                 return QVariant(self.tr("Code_Saturne keyword: IUSCLB"))
@@ -243,7 +243,7 @@ class StandardItemModelBoundaries(QStandardItemModel):
     def setData(self, index, value, role):
         row = index.row()
         col = index.column()
-        
+
         if col == 2:
             interaction = str(value.toString())
             self._data[row][col] = interaction
@@ -252,7 +252,7 @@ class StandardItemModelBoundaries(QStandardItemModel):
             self.model.setBoundaryChoice(nature, label, interaction)
             if nature != "inlet":
                 self._data[row][3] = 0
-                
+
         elif col == 3:
             nclasses, ok = value.toInt()
             self._data[row][col] = nclasses
@@ -260,7 +260,7 @@ class StandardItemModelBoundaries(QStandardItemModel):
             nn = self.model.getNumberOfClassesValue(label)
             label = self._data[row][0]
             self.model.setNumberOfClassesValue(label, nclasses)
-            
+
         self.emit(SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"), index, index)
         return True
 
@@ -270,7 +270,7 @@ class StandardItemModelBoundaries(QStandardItemModel):
 
 
     def tr(self, text):
-        return text 
+        return text
 
 
 #-------------------------------------------------------------------------------
@@ -306,22 +306,22 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         self.tableViewBoundaries.setItemDelegateForColumn(2,delegateInteraction)
         self.tableViewBoundaries.setItemDelegateForColumn(3,delegateClassNumber)
 
-        self.modelIPOIT = ComboModel(self.comboBoxIPOIT,3,1)                                  
+        self.modelIPOIT = ComboModel(self.comboBoxIPOIT,3,1)
         self.modelIPOIT.addItem(self.tr("Volumic flow rate"), "rate")
         self.modelIPOIT.addItem(self.tr("Statistical weight set by values"), "prescribed")
         self.modelIPOIT.addItem(self.tr("User defined statistical weight"), "subroutine")
 
-        self.modelIJUVW = ComboModel(self.comboBoxIJUVW,4,1) 
+        self.modelIJUVW = ComboModel(self.comboBoxIJUVW,4,1)
         self.modelIJUVW.addItem(self.tr("Fluid velocity"), "fluid")
         self.modelIJUVW.addItem(self.tr("Normal direction velocity"), "norm")
         self.modelIJUVW.addItem(self.tr("Velocity given by values"), "components")
         self.modelIJUVW.addItem(self.tr("User defined velocity"), "subroutine")
 
-        self.modelIJRTP = ComboModel(self.comboBoxIJRTP,2,1)                                  
+        self.modelIJRTP = ComboModel(self.comboBoxIJRTP,2,1)
         self.modelIJRTP.addItem(self.tr("Temperature set by values"), "prescribed")
         self.modelIJRTP.addItem(self.tr("User defined temperature"), "subroutine")
 
-        self.modelIJRDP = ComboModel(self.comboBoxIJRDP,2,1)                                  
+        self.modelIJRDP = ComboModel(self.comboBoxIJRDP,2,1)
         self.modelIJRDP.addItem(self.tr("Diameter set by values"), "prescribed")
         self.modelIJRDP.addItem(self.tr("User defined diameter"), "subroutine")
 
@@ -336,22 +336,22 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         self.connect(self.comboBoxIPOIT,  SIGNAL("activated(const QString&)"), self.slotIPOITChoice)
         self.connect(self.lineEditIPOIT,  SIGNAL("textChanged(const QString &)"), self.slotIPOIT)
         self.connect(self.lineEditIROPT,  SIGNAL("textChanged(const QString &)"), self.slotIROPT)
-                     
+
         self.connect(self.comboBoxIJUVW, SIGNAL("activated(const QString&)"),    self.slotIJUVW)
         self.connect(self.lineEditIUNO,  SIGNAL("textChanged(const QString &)"), self.slotIUNO)
         self.connect(self.lineEditIUPT,  SIGNAL("textChanged(const QString &)"), self.slotIUPT)
         self.connect(self.lineEditIVPT,  SIGNAL("textChanged(const QString &)"), self.slotIVPT)
         self.connect(self.lineEditIWPT,  SIGNAL("textChanged(const QString &)"), self.slotIWPT)
-                     
+
         self.connect(self.comboBoxIJRTP, SIGNAL("activated(const QString&)"),    self.slotIJRTP)
         self.connect(self.lineEditITPT,  SIGNAL("textChanged(const QString &)"), self.slotITPT)
         self.connect(self.lineEditICPT,  SIGNAL("textChanged(const QString &)"), self.slotICPT)
         self.connect(self.lineEditIEPSI, SIGNAL("textChanged(const QString &)"), self.slotIEPSI)
-                     
+
         self.connect(self.comboBoxIJRDP, SIGNAL("activated(const QString&)"),    self.slotIJRDP)
         self.connect(self.lineEditIDPT,  SIGNAL("textChanged(const QString &)"), self.slotIDPT)
         self.connect(self.lineEditIVDPT, SIGNAL("textChanged(const QString &)"), self.slotIVDPT)
-                     
+
         self.connect(self.lineEditINUCHL, SIGNAL("textChanged(const QString &)"), self.slotINUCHL)
         self.connect(self.lineEditIHPT,   SIGNAL("textChanged(const QString &)"), self.slotIHPT)
         self.connect(self.lineEditIMCHT,  SIGNAL("textChanged(const QString &)"), self.slotIMCHT)
@@ -364,43 +364,43 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         validatorIDEBT  = DoubleValidator(self.lineEditIDEBT, min=0.)
         validatorIPOIT  = IntValidator(self.lineEditIPOIT, min=0)
         validatorIROPT  = DoubleValidator(self.lineEditIROPT, min=0.)
-        
+
         validatorIUNO = DoubleValidator(self.lineEditIUNO) #, min=0.)
         validatorIUPT = DoubleValidator(self.lineEditIUPT)
         validatorIVPT = DoubleValidator(self.lineEditIVPT)
         validatorIWPT = DoubleValidator(self.lineEditIWPT)
-        
+
         validatorITPT  = DoubleValidator(self.lineEditITPT)#, min=0.)
         validatorICPT  = DoubleValidator(self.lineEditICPT)
         validatorIEPSI = DoubleValidator(self.lineEditIEPSI)
-        
+
         validatorIDPT  = DoubleValidator(self.lineEditIDPT, min=0.)
         validatorIVDPT = DoubleValidator(self.lineEditIVDPT)
-        
+
         validatorINUCHL = IntValidator(self.lineEditINUCHL, min=0)
         validatorIHPT   = DoubleValidator(self.lineEditIHPT)
         validatorIMCHT  = DoubleValidator(self.lineEditIMCHT, min=0.)
         validatorIMCKT  = DoubleValidator(self.lineEditIMCKT, min=0.)
-        
+
         self.lineEditIJNBP.setValidator(validatorIJNBP)
         self.lineEditIJFRE.setValidator(validatorIJFRE)
         self.lineEditICLST.setValidator(validatorICLST)
         self.lineEditIDEBT.setValidator(validatorIDEBT)
         self.lineEditIPOIT.setValidator(validatorIPOIT)
         self.lineEditIROPT.setValidator(validatorIROPT)
-        
+
         self.lineEditIUNO.setValidator(validatorIUNO)
         self.lineEditIUPT.setValidator(validatorIUPT)
         self.lineEditIVPT.setValidator(validatorIVPT)
         self.lineEditIWPT.setValidator(validatorIWPT)
-        
+
         self.lineEditITPT.setValidator(validatorITPT)
         self.lineEditICPT.setValidator(validatorICPT)
         self.lineEditIEPSI.setValidator(validatorIEPSI)
-        
+
         self.lineEditIDPT.setValidator(validatorIDPT)
         self.lineEditIVDPT.setValidator(validatorIVDPT)
-        
+
         self.lineEditINUCHL.setValidator(validatorINUCHL)
         self.lineEditIHPT.setValidator(validatorIHPT)
         self.lineEditIMCHT.setValidator(validatorIMCHT)
@@ -408,16 +408,16 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
 
         self._hideAllWidgets()
 
-        
+
     def _hideAllWidgets(self):
         self.groupBoxClassNumber.hide()
         self.groupBoxMain.hide()
         self.groupBoxRate.hide()
         self.groupBoxVelocity.hide()
-        self.groupBoxTemperature.hide()     
+        self.groupBoxTemperature.hide()
         self.groupBoxDiameter.hide()
         self.groupBoxCoal.hide()
-        
+
 
     @pyqtSignature("const QModelIndex&, const QModelIndex&")
     def slotEditBoundary(self, index, index2):
@@ -439,7 +439,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if nclasses > 0:
             self.groupBoxClassNumber.show()
             self.spinBoxICLAS.setMinimum(1)
-            self.spinBoxICLAS.setMaximum(nclasses) 
+            self.spinBoxICLAS.setMaximum(nclasses)
             self.spinBoxICLAS.setValue(1)
             self.slotICLAS(1)
         else:
@@ -460,7 +460,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         self.LM = LagrangianModel(self.case)
         part_model = self.LM.getParticlesModel()
 
-        # Main variables 
+        # Main variables
         self.groupBoxMain.show()
         npart = self.model.getNumberOfParticulesInClassValue(self.label, self.iclass)
         self.lineEditIJNBP.setText(QString(str(npart)))
@@ -475,27 +475,27 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
             self.labelICLST.setDisabled(True)
             self.lineEditICLST.setDisabled(True)
 
-        # Rate / stat. weight 
+        # Rate / stat. weight
         self.groupBoxRate.show()
         choice = self.model.getStatisticalWeightChoice(self.label, self.iclass)
         self.modelIPOIT.setItem(str_model=choice)
         text = self.modelIPOIT.dicoM2V[choice]
         self.slotIPOITChoice(QString(text))
-        
-            
-        # Velocity 
+
+
+        # Velocity
         self.groupBoxVelocity.show()
         choice = self.model.getVelocityChoice(self.label, self.iclass)
-        self.modelIJUVW.setItem(str_model=choice)       
+        self.modelIJUVW.setItem(str_model=choice)
         text = self.modelIJUVW.dicoM2V[choice]
         self.slotIJUVW(QString(text))
 
         # Temperature
         status = self.LM.getHeating()
         if part_model == "thermal" and status == "on":
-            self.groupBoxTemperature.show() 
+            self.groupBoxTemperature.show()
             choice = self.model.getTemperatureChoice(self.label, self.iclass)
-            self.modelIJRTP.setItem(str_model=choice)       
+            self.modelIJRTP.setItem(str_model=choice)
             text = self.modelIJRTP.dicoM2V[choice]
             self.slotIJRTP(QString(text))
 
@@ -529,17 +529,17 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if part_model == "thermal":
             self.groupBoxDiameter.show()
             choice = self.model.getDiameterChoice(self.label, self.iclass)
-            self.modelIJRDP.setItem(str_model=choice)       
+            self.modelIJRDP.setItem(str_model=choice)
             text = self.modelIJRDP.dicoM2V[choice]
             self.slotIJRDP(QString(text))
         elif part_model == "coal":
             self.groupBoxDiameter.show()
-            self.modelIJRDP.setItem(str_model="prescribed")       
+            self.modelIJRDP.setItem(str_model="prescribed")
 
         rho = self.model.getDensityValue(self.label, self.iclass)
         self.lineEditIROPT.setText(QString(str(rho)))
-        
-        
+
+
     @pyqtSignature("const QString&")
     def slotIJNBP(self, text):
         """
@@ -631,7 +631,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         self.model.setVelocityChoice(self.label, self.iclass, choice)
         self.frameVelocityNorm.hide()
         self.frameVelocityValues.hide()
-        if choice == "norm": 
+        if choice == "norm":
             self.frameVelocityNorm.show()
             norm = self.model.getVelocityNormValue(self.label, self.iclass)
             self.lineEditIUNO.setText(QString(str(norm)))
@@ -708,7 +708,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setTemperatureValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotICPT(self, text):
@@ -718,7 +718,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setSpecificHeatValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIEPSI(self, text):
@@ -728,7 +728,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setEmissivityValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIJRDP(self, text):
@@ -755,7 +755,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setDiameterValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIVDPT(self, text):
@@ -765,7 +765,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setDiameterVarianceValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotINUCHL(self, text):
@@ -775,7 +775,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toInt()
             self.model.setCoalNumberValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIHPT(self, text):
@@ -785,7 +785,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setCoalTemperatureValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIMCHT(self, text):
@@ -795,7 +795,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setCoalMassValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIMCKT(self, text):
@@ -805,13 +805,13 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setCokeMassValue(self.label, self.iclass, value)
-        
+
 
     def tr(self, text):
         """
         Translation
         """
-        return text 
+        return text
 
 
 #-------------------------------------------------------------------------------
diff --git a/gui/Pages/BoundaryConditionsScalarsView.py b/gui/Pages/BoundaryConditionsScalarsView.py
index 1586f30..077066c 100644
--- a/gui/Pages/BoundaryConditionsScalarsView.py
+++ b/gui/Pages/BoundaryConditionsScalarsView.py
@@ -145,7 +145,7 @@ class DoubleValueDelegate(QItemDelegate):
 class StandardItemModelScalars(QStandardItemModel):
 
     def __init__(self, case, boundary):
-        QStandardItemModel.__init__(self) 
+        QStandardItemModel.__init__(self)
 
         self.headers = [self.tr("Scalar Name"),
                         self.tr("Type"),
@@ -211,7 +211,7 @@ class StandardItemModelScalars(QStandardItemModel):
             elif choice == 'neumann':
                 line[2] = self.boundary.getScalar(s_label)
 
-        self._data.append(line) 
+        self._data.append(line)
 
 
     def data(self, index, role):
@@ -328,7 +328,7 @@ class StandardItemModelScalars(QStandardItemModel):
         Insert an element in the table view.
         """
         line = [label, codeNumber, var_nature, local]
-        self._data.append(line) 
+        self._data.append(line)
         row = self.rowCount()
         self.setRowCount(row+1)
 
@@ -407,7 +407,7 @@ class BoundaryConditionsScalarsView(QWidget, Ui_BoundaryConditionsScalarsForm):
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # End
diff --git a/gui/Pages/BoundaryConditionsTurbulenceInletView.py b/gui/Pages/BoundaryConditionsTurbulenceInletView.py
index c5b362f..7f52e54 100644
--- a/gui/Pages/BoundaryConditionsTurbulenceInletView.py
+++ b/gui/Pages/BoundaryConditionsTurbulenceInletView.py
@@ -80,7 +80,7 @@ class BoundaryConditionsTurbulenceInletView(QWidget, Ui_BoundaryConditionsTurbul
         Ui_BoundaryConditionsTurbulenceInletForm.__init__(self)
         self.setupUi(self)
 
-    
+
     def setup(self, case):
         """
         Setup the widget
@@ -93,7 +93,7 @@ class BoundaryConditionsTurbulenceInletView(QWidget, Ui_BoundaryConditionsTurbul
         self.__modelTurbulence = ComboModel(self.comboBoxTurbulence, 2, 1)
         self.__modelTurbulence.addItem(self.tr("Calculation by hydraulic diameter"), 'hydraulic_diameter')
         self.__modelTurbulence.addItem(self.tr("Calculation by turbulent intensity"), 'turbulent_intensity')
-        
+
         self.connect(self.lineEditDiameter, SIGNAL("textChanged(const QString &)"), self.__slotDiam)
         self.connect(self.lineEditIntensity, SIGNAL("textChanged(const QString &)"), self.__slotIntensity)
         self.connect(self.lineEditDiameterIntens, SIGNAL("textChanged(const QString &)"), self.__slotDiam)
diff --git a/gui/Pages/BoundaryConditionsVelocityInletView.py b/gui/Pages/BoundaryConditionsVelocityInletView.py
index 1fe03bb..99606b3 100644
--- a/gui/Pages/BoundaryConditionsVelocityInletView.py
+++ b/gui/Pages/BoundaryConditionsVelocityInletView.py
@@ -117,7 +117,7 @@ class BoundaryConditionsVelocityInletView(QWidget, Ui_BoundaryConditionsVelocity
 
         self.modelDirection = ComboModel(self.comboBoxDirection, 3, 1)
         self.modelDirection.addItem(self.tr("normal direction to the inlet"), 'normal')
-        self.modelDirection.addItem(self.tr("specified coordiates"), 'coordinates')
+        self.modelDirection.addItem(self.tr("specified coordinates"), 'coordinates')
         self.modelDirection.addItem(self.tr("user profile"), 'formula')
 
         # Validators
@@ -125,7 +125,7 @@ class BoundaryConditionsVelocityInletView(QWidget, Ui_BoundaryConditionsVelocity
         validatorX = DoubleValidator(self.lineEditDirectionX)
         validatorY = DoubleValidator(self.lineEditDirectionY)
         validatorZ = DoubleValidator(self.lineEditDirectionZ)
-        
+
         # Apply validators
         self.lineEditVelocity.setValidator(validatorVelocity)
         self.lineEditDirectionX.setValidator(validatorX)
@@ -357,7 +357,7 @@ class BoundaryConditionsVelocityInletView(QWidget, Ui_BoundaryConditionsVelocity
         exp = self.__boundary.getDirection('direction_formula')
 
         req = [('dir_x', 'Direction of the flow along X'),
-               ('dir_y', 'Direction of the flow along Y'), 
+               ('dir_y', 'Direction of the flow along Y'),
                ('dir_z', 'Direction of the flow along Z')]
 
         exa = "dir_x = 3.0;\ndir_y = 1.0;\ndir_z = 0.0;\n"
@@ -371,7 +371,7 @@ class BoundaryConditionsVelocityInletView(QWidget, Ui_BoundaryConditionsVelocity
 
         dialog = QMeiEditorView(self,expression = exp,
                                      required   = req,
-                                     symbols    = sym, 
+                                     symbols    = sym,
                                      examples   = exa)
         if dialog.exec_():
             result = dialog.get_result()
diff --git a/gui/Pages/BoundaryConditionsView.py b/gui/Pages/BoundaryConditionsView.py
index 05e6be3..b67d265 100644
--- a/gui/Pages/BoundaryConditionsView.py
+++ b/gui/Pages/BoundaryConditionsView.py
@@ -156,7 +156,7 @@ class BoundaryConditionsView(QWidget, Ui_BoundaryConditionsForm):
             if nature in list:
                 self.__modelBoundaries.insertItem(label, codeNumber, nature, local)
 
-        self.connect(self.treeViewBoundaries, 
+        self.connect(self.treeViewBoundaries,
                      SIGNAL("clicked(const QModelIndex &)"),
                      self.__slotSelectBoundary)
 
diff --git a/gui/Pages/BoundaryConditionsWallRadiativeTransferView.py b/gui/Pages/BoundaryConditionsWallRadiativeTransferView.py
index fea123a..da30611 100644
--- a/gui/Pages/BoundaryConditionsWallRadiativeTransferView.py
+++ b/gui/Pages/BoundaryConditionsWallRadiativeTransferView.py
@@ -73,7 +73,7 @@ log = logging.getLogger("BoundaryConditionsWallRadiativeTransferView")
 
 class StandardItemModelScalars(QStandardItemModel):
     def __init__(self, bdModel):
-        QStandardItemModel.__init__(self) 
+        QStandardItemModel.__init__(self)
         self.headers = [self.tr("Wall radiative\ncaracteristics"),
                         self.tr("Value"),
                         self.tr("Unit")]
@@ -142,7 +142,7 @@ class StandardItemModelScalars(QStandardItemModel):
 
 
     def insertItem(self):
-        self.dataScalars.append() 
+        self.dataScalars.append()
         row = self.rowCount()
         self.setRowCount(row+1)
 
@@ -158,28 +158,28 @@ class StandardItemModelScalars(QStandardItemModel):
         cond = self.bdModel.getRadiativeChoice()
 
         if cond == 'itpimp':
-            liste = [(0, self.tr("Emissivite"), '',  'EPSP',  'emissivity'), 
+            liste = [(0, self.tr("Emissivite"), '',  'EPSP',  'emissivity'),
                      (1, self.tr("Initial temperature"), 'K', 'TINTP', 'internal_temperature_profile')]
         if cond == 'ipgrno':
-            liste = [(0, self.tr("Emissivity"), '',  'EPSP',  'emissivity'), 
-                     (1, self.tr("Conductivity"), 'W/m/K', 'XLAMP', 'thermal_conductivity'), 
+            liste = [(0, self.tr("Emissivity"), '',  'EPSP',  'emissivity'),
+                     (1, self.tr("Conductivity"), 'W/m/K', 'XLAMP', 'thermal_conductivity'),
                      (2, self.tr("Thickness"), 'm', 'EPAP' , 'thickness'),
                      (3, self.tr("Profile of external temperature"), 'K', 'TEXTP', 'external_temperature_profile'),
                      (4, self.tr("Profile of internal temperature"), 'K', 'TINTP', 'internal_temperature_profile')]
 ##        if cond == 'iprefl':
-##            list = [(0, self.xlamp,t.XLAMP, 'W/m/K', 'XLAMP'), 
-##                    (1, self.epap, t.EPAP,  'm', 'EPAP'), 
-##                    (2, self.textp,t.TEXTP, 'K', 'TEXTP'), 
+##            list = [(0, self.xlamp,t.XLAMP, 'W/m/K', 'XLAMP'),
+##                    (1, self.epap, t.EPAP,  'm', 'EPAP'),
+##                    (2, self.textp,t.TEXTP, 'K', 'TEXTP'),
 ##                    (3, self.tintp,t.TINTP, 'K', 'TINTP')]
 ##            self.f43 = Tix.Frame(self.f4, relief=FLAT)
 ##            self.f43.pack(side=TOP, fill=X, pady=10)
 ##            frad = self.f43
         if cond == 'ifgrno':
-            liste = [(0, self.tr("Emissivity"),'', 'EPSP', 'emissivity'),   
+            liste = [(0, self.tr("Emissivity"),'', 'EPSP', 'emissivity'),
                      (1, self.tr("Flux of conduction"), 'W/m2', 'FLUX',  'flux'),
                      (2, self.tr("Inital temperature"), 'K', 'TINTP', 'internal_temperature_profile')]
 ##        if cond == 'ifrefl':
-##            list = [(0, self.flux, t.FLUX, 'W/m2', 'FLUX'), 
+##            list = [(0, self.flux, t.FLUX, 'W/m2', 'FLUX'),
 ##                    (1, self.tintp, t.TINTP, 'K', 'TINTP')]
 ##            self.f45 = Tix.Frame(self.f4, relief=FLAT)
 ##            self.f45.pack(side=TOP, fill=X, pady=10)
@@ -292,7 +292,7 @@ class BoundaryConditionsWallRadiativeTransferView(QWidget,
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # End
diff --git a/gui/Pages/CoalCombustionModel.py b/gui/Pages/CoalCombustionModel.py
index 68cb9b9..a0443f5 100644
--- a/gui/Pages/CoalCombustionModel.py
+++ b/gui/Pages/CoalCombustionModel.py
@@ -54,6 +54,7 @@ from Base.XMLmodel import ModelTest
 from Pages.FluidCharacteristicsModel import FluidCharacteristicsModel
 from Pages.NumericalParamEquationModel import NumericalParamEquatModel
 from ThermalRadiationModel import ThermalRadiationModel
+from ConjugateHeatTransferModel import ConjugateHeatTransferModel
 from LocalizationModel import LocalizationModel
 from Boundary import Boundary
 
@@ -141,7 +142,7 @@ class CoalCombustionModel(Variables, Model):
             for classe in range(0,classesNumber):
                 name = '%s%2.2i' % (baseName, classe+1)
                 list.append(name)
-        
+
         baseNames = [ "Fr_MV1", "Fr_MV2"]
         for baseName in baseNames:
             for coal in range(0,coalsNumber):
@@ -225,7 +226,7 @@ class CoalCombustionModel(Variables, Model):
         if self.getCoalCombustionModel() == 'coal_homo2':
             baseNames.append("Ga_SEC")
 
-        for baseName in baseNames: 
+        for baseName in baseNames:
             for classe in range(0,classesNumber):
                 name = '%s%2.2i' % (baseName, classe+1)
                 list.append(name)
@@ -256,7 +257,7 @@ class CoalCombustionModel(Variables, Model):
 
 
     def createModel (self) :
-        """ 
+        """
         Private method
         Create scalars and properties when coal combustion is selected
         """
@@ -268,9 +269,9 @@ class CoalCombustionModel(Variables, Model):
     def __deleteWetScalarsAndProperty(self):
         """
         Private method
-        Delete scalars XWT_CP and Fr_H20 and property Ga_SEC 
+        Delete scalars XWT_CP and Fr_H20 and property Ga_SEC
         if model is'nt 'coal_homo2'
-        """  
+        """
         if self.getCoalCombustionModel() != 'coal_homo2':
             nod = self.node_coal.xmlGetNode('scalar', type="model", name="FR_H20")
             if nod:
@@ -286,7 +287,7 @@ class CoalCombustionModel(Variables, Model):
     def __deleteCoalModelProperties(self, classMin, classMax, classesNumber):
         """
         Private method
-        Delete properties for one coal 
+        Delete properties for one coal
         """
         baseNames = ["Temp_CP", "Frm_CP", "Rho_CP", "Dia_CK", "Ga_DCH",
                      "Ga_DV1", "Ga_DV2", "Ga_HET"]
@@ -299,11 +300,11 @@ class CoalCombustionModel(Variables, Model):
         if nodeList != None:
             for node in nodeList :
                 nameNode =node['name']
-                for baseName in baseNames: 
+                for baseName in baseNames:
                     for classe in range(classMin, classMax):
                         name = '%s%2.2i' % (baseName, classe+1)
                         if ( nameNode == name):
-                            node.xmlRemoveNode()              
+                            node.xmlRemoveNode()
         #
         # Rename other classes
         nodeList = self.node_coal.xmlGetNodeList('property')
@@ -327,8 +328,8 @@ class CoalCombustionModel(Variables, Model):
     def __deleteCoalModelScalars(self, classMin, classMax, classesNumber, coalNumber, coalsNumber):
         """
         Private method
-        Delete scalars for one coal 
-        """       
+        Delete scalars for one coal
+        """
         baseNames = ["NP_CP",  "XCH_CP", "XCK_CP", "ENT_CP"]
         if self.getCoalCombustionModel() == 'coal_homo2':
             baseNames = ["NP_CP", "XCH_CP", "XCK_CP", "ENT_CP", "XWT_CP"]
@@ -338,7 +339,7 @@ class CoalCombustionModel(Variables, Model):
         if nodeList != None:
             for node in nodeList :
                 nameNode = node['name']
-                for baseName in baseNames: 
+                for baseName in baseNames:
                     for classe in range(classMin, classMax):
                         name = '%s%2.2i' % (baseName, classe+1)
                         if (nameNode == name):
@@ -367,10 +368,10 @@ class CoalCombustionModel(Variables, Model):
         if nodeList != None:
             for node in nodeList :
                 nameNode = node['name']
-                for baseName in baseNames: 
+                for baseName in baseNames:
                     name = '%s%2.2i' % (baseName, coalNumber+1)
                     if (nameNode == name):
-                        node.xmlRemoveNode()              
+                        node.xmlRemoveNode()
         #
         # Rename other coals
         nodeList = self.node_coal.xmlGetNodeList('scalar')
@@ -378,7 +379,7 @@ class CoalCombustionModel(Variables, Model):
             for node in nodeList:
                 oldName = node['name']
                 if oldName[:-2] in baseNames :
-                    oldNum = int(oldName[-2:])  
+                    oldNum = int(oldName[-2:])
                     if oldNum in range(coalNumber+1, coalsNumber+1):
                         name = '%s%2.2i' % (oldName[:-2], oldNum-1)
                         node['name'] = name
@@ -392,7 +393,7 @@ class CoalCombustionModel(Variables, Model):
         Update the coal combustion model markup from the XML document.
         """
         self.isInList(model, self.__coalCombustionModelsList())
-        
+
         mdl = FluidCharacteristicsModel(self.case)
 
         if model == 'off':
@@ -430,12 +431,12 @@ class CoalCombustionModel(Variables, Model):
             baseNames = ["NP_CP", "XCH_CP", "XCK_CP", "ENT_CP", "XWT_CP"]
         else:
             self.__deleteWetScalarsAndProperty()
-        
+
         for baseName in baseNames:
             for classe in range(classesNumber - coalClassesNumber, classesNumber):
                 name = '%s%2.2i' % (baseName, classe+1)
                 self.setNewModelScalar(self.node_coal, name)
-        
+
         baseNames = [ "Fr_MV1", "Fr_MV2"]
         for baseName in baseNames:
             name = '%s%2.2i' % (baseName, coalsNumber)
@@ -451,7 +452,7 @@ class CoalCombustionModel(Variables, Model):
     def __createCoalModelProperties(self, coalsNumber, coalClassesNumber, classesNumber):
         """
         Private method
-        Create new properties for one coal 
+        Create new properties for one coal
         """
         # create new properties
         baseNames = ["Temp_CP", "Frm_CP", "Rho_CP", "Dia_CK", "Ga_DCH",
@@ -459,7 +460,7 @@ class CoalCombustionModel(Variables, Model):
         if self.getCoalCombustionModel() == 'coal_homo2':
             baseNames = ["Temp_CP", "Frm_CP", "Rho_CP", "Dia_CK", "Ga_DCH",
                          "Ga_DV1", "Ga_DV2", "Ga_HET", "Ga_SEC"]
-        for baseName in baseNames: 
+        for baseName in baseNames:
             for classe in range(classesNumber - coalClassesNumber, classesNumber):
                 name = '%s%2.2i' % (baseName, classe+1)
                 self.setNewProperty(self.node_coal, name)
@@ -490,7 +491,7 @@ class CoalCombustionModel(Variables, Model):
                             node['label'] = name
         #
         # create new properties
-        for i in range(len(baseNames)): 
+        for i in range(len(baseNames)):
             name = '%s%2.2i' % (baseNames[i], classNum)
             self.setNewProperty(self.node_coal, name)
 
@@ -512,7 +513,7 @@ class CoalCombustionModel(Variables, Model):
             for node in nodeList:
                 oldName = node['name']
                 if oldName[:-2] in baseNames :
-                    oldNum = int(oldName[-2:])  
+                    oldNum = int(oldName[-2:])
                     if oldNum in range(classNum, classesNumber + 1):
                         name = '%s%2.2i' % (oldName[:-2], oldNum+1)
                         node['name'] = name
@@ -520,7 +521,7 @@ class CoalCombustionModel(Variables, Model):
                             node['label'] = name
         #
         # create new scalars
-        for i in range(len(baseNames)): 
+        for i in range(len(baseNames)):
             name = '%s%2.2i' % (baseNames[i], classNum)
             self.setNewModelScalar(self.node_coal, name)
 
@@ -544,6 +545,7 @@ class CoalCombustionModel(Variables, Model):
                     Boundary("coal_inlet", zone.getLabel(), self.case).deleteCoals()
 
             ThermalRadiationModel(self.case).setRadiativeModel('off')
+            ConjugateHeatTransferModel(self.case).setConjugateHeatTransferStatus('off')
             self.node_coal['model'] = 'off'
 
         else:
@@ -583,7 +585,7 @@ class CoalCombustionModel(Variables, Model):
         coalsNumber = thermoChemistryModel.getCoals().getCoalNumber()
         coalClassesNumber = thermoChemistryModel.getCoals().getClassesNumberList()[coalsNumber - 1]
         classesNumber = sum(thermoChemistryModel.getCoals().getClassesNumberList())
-        
+
         # add new scalars and properties
         self.__createCoalModelScalars(coalsNumber, coalClassesNumber, classesNumber)
         self.__createCoalModelProperties(coalsNumber, coalClassesNumber, classesNumber)
@@ -594,8 +596,8 @@ class CoalCombustionModel(Variables, Model):
         Create class of model scalars and properties for one given coal
         """
         self.isInt(coalNumber)
-        
-        classNum = 0 
+
+        classNum = 0
         for coal in range(0, coalNumber):
             classNum += thermoChemistryModel.getCoals().getClassesNumberList()[coal]
 
@@ -608,17 +610,17 @@ class CoalCombustionModel(Variables, Model):
 
     def deleteCoalModelScalarsAndProperties(self, thermoChemistryModel, coalNumber):
         """
-        Delete scalars and properties for one coal 
-        """       
+        Delete scalars and properties for one coal
+        """
         self.isInt(coalNumber)
-        
+
         classMin = 0
         for coal in range(0, coalNumber):
             classMin += thermoChemistryModel.getCoals().getClassesNumberList()[coal]
-        classMax = classMin + thermoChemistryModel.getCoals().getClassesNumberList()[coalNumber]          
+        classMax = classMin + thermoChemistryModel.getCoals().getClassesNumberList()[coalNumber]
         classesNumber = sum(thermoChemistryModel.getCoals().getClassesNumberList())
         coalsNumber = thermoChemistryModel.getCoals().getCoalNumber()
-        
+
         self.__deleteCoalModelScalars(classMin, classMax, classesNumber, coalNumber, coalsNumber)
         self.__deleteCoalModelProperties(classMin, classMax, classesNumber)
 
@@ -626,22 +628,22 @@ class CoalCombustionModel(Variables, Model):
     def deleteClassModelScalars(self, thermoChemistryModel, coalNumber, classeNumber):
         """
         delete class of model scalars
-        """       
+        """
         self.isInt(coalNumber)
         self.isInt(classeNumber)
-        
-        classNum = 0 
+
+        classNum = 0
         if (coalNumber >= 1) :
             for coal in range(0, coalNumber - 1):
                 classNum += thermoChemistryModel.getCoals().getClassesNumberList()[coal]
         classNum += classeNumber
-        
-        
+
+
         classesNumber = sum(thermoChemistryModel.getCoals().getClassesNumberList())
         baseNames = ["NP_CP", "XCH_CP", "XCK_CP", "ENT_CP"]
         if self.getCoalCombustionModel() == 'coal_homo2':
             baseNames = ["NP_CP", "XCH_CP", "XCK_CP", "ENT_CP", "XWT_CP"]
-    
+
         #
         # Remove coal classes
         nodeList = self.node_coal.xmlGetNodeList('scalar')
@@ -659,7 +661,7 @@ class CoalCombustionModel(Variables, Model):
             for node in nodeList:
                 oldName = node['name']
                 if oldName[:-2] in baseNames :
-                    oldNum = int(oldName[-2:])  
+                    oldNum = int(oldName[-2:])
                     if oldNum in range(classNum + 1, classesNumber + 1):
                         name = '%s%2.2i' % (oldName[:-2], oldNum-1)
                         node['name'] = name
@@ -670,15 +672,15 @@ class CoalCombustionModel(Variables, Model):
     def deleteClassModelProperties(self, thermoChemistryModel, coalNumber, classeNumber):
         """
         delete class of model properties
-        """       
+        """
         self.isInt(coalNumber)
         self.isInt(classeNumber)
-        
-        classNum = 0 
+
+        classNum = 0
         for coal in range(0, coalNumber):
             classNum += thermoChemistryModel.getCoals().getClassesNumberList()[coal]
         classNum += classeNumber
-        
+
         classesNumber = sum(thermoChemistryModel.getCoals().getClassesNumberList())
         baseNames = ["Temp_CP", "Frm_CP", "Rho_CP", "Dia_CK", "Ga_DCH",
                      "Ga_DV1", "Ga_DV2", "Ga_HET"]
@@ -694,7 +696,7 @@ class CoalCombustionModel(Variables, Model):
                 for baseName in baseNames:
                     name = '%s%2.2i' % (baseName, classNum+1)
                     if (nodeName == name):
-                        node.xmlRemoveNode()              
+                        node.xmlRemoveNode()
         #
         # Rename other classes
         nodeList = self.node_coal.xmlGetNodeList('property')
@@ -702,7 +704,7 @@ class CoalCombustionModel(Variables, Model):
             for node in nodeList:
                 oldName = node['name']
                 if oldName[:-2] in baseNames :
-                    oldNum = int(oldName[-2:])  
+                    oldNum = int(oldName[-2:])
                     if oldNum in range(classNum + 1, classesNumber + 1):
                         name = '%s%2.2i' % (oldName[:-2], oldNum-1)
                         node['name'] = name
@@ -727,7 +729,7 @@ class CoalCombustionModelTestCase(ModelTest):
         """Check whether the CoalCombustionModel class could be set and get combustion model"""
         model = CoalCombustionModel(self.case)
         model.setCoalCombustionModel('coal_homo')
-        
+
         doc = '''<pulverized_coal model="coal_homo">
                     <scalar label="Enthalpy" name="Enthalpy" type="model">
                             <flux_reconstruction status="off"/>
@@ -785,17 +787,17 @@ class CoalCombustionModelTestCase(ModelTest):
 
     def checkCreateCoalModelScalarsAndProperties(self):
         """
-        Check whether the CoalCombustionModel class could be 
+        Check whether the CoalCombustionModel class could be
         created new scalars and properties for one new coal
         """
         model = CoalCombustionModel(self.case)
         model.setCoalCombustionModel('coal_homo')
-        
+
         from CoalThermoChemistry import CoalThermoChemistryModel, Coal
         coalThermoChModel = CoalThermoChemistryModel("dp_FCP",self.case)
         coalThermoChModel.getCoals().addCoal(Coal())
         del CoalThermoChemistryModel
-        
+
         model.createCoalModelScalarsAndProperties(coalThermoChModel)
 
         doc = '''<pulverized_coal model="coal_homo">
@@ -854,19 +856,19 @@ class CoalCombustionModelTestCase(ModelTest):
                     <property label="Ga_DV202" name="Ga_DV202"/>
                     <property label="Ga_HET02" name="Ga_HET02"/>
             </pulverized_coal>'''
-            
+
         assert model.node_coal == self.xmlNodeFromString(doc),\
             'Could not create newscalars and properties for new coal'
 
 
     def checkCreateClassModelScalarsAndProperties(self):
         """
-        Check whether the CoalCombustionModel class could be 
+        Check whether the CoalCombustionModel class could be
         created a new class of scalars and properties for one coal
         """
         model = CoalCombustionModel(self.case)
         model.setCoalCombustionModel('coal_homo')
-        
+
         from CoalThermoChemistry import CoalThermoChemistryModel, Coal
         coalThermoChModel = CoalThermoChemistryModel("dp_FCP",self.case)
         coalThermoChModel.getCoals().addCoal(Coal())
@@ -874,9 +876,9 @@ class CoalCombustionModelTestCase(ModelTest):
         coalThermoChModel.getCoals().addCoal(Coal())
         model.createCoalModelScalarsAndProperties(coalThermoChModel)
         del CoalThermoChemistryModel
-        
+
         model.createClassModelScalarsAndProperties(coalThermoChModel, 2)
-        
+
         doc = '''<pulverized_coal model="coal_homo">
                     <scalar label="Enthalpy" name="Enthalpy" type="model"><flux_reconstruction status="off"/></scalar>
                     <scalar label="NP_CP01" name="NP_CP01" type="model"><flux_reconstruction status="off"/></scalar>
@@ -978,12 +980,12 @@ class CoalCombustionModelTestCase(ModelTest):
 
     def checkDeleteCoalModelScalarsAndProperties(self):
         """
-        Check whether the CoalCombustionModel class could be 
+        Check whether the CoalCombustionModel class could be
         deleted class of scalars and properties for one given coal
         """
         model = CoalCombustionModel(self.case)
         model.setCoalCombustionModel('coal_homo')
-        
+
         from CoalThermoChemistry import CoalThermoChemistryModel, Coal
         coalThermoChModel = CoalThermoChemistryModel("dp_FCP",self.case)
         coalThermoChModel.getCoals().addCoal(Coal())
@@ -991,7 +993,7 @@ class CoalCombustionModelTestCase(ModelTest):
         coalThermoChModel.getCoals().addCoal(Coal())
         model.createCoalModelScalarsAndProperties(coalThermoChModel)
         del CoalThermoChemistryModel
-        
+
         model.createClassModelScalarsAndProperties(coalThermoChModel, 2)
         model.deleteCoalModelScalarsAndProperties(coalThermoChModel, 1)
 
@@ -1078,12 +1080,12 @@ class CoalCombustionModelTestCase(ModelTest):
 
     def checkDeleteClassModelScalarsAndProperties(self):
         """
-        Check whether the CoalCombustionModel class could be 
+        Check whether the CoalCombustionModel class could be
         deleted class of scalars and properties for one given coal
         """
         model = CoalCombustionModel(self.case)
         model.setCoalCombustionModel('coal_homo')
-        
+
         from CoalThermoChemistry import CoalThermoChemistryModel, Coal
         coalThermoChModel = CoalThermoChemistryModel("dp_FCP",self.case)
         coalThermoChModel.getCoals().addCoal(Coal())
@@ -1091,7 +1093,7 @@ class CoalCombustionModelTestCase(ModelTest):
         coalThermoChModel.getCoals().addCoal(Coal())
         model.createCoalModelScalarsAndProperties(coalThermoChModel)
         del CoalThermoChemistryModel
-        
+
         model.createClassModelScalarsAndProperties(coalThermoChModel, 2)
         model.deleteClassModelScalars(coalThermoChModel, 2, 1)
 
@@ -1186,7 +1188,7 @@ def suite():
     testSuite = unittest.makeSuite(CoalCombustionModelTestCase, "check")
     return testSuite
 
-    
+
 def runTest():
     print "CoalCombustionModelTestCase"
     runner = unittest.TextTestRunner()
diff --git a/gui/Pages/CoalCombustionView.py b/gui/Pages/CoalCombustionView.py
index d54d2cf..8a0955b 100644
--- a/gui/Pages/CoalCombustionView.py
+++ b/gui/Pages/CoalCombustionView.py
@@ -301,7 +301,7 @@ class StandardItemModelOxydant(QStandardItemModel):
         """
         QStandardItemModel.__init__(self)
         self.headers = [self.tr("Oxydant\nnumber"),
-                        self.tr("     O2      "), 
+                        self.tr("     O2      "),
                         self.tr("     N2      "),
                         self.tr("     H2O     "),
                         self.tr("     CO2     ")]
diff --git a/gui/Pages/CoalThermoChemistry.py b/gui/Pages/CoalThermoChemistry.py
index a09df43..d7764cb 100644
--- a/gui/Pages/CoalThermoChemistry.py
+++ b/gui/Pages/CoalThermoChemistry.py
@@ -431,11 +431,11 @@ class Coals(Model):
         self.CDryCompositionList.pop(nb)
         self.HDryCompositionList.pop(nb)
         self.ODryCompositionList.pop(nb)
-        self.DryList.pop(nb)                
-        self.PCIValueList.pop(nb)           
-        self.thermalCapacityList.pop(nb)    
-        self.densityList.pop(nb)            
-        self.humidityList.pop(nb)            
+        self.DryList.pop(nb)
+        self.PCIValueList.pop(nb)
+        self.thermalCapacityList.pop(nb)
+        self.densityList.pop(nb)
+        self.humidityList.pop(nb)
         self.CDryCompositionCokeList.pop(nb)
         self.HDryCompositionCokeList.pop(nb)
         self.ODryCompositionCokeList.pop(nb)
@@ -458,7 +458,7 @@ class Coals(Model):
         self.EHETCH_CO2List.pop(nb)
         self.IOCHET_CO2List.pop(nb)
 
-    
+
     def addCoal(self, coal):
         self.coalNumber += 1
         self.isLowerOrEqual(self.coalNumber, 3)
@@ -467,11 +467,11 @@ class Coals(Model):
         self.CDryCompositionList.append(coal.getCDryComposition())
         self.HDryCompositionList.append(coal.getHDryComposition())
         self.ODryCompositionList.append(coal.getODryComposition())
-        self.DryList.append(coal.getDry()) 
-        self.PCIValueList.append(coal.getPCIValue())           
-        self.thermalCapacityList.append(coal.getThermalCapacity())    
-        self.densityList.append(coal.getDensity())            
-        self.humidityList.append(coal.getHumidity())            
+        self.DryList.append(coal.getDry())
+        self.PCIValueList.append(coal.getPCIValue())
+        self.thermalCapacityList.append(coal.getThermalCapacity())
+        self.densityList.append(coal.getDensity())
+        self.humidityList.append(coal.getHumidity())
         self.CDryCompositionCokeList.append(coal.getCDryCompositionCoke())
         self.HDryCompositionCokeList.append(coal.getHDryCompositionCoke())
         self.ODryCompositionCokeList.append(coal.getODryCompositionCoke())
@@ -495,18 +495,18 @@ class Coals(Model):
         self.IOCHET_CO2List.append(coal.getIOCHET_CO2())
 
 
-    def updateCoal(self,number, coal) : 
+    def updateCoal(self,number, coal) :
         nb = number - 1
         self.classesNumberList[nb]        = coal.getClassesNumber()
         self.initDiameterClassesList[nb]  = coal.getInitDiameterClasses()
         self.CDryCompositionList[nb]      = coal.getCDryComposition()
         self.HDryCompositionList[nb]      = coal.getHDryComposition()
         self.ODryCompositionList[nb]      = coal.getODryComposition()
-        self.DryList[nb]                  = coal.getDry() 
-        self.PCIValueList[nb]             = coal.getPCIValue()           
-        self.thermalCapacityList[nb]      = coal.getThermalCapacity()    
-        self.densityList[nb]              = coal.getDensity()            
-        self.humidityList[nb]             = coal.getHumidity()            
+        self.DryList[nb]                  = coal.getDry()
+        self.PCIValueList[nb]             = coal.getPCIValue()
+        self.thermalCapacityList[nb]      = coal.getThermalCapacity()
+        self.densityList[nb]              = coal.getDensity()
+        self.humidityList[nb]             = coal.getHumidity()
         self.CDryCompositionCokeList[nb]  = coal.getCDryCompositionCoke()
         self.HDryCompositionCokeList[nb]  = coal.getHDryCompositionCoke()
         self.ODryCompositionCokeList[nb]  = coal.getODryCompositionCoke()
@@ -535,14 +535,14 @@ class Coals(Model):
         nb = number - 1
         coal.setClassesNumber(self.classesNumberList[nb])
         coal.setInitDiameterClasses(self.initDiameterClassesList[nb])
-        coal.setCDryComposition(self.CDryCompositionList[nb])    
-        coal.setHDryComposition(self.HDryCompositionList[nb])   
-        coal.setODryComposition(self.ODryCompositionList[nb])  
-        coal.setDry(self.DryList[nb])                
-        coal.setPCIValue(self.PCIValueList[nb])           
-        coal.setThermalCapacity(self.thermalCapacityList[nb])    
-        coal.setDensity(self.densityList[nb])            
-        coal.setHumidity(self.humidityList[nb])            
+        coal.setCDryComposition(self.CDryCompositionList[nb])
+        coal.setHDryComposition(self.HDryCompositionList[nb])
+        coal.setODryComposition(self.ODryCompositionList[nb])
+        coal.setDry(self.DryList[nb])
+        coal.setPCIValue(self.PCIValueList[nb])
+        coal.setThermalCapacity(self.thermalCapacityList[nb])
+        coal.setDensity(self.densityList[nb])
+        coal.setHumidity(self.humidityList[nb])
         coal.setCDryCompositionCoke(self.CDryCompositionCokeList[nb])
         coal.setHDryCompositionCoke(self.HDryCompositionCokeList[nb])
         coal.setODryCompositionCoke(self.ODryCompositionCokeList[nb])
@@ -550,43 +550,43 @@ class Coals(Model):
         coal.setAshesRatio(self.ashesRatioList[nb])
         coal.setAshesFormingEnthalpy(self.ashesFormingEnthalpyList[nb])
         coal.setAshesThermalCapacity(self.ashesThermalCapacityList[nb])
-        coal.setIY1CH(self.IY1CHList[nb])               
-        coal.setY1CH(self.Y1CHList[nb])                
-        coal.setIY2CH(self.IY2CHList[nb])               
-        coal.setY2CH(self.Y2CHList[nb])                
-        coal.setA1CH(self.A1CHList[nb])                
-        coal.setA2CH(self.A2CHList[nb])                
-        coal.setE1CH(self.E1CHList[nb]) 
-        coal.setE2CH(self.E2CHList[nb]) 
+        coal.setIY1CH(self.IY1CHList[nb])
+        coal.setY1CH(self.Y1CHList[nb])
+        coal.setIY2CH(self.IY2CHList[nb])
+        coal.setY2CH(self.Y2CHList[nb])
+        coal.setA1CH(self.A1CHList[nb])
+        coal.setA2CH(self.A2CHList[nb])
+        coal.setE1CH(self.E1CHList[nb])
+        coal.setE2CH(self.E2CHList[nb])
         coal.setAHETCH_O2(self.AHETCH_O2List[nb])
         coal.setEHETCH_O2(self.EHETCH_O2List[nb])
         coal.setIOCHET_O2(self.IOCHET_O2List[nb])
         coal.setAHETCH_CO2(self.AHETCH_CO2List[nb])
         coal.setEHETCH_CO2(self.EHETCH_CO2List[nb])
-        coal.setIOCHET_O2(self.IOCHET_CO2List[nb])
+        coal.setIOCHET_CO2(self.IOCHET_CO2List[nb])
         return coal
-        
-        
+
+
     def getCoalNumber(self):
         return self.coalNumber
-        
+
 
     def getClassesNumberList(self):
         return self.classesNumberList
 
-        
+
     def getInitDiameterClassesList(self):
         return self.initDiameterClassesList
 
-        
+
     def getCDryCompositionList(self):
         return self.CDryCompositionList
 
-        
+
     def getHDryCompositionList(self):
         return self.HDryCompositionList
 
-        
+
     def getODryCompositionList(self):
         return self.ODryCompositionList
 
@@ -594,15 +594,15 @@ class Coals(Model):
     def getDryList(self):
         return self.DryList
 
-        
+
     def getPCIValueList(self):
         return self.PCIValueList
 
-        
+
     def getThermalCapacityList(self):
         return self.thermalCapacityList
 
-        
+
     def getDensityList(self):
         return self.densityList
 
@@ -614,51 +614,51 @@ class Coals(Model):
     def getCDryCompositionCokeList(self):
         return self.CDryCompositionCokeList
 
-        
+
     def getHDryCompositionCokeList(self):
         return self.HDryCompositionCokeList
 
-        
+
     def getODryCompositionCokeList(self):
         return self.ODryCompositionCokeList
 
-        
+
     def getPCICokeValueList(self):
         return self.PCICokeValueList
 
-        
+
     def getAshesRatioList(self):
         return self.ashesRatioList
 
-        
+
     def getAshesFormingEnthalpyList(self):
         return self.ashesFormingEnthalpyList
-        
-        
+
+
     def getAshesThermalCapacityList(self):
         return self.ashesThermalCapacityList
 
 
     def setCoalNumber(self, value):
-        self.coalNumber = value 
+        self.coalNumber = value
+
 
-        
     def setClassesNumberList(self, value):
         self.classesNumberList = value
 
-        
+
     def setInitDiameterClassesList(self, value):
         self.initDiameterClassesList = value
 
-        
+
     def setCDryCompositionList(self, value):
         self.CDryCompositionList = value
 
-        
+
     def setHDryCompositionList(self, value):
         self.HDryCompositionList = value
 
-        
+
     def setODryCompositionList(self, value):
         self.ODryCompositionList = value
 
@@ -666,15 +666,15 @@ class Coals(Model):
     def setDryList(self, value):
         self.DryList = value
 
-        
+
     def setPCIValueList(self, value):
         self.PCIValueList = value
 
-        
+
     def setThermalCapacityList(self, value):
         self.thermalCapacityList = value
 
-        
+
     def setDensityList(self, value):
         self.densityList = value
 
@@ -682,31 +682,31 @@ class Coals(Model):
     def setHumidityList(self, value):
         self.humidityList = value
 
-        
+
     def setCDryCompositionCokeList(self, value):
         self.CDryCompositionCokeList = value
 
-        
+
     def setHDryCompositionCokeList(self, value):
         self.HDryCompositionCokeList = value
 
-        
+
     def setODryCompositionCokeList(self, value):
         self.ODryCompositionCokeList = value
 
-        
+
     def setPCICokeValueList(self, value):
         self.PCICokeValueList = value
 
-        
+
     def setAshesRatioList(self, value):
         self.ashesRatioList = value
 
-        
+
     def setAshesFormingEnthalpyList(self, value):
         self.ashesFormingEnthalpyList = value
-        
-        
+
+
     def setAshesThermalCapacityList(self, value):
         self.ashesThermalCapacityList = value
 
@@ -715,17 +715,17 @@ class Coals(Model):
     def getIY1CHList(self):
         return self.IY1CHList
 
-    
+
     def getY1CHList(self):
         return self.Y1CHList
 
 
     def getIY2CHList(self):
-        return self.IY2CHList 
+        return self.IY2CHList
 
 
     def getY2CHList(self):
-        return self.Y2CHList      
+        return self.Y2CHList
 
 
     def getA1CHList(self):
@@ -742,12 +742,12 @@ class Coals(Model):
 
     def getE2CHList(self):
         return self.E2CHList
-    
+
 
     def setIY1CHList(self, value):
         self.IY1CHList = value
 
-    
+
     def setY1CHList(self, value):
         self.Y1CHList = value
 
@@ -757,7 +757,7 @@ class Coals(Model):
 
 
     def setY2CHList(self, value):
-        self.Y2CHList = value      
+        self.Y2CHList = value
 
 
     def setA1CHList(self, value):
@@ -777,7 +777,7 @@ class Coals(Model):
     #
     # "COMBUSTION HETEROGENE" part
     def getAHETCH_O2List(self):
-        return self.AHETCH_O2List  
+        return self.AHETCH_O2List
 
 
     def getEHETCH_O2List(self):
@@ -789,7 +789,7 @@ class Coals(Model):
 
 
     def getAHETCH_CO2List(self):
-        return self.AHETCH_CO2List  
+        return self.AHETCH_CO2List
 
 
     def getEHETCH_CO2List(self):
@@ -801,7 +801,7 @@ class Coals(Model):
 
 
     def setAHETCH_O2List(self, value):
-        self.AHETCH_O2List = value  
+        self.AHETCH_O2List = value
 
 
     def setEHETCH_O2List(self, value):
@@ -813,7 +813,7 @@ class Coals(Model):
 
 
     def setAHETCH_CO2List(self, value):
-        self.AHETCH_CO2List = value  
+        self.AHETCH_CO2List = value
 
 
     def setEHETCH_CO2List(self, value):
@@ -952,7 +952,7 @@ class Oxydants(Model):
         self.CO2List.append(oxy.getCO2())
 
 
-    def updateOxydant(self, number, oxy) : 
+    def updateOxydant(self, number, oxy) :
         nb = number - 1
         self.oxydantNumberList[nb] = oxy.getOxydantNumber()
         self.O2List[nb] = oxy.getO2()
@@ -1129,9 +1129,9 @@ class CoalThermoChemistryModel:
                 ElementarySpeciesMolarMassesList.append(float(valuesList[0]))
                 composition = []
                 for currentSpec in range(self.species.getCurrentSpeciesNb()):
-                    composition.append(int(valuesList[1 + currentSpec]))    
+                    composition.append(int(valuesList[1 + currentSpec]))
                 CurrentSpeciesCompositionList.append(composition)
-                
+
             except:
                 msg = "Reading file error: " + filePath
                 msg = msg + "\nElementarySpeciesMolarMassesList or CurrentSpeciesCompositionList reading\n"
@@ -1181,7 +1181,7 @@ class CoalThermoChemistryModel:
                     InitDiameter.append(float(strList[pt+Class]))
                 pt += self.coals.classesNumberList[coal]
                 InitDiameterClassesList.append(InitDiameter)
-                
+
             self.coals.setInitDiameterClassesList(InitDiameterClassesList)
 
         except:
@@ -1189,28 +1189,28 @@ class CoalThermoChemistryModel:
             raise ValueError, msg
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "CDryCompositionList", filePath)    
+        values = self.__readFloatCoalValues(line, "CDryCompositionList", filePath)
         self.coals.setCDryCompositionList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "HDryCompositionList", filePath)    
+        values = self.__readFloatCoalValues(line, "HDryCompositionList", filePath)
         self.coals.setHDryCompositionList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "ODryCompositionList", filePath)    
+        values = self.__readFloatCoalValues(line, "ODryCompositionList", filePath)
         self.coals.setODryCompositionList(values)
 
         line = ThermoChFile.readline()
-        intValues, floatValues = self.__readIntFloatCoalValues(line, "PCIValue", filePath) 
+        intValues, floatValues = self.__readIntFloatCoalValues(line, "PCIValue", filePath)
         self.coals.setDryList(intValues)
         self.coals.setPCIValueList(floatValues)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "thermalCapacity", filePath)    
+        values = self.__readFloatCoalValues(line, "thermalCapacity", filePath)
         self.coals.setThermalCapacityList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "density", filePath)    
+        values = self.__readFloatCoalValues(line, "density", filePath)
         self.coals.setDensityList(values)
 
         # "Coke" part
@@ -1221,19 +1221,19 @@ class CoalThermoChemistryModel:
             raise ValueError, msg
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "CDryCompositionCokeList", filePath)    
+        values = self.__readFloatCoalValues(line, "CDryCompositionCokeList", filePath)
         self.coals.setCDryCompositionCokeList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "HDryCompositionCokeList", filePath)    
+        values = self.__readFloatCoalValues(line, "HDryCompositionCokeList", filePath)
         self.coals.setHDryCompositionCokeList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "ODryCompositionCokeList", filePath)    
+        values = self.__readFloatCoalValues(line, "ODryCompositionCokeList", filePath)
         self.coals.setODryCompositionCokeList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "PCICokeValue", filePath)    
+        values = self.__readFloatCoalValues(line, "PCICokeValue", filePath)
         self.coals.setPCICokeValueList(values)
 
         # "Cendres" part
@@ -1244,19 +1244,19 @@ class CoalThermoChemistryModel:
             raise ValueError, msg
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "ashesRatioList", filePath)    
+        values = self.__readFloatCoalValues(line, "ashesRatioList", filePath)
         self.coals.setAshesRatioList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "AshesFormingEnthalpy", filePath)    
+        values = self.__readFloatCoalValues(line, "AshesFormingEnthalpy", filePath)
         self.coals.setAshesFormingEnthalpyList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "AshesThermalCapacity", filePath)    
+        values = self.__readFloatCoalValues(line, "AshesThermalCapacity", filePath)
         self.coals.setAshesThermalCapacityList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "humidity", filePath)    
+        values = self.__readFloatCoalValues(line, "humidity", filePath)
         self.coals.setHumidityList(values)
 
         # "Devolatilisation (Kobayashi)" part
@@ -1268,29 +1268,29 @@ class CoalThermoChemistryModel:
             raise ValueError, msg
 
         line = ThermoChFile.readline()
-        intValues, floatValues = self.__readIntFloatCoalValues(line, "IY1CH", filePath)    
+        intValues, floatValues = self.__readIntFloatCoalValues(line, "IY1CH", filePath)
         self.coals.setIY1CHList(intValues)
         self.coals.setY1CHList(floatValues)
 
         line = ThermoChFile.readline()
-        intValues, floatValues = self.__readIntFloatCoalValues(line, "IY2CH", filePath)    
+        intValues, floatValues = self.__readIntFloatCoalValues(line, "IY2CH", filePath)
         self.coals.setIY2CHList(intValues)
         self.coals.setY2CHList(floatValues)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "A1CH", filePath)    
+        values = self.__readFloatCoalValues(line, "A1CH", filePath)
         self.coals.setA1CHList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "A2CH", filePath)    
+        values = self.__readFloatCoalValues(line, "A2CH", filePath)
         self.coals.setA2CHList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "E1CH", filePath)    
+        values = self.__readFloatCoalValues(line, "E1CH", filePath)
         self.coals.setE1CHList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "E2CH", filePath)    
+        values = self.__readFloatCoalValues(line, "E2CH", filePath)
         self.coals.setE2CHList(values)
 
         # "Devolatisation (Kobayashi)" part
@@ -1302,15 +1302,15 @@ class CoalThermoChemistryModel:
             raise ValueError, msg
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "AHETCH_O2", filePath)    
+        values = self.__readFloatCoalValues(line, "AHETCH_O2", filePath)
         self.coals.setAHETCH_O2List(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "EHETCH_O2", filePath)    
+        values = self.__readFloatCoalValues(line, "EHETCH_O2", filePath)
         self.coals.setEHETCH_O2List(values)
 
         line = ThermoChFile.readline()
-        values = self.__readIntCoalValues(line, "IOCHET_O2", filePath)    
+        values = self.__readIntCoalValues(line, "IOCHET_O2", filePath)
         self.coals.setIOCHET_O2List(values)
 
         line = ThermoChFile.readline()
@@ -1321,15 +1321,15 @@ class CoalThermoChemistryModel:
             raise ValueError, msg
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "AHETCH_CO2", filePath)    
+        values = self.__readFloatCoalValues(line, "AHETCH_CO2", filePath)
         self.coals.setAHETCH_CO2List(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatCoalValues(line, "EHETCH_CO2", filePath)    
+        values = self.__readFloatCoalValues(line, "EHETCH_CO2", filePath)
         self.coals.setEHETCH_CO2List(values)
 
         line = ThermoChFile.readline()
-        values = self.__readIntCoalValues(line, "IOCHET_CO2", filePath)    
+        values = self.__readIntCoalValues(line, "IOCHET_CO2", filePath)
         self.coals.setIOCHET_CO2List(values)
 
         line = ThermoChFile.readline()
@@ -1344,19 +1344,19 @@ class CoalThermoChemistryModel:
         self.oxydants.setNumber(value)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatOxydantsValues(line, "O2 for oxydants", filePath)    
+        values = self.__readFloatOxydantsValues(line, "O2 for oxydants", filePath)
         self.oxydants.setO2List(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatOxydantsValues(line, "N2 for oxydants", filePath)    
+        values = self.__readFloatOxydantsValues(line, "N2 for oxydants", filePath)
         self.oxydants.setN2List(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatOxydantsValues(line, "H2O for oxydants", filePath)    
+        values = self.__readFloatOxydantsValues(line, "H2O for oxydants", filePath)
         self.oxydants.setH2OList(values)
 
         line = ThermoChFile.readline()
-        values = self.__readFloatOxydantsValues(line, "CO2 for oxydants", filePath)    
+        values = self.__readFloatOxydantsValues(line, "CO2 for oxydants", filePath)
         self.oxydants.setCO2List(values)
 
         ThermoChFile.close()
@@ -1380,7 +1380,7 @@ class CoalThermoChemistryModel:
         chain = str(self.species.getCurrentSpeciesNb())
         comment = self.createComment(len(chain),self.species.Comment["currentSpeciesNb"])
         ThermoChFile.write(chain + comment + "\n")
-        
+
         chain = str(self.species.getEnthalpyTempTabNb())
         comment = self.createComment(len(chain),self.species.Comment["enthalpyTempTabNb"])
         ThermoChFile.write(chain + comment + "\n")
@@ -1430,7 +1430,7 @@ class CoalThermoChemistryModel:
         chain = str(self.__preWriteList(self.coals.getClassesNumberList()))
         comment = self.createComment(len(chain),self.coals.Comment["classesNumberList"])
         ThermoChFile.write(chain + comment +"\n")
-         
+
         listTMP = []
         for i in self.coals.getInitDiameterClassesList():
             for j in i:
@@ -1442,7 +1442,7 @@ class CoalThermoChemistryModel:
         chain = str(self.__preWriteList(self.coals.getCDryCompositionList()))
         comment = self.createComment(len(chain),self.coals.Comment["CDryCompositionList"])
         ThermoChFile.write(chain + comment +"\n")
-        
+
         chain = str(self.__preWriteList(self.coals.getHDryCompositionList()))
         comment = self.createComment(len(chain),self.coals.Comment["HDryCompositionList"])
         ThermoChFile.write(chain + comment +"\n")
@@ -1464,17 +1464,17 @@ class CoalThermoChemistryModel:
         chain = str(self.__preWriteList(self.coals.getThermalCapacityList()))
         comment = self.createComment(len(chain),self.coals.Comment["thermalCapacityList"])
         ThermoChFile.write(chain + comment +"\n")
-                           
+
         chain = str(self.__preWriteList(self.coals.getDensityList()))
         comment = self.createComment(len(chain),self.coals.Comment["densityList"])
         ThermoChFile.write(chain + comment +"\n")
-        #                   
+        #
         ThermoChFile.write("Coke\n")
 
         chain = str(self.__preWriteList(self.coals.getCDryCompositionCokeList()))
         comment = self.createComment(len(chain),self.coals.Comment["CDryCompositionCokeList"])
         ThermoChFile.write(chain + comment +"\n")
-        
+
         chain = str(self.__preWriteList(self.coals.getHDryCompositionCokeList()))
         comment = self.createComment(len(chain),self.coals.Comment["HDryCompositionCokeList"])
         ThermoChFile.write(chain + comment +"\n")
@@ -1482,7 +1482,7 @@ class CoalThermoChemistryModel:
         chain = str(self.__preWriteList(self.coals.getODryCompositionCokeList()))
         comment = self.createComment(len(chain),self.coals.Comment["ODryCompositionCokeList"])
         ThermoChFile.write(chain + comment +"\n")
-        
+
         chain = str(self.__preWriteList(self.coals.getPCICokeValueList()))
         comment = self.createComment(len(chain),self.coals.Comment["PCICokeValueList"])
         ThermoChFile.write(chain + comment +"\n")
@@ -1518,7 +1518,7 @@ class CoalThermoChemistryModel:
         chain = self.__preWriteList(list2write)
         comment = self.createComment(len(chain),self.coals.Comment["Y1CHList"])
         ThermoChFile.write(chain + comment +"\n")
-        
+
         list2write=[]
 
         ind = 0
@@ -1535,7 +1535,7 @@ class CoalThermoChemistryModel:
         chain = self.__preWriteList(self.coals.getA1CHList())
         comment = self.createComment(len(chain),self.coals.Comment["A1CHList"])
         ThermoChFile.write(chain + comment +"\n")
-        
+
         chain = self.__preWriteList(self.coals.getA2CHList())
         comment = self.createComment(len(chain),self.coals.Comment["A2CHList"])
         ThermoChFile.write(chain + comment +"\n")
@@ -1679,7 +1679,7 @@ class CoalThermoChemistryModel:
                 string += stringTMP + "\n"
             else:
                 if string != "":
-                    string += " " + str(i) + " "  
+                    string += " " + str(i) + " "
                 else:
                     string += str(i)
         return string
diff --git a/gui/Pages/CommonCombustion.py b/gui/Pages/CommonCombustion.py
index 1cdb4d8..069e778 100644
--- a/gui/Pages/CommonCombustion.py
+++ b/gui/Pages/CommonCombustion.py
@@ -35,7 +35,7 @@ import string
 #-------------------------------------------------------------------------------
 
 class Species:
-    
+
     def __init__(self):
         """ constructor """
 
@@ -73,7 +73,7 @@ class Species:
     def getCurrentSpeciesNb(self) :
         return self.currentSpeciesNb
 
-        
+
     def getEnthalpyTempTabNb(self) :
         return self.enthalpyTempTabNb
 
@@ -101,7 +101,7 @@ class Species:
     def getMaxTempTab(self):
         return self.maxTempTab
 
-        
+
     def getElementarySpeciesNb(self):
         return self.elementarySpeciesNb
 
@@ -113,7 +113,7 @@ class Species:
     def getCurrentSpeciesCompositionList(self):
         return self.currentSpeciesCompositionList
 
-    
+
     def setCurrentSpeciesList(self, value):
         self.currentSpeciesList = value
 
@@ -129,7 +129,7 @@ class Species:
     def setMaxTempTab(self, value):
         self.maxTempTab = value
 
-        
+
     def setElementarySpeciesNb(self, value):
         self.elementarySpeciesNb = value
 
diff --git a/gui/Pages/ConjugateHeatTransferForm.ui b/gui/Pages/ConjugateHeatTransferForm.ui
new file mode 100644
index 0000000..46f39d9
--- /dev/null
+++ b/gui/Pages/ConjugateHeatTransferForm.ui
@@ -0,0 +1,106 @@
+<ui version="4.0" >
+ <class>ConjugateHeatTransferForm</class>
+ <widget class="QWidget" name="ConjugateHeatTransferForm" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>305</width>
+    <height>197</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2" >
+   <item>
+    <widget class="QGroupBox" name="groupBoxSyrthes" >
+     <property name="title" >
+      <string>Conjugate heat  transfer: Syrthes coupling</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout" >
+      <item>
+       <widget class="QTableView" name="tableViewSyrthes" />
+      </item>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_2" >
+        <item>
+         <spacer name="horizontalSpacer_2" >
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout" >
+          <item>
+           <widget class="QPushButton" name="pushButtonAdd" >
+            <property name="text" >
+             <string>Add</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer" >
+            <property name="orientation" >
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>17</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QPushButton" name="pushButtonDelete" >
+            <property name="text" >
+             <string>Delete</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <spacer name="horizontalSpacer_3" >
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>20</width>
+       <height>0</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/gui/Pages/ConjugateHeatTransferModel.py b/gui/Pages/ConjugateHeatTransferModel.py
new file mode 100644
index 0000000..0f012fa
--- /dev/null
+++ b/gui/Pages/ConjugateHeatTransferModel.py
@@ -0,0 +1,344 @@
+# -*- coding: iso-8859-1 -*-
+#
+#-------------------------------------------------------------------------------
+#
+#     This file is part of the Code_Saturne User Interface, element of the
+#     Code_Saturne CFD tool.
+#
+#     Copyright (C) 1998-2008 EDF S.A., France
+#
+#     contact: saturne-support at edf.fr
+#
+#     The Code_Saturne User Interface is free software; you can redistribute it
+#     and/or modify it under the terms of the GNU General Public License
+#     as published by the Free Software Foundation; either version 2 of
+#     the License, or (at your option) any later version.
+#
+#     The Code_Saturne User Interface is distributed in the hope that it will be
+#     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+#     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#     GNU General Public License for more details.
+#
+#     You should have received a copy of the GNU General Public License
+#     along with the Code_Saturne Kernel; if not, write to the
+#     Free Software Foundation, Inc.,
+#     51 Franklin St, Fifth Floor,
+#     Boston, MA  02110-1301  USA
+#
+#-------------------------------------------------------------------------------
+
+"""
+This module defines the conjugate heat transfer model data management.
+
+This module contains the following classes and function:
+- ConjugateHeatTransferModel
+- ConjugateHeatTransferModelTestCase
+"""
+
+#-------------------------------------------------------------------------------
+# Library modules
+#-------------------------------------------------------------------------------
+
+import sys, unittest
+
+#-------------------------------------------------------------------------------
+# Application modules import
+#-------------------------------------------------------------------------------
+
+from Base.Common import *
+import Base.Toolbox as Tool
+from Base.XMLvariables import Variables, Model
+from Base.XMLmodel import ModelTest
+from OutputControlModel import OutputControlModel
+
+#-------------------------------------------------------------------------------
+# Conjugate Heat Transfer model class
+#-------------------------------------------------------------------------------
+
+class ConjugateHeatTransferModel(Variables, Model):
+    """
+    Manage the input/output markups in the xml doc about HeadLosses
+    """
+    def __init__(self, case):
+        """
+        Constructor.
+        """
+        self.__case = case
+
+        self.__node_models = self.__case.xmlGetNode('thermophysical_models')
+        self.__node_cht    = self.__node_models.xmlInitNode('conjugate_heat_transfer')
+        self.__node_syr    = self.__node_cht.xmlInitNode('external_coupling', status="on")
+
+
+    def defaultValues(self):
+        """
+        Return in a dictionnary which contains default values.
+        """
+        default = {}
+        default['syrthes_name']       = "SYRTHES"
+        default['syrthes_app_num']    = 0
+        default['projection_axis']    = "off"
+        default['selection_criteria'] = "all[]"
+        return default
+
+
+    def __getNumberOfSyrthesCoupling(self):
+        return len(self.__node_syr.xmlGetNodeList('syrthes'))
+
+
+    def setConjugateHeatTransferStatus(self, status):
+        """
+        Update the 'Conjugate heat transfer' status.
+        @type status: C{String}
+        @param status: set to "on" or "off" the conjugate heat transfer
+        """
+        self.isOnOff(status)
+        self.__node_syr['status'] = status
+
+        if status == "off":
+            self.__node_syr.xmlRemoveChild('syrthes')
+        OutputControlModel(self.__case).setSyrthesBoundaryPostProStatus(status)
+
+
+    def getSyrthesCouplingList(self):
+        """
+        @return: list of Syrthes coupling description.
+        @rtype: C{List}
+        """
+        node_list = self.__node_syr.xmlGetNodeList('syrthes')
+        list = []
+        for index in range(len(node_list)):
+            num = index + 1
+            syrthes_name = self.getSyrthesInstanceName(num)
+            app_num      = self.getSyrthesAppNumber(num)
+            proj_axis    = self.getSyrthesProjectionAxis(num)
+            location     = self.getSelectionCriteria(num)
+            list.append([syrthes_name, app_num, proj_axis, location])
+
+        return list
+
+
+    def addSyrthesCoupling(self, syrthes_name, app_num, proj_axis, location):
+        """
+        Add a new definition of a Syrthes coupling.
+
+        @type syrthes_name: C{String}
+        @param syrthes_name: Syrthes instance name
+        @type app_num: C{Int}
+        @param app_num: Syrthes Application number
+        @type proj_axis: C{String}
+        @param proj_axis: Syrthes projection axis
+        @type location: C{String}
+        @param location: selection criteria
+        @return: new number of Syrthes coupling
+        @rtype: C{Int}
+        """
+        num = len(self.__node_syr.xmlGetNodeList('syrthes'))
+        node_new = self.__node_syr.xmlAddChild('syrthes')
+
+        num = num + 1
+        self.setSyrthesInstanceName(num, syrthes_name)
+        self.setSyrthesAppNumber(num, app_num)
+        self.setSyrthesProjectionAxis(num, proj_axis)
+        self.setSelectionCriteria(num, location)
+        self.setConjugateHeatTransferStatus("on")
+
+        return num
+
+
+    def deleteSyrthesCoupling(self, num):
+        """
+        Delete a definition of a Syrthes coupling.
+
+        @type num: C{Int}
+        @param num: Syrthes coupling number
+        """
+        self.isLowerOrEqual(num, self.__getNumberOfSyrthesCoupling())
+        node_list = self.__node_syr.xmlGetNodeList('syrthes')
+        node = node_list[num-1]
+        node.xmlRemoveNode()
+
+    #------------------------------------------------------------------
+    # Helper function
+    #------------------------------------------------------------------
+    def __getStringData(self, index, name, setFunction):
+        """
+        Get string value from xml file.
+        """
+        self.isLowerOrEqual(index+1, self.__getNumberOfSyrthesCoupling())
+        node = self.__node_syr.xmlGetNodeList('syrthes')[index]
+        value = node.xmlGetString(name)
+        return self.__getDefaultDataIfNone(index, value, name, setFunction)
+
+
+    def __getIntData(self, index, name, setFunction):
+        """
+        Get int value from xml file.
+        """
+        self.isLowerOrEqual(index+1, self.__getNumberOfSyrthesCoupling())
+        node = self.__node_syr.xmlGetNodeList('syrthes')[index]
+        value = node.xmlGetInt(name)
+        return self.__getDefaultDataIfNone(index, value, name, setFunction)
+
+
+    def __getDefaultDataIfNone(self, index, value, name, setFunction):
+        """
+        Get default value if value is none.
+        """
+        if value == None or value == "":
+            value = self.defaultValues()[name]
+            setFunction(index+1, value)
+        return value
+
+    #------------------------------------------------------------------
+    # Syrthes instance name
+    #------------------------------------------------------------------
+    def setSyrthesInstanceName(self, num, value):
+        """
+        Set value of Syrthes instance name.
+
+        @type num: C{Int}
+        @param num: Syrthes coupling number
+        @type value: C{String}
+        @param value: Syrthes instance name
+        """
+        self.isLowerOrEqual(num, self.__getNumberOfSyrthesCoupling())
+        self.isStr(value)
+        node = self.__node_syr.xmlGetNodeList('syrthes')[num-1]
+        node.xmlSetData('syrthes_name', value)
+
+
+    def getSyrthesInstanceName(self, num):
+        """
+        Get value of Syrthes instance name.
+
+        @type num: C{Int}
+        @param num: Syrthes coupling number
+        @return: Syrthes Application number
+        @rtype: C{String}
+        """
+        return self.__getStringData(num-1,
+                                    'syrthes_name',
+                                    self.setSyrthesInstanceName)
+
+    #------------------------------------------------------------------
+    # Syrthes application number
+    #------------------------------------------------------------------
+    def setSyrthesAppNumber(self, num, value):
+        """
+        Set value of Syrthes Application number.
+
+        @type num: C{Int}
+        @param num: Syrthes coupling number
+        @type value: C{Int}
+        @param value: Syrthes Application number
+        """
+        self.isLowerOrEqual(num, self.__getNumberOfSyrthesCoupling())
+        self.isInt(value)
+        self.isGreaterOrEqual(value, 0)
+        node = self.__node_syr.xmlGetNodeList('syrthes')[num-1]
+        node.xmlSetData('syrthes_app_num', value)
+
+
+    def getSyrthesAppNumber(self, num):
+        """
+        Get value of Syrthes Application number.
+
+        @type num: C{Int}
+        @param num: Syrthes coupling number
+        @return: Syrthes Application number
+        @rtype: C{Int}
+        """
+        return self.__getIntData(num-1,
+                                 'syrthes_app_num',
+                                 self.setSyrthesAppNumber)
+
+    #------------------------------------------------------------------
+    # Projection axis
+    #------------------------------------------------------------------
+    def setSyrthesProjectionAxis(self, num, value):
+        """
+        Set value of Syrthes projection axis.
+
+        @type num: C{Int}
+        @param num: Syrthes coupling number
+        @type value: C{String}
+        @param value: Syrthes projection axis
+        """
+        self.isLowerOrEqual(num, self.__getNumberOfSyrthesCoupling())
+        self.isStr(value)
+        node = self.__node_syr.xmlGetNodeList('syrthes')[num-1]
+        node.xmlSetData('projection_axis', value)
+
+
+    def getSyrthesProjectionAxis(self, num):
+        """
+        Get value of Syrthes projection axis.
+
+        @type num: C{Int}
+        @param num: Syrthes coupling number
+        @return: Syrthes projection axis
+        @rtype: C{String}
+        """
+        return self.__getStringData(num-1,
+                                    'projection_axis',
+                                    self.setSyrthesAppNumber)
+
+    #------------------------------------------------------------------
+    # Selection criteria
+    #------------------------------------------------------------------
+    def setSelectionCriteria(self, num, value):
+        """
+        Set value of selection criteria.
+
+        @type num: C{Int}
+        @param num: Syrthes coupling number
+        @type value: C{String}
+        @param value: selection criteria
+        """
+        self.isLowerOrEqual(num, self.__getNumberOfSyrthesCoupling())
+        self.isStr(value)
+        node = self.__node_syr.xmlGetNodeList('syrthes')[num-1]
+        node.xmlSetData('selection_criteria', value)
+
+
+    def getSelectionCriteria(self, num):
+        """
+        Get value of selection criteria.
+
+        @type num: C{Int}
+        @param num: Syrthes coupling number
+        @return: selection criteria
+        @rtype: C{String}
+        """
+        return self.__getStringData(num-1,
+                                    'selection_criteria',
+                                    self.setSelectionCriteria)
+
+#-------------------------------------------------------------------------------
+# ConjugateHeatTransferModel test case
+#-------------------------------------------------------------------------------
+
+
+class ConjugateHeatTransferModelTestCase(ModelTest):
+    """
+    """
+    def checkConjugateHeatTransferInstantiation(self):
+        """Check whether the ConjugateHeatTransfer class could be instantiated"""
+        model = None
+        model = ConjugateHeatTransferModel(self.case)
+        assert model != None, 'Could not instantiate HeadLossesModel'
+
+
+def suite():
+    testSuite = unittest.makeSuite(ConjugateHeatTransferModelTestCase, "check")
+    return testSuite
+
+def runTest():
+    print "ConjugateHeatTransferModelTestCase"
+    runner = unittest.TextTestRunner()
+    runner.run(suite())
+
+#-------------------------------------------------------------------------------
+# End
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/ConjugateHeatTransferView.py b/gui/Pages/ConjugateHeatTransferView.py
new file mode 100644
index 0000000..e1f9458
--- /dev/null
+++ b/gui/Pages/ConjugateHeatTransferView.py
@@ -0,0 +1,349 @@
+# -*- coding: iso-8859-1 -*-
+#
+#-------------------------------------------------------------------------------
+#
+#     This file is part of the Code_Saturne User Interface, element of the
+#     Code_Saturne CFD tool.
+#
+#     Copyright (C) 1998-2009 EDF S.A., France
+#
+#     contact: saturne-support at edf.fr
+#
+#     The Code_Saturne User Interface is free software; you can redistribute it
+#     and/or modify it under the terms of the GNU General Public License
+#     as published by the Free Software Foundation; either version 2 of
+#     the License, or (at your option) any later version.
+#
+#     The Code_Saturne User Interface is distributed in the hope that it will be
+#     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+#     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#     GNU General Public License for more details.
+#
+#     You should have received a copy of the GNU General Public License
+#     along with the Code_Saturne Kernel; if not, write to the
+#     Free Software Foundation, Inc.,
+#     51 Franklin St, Fifth Floor,
+#     Boston, MA  02110-1301  USA
+#
+#-------------------------------------------------------------------------------
+
+"""
+This module defines the conjugate heat transfer view data management.
+
+This module contains the following classes and function:
+- SyrthesAppNumberDelegate
+- ProjectionAxisDelegate
+- SelectionCriteriaDelegate
+- StandardItemModelSyrthes
+- ConjugateHeatTransferView
+"""
+
+#-------------------------------------------------------------------------------
+# Standard modules
+#-------------------------------------------------------------------------------
+
+import string
+import logging
+
+#-------------------------------------------------------------------------------
+# Third-party modules
+#-------------------------------------------------------------------------------
+
+from PyQt4.QtCore import *
+from PyQt4.QtGui  import *
+
+#-------------------------------------------------------------------------------
+# Application modules import
+#-------------------------------------------------------------------------------
+
+from Base.Common import LABEL_LENGTH_MAX
+from Base.Toolbox import GuiParam
+from ConjugateHeatTransferForm import Ui_ConjugateHeatTransferForm
+from Base.QtPage import IntValidator, DoubleValidator, RegExpValidator, ComboModel
+from Pages.ConjugateHeatTransferModel import ConjugateHeatTransferModel
+
+#-------------------------------------------------------------------------------
+# log config
+#-------------------------------------------------------------------------------
+
+logging.basicConfig()
+log = logging.getLogger("ConjugateHeatTransferView")
+log.setLevel(GuiParam.DEBUG)
+
+#-------------------------------------------------------------------------------
+# QLineEdit delegate for validation of Syrthes app number
+#-------------------------------------------------------------------------------
+
+class SyrthesAppNumberDelegate(QItemDelegate):
+    def __init__(self, parent = None):
+        super(SyrthesAppNumberDelegate, self).__init__(parent)
+        self.parent = parent
+
+
+    def createEditor(self, parent, option, index):
+        editor = QLineEdit(parent)
+        validator = IntValidator(editor, min=0)
+        editor.setValidator(validator)
+        editor.installEventFilter(self)
+        return editor
+
+
+    def setEditorData(self, editor, index):
+        value = index.model().data(index, Qt.DisplayRole).toString()
+        editor.setText(value)
+
+
+    def setModelData(self, editor, model, index):
+        value, ok = editor.text().toInt()
+        if editor.validator().state == QValidator.Acceptable:
+            model.setData(index, QVariant(value), Qt.DisplayRole)
+
+#-------------------------------------------------------------------------------
+# QComboBox delegate for Axis Projection in Conjugate Heat Transfer table
+#-------------------------------------------------------------------------------
+
+class ProjectionAxisDelegate(QItemDelegate):
+    """
+    Use of a combo box in the table.
+    """
+    def __init__(self, parent = None):
+        super(ProjectionAxisDelegate, self).__init__(parent)
+        self.parent = parent
+
+
+    def createEditor(self, parent, option, index):
+        editor = QComboBox(parent)
+        editor.addItem(QString("off"))
+        editor.addItem(QString("X"))
+        editor.addItem(QString("Y"))
+        editor.addItem(QString("Z"))
+        editor.installEventFilter(self)
+        return editor
+
+
+    def setEditorData(self, comboBox, index):
+        row = index.row()
+        col = index.column()
+        string = index.model().dataSyrthes[row][col]
+        comboBox.setEditText(string)
+
+
+    def setModelData(self, comboBox, model, index):
+        value = comboBox.currentText()
+        model.setData(index, QVariant(value), Qt.DisplayRole)
+
+#-------------------------------------------------------------------------------
+# QLineEdit delegate for location
+#-------------------------------------------------------------------------------
+
+class SelectionCriteriaDelegate(QItemDelegate):
+    def __init__(self, parent, mdl):
+        super(SelectionCriteriaDelegate, self).__init__(parent)
+        self.parent = parent
+        self.__model = mdl
+
+
+    def createEditor(self, parent, option, index):
+        editor = QLineEdit(parent)
+        return editor
+
+
+    def setEditorData(self, editor, index):
+        self.value = index.model().data(index, Qt.DisplayRole).toString()
+        editor.setText(self.value)
+
+
+    def setModelData(self, editor, model, index):
+        value = editor.text()
+
+#        if value != self.value and str(value) in self.__model.getLocalizationsZonesList():
+#            title = self.tr("Warning")
+#            msg   = self.tr("This localization is already used.\n"\
+#                            "Please give another one.")
+#            QMessageBox.information(self.parent, title, msg)
+#            return
+
+        if str(value) != "" :
+            model.setData(index, QVariant(value), Qt.DisplayRole)
+
+#-------------------------------------------------------------------------------
+# StandarItemModel class
+#-------------------------------------------------------------------------------
+
+class StandardItemModelSyrthes(QStandardItemModel):
+
+    def __init__(self, model):
+        """
+        """
+        QStandardItemModel.__init__(self)
+        self.setColumnCount(4)
+        self.headers = [self.tr("Instance name"),
+                        self.tr("Application number"),
+                        self.tr("Projection Axis"),
+                        self.tr("Selection criteria")]
+        self.setColumnCount(len(self.headers))
+        self.dataSyrthes = []
+        self.__model = model
+
+
+    def data(self, index, role):
+        if not index.isValid():
+            return QVariant()
+        if role == Qt.DisplayRole:
+            return QVariant(self.dataSyrthes[index.row()][index.column()])
+        elif role == Qt.TextAlignmentRole:
+            return QVariant(Qt.AlignCenter)
+        return QVariant()
+
+
+    def flags(self, index):
+        if not index.isValid():
+            return Qt.ItemIsEnabled
+        return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable
+
+
+    def headerData(self, section, orientation, role):
+        if orientation == Qt.Horizontal and role == Qt.DisplayRole:
+            return QVariant(self.headers[section])
+        return QVariant()
+
+
+    def setData(self, index, value, role):
+        if not index.isValid():
+            return QVariant()
+
+        row = index.row()
+        if index.column() in (0, 2, 3):
+            self.dataSyrthes[row][index.column()] = str(value.toString())
+        else:
+            self.dataSyrthes[row][index.column()], ok = value.toInt()
+
+        num = row + 1
+        self.__model.setSyrthesInstanceName(num, self.dataSyrthes[row][0])
+        self.__model.setSyrthesAppNumber(num, self.dataSyrthes[row][1])
+        self.__model.setSyrthesProjectionAxis(num, self.dataSyrthes[row][2])
+        self.__model.setSelectionCriteria(num, self.dataSyrthes[row][3])
+
+        id1 = self.index(0, 0)
+        id2 = self.index(self.rowCount(), 0)
+        self.emit(SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"), id1, id2)
+        return True
+
+
+    def addItem(self, syrthes_name, app_num, proj_axis, location):
+        """
+        Add a row in the table.
+        """
+        self.dataSyrthes.append([syrthes_name, app_num, proj_axis, location])
+        row = self.rowCount()
+        self.setRowCount(row+1)
+
+
+    def deleteRow(self, row):
+        """
+        Delete the row in the model
+        """
+        del self.dataSyrthes[row]
+        row = self.rowCount()
+        self.setRowCount(row-1)
+
+#-------------------------------------------------------------------------------
+# Main class
+#-------------------------------------------------------------------------------
+
+class ConjugateHeatTransferView(QWidget, Ui_ConjugateHeatTransferForm):
+    """
+    """
+    def __init__(self, parent, case):
+        """
+        Constructor
+        """
+        QWidget.__init__(self, parent)
+
+        Ui_ConjugateHeatTransferForm.__init__(self)
+        self.setupUi(self)
+
+        self.__case = case
+        self.__model = ConjugateHeatTransferModel(self.__case)
+
+        # Models
+        self.modelSyrthes = StandardItemModelSyrthes(self.__model)
+        self.tableViewSyrthes.setModel(self.modelSyrthes)
+
+        self.tableViewSyrthes.verticalHeader().setResizeMode(QHeaderView.ResizeToContents)
+        self.tableViewSyrthes.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
+        self.tableViewSyrthes.horizontalHeader().setResizeMode(3, QHeaderView.Stretch)
+
+        delegateSyrthesAppNum = SyrthesAppNumberDelegate(self.tableViewSyrthes)
+        self.tableViewSyrthes.setItemDelegateForColumn(1, delegateSyrthesAppNum)
+        delegateProjectionAxis = ProjectionAxisDelegate(self.tableViewSyrthes)
+        self.tableViewSyrthes.setItemDelegateForColumn(2, delegateProjectionAxis)
+        delegateSelectionCriteria = SelectionCriteriaDelegate(self.tableViewSyrthes, self.__model)
+        self.tableViewSyrthes.setItemDelegateForColumn(3, delegateSelectionCriteria)
+
+        # Connections
+        self.connect(self.pushButtonAdd,    SIGNAL("clicked()"), self.slotAddSyrthes)
+        self.connect(self.pushButtonDelete, SIGNAL("clicked()"), self.slotDeleteSyrthes)
+
+        # Insert list of Syrthes coupling for view
+        for c in self.__model.getSyrthesCouplingList():
+            [syrthes_name, app_num, proj_axis, location] = c
+            self.modelSyrthes.addItem(syrthes_name, app_num, proj_axis, location)
+
+        #FIXME:
+        self.tableViewSyrthes.hideColumn(0)
+        self.tableViewSyrthes.hideColumn(1)
+        self.__pushButtonAddUpdate()
+
+
+    def __pushButtonAddUpdate(self):
+        """
+        Temporay function.
+        """
+        #FIXME:
+        if len(self.__model.getSyrthesCouplingList()) >= 1:
+            self.pushButtonAdd.setEnabled(False)
+        else:
+            self.pushButtonAdd.setEnabled(True)
+
+
+    @pyqtSignature("")
+    def slotAddSyrthes(self):
+        """
+        Set in view label and variables to see on profile
+        """
+        syrthes_name = self.__model.defaultValues()['syrthes_name']
+        app_num      = self.__model.defaultValues()['syrthes_app_num']
+        proj_axis    = self.__model.defaultValues()['projection_axis']
+        location     = self.__model.defaultValues()['selection_criteria']
+        num = self.__model.addSyrthesCoupling(syrthes_name, app_num, proj_axis, location)
+        self.modelSyrthes.addItem(syrthes_name, app_num, proj_axis, location)
+        self.__pushButtonAddUpdate()
+
+
+    @pyqtSignature("")
+    def slotDeleteSyrthes(self):
+        """
+        Delete the profile from the list (one by one).
+        """
+        row = self.tableViewSyrthes.currentIndex().row()
+        log.debug("slotDeleteSyrthes -> %s" % (row,))
+        if row == -1:
+            title = self.tr("Warning")
+            msg   = self.tr("You must select an existing coupling")
+            QMessageBox.information(self, title, msg)
+        else:
+            self.modelSyrthes.deleteRow(row)
+            self.__model.deleteSyrthesCoupling(row+1)
+        self.__pushButtonAddUpdate()
+
+
+    def tr(self, text):
+        """
+        Translation
+        """
+        return text
+
+#-------------------------------------------------------------------------------
+# End
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/CurrentSpeciesView.py b/gui/Pages/CurrentSpeciesView.py
index 932fdff..453894e 100644
--- a/gui/Pages/CurrentSpeciesView.py
+++ b/gui/Pages/CurrentSpeciesView.py
@@ -75,14 +75,14 @@ class StandardItemModelEnthalpyTemp(QStandardItemModel):
         self.setColumnCount(2)
         self.setRowCount(3)
         self.modelSpecies = mdl
-        self.species = self.modelSpecies.getSpecies() 
+        self.species = self.modelSpecies.getSpecies()
 
 
     def flags(self, index):
         if not index.isValid():
             return Qt.ItemIsEnabled
         else:
-            return Qt.ItemIsEnabled | Qt.ItemIsSelectable 
+            return Qt.ItemIsEnabled | Qt.ItemIsSelectable
 
 
     def data(self, index, role):
@@ -133,7 +133,7 @@ class StandardItemModelComposition(QStandardItemModel):
         """
         QStandardItemModel.__init__(self)
         self.modelSpecies = mdl
-        self.species = self.modelSpecies.getSpecies() 
+        self.species = self.modelSpecies.getSpecies()
         nbspecies = self.species.getCurrentSpeciesNb()
         self.setColumnCount(nbspecies)
         nbelem = self.species.getElementarySpeciesList()
@@ -144,7 +144,7 @@ class StandardItemModelComposition(QStandardItemModel):
         if not index.isValid():
             return Qt.ItemIsEnabled
         else:
-            return Qt.ItemIsEnabled | Qt.ItemIsSelectable 
+            return Qt.ItemIsEnabled | Qt.ItemIsSelectable
 
 
     def data(self, index, role):
@@ -196,7 +196,7 @@ class StandardItemModelMolarMass(QStandardItemModel):
         if not index.isValid():
             return Qt.ItemIsEnabled
         else:
-            return Qt.ItemIsEnabled | Qt.ItemIsSelectable 
+            return Qt.ItemIsEnabled | Qt.ItemIsSelectable
 
 
     def data(self, index, role):
diff --git a/gui/Pages/DefineUserScalarsModel.py b/gui/Pages/DefineUserScalarsModel.py
index 93282ea..c3db83a 100644
--- a/gui/Pages/DefineUserScalarsModel.py
+++ b/gui/Pages/DefineUserScalarsModel.py
@@ -330,8 +330,10 @@ class DefineUserScalarsModel(Variables, Model):
         self.isFloat(initial_value)
         self.isInList(scalar_label, self.getScalarLabelsList())
 
+        label = self.case.xmlGetNode('zone', name = zone)['label']
+
         n = self.scalar_node.xmlGetNode('scalar', label=scalar_label)
-        nz = n.xmlInitChildNode('initial_value', zone=zone)
+        nz = n.xmlInitChildNode('initial_value', zone=zone, label=label)
         nz.xmlSetTextNode(initial_value)
 
 
@@ -702,14 +704,14 @@ class UserScalarTestCase(ModelTest):
                                     <initial_value>1.83e-05</initial_value>
                             </property>
                     </scalar>
-                    <scalar label="Temp.C" name="temperature_celsius" type="thermal">
+                    <scalar label="TempC" name="temperature_celsius" type="thermal">
                             <initial_value zone="1">20.0</initial_value>
                             <min_value>-1e+12</min_value>
                             <max_value>1e+12</max_value>
                     </scalar>
                 </additional_scalars>'''
 
-        model.renameScalarLabel("Temp.C", "Matemperature")
+        model.renameScalarLabel("TempC", "Matemperature")
 
         assert model.getThermalScalarLabel() == "Matemperature",\
            'Could not get label of thermal scalar'
@@ -946,7 +948,7 @@ class UserScalarTestCase(ModelTest):
                                     <initial_value>1.83e-05</initial_value>
                             </property>
                     </scalar>
-                    <scalar label="Temp.C" name="temperature_celsius" type="thermal">
+                    <scalar label="TempC" name="temperature_celsius" type="thermal">
                             <initial_value zone="1">20.0</initial_value>
                             <min_value>-1e+12</min_value>
                             <max_value>1e+12</max_value>
diff --git a/gui/Pages/DefineUserScalarsView.py b/gui/Pages/DefineUserScalarsView.py
index 96707be..a804c09 100644
--- a/gui/Pages/DefineUserScalarsView.py
+++ b/gui/Pages/DefineUserScalarsView.py
@@ -92,7 +92,7 @@ class LabelDelegate(QItemDelegate):
         editor = QLineEdit(parent)
         self.old_label = ""
         #editor.installEventFilter(self)
-        rx = "[\-_A-Za-z0-9]{1," + str(LABEL_LENGTH_MAX) + "}"
+        rx = "[_a-zA-Z][_A-Za-z0-9]{1," + str(LABEL_LENGTH_MAX-1) + "}"
         self.regExp = QRegExp(rx)
         v = RegExpValidator(editor, self.regExp)
         editor.setValidator(v)
@@ -118,7 +118,7 @@ class LabelDelegate(QItemDelegate):
                 default['list']   = model.mdl.getScalarLabelsList()
                 default['regexp'] = self.regExp
                 log.debug("setModelData -> default = %s" % default)
-    
+
                 from VerifyExistenceLabelDialogView import VerifyExistenceLabelDialogView
                 dialog = VerifyExistenceLabelDialogView(self.parent, default)
                 if dialog.exec_():
@@ -189,7 +189,7 @@ class VarianceDelegate(QItemDelegate):
         sca = index.model().getData(index)[0]
         if index.model().mdl.getVarianceLabelFromScalarLabel(sca):
             return
-        
+
         l1 = index.model().mdl.getScalarLabelsList()
         for s in index.model().mdl.getScalarsVarianceList():
             if s in l1: l1.remove(s)
@@ -210,7 +210,7 @@ class VarianceDelegate(QItemDelegate):
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # Line edit delegate for minimum value
@@ -616,4 +616,4 @@ class DefineUserScalarsView(QWidget, Ui_DefineUserScalarsForm):
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/ElectricalModelsModel.py b/gui/Pages/ElectricalModelsModel.py
index 3388e6a..5b47a24 100644
--- a/gui/Pages/ElectricalModelsModel.py
+++ b/gui/Pages/ElectricalModelsModel.py
@@ -180,7 +180,7 @@ def suite():
     testSuite = unittest.makeSuite(ElectricalTestCase, "check")
     return testSuite
 
-    
+
 def runTest():
     print "ElectricalTestCase - A FAIRE**************"
     runner = unittest.TextTestRunner()
diff --git a/gui/Pages/FacesSelectionView.py b/gui/Pages/FacesSelectionView.py
index 6d5e51a..2241e0e 100644
--- a/gui/Pages/FacesSelectionView.py
+++ b/gui/Pages/FacesSelectionView.py
@@ -79,7 +79,7 @@ class LineEditDelegateReferences(QItemDelegate):
 
     def createEditor(self, parent, option, index):
         editor = QLineEdit(parent)
-        validator =  RegExpValidator(editor, QRegExp("^all[ ]*$|^[0-9\ ]*$"))
+        validator =  RegExpValidator(editor, QRegExp("^[0-9 ]*$"))
         editor.setValidator(validator)
         #editor.installEventFilter(self)
         return editor
@@ -216,9 +216,6 @@ class StandardItemModelFaces(QStandardItemModel):
             if self.tag == "faces_periodic":
                 d = self.mdl.getPeriodicFaces(self.perio_name)
 
-            elif self.tag == "faces_syrthes":
-                d = self.mdl.getSyrthesFaces()
-
             elif self.tag == "faces_select":
                 d = self.mdl.getSelectFaces()
 
@@ -309,9 +306,6 @@ class StandardItemModelFaces(QStandardItemModel):
         elif self.tag == "faces_periodic":
             self.mdl.replacePeriodicFaces(self.perio_name, self.dataFaces[row])
 
-        elif self.tag == "faces_syrthes":
-            self.mdl.replaceSyrthesFaces(self.dataFaces[row])
-
         elif self.tag == "faces_select":
             self.mdl.replaceSelectFaces(self.dataFaces[row])
 
@@ -326,13 +320,7 @@ class StandardItemModelFaces(QStandardItemModel):
         """
         title = self.tr("Warning")
 
-        if self.tag == "faces_syrthes":
-            if self.mdl.getSyrthesFaces():
-                msg = self.tr("For Syrthes coupling, only a single faces selection is allowed.")
-                QMessageBox.information(self.parent, title, msg)
-                return
-
-        elif self.tag == "faces_select":
+        if self.tag == "faces_select":
             if self.mdl.getSelectFaces() or self.rowCount() == 1:
                 msg = self.tr("For interior faces selection, only a single criterion is allowed.")
                 QMessageBox.information(self.parent, title, msg)
@@ -350,9 +338,6 @@ class StandardItemModelFaces(QStandardItemModel):
         elif self.tag == "faces_periodic":
             self.mdl.addPeriodicFaces(self.perio_name, self.default)
 
-        elif self.tag == "faces_syrthes":
-            self.mdl.addSyrthesFaces(self.default)
-
         elif self.tag == "faces_select":
             self.mdl.addSelectFaces(self.default)
 
@@ -374,9 +359,6 @@ class StandardItemModelFaces(QStandardItemModel):
         elif self.tag == "faces_periodic":
             self.mdl.deletePeriodicFaces(self.perio_name)
 
-        elif self.tag == "faces_syrthes":
-            self.mdl.deleteSyrthesFaces()
-
         elif self.tag == "faces_select":
             self.mdl.deleteSelectFaces()
 
diff --git a/gui/Pages/FluidCharacteristicsModel.py b/gui/Pages/FluidCharacteristicsModel.py
index 70edb55..42a4194 100644
--- a/gui/Pages/FluidCharacteristicsModel.py
+++ b/gui/Pages/FluidCharacteristicsModel.py
@@ -71,7 +71,7 @@ class FluidCharacteristicsModel(Variables, Model):
         self.node_heat      = self.setNewFluidProperty(self.node_fluid, 'specific_heat')
         self.node_cond      = self.setNewFluidProperty(self.node_fluid, 'thermal_conductivity')
 
-        self.nodeList = (self.node_density, self.node_viscosity, 
+        self.nodeList = (self.node_density, self.node_viscosity,
                          self.node_heat, self.node_cond )
 
 
@@ -86,7 +86,7 @@ class FluidCharacteristicsModel(Variables, Model):
 
     def defaultFluidCharacteristicsValues(self):
         """
-        Return in a dictionnary which contains default values. 
+        Return in a dictionnary which contains default values.
         (also called by CoalCombustionModel)
         """
         default = {}
@@ -154,10 +154,10 @@ class FluidCharacteristicsModel(Variables, Model):
 
     def getInitialValue(self, tag):
         """
-        Return initial value of the markup tag : 'density', or  
+        Return initial value of the markup tag : 'density', or
         'molecular_viscosity', or 'specific_heat'or 'thermal_conductivity'
         """
-        self.isInList(tag, ('density', 'molecular_viscosity', 
+        self.isInList(tag, ('density', 'molecular_viscosity',
                             'specific_heat', 'thermal_conductivity'))
         node = self.node_fluid.xmlGetNode('property', name=tag)
         pp = node.xmlGetDouble('initial_value')
@@ -169,10 +169,10 @@ class FluidCharacteristicsModel(Variables, Model):
 
     def setInitialValue(self, tag, val):
         """
-        Put initial value for the markup tag : 'density', or  
+        Put initial value for the markup tag : 'density', or
         'molecular_viscosity', or 'specific_heat'or 'thermal_conductivity'
         """
-        self.isInList(tag, ('density', 'molecular_viscosity', 
+        self.isInList(tag, ('density', 'molecular_viscosity',
                             'specific_heat', 'thermal_conductivity'))
         self.isGreater(val, 0.)
         node = self.node_fluid.xmlGetNode('property', name=tag)
@@ -221,10 +221,10 @@ class FluidCharacteristicsModel(Variables, Model):
 
     def getFormula(self, tag):
         """
-        Return a formula for I{tag} 'density', 'molecular_viscosity', 
+        Return a formula for I{tag} 'density', 'molecular_viscosity',
         'specific_heat' or 'thermal_conductivity'
         """
-        self.isInList(tag, ('density', 'molecular_viscosity', 
+        self.isInList(tag, ('density', 'molecular_viscosity',
                             'specific_heat', 'thermal_conductivity'))
         node = self.node_fluid.xmlGetNode('property', name=tag)
         return node.xmlGetString('formula')
@@ -235,7 +235,7 @@ class FluidCharacteristicsModel(Variables, Model):
         Gives a formula for 'density', 'molecular_viscosity',
         'specific_heat'or 'thermal_conductivity'
         """
-        self.isInList(tag, ('density', 'molecular_viscosity', 
+        self.isInList(tag, ('density', 'molecular_viscosity',
                             'specific_heat', 'thermal_conductivity'))
         node = self.node_fluid.xmlGetNode('property', name=tag)
         node.xmlSetData('formula', str)
@@ -243,7 +243,7 @@ class FluidCharacteristicsModel(Variables, Model):
 
     def getPropertyMode(self, tag):
         """Return choice of node I{tag}. Choice is constant or variable"""
-        self.isInList(tag, ('density', 'molecular_viscosity', 
+        self.isInList(tag, ('density', 'molecular_viscosity',
                             'specific_heat', 'thermal_conductivity'))
         node = self.__nodeFromTag(tag)
         c = node['choice']
@@ -253,7 +253,7 @@ class FluidCharacteristicsModel(Variables, Model):
 
     def setPropertyMode(self, tag, choice):
         """Put choice in xml file's node I{tag}"""
-        self.isInList(tag, ('density', 'molecular_viscosity', 
+        self.isInList(tag, ('density', 'molecular_viscosity',
                             'specific_heat', 'thermal_conductivity'))
         self.isInList(choice, ('constant', 'user_law', 'variable'))
 
@@ -317,7 +317,7 @@ class FluidCharacteristicsModelTestCase(ModelTest):
                         <postprocessing_recording status="off"/>
                         <initial_value>123</initial_value>
                     </property>
-                    <property choice="constant" label="Lam. vis" name="molecular_viscosity">
+                    <property choice="constant" label="LamVisc" name="molecular_viscosity">
                         <listing_printing status="off"/>
                         <postprocessing_recording status="off"/>
                         <initial_value>1.5e-05</initial_value>
@@ -356,7 +356,7 @@ class FluidCharacteristicsModelTestCase(ModelTest):
         """Check whether the initial value for molecular_viscosity could be set and get"""
         mdl = FluidCharacteristicsModel(self.case)
         mdl.setInitialValueViscosity(1.2e-4)
-        doc = '''<property choice="constant" label="Lam. vis" name="molecular_viscosity">
+        doc = '''<property choice="constant" label="LamVisc" name="molecular_viscosity">
                     <listing_printing status="off"/>
                     <postprocessing_recording status="off"/>
                     <initial_value>1.2e-4</initial_value>
@@ -365,7 +365,7 @@ class FluidCharacteristicsModelTestCase(ModelTest):
         'Could not set initial value of molecular_viscosity'
         assert mdl.getInitialValueViscosity() == 1.2e-4,\
         'Could not get initial value of molecular_viscosity'
-        
+
     def checkSetandGetInitialValueHeat(self):
         """Check whether the initial value for specific_heat could be set and get"""
         mdl = FluidCharacteristicsModel(self.case)
@@ -379,7 +379,7 @@ class FluidCharacteristicsModelTestCase(ModelTest):
         'Could not set initial value of specific_heat'
         assert mdl.getInitialValueHeat() == 456.9,\
         'Could not get initial value of specific_heat'
-        
+
     def checkSetandGetInitialValueCond(self):
         """Check whether the initial value for thermal_conductivity could be set and get"""
         mdl = FluidCharacteristicsModel(self.case)
@@ -393,7 +393,7 @@ class FluidCharacteristicsModelTestCase(ModelTest):
         'Could not set initial value of thermal_conductivity'
         assert mdl.getInitialValueCond() == 456.9,\
         'Could not get initial value of thermal_conductivity'
-        
+
     def checkSetandGetPropertyMode(self):
         """Check whether choice constant or variable could be set and get"""
         mdl = FluidCharacteristicsModel(self.case)
@@ -405,7 +405,7 @@ class FluidCharacteristicsModelTestCase(ModelTest):
         'Could not set choice constant or variable for property'
         assert mdl.getPropertyMode('density') == 'variable',\
         'Could not get choice constant or variable for property'
-        
+
         mdl.setPropertyMode('density', 'constant')
         doc2 = '''<property choice="constant" label="Density" name="density">
                     <initial_value>1.17862</initial_value>
@@ -426,7 +426,7 @@ class FluidCharacteristicsModelTestCase(ModelTest):
 ##                    <property choice="variable" label="Density" name="density">
 ##                        <initial_value>1.17862</initial_value>
 ##                    </property>
-##                    <property choice="variable" label="Lam. vis" name="molecular_viscosity">
+##                    <property choice="variable" label="LamVisc" name="molecular_viscosity">
 ##                        <initial_value>1.83e-05</initial_value>
 ##                    </property>
 ##                    <property choice="variable" label="Sp. heat" name="specific_heat">
diff --git a/gui/Pages/FluidCharacteristicsView.py b/gui/Pages/FluidCharacteristicsView.py
index ea3acb6..a18faca 100644
--- a/gui/Pages/FluidCharacteristicsView.py
+++ b/gui/Pages/FluidCharacteristicsView.py
@@ -82,6 +82,63 @@ class FluidCharacteristicsView(QWidget, Ui_FluidCharacteristicsForm):
     """
     Class to open Molecular Properties Page.
     """
+    density = """# Density of air
+
+rho = 1.293 * (273.15 / Temp_K);
+
+# density for mixtures of gases
+#
+# Y1 -> mass fraction of component 1
+# Y2 -> mass fraction of component 2
+
+rho1 = 1.25051;
+rho2 = 1.7832;
+A = (Y1 / rho1) + (Y2 /rho2);
+rho = 1.0 / A;
+
+"""
+    molecular_viscosity="""# Sutherland's Formula
+# Gas             Cst    T0      mu0
+# air             120    291.15  18.27e-6
+# nitrogen        111    300.55  17.81e-6
+# oxygen          127    292.25  20.18e-6
+# carbon dioxide  240    293.15  14.8e-6
+# carbon monoxide 118    288.15  17.2e-6
+# hydrogen        72     293.85  8.76e-6
+# ammonia         370    293.15  9.82e-6
+# sulfur dioxide  416    293.65  12.54e-6
+# helium          79.4   273     19e-6
+
+CST = 120;
+T0 = 291.15;
+mu0 = 18.27e-6;
+
+if ( Temp_K > 0 && Temp_K < 555) {
+mu = mu0 * (T0+CST / Temp_K+CST) * (Temp_K/T0)^(3./2.);
+} else {
+mu = -999.0;
+}
+
+"""
+    specific_heat="""# specific heat for mixtures of gases
+#
+# Y1 -> mass fraction of component 1
+# Y2 -> mass fraction of component 2
+
+Cp1 = 520.3;
+Cp2 = 1040.0;
+cp = Y1 * Cp1 + Y2 *Cp2;
+"""
+    thermal_conductivity="""# oxygen
+lambda = 6.2e-5 * Temp_K + 8.1e-3;
+
+# nitrogen
+lambda = 6.784141e-5 * Temp_K + 5.564317e-3;
+
+# hydrogen
+lambda = 4.431e-4 * Temp_K + 5.334e-2;
+
+"""
     def __init__(self, parent, case):
         """
         Constructor
@@ -188,7 +245,7 @@ class FluidCharacteristicsView(QWidget, Ui_FluidCharacteristicsForm):
 
         mdl_atmo, mdl_joule, mdl_thermal, mdl_gas, mdl_coal = self.mdl.getThermoPhysicalModel()
 
-        # no 'thermal_conductivity' if not Joule and not Thermal scalar and not 
+        # no 'thermal_conductivity' if not Joule and not Thermal scalar and not
         if mdl_joule == 'off' and mdl_thermal == 'off' and mdl_atmo == 'off':
             self.groupBoxAl.hide()
 
@@ -329,7 +386,7 @@ class FluidCharacteristicsView(QWidget, Ui_FluidCharacteristicsForm):
         if not exp:
             exp = "rho ="
         req = [('rho', 'Density')]
-        exa = "rho = 3*2"
+        exa = FluidCharacteristicsView.density
         setGreenColor(self.sender(), False)
 
         dialog = QMeiEditorView(self,expression = exp,
@@ -352,7 +409,7 @@ class FluidCharacteristicsView(QWidget, Ui_FluidCharacteristicsForm):
         if not exp:
             exp = "mu ="
         req = [('mu', 'Molecular Viscosity')]
-        exa = "mu = 3*2"
+        exa = FluidCharacteristicsView.molecular_viscosity
 
         dialog = QMeiEditorView(self,expression = exp,
                                      required   = req,
@@ -374,7 +431,7 @@ class FluidCharacteristicsView(QWidget, Ui_FluidCharacteristicsForm):
         if not exp:
             exp = "cp ="
         req = [('cp', 'Specific heat')]
-        exa = "cp = 3*2"
+        exa = FluidCharacteristicsView.specific_heat
 
         dialog = QMeiEditorView(self,expression = exp,
                                      required   = req,
@@ -396,7 +453,7 @@ class FluidCharacteristicsView(QWidget, Ui_FluidCharacteristicsForm):
         if not exp:
             exp = "lambda ="
         req = [('lambda', 'Thermal conductivity')]
-        exa = "lambda = 3*2"
+        exa = FluidCharacteristicsView.thermal_conductivity
 
         dialog = QMeiEditorView(self,expression = exp,
                                      required   = req,
diff --git a/gui/Pages/FluidStructureInteractionForm.ui b/gui/Pages/FluidStructureInteractionForm.ui
index db5106a..02ec09f 100644
--- a/gui/Pages/FluidStructureInteractionForm.ui
+++ b/gui/Pages/FluidStructureInteractionForm.ui
@@ -702,7 +702,7 @@ with internal structures</string>
                          </spacer>
                         </item>
                         <item>
-                         <widget class="QLabel" name="label_21" >
+                         <widget class="QLabel" name="label_22" >
                           <property name="minimumSize" >
                            <size>
                             <width>110</width>
@@ -710,17 +710,17 @@ with internal structures</string>
                            </size>
                           </property>
                           <property name="toolTip" >
-                           <string>Code_Saturne key word: XKSTRU</string>
+                           <string>Code_Saturne key word: XCSTRU</string>
                           </property>
                           <property name="text" >
-                           <string>Stiffness matrix</string>
+                           <string>Damping matrix</string>
                           </property>
                          </widget>
                         </item>
                         <item>
-                         <widget class="QPushButton" name="pushButtonStiffnessMatrix" >
+                         <widget class="QPushButton" name="pushButtonDampingMatrix" >
                           <property name="toolTip" >
-                           <string>Code_Saturne key word: XKSTRU</string>
+                           <string>Code_Saturne key word: XCSTRU</string>
                           </property>
                           <property name="text" >
                            <string/>
@@ -768,7 +768,7 @@ with internal structures</string>
                          </spacer>
                         </item>
                         <item>
-                         <widget class="QLabel" name="label_22" >
+                         <widget class="QLabel" name="label_21" >
                           <property name="minimumSize" >
                            <size>
                             <width>110</width>
@@ -776,17 +776,17 @@ with internal structures</string>
                            </size>
                           </property>
                           <property name="toolTip" >
-                           <string>Code_Saturne key word: XCSTRU</string>
+                           <string>Code_Saturne key word: XKSTRU</string>
                           </property>
                           <property name="text" >
-                           <string>Damping matrix</string>
+                           <string>Stiffness matrix</string>
                           </property>
                          </widget>
                         </item>
                         <item>
-                         <widget class="QPushButton" name="pushButtonDampingMatrix" >
+                         <widget class="QPushButton" name="pushButtonStiffnessMatrix" >
                           <property name="toolTip" >
-                           <string>Code_Saturne key word: XCSTRU</string>
+                           <string>Code_Saturne key word: XKSTRU</string>
                           </property>
                           <property name="text" >
                            <string/>
diff --git a/gui/Pages/FluidStructureInteractionModel.py b/gui/Pages/FluidStructureInteractionModel.py
index a687194..33e3c5b 100644
--- a/gui/Pages/FluidStructureInteractionModel.py
+++ b/gui/Pages/FluidStructureInteractionModel.py
@@ -55,7 +55,7 @@ class Constantes:
     Define class that manage constantes
 
     This class is especially useful when we need constante string identifier.
-    Indeed, if the constante value must be changed, the changes is done at 
+    Indeed, if the constante value must be changed, the changes is done at
     one place
 
     ### example
@@ -65,7 +65,7 @@ class Constantes:
     const.a = 10
 
     # raise Exception, "Cannot reassign constant a"
-    const.a = 20 
+    const.a = 20
     """
     def __getattr__(self, attr):
         """
@@ -73,14 +73,14 @@ class Constantes:
         """
         try:
             return self.__dict__[attr]
-        except(KeyError): 
-            raise AttributeError, 'A instance has no attribute %s' % attr   
+        except(KeyError):
+            raise AttributeError, 'A instance has no attribute %s' % attr
 
 
     def __setattr__(self, attr, value):
         """
         Set an attributs
-        """        
+        """
         if attr in self.__dict__.keys():
             raise Exception, "Cannot reassign constant %s" % attr
         else:
@@ -118,7 +118,7 @@ class FluidStructureInteractionModel(Model):
 
         self.__node_models = case.xmlGetNode('thermophysical_models')
         self.__node_ale    = self.__node_models.xmlInitChildNode('ale_method', 'status')
-        
+
         self.__defaults = {}
         self.__defaults[const.max_iterations_implicitation]  = 1
         self.__defaults[const.implicitation_precision]  = 1e-05
@@ -135,7 +135,7 @@ class FluidStructureInteractionModel(Model):
     def setMaxIterations(self, value):
         """
         Set value of maximum of iteration if implicitation into xml file.
-        """ 
+        """
         self.isInt(value)
         self.isGreaterOrEqual(value, 1)
         self.__node_ale.xmlSetData(const.max_iterations_implicitation, value)
@@ -144,9 +144,9 @@ class FluidStructureInteractionModel(Model):
     def getMaxIterations(self):
         """
         Get value of maximum of iteration if implicitation from xml file.
-        """ 
-        return self.__getIntData(const.max_iterations_implicitation, 
-                                 self.setMaxIterations ) 
+        """
+        return self.__getIntData(const.max_iterations_implicitation,
+                                 self.setMaxIterations )
 
 
     #------------------------------------------------------------------
@@ -155,7 +155,7 @@ class FluidStructureInteractionModel(Model):
     def setPrecision(self, value):
         """
         Set value of precision of implicitation into xml file.
-        """ 
+        """
         self.isGreater(value, 0.0)
         self.__node_ale.xmlSetData(const.implicitation_precision, value)
 
@@ -163,9 +163,9 @@ class FluidStructureInteractionModel(Model):
     def getPrecision(self):
         """
         Get value of precision of implicitation from xml file.
-        """ 
-        return self.__getDoubleData(const.implicitation_precision, 
-                                    self.setPrecision ) 
+        """
+        return self.__getDoubleData(const.implicitation_precision,
+                                    self.setPrecision )
 
     #------------------------------------------------------------------
     # ExternalCouplingPostSynchronization
@@ -173,15 +173,15 @@ class FluidStructureInteractionModel(Model):
     def setExternalCouplingPostSynchronization(self, value):
         """
         Set value of stress prediction alpha into xml file.
-        """ 
+        """
         self.__setOnOffXML(const.external_coupling_post_synchronization, value)
 
 
     def getExternalCouplingPostSynchronization(self):
         """
         Get value of external coupling post syncrhonization from xml file.
-        """ 
-        return self.__getOnOffXML(const.external_coupling_post_synchronization, 
+        """
+        return self.__getOnOffXML(const.external_coupling_post_synchronization,
                                   self.setExternalCouplingPostSynchronization)
 
 
@@ -191,16 +191,16 @@ class FluidStructureInteractionModel(Model):
     def setDisplacementPredictionAlpha(self, value):
         """
         Set value of isplacement prediction alpha into xml file.
-        """ 
+        """
         self.__node_ale.xmlSetData(const.displacement_prediction_alpha, value)
 
 
     def getDisplacementPredictionAlpha(self):
         """
         Get value of displacement prediction alpha from xml file.
-        """ 
-        return self.__getDoubleData(const.displacement_prediction_alpha, 
-                                     self.setDisplacementPredictionAlpha ) 
+        """
+        return self.__getDoubleData(const.displacement_prediction_alpha,
+                                     self.setDisplacementPredictionAlpha )
 
 
     #------------------------------------------------------------------
@@ -209,33 +209,33 @@ class FluidStructureInteractionModel(Model):
     def setDisplacementPredictionBeta(self, value):
         """
         Set value of isplacement prediction beta into xml file.
-        """ 
+        """
         self.__node_ale.xmlSetData(const.displacement_prediction_beta, value)
 
 
     def getDisplacementPredictionBeta(self):
         """
         Get value of displacement prediction beta from xml file.
-        """ 
-        return self.__getDoubleData(const.displacement_prediction_beta, 
+        """
+        return self.__getDoubleData(const.displacement_prediction_beta,
                                      self.setDisplacementPredictionBeta )
 
-       
+
     #------------------------------------------------------------------
     # StressPredictionAlpha
     #------------------------------------------------------------------
     def setStressPredictionAlpha(self, value):
         """
         Set value of stress prediction alpha into xml file.
-        """ 
+        """
         self.__node_ale.xmlSetData(const.stress_prediction_alpha, value)
 
 
     def getStressPredictionAlpha(self):
         """
         Get value of stress prediction alpha from xml file.
-        """ 
-        return self.__getDoubleData(const.stress_prediction_alpha, 
+        """
+        return self.__getDoubleData(const.stress_prediction_alpha,
                                     self.setStressPredictionAlpha )
 
 
@@ -245,15 +245,15 @@ class FluidStructureInteractionModel(Model):
     def setMonitorPointSynchronisation(self, value):
         """
         Set value of monitor point synchronisation into xml file.
-        """ 
+        """
         self.__setOnOffXML(const.monitor_point_synchronisation, value)
 
 
     def getMonitorPointSynchronisation(self):
         """
         Get value of monitor point synchronisation from xml file.
-        """ 
-        return self.__getOnOffXML(const.monitor_point_synchronisation, 
+        """
+        return self.__getOnOffXML(const.monitor_point_synchronisation,
                                   self.setMonitorPointSynchronisation)
 
 
@@ -263,7 +263,7 @@ class FluidStructureInteractionModel(Model):
     def __getStringData(self, name, setFunction):
         """
         Get string value from xml file.
-        """ 
+        """
         value = self.__node_ale.xmlGetString(name)
         return self.__getDefaultDataIfNone(value, name, setFunction)
 
@@ -271,7 +271,7 @@ class FluidStructureInteractionModel(Model):
     def __getDoubleData(self, name, setFunction):
         """
         Get double value from xml file.
-        """ 
+        """
         value = self.__node_ale.xmlGetDouble(name)
         return self.__getDefaultDataIfNone(value, name, setFunction)
 
@@ -279,7 +279,7 @@ class FluidStructureInteractionModel(Model):
     def __getIntData(self, name, setFunction):
         """
         Get int value from xml file.
-        """ 
+        """
         value = self.__node_ale.xmlGetInt(name)
         return self.__getDefaultDataIfNone(value, name, setFunction)
 
@@ -287,8 +287,8 @@ class FluidStructureInteractionModel(Model):
     def __getDefaultDataIfNone(self, value, name, setFunction):
         """
         Get default value if value is none.
-        """ 
-        if not value:
+        """
+        if value == None or value == "":
             value = self.__defaults[name]
             setFunction(value)
         return value
@@ -297,7 +297,7 @@ class FluidStructureInteractionModel(Model):
     def __setOnOffXML(self, name, value):
         """
         Set value of 'on'/'off' xml attribute
-        """ 
+        """
         Model().isInList(value, [ 'on', 'off'])
         xmlNode = self.__node_ale.xmlInitNode(name)
         xmlNode['status'] = value
@@ -306,7 +306,7 @@ class FluidStructureInteractionModel(Model):
     def __getOnOffXML(self, name, setFunction):
         """
         Get value of 'on'/'off' xml attribut
-        """ 
+        """
         node = self.__node_ale.xmlInitNode(name, 'status')
         value = node['status']
 
@@ -322,7 +322,7 @@ class FluidStructureInteractionModel(Model):
 
 
 #-------------------------------------------------------------------------------
-# FluidStructureInteraction test case 
+# FluidStructureInteraction test case
 #-------------------------------------------------------------------------------
 
 class FluidStructureInteractionTestCase(ModelTest):
@@ -332,7 +332,7 @@ class FluidStructureInteractionTestCase(ModelTest):
 
     def checkFluidStructureInteractionInstantiation(self):
         """
-        Check whether the FluidStructureInteraction class could be instantiated 
+        Check whether the FluidStructureInteraction class could be instantiated
         """
         model = None
         model = FluidStructureInteractionModel(self.case)
@@ -343,7 +343,7 @@ class FluidStructureInteractionTestCase(ModelTest):
         """Check whether the FluidStructureInteraction class could be set and get precision"""
         mdl = FluidStructureInteractionModel(self.case)
         mdl.setPrecision(0.001)
-        
+
         doc = """<ale_method status="off">
                     <implicitation_precision>
                         0.001
@@ -431,7 +431,7 @@ def suite():
 
 
 def runTest():
-    """ 
+    """
     run test
     """
     print "FluidStructureInteractionTestCase"
diff --git a/gui/Pages/FluidStructureInteractionView.py b/gui/Pages/FluidStructureInteractionView.py
index 4ce05a7..efb26d0 100644
--- a/gui/Pages/FluidStructureInteractionView.py
+++ b/gui/Pages/FluidStructureInteractionView.py
@@ -52,8 +52,8 @@ import logging
 #-------------------------------------------------------------------------------
 
 from PyQt4.QtCore import Qt, QVariant, QString, SIGNAL, pyqtSignature
-from PyQt4.QtGui  import QDialog, QHeaderView, QStandardItemModel, QWidget 
-from PyQt4.QtGui  import QAbstractItemView, QItemSelectionModel, QValidator 
+from PyQt4.QtGui  import QDialog, QHeaderView, QStandardItemModel, QWidget
+from PyQt4.QtGui  import QAbstractItemView, QItemSelectionModel, QValidator
 
 try:
     import mei
@@ -64,6 +64,7 @@ except ImportError:
 #-------------------------------------------------------------------------------
 # Application modules import
 #-------------------------------------------------------------------------------
+
 from Pages.FluidStructureInteractionForm  import Ui_FluidStructureInteractionForm
 from Base                                 import QtPage
 from Pages.FluidStructureInteractionModel import FluidStructureInteractionModel
@@ -115,7 +116,7 @@ class FluidStructureInteractionAdvancedOptionsView(QDialog,
         self.setWindowTitle(title)
 
         self.__default = default
-        self.__result  = default.copy()   
+        self.__result  = default.copy()
         self.__setValidator()
         self.__setInitialValues()
 
@@ -128,7 +129,7 @@ class FluidStructureInteractionAdvancedOptionsView(QDialog,
                                            min=0.0)
         self.lineEditDisplacementAlpha.setValidator(validator)
 
-        validator = QtPage.DoubleValidator(self.lineEditDisplacementBeta, 
+        validator = QtPage.DoubleValidator(self.lineEditDisplacementBeta,
                                            min=0.0)
         self.lineEditDisplacementBeta.setValidator(validator)
 
@@ -211,9 +212,9 @@ class StandardItemModel(QStandardItemModel):
         """
         StandarItemModel for fluid structure interaction tableView
         """
-        QStandardItemModel.__init__(self) 
+        QStandardItemModel.__init__(self)
 
-        # Define header 
+        # Define header
         self.headers = [self.tr("Structure number"),
                         self.tr("Label"),
                         self.tr("Location")]
@@ -231,7 +232,7 @@ class StandardItemModel(QStandardItemModel):
         if index.isValid() and role == Qt.DisplayRole:
             row = index.row()
             col = index.column()
-            return QVariant(self.__data[row][col])            
+            return QVariant(self.__data[row][col])
 
         return QVariant()
 
@@ -240,7 +241,7 @@ class StandardItemModel(QStandardItemModel):
         """
         Define which column is editable/selectable/enable.
         """
-        return Qt.ItemIsEnabled | Qt.ItemIsSelectable       
+        return Qt.ItemIsEnabled | Qt.ItemIsSelectable
 
 
     def headerData(self, section, orientation, role):
@@ -254,7 +255,7 @@ class StandardItemModel(QStandardItemModel):
 
     def setData(self, index, value, role):
         """
-        Set a the data when table changed 
+        Set a the data when table changed
         """
         raise Exception('Cannot edit column')
 
@@ -262,7 +263,7 @@ class StandardItemModel(QStandardItemModel):
     def addItem(self, zone):
         """
         Add an element in the table view.
-        """       
+        """
         index = len(self.__data)
         line = [index + 1, zone.getLabel(), zone.getLocalization()]
 
@@ -287,18 +288,18 @@ class StandardItemModel(QStandardItemModel):
 
 class Coupling:
     """
-    Coupling is the base class to manage all widgets which value depend on the 
+    Coupling is the base class to manage all widgets which value depend on the
     boundary.
-    
-    It provides getBoundaryDefinedValue/setBoundaryDefinedValue methods which 
+
+    It provides getBoundaryDefinedValue/setBoundaryDefinedValue methods which
     get/set the value of a boundary attribute. Getter and setter are specified
     int the constructor
 
-    It also automatically enable/disable the widget when boundary is present 
+    It also automatically enable/disable the widget when boundary is present
     or not
 
-    Derived class can override onBoundarySet method to specify the initial 
-    value of the widget base on the boundary 
+    Derived class can override onBoundarySet method to specify the initial
+    value of the widget base on the boundary
     """
 
     def __init__(self, widget, getterStr, setterStr ):
@@ -312,7 +313,7 @@ class Coupling:
 
         # As no boundary is selected disable the widget
         widget.setEnabled(False)
-               
+
 
     def getWidget(self):
         """
@@ -326,7 +327,7 @@ class Coupling:
         Set the current boundary
         """
         self.__boundary = boundary
-        
+
         #Enable widget
         self.__widget.setEnabled(True)
 
@@ -371,12 +372,12 @@ class LineEditCoupling(Coupling):
         """
         Coupling.__init__(self, lineEdit, getter, setter)
 
-        # Add validator.     
+        # Add validator.
         validator = QtPage.DoubleValidator(lineEdit, min=0.0)
         lineEdit.setValidator(validator)
-        lineEdit.connect(lineEdit, SIGNAL("textChanged(const QString &)"), 
+        lineEdit.connect(lineEdit, SIGNAL("textChanged(const QString &)"),
                          self.__slotTextChanged)
-        
+
 
     def onBoundarySet(self):
         """
@@ -384,15 +385,14 @@ class LineEditCoupling(Coupling):
         """
         value  = self.getBoundaryDefinedValue()
         self.getWidget().setText(str(value))
-           
-            
+
+
     @pyqtSignature("const QString&")
     def __slotTextChanged(self, text):
-        """ 
+        """
         Update the model
         """
         self.setBoundaryDefinedValue(text)
-        
 
 #-------------------------------------------------------------------------------
 # Formula Coupling class
@@ -418,11 +418,11 @@ class FormulaCoupling(Coupling):
 
     def onBoundarySet(self):
         """
-        Called when boundary is set. 
+        Called when boundary is set.
         """
         # call getter to create default value if needed
         self.getBoundaryDefinedValue()
-        
+
         # Disable button if _have_mei is false
         if not _have_mei:
             self.getWidget().setEnabled(False)
@@ -438,8 +438,8 @@ class FormulaCoupling(Coupling):
 
         if not exp:
             exp = self.__default
-        
-        # run the editor           
+
+        # run the editor
         dialog = QMeiEditorView(self.getWidget(),
                                 expression = exp,
                                 required   = self.__required,
@@ -450,11 +450,10 @@ class FormulaCoupling(Coupling):
             log.debug("FormulaCoupling -> %s" % str(result))
             self.setBoundaryDefinedValue(result)
 
-
-
 #-------------------------------------------------------------------------------
 # CheckBoxCouplings Coupling class
 #-------------------------------------------------------------------------------
+
 class CheckBoxCoupling(Coupling):
     """
     CheckBox that depend on a boundary
@@ -465,7 +464,7 @@ class CheckBoxCoupling(Coupling):
         Constructor
         """
         Coupling.__init__(self, checkBox, getter, setter)
-        checkBox.connect(checkBox, SIGNAL("stateChanged(int)"), 
+        checkBox.connect(checkBox, SIGNAL("stateChanged(int)"),
                          self.__slotStateChanged)
 
 
@@ -489,13 +488,13 @@ class CheckBoxCoupling(Coupling):
         """
         value = "off"
         if state == Qt.Checked:
-            value = "on"           
+            value = "on"
         self.setBoundaryDefinedValue(value)
 
-
 #-------------------------------------------------------------------------------
 # CouplingManager class
 #-------------------------------------------------------------------------------
+
 class CouplingManager:
     """
     Manage and initialize coupling derived objects
@@ -523,32 +522,32 @@ class CouplingManager:
         """
         coupings = []
         coupings.append( LineEditCoupling( mainView.lineEditInitialDisplacementX
-                       , "getInitialDisplacementX", "setInitialDisplacementX"))        
+                       , "getInitialDisplacementX", "setInitialDisplacementX"))
         coupings.append( LineEditCoupling( mainView.lineEditInitialDisplacementY
-                       , "getInitialDisplacementY", "setInitialDisplacementY"))        
+                       , "getInitialDisplacementY", "setInitialDisplacementY"))
         coupings.append( LineEditCoupling( mainView.lineEditInitialDisplacementZ
                        , "getInitialDisplacementZ", "setInitialDisplacementZ"))
-                                                
-        coupings.append( 
+
+        coupings.append(
             LineEditCoupling( mainView.lineEditEquilibriumDisplacementX,
                               "getEquilibriumDisplacementX",
-                              "setEquilibriumDisplacementX"))        
+                              "setEquilibriumDisplacementX"))
 
-        coupings.append( 
+        coupings.append(
             LineEditCoupling( mainView.lineEditEquilibriumDisplacementY,
                               "getEquilibriumDisplacementY",
-                              "setEquilibriumDisplacementY"))        
-        coupings.append( 
+                              "setEquilibriumDisplacementY"))
+        coupings.append(
             LineEditCoupling( mainView.lineEditEquilibriumDisplacementZ,
                               "getEquilibriumDisplacementZ",
-                              "setEquilibriumDisplacementZ"))        
+                              "setEquilibriumDisplacementZ"))
 
         coupings.append( LineEditCoupling( mainView.lineEditInitialVelocityX
                        , "getInitialVelocityX", "setInitialVelocityX"))
         coupings.append( LineEditCoupling( mainView.lineEditInitialVelocityY
-                       , "getInitialVelocityY", "setInitialVelocityY"))        
+                       , "getInitialVelocityY", "setInitialVelocityY"))
         coupings.append( LineEditCoupling( mainView.lineEditInitialVelocityZ
-                       , "getInitialVelocityZ", "setInitialVelocityZ"))                
+                       , "getInitialVelocityZ", "setInitialVelocityZ"))
         self.__internalCouplings.extend(coupings)
 
 
@@ -559,9 +558,9 @@ class CouplingManager:
         couplings = []
         couplings.append(CheckBoxCoupling( mainView.checkBoxDDLX, "getDDLX",
                                            "setDDLX"))
-        couplings.append(CheckBoxCoupling( mainView.checkBoxDDLY, "getDDLY", 
+        couplings.append(CheckBoxCoupling( mainView.checkBoxDDLY, "getDDLY",
                                            "setDDLY"))
-        couplings.append(CheckBoxCoupling( mainView.checkBoxDDLZ, "getDDLZ", 
+        couplings.append(CheckBoxCoupling( mainView.checkBoxDDLZ, "getDDLZ",
                                            "setDDLZ"))
         self.__externalCouplings.extend(couplings)
 
@@ -570,58 +569,78 @@ class CouplingManager:
         """
         Initialize the creation of the formula button
         """
-        default = "m11 = ;"
-        examples = "m11 = 100;\nm22 = 100;\nm33 = 100;"
-        examples += "\nm12 = 0;\nm13 = 0;\nm23 = 0;\nm21 = 0;\nm31 = 0;\nm32 = 0;"
-        massRequired = [('m11', 'mass matrix of the structure (1,1)'),
-                        ('m22', 'mass matrix of the structure (2,2)'),
-                        ('m33', 'mass matrix of the structure (3,3)'),
-                        ('m12', 'mass matrix of the structure (1,2)'),
-                        ('m13', 'mass matrix of the structure (1,3)'),
-                        ('m23', 'mass matrix of the structure (2,3)'),
-                        ('m21', 'mass matrix of the structure (2,1)'),
-                        ('m31', 'mass matrix of the structure (3,1)'),
-                        ('m32', 'mass matrix of the structure (3,2)')]
+        default = "%(t)s11 = ;"
+        defaultRequired = [('%(t)s11', '%(n)s matrix of the structure (1,1)'),
+                           ('%(t)s22', '%(n)s matrix of the structure (2,2)'),
+                           ('%(t)s33', '%(n)s matrix of the structure (3,3)'),
+                           ('%(t)s12', '%(n)s matrix of the structure (1,2)'),
+                           ('%(t)s13', '%(n)s matrix of the structure (1,3)'),
+                           ('%(t)s23', '%(n)s matrix of the structure (2,3)'),
+                           ('%(t)s21', '%(n)s matrix of the structure (2,1)'),
+                           ('%(t)s31', '%(n)s matrix of the structure (3,1)'),
+                           ('%(t)s32', '%(n)s matrix of the structure (3,2)')]
         symbols = [('dt', 'time step'),
                    ('t', 'current time'),
                    ('nbIter', 'number of iteration')]
 
-        stiffnessRequired = []
-        dampingRequired = []
-        for var, str in massRequired:
-            stiffnessRequired.append( (var, str.replace('mass', 'stiffness') ) )
-            dampingRequired.append( (var, str.replace('mass', 'damping') ) )
+        m_default = default % {'t':'m'}
+        c_default = default % {'t':'c'}
+        k_default = default % {'t':'k'}
+
+        m_default_required = []
+        c_default_required = []
+        k_default_required = []
+        for v, s in defaultRequired:
+            m_default_required.append((v % {'t':'m'}, s % {'n':'mass'}))
+            c_default_required.append((v % {'t':'c'}, s % {'n':'damping'}))
+            k_default_required.append((v % {'t':'k'}, s % {'n':'stiffness'}))
+
+        m_examples = """# Mass of the structure: 5 kg
+#
+m11 = 5;\nm22 = 5;\nm33 = 5;\nm12 = 0;\nm13 = 0;\nm23 = 0;\nm21 = 0;\nm31 = 0;\nm32 = 0;
+"""
+        c_examples = """# Damping of the structure: 3 kg.s
+#
+c11 = 3;\nc22 = 3;\nc33 = 3;\nc12 = 0;\nc13 = 0;\nc23 = 0;\nc21 = 0;\nc31 = 0;\nc32 = 0;
+"""
+        k_examples = """# Stiffness of the structure: 2 N/m
+#
+k11 = 2;\nk22 = 2;\nk33 = 2;\nk12 = 0;\nk13 = 0;\nk23 = 0;\nk21 = 0;\nk31 = 0;\nk32 = 0;
+"""
 
         couplings = []
         couplings.append( FormulaCoupling( mainView.pushButtonMassMatrix,
-                                           "getMassMatrix", "setMassMatrix", 
-                                           default, massRequired, symbols, 
-                                           examples))
-        couplings.append( FormulaCoupling( mainView.pushButtonStiffnessMatrix, 
-                                           "getStiffnessMatrix", 
-                                           "setStiffnessMatrix", default, 
-                                           stiffnessRequired, symbols, examples))
-
-        couplings.append( FormulaCoupling( mainView.pushButtonDampingMatrix, 
-                                          "getDampingMatrix", 
-                                          "setDampingMatrix", default, 
-                                          dampingRequired, symbols, examples))
+                                           "getMassMatrix", "setMassMatrix",
+                                           m_default, m_default_required,
+                                           symbols, m_examples))
+
+        couplings.append( FormulaCoupling( mainView.pushButtonDampingMatrix,
+                                           "getDampingMatrix", "setDampingMatrix",
+                                           c_default, c_default_required,
+                                           symbols, c_examples))
+
+        couplings.append( FormulaCoupling( mainView.pushButtonStiffnessMatrix,
+                                           "getStiffnessMatrix", "setStiffnessMatrix",
+                                           k_default, k_default_required,
+                                           symbols, k_examples))
 
         defaultFluidForce  = "fx = "
-        requiredFluidForce = [('fx', 'Force applied to the structure along X'),
-                              ('fy', 'Force applied to the structure along Y'),
-                              ('fz', 'Force applied to the structure along Z')]
+        requiredFluidForce = [('fx', 'force applied to the structure along X'),
+                              ('fy', 'force applied to the structure along Y'),
+                              ('fz', 'force applied to the structure along Z')]
         symbolsFluidForce = symbols[:];
-        symbolsFluidForce.append( ('fluid_fx', 'Force of flow along X'))
-        symbolsFluidForce.append( ('fluid_fy', 'Force of flow along Y'))
-        symbolsFluidForce.append( ('fluid_fz', 'Force of flow along Z'))
+        symbolsFluidForce.append( ('fluid_fx', 'force of flow along X'))
+        symbolsFluidForce.append( ('fluid_fy', 'force of flow along Y'))
+        symbolsFluidForce.append( ('fluid_fz', 'force of flow along Z'))
 
-        examplesFluidForce = "fx = fluid_fx;\nfy = fluid_fy;\nfz = fluid_fz;"
-        couplings.append( FormulaCoupling( mainView.pushButtonFluidForce, 
+        examplesFluidForce = """# The fluid force is zero in the Y direction.
+#
+fx = fluid_fx;\nfy = 0;\nfz = fluid_fz;"""
+        couplings.append( FormulaCoupling( mainView.pushButtonFluidForce,
                                            "getFluidForceMatrix",
-                                           "setFluidForceMatrix", 
+                                           "setFluidForceMatrix",
                                            defaultFluidForce,
-                                           requiredFluidForce, 
+                                           requiredFluidForce,
                                            symbolsFluidForce,
                                            examplesFluidForce))
         self.__internalCouplings.extend(couplings)
@@ -633,7 +652,7 @@ class CouplingManager:
         """
         Called when internal tableView selection changed
         """
-        self.__selectionChanged(self.__internalTableModel, 
+        self.__selectionChanged(self.__internalTableModel,
                                self.__internalCouplings, selected)
 
 
@@ -642,7 +661,7 @@ class CouplingManager:
         """
         Called when external tableView selection changed
         """
-        self.__selectionChanged(self.__externalTableModel, 
+        self.__selectionChanged(self.__externalTableModel,
                                self.__externalCouplings, selected)
 
 
@@ -659,22 +678,21 @@ class CouplingManager:
         for coupling in couplings:
             coupling.setBoundary(boundary)
 
-
 #-------------------------------------------------------------------------------
 # Main class
 #-------------------------------------------------------------------------------
+
 class FluidStructureInteractionView(QWidget, Ui_FluidStructureInteractionForm):
     """
     Main class.
     """
-
     def __init__(self, parent, case):
         """
         Constructor
         """
         # Init base classes
         QWidget.__init__(self, parent)
-        
+
         Ui_FluidStructureInteractionForm.__init__(self)
         self.setupUi(self)
 
@@ -685,47 +703,47 @@ class FluidStructureInteractionView(QWidget, Ui_FluidStructureInteractionForm):
         self.__addValidators()
         self.__setInitialValues()
 
-        # Use localization model for column 0, 1, 3        
+        # Use localization model for column 0, 1, 3
         modelLocalization  = LocalizationModel("BoundaryZone", case)
 
         # Store modelLocalization as attribut to avoid garbage collector to clean it
         self.__modelLocalization = modelLocalization
 
-        # Initialize the internal and external TableViewItemModel           
-        self.__internalTableModel = self.__createTableViewItemModel(modelLocalization, 
+        # Initialize the internal and external TableViewItemModel
+        self.__internalTableModel = self.__createTableViewItemModel(modelLocalization,
                                                                     'internal_coupling')
         self.__externalTableModel = self.__createTableViewItemModel(modelLocalization,
                                                                     'external_coupling')
-        
+
         # Coupling Manager
         couplingManager = CouplingManager(self, case, self.__internalTableModel
                                          , self.__externalTableModel)
-        # Avoid garbage collector to delete couplingManager        
+        # Avoid garbage collector to delete couplingManager
         self.__couplingManager = couplingManager
-        
+
         # Initialize internal / external table view
         self.__initTableView(self.tableInternalCoupling,
                             self.__internalTableModel,
                             couplingManager.slotInternalSelectionChanged)
 
-        self.__initTableView(self.tableExternalCoupling, 
+        self.__initTableView(self.tableExternalCoupling,
                             self.__externalTableModel,
                             couplingManager.slotExternalSelectionChanged)
-       
+
 
     def __defineConnection(self):
         """
         Define coonection for widget that do not depend on the boundary
         """
-        self.connect(self.lineEditNALIMX, 
+        self.connect(self.lineEditNALIMX,
                      SIGNAL("textChanged(const QString &)"), self.__slotNalimx)
 
-        self.connect(self.lineEditEPALIM, 
+        self.connect(self.lineEditEPALIM,
                      SIGNAL("textChanged(const QString &)"), self.__slotEpalim)
-        self.connect(self.pushButtonAdvanced, 
+        self.connect(self.pushButtonAdvanced,
                      SIGNAL("clicked(bool)"), self.__slotAdvanced)
-        self.connect(self.checkBoxPostSynchronization, 
-                     SIGNAL("stateChanged (int)"), 
+        self.connect(self.checkBoxPostSynchronization,
+                     SIGNAL("stateChanged (int)"),
                      self.__slotPostSynchronization)
 
 
@@ -751,7 +769,7 @@ class FluidStructureInteractionView(QWidget, Ui_FluidStructureInteractionForm):
         self.lineEditEPALIM.setText(QString(str(epalim)))
         postSynchronization      = self.__model.getExternalCouplingPostSynchronization()
         self.checkBoxPostSynchronization.setChecked(postSynchronization == 'on')
-    
+
 
     def __createTableViewItemModel(self, modelLocalization, filterALE):
         """
@@ -773,18 +791,18 @@ class FluidStructureInteractionView(QWidget, Ui_FluidStructureInteractionForm):
         """
         # Set the model
         tableView.setModel(tableViewItemModel)
-         
+
         # set the column size
         tableView.verticalHeader().setResizeMode(QHeaderView.ResizeToContents)
         tableView.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
         tableView.horizontalHeader().setResizeMode(2, QHeaderView.Stretch)
-        
+
         # Connect slot when selection changed
         tableView.setSelectionBehavior(QAbstractItemView.SelectRows)
         selectionModel = QItemSelectionModel(tableViewItemModel, tableView)
         tableView.setSelectionModel(selectionModel)
 
-        self.connect(selectionModel, 
+        self.connect(selectionModel,
                      SIGNAL( "currentChanged(const QModelIndex &, const QModelIndex &)"),
                      slotSelectionChanged)
 
@@ -797,8 +815,8 @@ class FluidStructureInteractionView(QWidget, Ui_FluidStructureInteractionForm):
         nalimx, ok = text.toInt()
         if self.sender().validator().state == QValidator.Acceptable:
             self.__model.setMaxIterations(nalimx)
- 
- 
+
+
     @pyqtSignature("const QString&")
     def __slotEpalim(self, text):
         """
@@ -852,7 +870,7 @@ class FluidStructureInteractionView(QWidget, Ui_FluidStructureInteractionForm):
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # End
diff --git a/gui/Pages/GasCombustionModel.py b/gui/Pages/GasCombustionModel.py
index 74700b1..f4c5277 100644
--- a/gui/Pages/GasCombustionModel.py
+++ b/gui/Pages/GasCombustionModel.py
@@ -180,7 +180,7 @@ def suite():
     testSuite = unittest.makeSuite(GasCombustionTestCase, "check")
     return testSuite
 
-    
+
 def runTest():
     print "GasCombustionTestCase - A FAIRE**************"
     runner = unittest.TextTestRunner()
diff --git a/gui/Pages/HeadLossesForm.ui b/gui/Pages/HeadLossesForm.ui
index d1c7fdd..70eda88 100644
--- a/gui/Pages/HeadLossesForm.ui
+++ b/gui/Pages/HeadLossesForm.ui
@@ -1,25 +1,18 @@
 <ui version="4.0" >
- <class>Dialog</class>
- <widget class="QDialog" name="Dialog" >
+ <class>HeadLossesForm</class>
+ <widget class="QWidget" name="HeadLossesForm" >
   <property name="geometry" >
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>450</width>
-    <height>392</height>
+    <width>369</width>
+    <height>440</height>
    </rect>
   </property>
-  <property name="font" >
-   <font>
-    <weight>50</weight>
-    <italic>false</italic>
-    <bold>false</bold>
-   </font>
-  </property>
   <property name="windowTitle" >
-   <string>Head Losses</string>
+   <string>Form</string>
   </property>
-  <layout class="QVBoxLayout" >
+  <layout class="QVBoxLayout" name="verticalLayout" >
    <item>
     <widget class="QGroupBox" name="groupBoxZones" >
      <property name="maximumSize" >
@@ -33,7 +26,14 @@
      </property>
      <layout class="QGridLayout" >
       <item row="0" column="0" >
-       <widget class="QTableView" name="tableViewZones" />
+       <widget class="QTreeView" name="treeView" >
+        <property name="indentation" >
+         <number>0</number>
+        </property>
+        <property name="rootIsDecorated" >
+         <bool>false</bool>
+        </property>
+       </widget>
       </item>
      </layout>
     </widget>
@@ -41,30 +41,70 @@
    <item>
     <widget class="QGroupBox" name="groupBoxDef" >
      <property name="title" >
-      <string>Definition of tensor coefficients</string>
+      <string>Tensor coefficients</string>
      </property>
-     <layout class="QGridLayout" >
-      <item row="0" column="0" >
-       <layout class="QVBoxLayout" >
-        <item>
-         <widget class="QGroupBox" name="groupBox" >
-          <property name="title" >
-           <string>Head losses coefficients</string>
+     <layout class="QHBoxLayout" name="horizontalLayout_2" >
+      <item>
+       <spacer name="horizontalSpacer_2" >
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0" >
+         <size>
+          <width>1</width>
+          <height>18</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <layout class="QGridLayout" name="gridLayout" >
+        <item row="0" column="0" >
+         <widget class="QLabel" name="label_17" >
+          <property name="font" >
+           <font>
+            <family>Sans Serif</family>
+            <pointsize>9</pointsize>
+            <weight>50</weight>
+            <italic>false</italic>
+            <bold>false</bold>
+           </font>
           </property>
-          <property name="alignment" >
-           <set>Qt::AlignHCenter</set>
+          <property name="styleSheet" >
+           <string notr="true" >font: 9pt "Sans Serif";abd</string>
           </property>
-          <property name="flat" >
-           <bool>true</bool>
+          <property name="text" >
+           <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Head losses coefficients: K<span style=" vertical-align:sub;">ii </span>= 0.5 <span style=" font-family:'Symbol,serif';">a</span><span style=" vertical-align:sub;">ii </span>|U|</p></body></html></string>
           </property>
          </widget>
         </item>
-        <item>
-         <layout class="QHBoxLayout" >
+        <item row="0" column="1" >
+         <spacer name="horizontalSpacer" >
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>76</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="1" column="0" colspan="2" >
+         <layout class="QHBoxLayout" name="horizontalLayout" >
           <item>
            <widget class="QLabel" name="label_2" >
             <property name="text" >
-             <string>K<sub>XX</sub></string>
+             <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Symbol,serif';">a</span><span style=" vertical-align:sub;">XX</span></p></body></html></string>
             </property>
            </widget>
           </item>
@@ -76,9 +116,9 @@
             <property name="orientation" >
              <enum>Qt::Horizontal</enum>
             </property>
-            <property name="sizeHint" >
+            <property name="sizeHint" stdset="0" >
              <size>
-              <width>15</width>
+              <width>13</width>
               <height>20</height>
              </size>
             </property>
@@ -87,7 +127,11 @@
           <item>
            <widget class="QLabel" name="label_3" >
             <property name="text" >
-             <string>K<sub>YY</sub></string>
+             <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Symbol,serif';">a</span><span style=" vertical-align:sub;">YY</span></p></body></html></string>
             </property>
            </widget>
           </item>
@@ -99,9 +143,9 @@
             <property name="orientation" >
              <enum>Qt::Horizontal</enum>
             </property>
-            <property name="sizeHint" >
+            <property name="sizeHint" stdset="0" >
              <size>
-              <width>15</width>
+              <width>13</width>
               <height>20</height>
              </size>
             </property>
@@ -110,7 +154,11 @@
           <item>
            <widget class="QLabel" name="label_4" >
             <property name="text" >
-             <string>K<sub>ZZ</sub></string>
+             <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Symbol,serif';">a</span><span style=" vertical-align:sub;">ZZ</span></p></body></html></string>
             </property>
            </widget>
           </item>
@@ -119,377 +167,410 @@
           </item>
          </layout>
         </item>
-        <item>
-         <widget class="QGroupBox" name="groupBox_2" >
-          <property name="title" >
-           <string>Reference frame transformation matrix</string>
-          </property>
-          <property name="alignment" >
-           <set>Qt::AlignHCenter</set>
-          </property>
-          <property name="flat" >
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QLabel" name="label" >
-          <property name="font" >
-           <font>
-            <family>LMRoman10</family>
-            <pointsize>10</pointsize>
-            <italic>true</italic>
-           </font>
-          </property>
-          <property name="text" >
-           <string>Reference frame: (x, y, z )     Local frame: (X, Y, Z)</string>
-          </property>
-          <property name="alignment" >
-           <set>Qt::AlignCenter</set>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <layout class="QHBoxLayout" >
-          <item>
-           <spacer>
-            <property name="orientation" >
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeHint" >
-             <size>
-              <width>16</width>
-              <height>20</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-          <item>
-           <layout class="QGridLayout" >
-            <item row="0" column="0" >
-             <widget class="QLabel" name="label_5" >
-              <property name="text" >
-               <string>X =</string>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="1" >
-             <widget class="QLineEdit" name="lineEdit_4" >
-              <property name="minimumSize" >
-               <size>
-                <width>50</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="maximumSize" >
-               <size>
-                <width>50</width>
-                <height>16777215</height>
-               </size>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="2" >
-             <widget class="QLabel" name="label_6" >
-              <property name="font" >
-               <font>
-                <family>LMRoman10</family>
-                <pointsize>10</pointsize>
-                <weight>50</weight>
-                <italic>true</italic>
-                <bold>false</bold>
-               </font>
-              </property>
-              <property name="text" >
-               <string>x +</string>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="3" >
-             <widget class="QLineEdit" name="lineEdit_5" >
-              <property name="minimumSize" >
-               <size>
-                <width>50</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="maximumSize" >
-               <size>
-                <width>50</width>
-                <height>16777215</height>
-               </size>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="4" >
-             <widget class="QLabel" name="label_7" >
-              <property name="font" >
-               <font>
-                <family>LMRoman10</family>
-                <pointsize>10</pointsize>
-                <italic>true</italic>
-               </font>
-              </property>
-              <property name="text" >
-               <string>y +</string>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="5" >
-             <widget class="QLineEdit" name="lineEdit_6" >
-              <property name="minimumSize" >
-               <size>
-                <width>50</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="maximumSize" >
-               <size>
-                <width>50</width>
-                <height>16777215</height>
-               </size>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="6" >
-             <widget class="QLabel" name="label_8" >
-              <property name="font" >
-               <font>
-                <family>LMRoman10</family>
-                <pointsize>10</pointsize>
-                <italic>true</italic>
-               </font>
-              </property>
-              <property name="text" >
-               <string>z </string>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="0" >
-             <widget class="QLabel" name="label_11" >
-              <property name="text" >
-               <string>Y =</string>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="1" >
-             <widget class="QLineEdit" name="lineEdit_8" >
-              <property name="minimumSize" >
-               <size>
-                <width>50</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="maximumSize" >
-               <size>
-                <width>50</width>
-                <height>16777215</height>
-               </size>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="2" >
-             <widget class="QLabel" name="label_9" >
-              <property name="font" >
-               <font>
-                <family>LMRoman10</family>
-                <pointsize>10</pointsize>
-                <italic>true</italic>
-               </font>
-              </property>
-              <property name="text" >
-               <string>x +</string>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="3" >
-             <widget class="QLineEdit" name="lineEdit_9" >
-              <property name="minimumSize" >
-               <size>
-                <width>50</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="maximumSize" >
-               <size>
-                <width>50</width>
-                <height>16777215</height>
-               </size>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="4" >
-             <widget class="QLabel" name="label_10" >
-              <property name="font" >
-               <font>
-                <family>LMRoman10</family>
-                <pointsize>10</pointsize>
-                <italic>true</italic>
-               </font>
-              </property>
-              <property name="text" >
-               <string>y +</string>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="5" >
-             <widget class="QLineEdit" name="lineEdit_7" >
-              <property name="minimumSize" >
-               <size>
-                <width>50</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="maximumSize" >
-               <size>
-                <width>50</width>
-                <height>16777215</height>
-               </size>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="6" >
-             <widget class="QLabel" name="label_12" >
-              <property name="font" >
-               <font>
-                <family>LMRoman10</family>
-                <pointsize>10</pointsize>
-                <italic>true</italic>
-               </font>
-              </property>
-              <property name="text" >
-               <string>z</string>
-              </property>
-             </widget>
-            </item>
-            <item row="2" column="0" >
-             <widget class="QLabel" name="label_15" >
-              <property name="text" >
-               <string>Z =</string>
-              </property>
-             </widget>
-            </item>
-            <item row="2" column="1" >
-             <widget class="QLineEdit" name="lineEdit_11" >
-              <property name="minimumSize" >
-               <size>
-                <width>50</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="maximumSize" >
-               <size>
-                <width>50</width>
-                <height>16777215</height>
-               </size>
-              </property>
-             </widget>
-            </item>
-            <item row="2" column="2" >
-             <widget class="QLabel" name="label_13" >
-              <property name="font" >
-               <font>
-                <family>LMRoman10</family>
-                <pointsize>10</pointsize>
-                <italic>true</italic>
-               </font>
-              </property>
-              <property name="text" >
-               <string>x +</string>
-              </property>
-             </widget>
-            </item>
-            <item row="2" column="3" >
-             <widget class="QLineEdit" name="lineEdit_12" >
-              <property name="minimumSize" >
-               <size>
-                <width>50</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="maximumSize" >
-               <size>
-                <width>50</width>
-                <height>16777215</height>
-               </size>
-              </property>
-             </widget>
-            </item>
-            <item row="2" column="4" >
-             <widget class="QLabel" name="label_14" >
-              <property name="font" >
-               <font>
-                <family>LMRoman10</family>
-                <pointsize>10</pointsize>
-                <italic>true</italic>
-               </font>
-              </property>
-              <property name="text" >
-               <string>y +</string>
-              </property>
-             </widget>
-            </item>
-            <item row="2" column="5" >
-             <widget class="QLineEdit" name="lineEdit_10" >
-              <property name="minimumSize" >
-               <size>
-                <width>50</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="maximumSize" >
-               <size>
-                <width>50</width>
-                <height>16777215</height>
-               </size>
-              </property>
-             </widget>
-            </item>
-            <item row="2" column="6" >
-             <widget class="QLabel" name="label_16" >
-              <property name="font" >
-               <font>
-                <family>LMRoman10</family>
-                <pointsize>10</pointsize>
-                <italic>true</italic>
-               </font>
-              </property>
-              <property name="text" >
-               <string>z</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-          <item>
-           <spacer>
-            <property name="orientation" >
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeHint" >
-             <size>
-              <width>16</width>
-              <height>20</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-         </layout>
-        </item>
        </layout>
       </item>
+      <item>
+       <spacer name="horizontalSpacer_3" >
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0" >
+         <size>
+          <width>6</width>
+          <height>13</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox_3" >
+     <property name="enabled" >
+      <bool>true</bool>
+     </property>
+     <property name="title" >
+      <string>Reference frame transformation matrix</string>
+     </property>
+     <property name="checkable" >
+      <bool>true</bool>
+     </property>
+     <property name="checked" >
+      <bool>true</bool>
+     </property>
+     <layout class="QGridLayout" name="_5" >
+      <item row="0" column="0" >
+       <widget class="QFrame" name="frameTransfo" >
+        <property name="frameShape" >
+         <enum>QFrame::NoFrame</enum>
+        </property>
+        <property name="frameShadow" >
+         <enum>QFrame::Raised</enum>
+        </property>
+        <property name="lineWidth" >
+         <number>0</number>
+        </property>
+        <layout class="QGridLayout" name="_6" >
+         <item row="0" column="0" >
+          <widget class="QLabel" name="label" >
+           <property name="font" >
+            <font>
+             <family>LMRoman10</family>
+             <pointsize>10</pointsize>
+             <italic>true</italic>
+            </font>
+           </property>
+           <property name="text" >
+            <string>Reference frame: (x, y, z )     Local frame: (X, Y, Z)</string>
+           </property>
+           <property name="alignment" >
+            <set>Qt::AlignCenter</set>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0" >
+          <layout class="QGridLayout" name="_7" >
+           <item row="0" column="0" >
+            <spacer>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0" >
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+           <item row="0" column="1" >
+            <layout class="QGridLayout" name="_8" >
+             <item row="0" column="0" >
+              <widget class="QLabel" name="label_18" >
+               <property name="text" >
+                <string>X =</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="1" >
+              <widget class="QLineEdit" name="lineEdit_4" >
+               <property name="minimumSize" >
+                <size>
+                 <width>50</width>
+                 <height>0</height>
+                </size>
+               </property>
+               <property name="maximumSize" >
+                <size>
+                 <width>50</width>
+                 <height>16777215</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="2" >
+              <widget class="QLabel" name="label_19" >
+               <property name="font" >
+                <font>
+                 <family>LMRoman10</family>
+                 <pointsize>10</pointsize>
+                 <weight>50</weight>
+                 <italic>true</italic>
+                 <bold>false</bold>
+                </font>
+               </property>
+               <property name="text" >
+                <string>x +</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="3" >
+              <widget class="QLineEdit" name="lineEdit_5" >
+               <property name="minimumSize" >
+                <size>
+                 <width>50</width>
+                 <height>0</height>
+                </size>
+               </property>
+               <property name="maximumSize" >
+                <size>
+                 <width>50</width>
+                 <height>16777215</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="4" >
+              <widget class="QLabel" name="label_20" >
+               <property name="font" >
+                <font>
+                 <family>LMRoman10</family>
+                 <pointsize>10</pointsize>
+                 <italic>true</italic>
+                </font>
+               </property>
+               <property name="text" >
+                <string>y +</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="5" >
+              <widget class="QLineEdit" name="lineEdit_6" >
+               <property name="minimumSize" >
+                <size>
+                 <width>50</width>
+                 <height>0</height>
+                </size>
+               </property>
+               <property name="maximumSize" >
+                <size>
+                 <width>50</width>
+                 <height>16777215</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="6" >
+              <widget class="QLabel" name="label_21" >
+               <property name="font" >
+                <font>
+                 <family>LMRoman10</family>
+                 <pointsize>10</pointsize>
+                 <italic>true</italic>
+                </font>
+               </property>
+               <property name="text" >
+                <string>z </string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="0" >
+              <widget class="QLabel" name="label_22" >
+               <property name="text" >
+                <string>Y =</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1" >
+              <widget class="QLineEdit" name="lineEdit_8" >
+               <property name="minimumSize" >
+                <size>
+                 <width>50</width>
+                 <height>0</height>
+                </size>
+               </property>
+               <property name="maximumSize" >
+                <size>
+                 <width>50</width>
+                 <height>16777215</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="2" >
+              <widget class="QLabel" name="label_23" >
+               <property name="font" >
+                <font>
+                 <family>LMRoman10</family>
+                 <pointsize>10</pointsize>
+                 <italic>true</italic>
+                </font>
+               </property>
+               <property name="text" >
+                <string>x +</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="3" >
+              <widget class="QLineEdit" name="lineEdit_9" >
+               <property name="minimumSize" >
+                <size>
+                 <width>50</width>
+                 <height>0</height>
+                </size>
+               </property>
+               <property name="maximumSize" >
+                <size>
+                 <width>50</width>
+                 <height>16777215</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="4" >
+              <widget class="QLabel" name="label_24" >
+               <property name="font" >
+                <font>
+                 <family>LMRoman10</family>
+                 <pointsize>10</pointsize>
+                 <italic>true</italic>
+                </font>
+               </property>
+               <property name="text" >
+                <string>y +</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="5" >
+              <widget class="QLineEdit" name="lineEdit_7" >
+               <property name="minimumSize" >
+                <size>
+                 <width>50</width>
+                 <height>0</height>
+                </size>
+               </property>
+               <property name="maximumSize" >
+                <size>
+                 <width>50</width>
+                 <height>16777215</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="6" >
+              <widget class="QLabel" name="label_25" >
+               <property name="font" >
+                <font>
+                 <family>LMRoman10</family>
+                 <pointsize>10</pointsize>
+                 <italic>true</italic>
+                </font>
+               </property>
+               <property name="text" >
+                <string>z</string>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="0" >
+              <widget class="QLabel" name="label_26" >
+               <property name="text" >
+                <string>Z =</string>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="1" >
+              <widget class="QLineEdit" name="lineEdit_11" >
+               <property name="minimumSize" >
+                <size>
+                 <width>50</width>
+                 <height>0</height>
+                </size>
+               </property>
+               <property name="maximumSize" >
+                <size>
+                 <width>50</width>
+                 <height>16777215</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="2" >
+              <widget class="QLabel" name="label_27" >
+               <property name="font" >
+                <font>
+                 <family>LMRoman10</family>
+                 <pointsize>10</pointsize>
+                 <italic>true</italic>
+                </font>
+               </property>
+               <property name="text" >
+                <string>x +</string>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="3" >
+              <widget class="QLineEdit" name="lineEdit_12" >
+               <property name="minimumSize" >
+                <size>
+                 <width>50</width>
+                 <height>0</height>
+                </size>
+               </property>
+               <property name="maximumSize" >
+                <size>
+                 <width>50</width>
+                 <height>16777215</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="4" >
+              <widget class="QLabel" name="label_28" >
+               <property name="font" >
+                <font>
+                 <family>LMRoman10</family>
+                 <pointsize>10</pointsize>
+                 <italic>true</italic>
+                </font>
+               </property>
+               <property name="text" >
+                <string>y +</string>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="5" >
+              <widget class="QLineEdit" name="lineEdit_10" >
+               <property name="minimumSize" >
+                <size>
+                 <width>50</width>
+                 <height>0</height>
+                </size>
+               </property>
+               <property name="maximumSize" >
+                <size>
+                 <width>50</width>
+                 <height>16777215</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="6" >
+              <widget class="QLabel" name="label_29" >
+               <property name="font" >
+                <font>
+                 <family>LMRoman10</family>
+                 <pointsize>10</pointsize>
+                 <italic>true</italic>
+                </font>
+               </property>
+               <property name="text" >
+                <string>z</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </item>
+           <item row="0" column="2" >
+            <spacer>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0" >
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
    <item>
-    <spacer>
+    <spacer name="spacer" >
      <property name="orientation" >
       <enum>Qt::Vertical</enum>
      </property>
-     <property name="sizeHint" >
+     <property name="sizeHint" stdset="0" >
       <size>
-       <width>16</width>
-       <height>16</height>
+       <width>17</width>
+       <height>152</height>
       </size>
      </property>
     </spacer>
diff --git a/gui/Pages/HeadLossesModel.py b/gui/Pages/HeadLossesModel.py
index 9927b6e..9f4a1de 100644
--- a/gui/Pages/HeadLossesModel.py
+++ b/gui/Pages/HeadLossesModel.py
@@ -36,7 +36,7 @@ This module contains the following classes and function:
 """
 
 #-------------------------------------------------------------------------------
-# Library modules import StandardItemModelMeshes(
+# Library modules
 #-------------------------------------------------------------------------------
 
 import sys, unittest
@@ -70,34 +70,34 @@ class HeadLossesModel(Variables, Model):
         self.node_volzone = self.node_domain.xmlGetNode('volumic_conditions')
         self.node_hloss   = self.node_models.xmlInitNode('heads_losses')
 
-        self.tenseurModel = ('3', '6')
         self.coeffNames = ('kxx', 'kyy', 'kzz')
-        self.matrix = ('a11', 'a12', 'a13', 
-                       'a21', 'a22', 'a23', 
+        self.matrix = ('a11', 'a12', 'a13',
+                       'a21', 'a22', 'a23',
                        'a31', 'a32', 'a33')
-                       
+        self.choicevalue = ('choice')
+
         self.getNameAndLocalizationZone()
 
 
+
     def __defaultValues(self):
         """
         Return in a dictionnary which contains default values
         """
         default = {}
-        default['tenseur'] = '6'
         default['kxx']     = 0.0
         default['kyy']     = 0.0
         default['kzz']     = 0.0
-        default['a11']     = 0.0
+        default['a11']     = 1.0
         default['a12']     = 0.0
         default['a13']     = 0.0
         default['a21']     = 0.0
-        default['a22']     = 0.0
+        default['a22']     = 1.0
         default['a23']     = 0.0
         default['a31']     = 0.0
         default['a32']     = 0.0
-        default['a33']     = 0.0
-
+        default['a33']     = 1.0
+        default['choice'] = 'off'
         return default
 
 
@@ -114,7 +114,7 @@ class HeadLossesModel(Variables, Model):
                 localization = zone.getLocalization()
                 zoneDico[label] = (name, localization)
                 self.setNameAndLabelZone(name, label)
-        
+
         return zoneDico
 
 
@@ -125,34 +125,57 @@ class HeadLossesModel(Variables, Model):
         self.node_hloss.xmlInitChildNode('head_loss', name=name, label=label)
         self.getKCoefficients(name)
         self.getMatrix(name)
+        self.getMatrixChoice(name,'choice')
+
+    def getMatrixChoice(self,name,choice):
+        """
+        Get the Transfo Matrix choice
+        """
+        self.isInList(choice, self.choicevalue)
+        node = self.node_hloss.xmlGetNode('head_loss', name=name)
+        value = node.xmlGetString(choice)
+        if value == None:
+            value = self.__defaultValues()[choice]
+            self.setMatrixChoice(name, choice, value)
+        return value
 
 
+    def setMatrixChoice(self, name, choice, value):
+        """
+        Set the Transfo Matrix Choice
+        """
+        self.isInt(int(name))
+        self.isInList(choice, self.choicevalue)
+
+        node = self.node_hloss.xmlGetNode('head_loss', name=name)
+        node.xmlSetData(choice, value)
+
     def getCoefficient(self, name, k):
         """
         Return value of coefficient k for the head loss with zone's name.
         """
         self.isInt(int(name))
         self.isInList(k, self.coeffNames)
-        
+
         node = self.node_hloss.xmlGetNode('head_loss', name=name)
         value = node.xmlGetDouble(k)
-        if value == None: 
+        if value == None:
             value = self.__defaultValues()[k]
             self.setCoefficient(name, k, value)
-        
+
         return value
 
-  
+
     def getKCoefficients(self, name):
         """
         Get value of kxx, kyy and kzz from xml file, for the head loss with zone's name.
         """
         self.isInt(int(name))
-        
+
         kxx = self.getCoefficient(name, 'kxx')
         kyy = self.getCoefficient(name, 'kyy')
         kzz = self.getCoefficient(name, 'kzz')
-        
+
         return kxx, kyy, kzz
 
 
@@ -163,7 +186,7 @@ class HeadLossesModel(Variables, Model):
         self.isInt(int(name))
         self.isInList(k, self.coeffNames)
         self.isFloat(value)
-        
+
         node = self.node_hloss.xmlGetNode('head_loss', name=name)
         node.xmlSetData(k, value)
 
@@ -176,7 +199,7 @@ class HeadLossesModel(Variables, Model):
         self.isFloat(kxx)
         self.isFloat(kyy)
         self.isFloat(kzz)
-        
+
         self.setCoefficient(name, 'kxx', kxx)
         self.setCoefficient(name, 'kyy', kyy)
         self.setCoefficient(name, 'kzz', kzz)
@@ -189,13 +212,13 @@ class HeadLossesModel(Variables, Model):
         """
         self.isInt(int(name))
         self.isInList(a, self.matrix)
-        
+
         node = self.node_hloss.xmlGetNode('head_loss', name=name)
         value = node.xmlGetDouble(a)
-        if value == None: 
+        if value == None:
             value = self.__defaultValues()[a]
             self.setMatrixComposant(name, a, value)
-        
+
         return value
 
 
@@ -205,17 +228,17 @@ class HeadLossesModel(Variables, Model):
         for the head loss with zone's name.
         """
         self.isInt(int(name))
-        
+
         a11 = self.getMatrixComposant(name, 'a11')
         a12 = self.getMatrixComposant(name, 'a12')
-        a13 = self.getMatrixComposant(name, 'a13') 
+        a13 = self.getMatrixComposant(name, 'a13')
         a21 = self.getMatrixComposant(name, 'a21')
         a22 = self.getMatrixComposant(name, 'a22')
         a23 = self.getMatrixComposant(name, 'a23')
         a31 = self.getMatrixComposant(name, 'a31')
         a32 = self.getMatrixComposant(name, 'a32')
         a33 = self.getMatrixComposant(name, 'a33')
-        
+
         return a11, a12, a13, a21, a22, a23, a31, a32, a33
 
 
@@ -227,7 +250,7 @@ class HeadLossesModel(Variables, Model):
         self.isInt(int(name))
         self.isInList(a, self.matrix)
         self.isFloat(value)
-        
+
         node = self.node_hloss.xmlGetNode('head_loss', name=name)
         node.xmlSetData(a, value)
 
@@ -240,7 +263,7 @@ class HeadLossesModel(Variables, Model):
         self.isInt(int(name))
         for a in (a11, a12, a13, a21, a22, a23, a31, a32, a33):
             self.isFloat(a)
-        
+
         self.setMatrixComposant(name, 'a11', a11)
         self.setMatrixComposant(name, 'a12', a12)
         self.setMatrixComposant(name, 'a13', a13)
@@ -273,7 +296,7 @@ class HeadLossesModelTestCase(ModelTest):
         loc = LocalizationModel("VolumicZone", self.case)
         zone = Zone("VolumicZone", label='toto', localization="1 or door", nature="head_losses")
         loc.addZone(zone)
-        
+
         #we can test
         mdl = HeadLossesModel(self.case)
         mdl.getNameAndLocalizationZone()
@@ -304,7 +327,7 @@ class HeadLossesModelTestCase(ModelTest):
         loc = LocalizationModel("VolumicZone", self.case)
         zone = Zone("VolumicZone", label='toto', localization="1 or door", nature="head_losses")
         loc.addZone(zone)
-        
+
         mdl = HeadLossesModel(self.case)
         mdl.setKCoefficients('2', 10., 100., 1000.)
         doc = '''<heads_losses>
@@ -323,12 +346,12 @@ class HeadLossesModelTestCase(ModelTest):
                         <a33>0</a33>
                     </head_loss>
                 </heads_losses>'''
-                
+
         assert mdl.node_hloss == self.xmlNodeFromString(doc),\
             'Could not set kxx, kyy, kzz coefficients for head losses'
         assert mdl.getKCoefficients('2') == (10., 100., 1000.),\
             'Could not get kxx, kyy, kzz coefficients for head losses'
-            
+
         mdl.setCoefficient('2', 'kyy', 555.)
         doc2 = '''<heads_losses>
                     <head_loss label="toto" name="2">
@@ -346,7 +369,7 @@ class HeadLossesModelTestCase(ModelTest):
                         <a33>0</a33>
                     </head_loss>
                 </heads_losses>'''
-        
+
         assert mdl.node_hloss == self.xmlNodeFromString(doc2),\
             'Could not set one coefficient for head losses'
         assert mdl.getCoefficient('2', 'kyy') == 555.,\
@@ -358,7 +381,7 @@ class HeadLossesModelTestCase(ModelTest):
         loc = LocalizationModel("VolumicZone", self.case)
         zone = Zone("VolumicZone", label='toto', localization="1 or door", nature="head_losses")
         loc.addZone(zone)
-        
+
         mdl = HeadLossesModel(self.case)
         mdl.setMatrix('2', 1., 1.2, 1.5, 2., 2.2, 2.5, 3., 3.2, 3.5)
         doc = '''<heads_losses>
@@ -377,12 +400,12 @@ class HeadLossesModelTestCase(ModelTest):
                         <a33>3.5</a33>
                     </head_loss>
                 </heads_losses>'''
-        
+
         assert mdl.node_hloss == self.xmlNodeFromString(doc),\
             'Could not set matrix for head losses'
         assert mdl.getMatrix('2') == (1., 1.2, 1.5, 2., 2.2, 2.5, 3., 3.2, 3.5),\
             'Could not get matrix for head losses'
-            
+
         mdl.setMatrixComposant('2', 'a23', 2300.55)
         doc2='''<heads_losses>
                     <head_loss label="toto" name="2">
@@ -417,4 +440,4 @@ def runTest():
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/HeadLossesView.py b/gui/Pages/HeadLossesView.py
index 5be9316..6259779 100644
--- a/gui/Pages/HeadLossesView.py
+++ b/gui/Pages/HeadLossesView.py
@@ -54,8 +54,9 @@ from PyQt4.QtGui  import *
 
 from Base.Toolbox import GuiParam
 from HeadLossesForm import Ui_HeadLossesForm
-from HeadLossesAdvancedOptionsDialogForm import Ui_HeadLossesAdvancedOptionsDialogForm
+from Pages.LocalizationModel import LocalizationModel, Zone
 import Base.QtPage as QtPage
+from Base.QtPage import DoubleValidator, ComboModel
 from Pages.HeadLossesModel import HeadLossesModel
 
 #-------------------------------------------------------------------------------
@@ -67,14 +68,86 @@ log = logging.getLogger("HeadLossesView")
 log.setLevel(GuiParam.DEBUG)
 
 #-------------------------------------------------------------------------------
+# Line edit delegate with a Double validator (positive value)
+#-------------------------------------------------------------------------------
+
+class ValueDelegate(QItemDelegate):
+    def __init__(self, parent=None):
+        super(ValueDelegate, self).__init__(parent)
+        self.parent = parent
+
+    def createEditor(self, parent, option, index):
+        editor = QLineEdit(parent)
+        validator = DoubleValidator(editor, min=0.)
+        editor.setValidator(validator)
+        #editor.installEventFilter(self)
+        return editor
+
+    def setEditorData(self, editor, index):
+        value = index.model().data(index, Qt.DisplayRole).toString()
+        editor.setText(value)
+
+    def setModelData(self, editor, model, index):
+        value, ok = editor.text().toDouble()
+        if editor.validator().state == QValidator.Acceptable:
+            model.setData(index, QVariant(value), Qt.DisplayRole)
+
+#-------------------------------------------------------------------------------
+# StandarItemModel class to display Head Losses Zones in a QTreeView
+#-------------------------------------------------------------------------------
+
+
+class StandardItemModelHeadLosses(QStandardItemModel):
+    def __init__(self):
+        QStandardItemModel.__init__(self)
+        self.headers = [self.tr("Label"), self.tr("Zone"),
+                        self.tr("Selection criteria")]
+        self.setColumnCount(len(self.headers))
+        self.dataHeadLossesZones = []
+
+
+    def data(self, index, role):
+        if not index.isValid():
+            return QVariant()
+        if role == Qt.DisplayRole:
+            return QVariant(self.dataHeadLossesZones[index.row()][index.column()])
+        return QVariant()
+
+    def flags(self, index):
+        if not index.isValid():
+            return Qt.ItemIsEnabled
+        else:
+            return Qt.ItemIsEnabled | Qt.ItemIsSelectable
+
+    def headerData(self, section, orientation, role):
+        if orientation == Qt.Horizontal and role == Qt.DisplayRole:
+            return QVariant(self.headers[section])
+        return QVariant()
+
+
+    def setData(self, index, value, role):
+        self.emit(SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"), index, index)
+        return True
+
+
+    def insertItem(self, label, name, local):
+        line = [label, name, local]
+        self.dataHeadLossesZones.append(line)
+        row = self.rowCount()
+        self.setRowCount(row+1)
+
+
+    def getItem(self, row):
+        return self.dataHeadLossesZones[row]
+
+
+#-------------------------------------------------------------------------------
 # Main view class
 #-------------------------------------------------------------------------------
 
 class HeadLossesView(QWidget, Ui_HeadLossesForm):
-    """
-    Class to open HeadLosses Page.
-    """
-    def __init__(self, parent=None, case=None):
+
+    def __init__(self, parent, case):
         """
         Constructor
         """
@@ -84,129 +157,273 @@ class HeadLossesView(QWidget, Ui_HeadLossesForm):
         self.setupUi(self)
 
         self.case = case
-        self.model = HeadLossesModel(self.case)
 
-        # Combo model
+        # Create the Page layout.
 
-        self.modelTurbModel = QtPage.ComboModel(self.comboBoxTurbModel,10,1)
+        # Model and QTreeView for Head Losses
+        self.modelHeadLosses = StandardItemModelHeadLosses()
+        self.treeView.setModel(self.modelHeadLosses)
 
-        self.modelTurbModel.addItem(self.tr("No model (i.e. laminar flow)"), "off")
-        self.modelTurbModel.addItem(self.tr("Mixing length"), "mixing_length")
-        self.modelTurbModel.addItem(self.tr("k-epsilon"), "k-epsilon")
-        self.modelTurbModel.addItem(self.tr("k-epsilon Linear Production"), "k-epsilon-PL")
-        self.modelTurbModel.addItem(self.tr("Rij-epsilon LLR"), "Rij-epsilon")
-        self.modelTurbModel.addItem(self.tr("Rij-epsilon SSG"), "Rij-SSG")
-        self.modelTurbModel.addItem(self.tr("v2f (phi model)"), "v2f-phi")
-        self.modelTurbModel.addItem(self.tr("k-omega SST"), "k-omega-SST")
-        self.modelTurbModel.addItem(self.tr("LES (Smagorinsky)"), "LES_Smagorinsky")
-        self.modelTurbModel.addItem(self.tr("LES (classical dynamic model)"), "LES_dynamique")
 
         # Connections
+        self.connect(self.treeView, SIGNAL("clicked(const QModelIndex &)"), self.slotSelectHeadLossesZones)
+        self.connect(self.groupBox_3, SIGNAL("clicked(bool)"), self.slotTransfoMatrix)
+
+        self.connect(self.lineEdit, SIGNAL("textChanged(const QString &)"), self.slotKxx)
+        self.connect(self.lineEdit_2, SIGNAL("textChanged(const QString &)"), self.slotKyy)
+        self.connect(self.lineEdit_3, SIGNAL("textChanged(const QString &)"), self.slotKzz)
+
+        self.connect(self.lineEdit_4, SIGNAL("textChanged(const QString &)"), self.slotA11)
+        self.connect(self.lineEdit_5, SIGNAL("textChanged(const QString &)"), self.slotA12)
+        self.connect(self.lineEdit_6, SIGNAL("textChanged(const QString &)"), self.slotA13)
+        self.connect(self.lineEdit_8, SIGNAL("textChanged(const QString &)"), self.slotA21)
+        self.connect(self.lineEdit_9, SIGNAL("textChanged(const QString &)"), self.slotA22)
+        self.connect(self.lineEdit_7, SIGNAL("textChanged(const QString &)"), self.slotA23)
+        self.connect(self.lineEdit_11, SIGNAL("textChanged(const QString &)"), self.slotA31)
+        self.connect(self.lineEdit_12, SIGNAL("textChanged(const QString &)"), self.slotA32)
+        self.connect(self.lineEdit_10, SIGNAL("textChanged(const QString &)"), self.slotA33)
+
+        # Validators
+
+        validator = DoubleValidator(self.lineEdit, min=0.0)
+        validator_2 = DoubleValidator(self.lineEdit_2, min=0.0)
+        validator_3= DoubleValidator(self.lineEdit_3, min=0.0)
+
+        validator_4 = DoubleValidator(self.lineEdit_4)
+        validator_5= DoubleValidator(self.lineEdit_5)
+        validator_6= DoubleValidator(self.lineEdit_6)
+        validator_8 = DoubleValidator(self.lineEdit_8)
+        validator_9 = DoubleValidator(self.lineEdit_9)
+        validator_7 = DoubleValidator(self.lineEdit_7)
+        validator_11 = DoubleValidator(self.lineEdit_11)
+        validator_12 = DoubleValidator(self.lineEdit_12)
+        validator_10 = DoubleValidator(self.lineEdit_10)
+
+        # Apply validators
+
+        self.lineEdit.setValidator(validator)
+        self.lineEdit_2.setValidator(validator_2)
+        self.lineEdit_3.setValidator(validator_3)
+
+        self.lineEdit_4.setValidator(validator_4)
+        self.lineEdit_5.setValidator(validator_5)
+        self.lineEdit_6.setValidator(validator_6)
+        self.lineEdit_8.setValidator(validator_8)
+        self.lineEdit_9.setValidator(validator_9)
+        self.lineEdit_7.setValidator(validator_7)
+        self.lineEdit_11.setValidator(validator_11)
+        self.lineEdit_12.setValidator(validator_12)
+        self.lineEdit_10.setValidator(validator_10)
+
+        # Initialize Widgets
+
+        self.entriesNumber = 0
+        d = HeadLossesModel(self.case).getNameAndLocalizationZone()
+        liste=[]
+        liste=d.items()
+        t=[]
+        for t in liste :
+            NamLoc=t[1]
+            Lab=t[0 ]
+            self.modelHeadLosses.insertItem(Lab, NamLoc[0],NamLoc[1])
+        self.forgetStandardWindows()
+
+
+    @pyqtSignature("const QModelIndex&")
+    def slotSelectHeadLossesZones(self, index):
+        model = HeadLossesModel(self.case)
+        label, name, local = self.modelHeadLosses.getItem(index.row())
+
+        if hasattr(self, "modelScalars"): del self.modelScalars
+        log.debug("slotSelectHeadLossesZones label %s " % label )
+        self.groupBoxDef.show()
+        self.groupBox_3.show()
+        kxx,kyy,kzz = model.getKCoefficients(name)
+        self.lineEdit.setText(QString(str(kxx)))
+        self.lineEdit_2.setText(QString(str(kyy)))
+        self.lineEdit_3.setText(QString(str(kzz)))
+
+        if model.getMatrixChoice(name,'choice') == 'on':
+            self.groupBox_3.setChecked(True)
+            checked = True
+        else:
+            self.groupBox_3.setChecked(False)
+            checked = False
 
-        self.connect(self.comboBoxTurbModel, SIGNAL("activated(const QString&)"), self.slotHeadLossesModel)
-        self.connect(self.pushButtonAdvanced, SIGNAL("clicked()"), self.slotAdvancedOptions)
-        self.connect(self.lineEditLength, SIGNAL("textChanged(const QString &)"), self.slotLengthScale)
-
-        # Frames display
+        self.slotTransfoMatrix(checked)
 
-        self.frameAdvanced.hide()
-        self.frameLength.hide()
 
-        # Validator
+    def forgetStandardWindows(self):
+        """
+        For forget standard windows
+        """
+        self.groupBoxDef.hide()
+        self.groupBox_3.hide()
 
-        validator = QtPage.DoubleValidator(self.lineEditLength, min=0.0)
-        validator.setExclusiveMin(True)
-        #validator.setFixup(self.model.defaultHeadLossesValues()['length_scale'])
-        self.lineEditLength.setValidator(validator)
 
 
-        # Update the HeadLosses models list with the calculation features
+    @pyqtSignature("const QString&")
+    def slotKxx(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setCoefficient(name,'kxx',value )
 
-        for turb in self.model.turbModel:
-            if turb not in self.model.HeadLossesModelsList():
-                self.modelTurbModel.disableItem(str_model=turb)
+    @pyqtSignature("const QString&")
+    def slotKyy(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setCoefficient(name,'kyy',value )
 
-        # Select the HeadLosses model
+    @pyqtSignature("const QString&")
+    def slotKzz(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setCoefficient(name,'kzz',value )
+
+    @pyqtSignature("bool")
+    def slotTransfoMatrix(self,  checked):
+        self.groupBox_3.setFlat(not checked)
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+
+            if checked:
+                model.setMatrixChoice(name,'choice','on')
+                self.groupBox_3.setChecked(True)
+                self.frameTransfo.show()
+                a11, a12, a13, a21, a22, a23, a31, a32, a33 = model.getMatrix(name)
+            else:
+                model.setMatrixChoice(name,'choice','off')
+                self.frameTransfo.hide()
+                a11, a12, a13, a21, a22, a23, a31, a32, a33 = 1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0
+                self.groupBox_3.setChecked(False)
+
+            self.lineEdit_4.setText(QString(str(a11)))
+            self.lineEdit_5.setText(QString(str(a12)))
+            self.lineEdit_6.setText(QString(str(a13)))
+            self.lineEdit_8.setText(QString(str(a21)))
+            self.lineEdit_9.setText(QString(str(a22)))
+            self.lineEdit_7.setText(QString(str(a23)))
+            self.lineEdit_11.setText(QString(str(a31)))
+            self.lineEdit_12.setText(QString(str(a32)))
+            self.lineEdit_10.setText(QString(str(a33)))
 
-        model = self.model.getHeadLossesModel()
-        self.modelTurbModel.setItem(str_model=model)
-        self.slotHeadLossesModel(self.comboBoxTurbModel.currentText())
 
-        # Length scale
+    @pyqtSignature("const QString&")
+    def slotA11(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setMatrixComposant(name,'a11',value )
 
-        l_scale = self.model.getLengthScale()
-        self.lineEditLength.setText(QString(str(l_scale)))
+    @pyqtSignature("const QString&")
+    def slotA12(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setMatrixComposant(name,'a12',value )
 
+    @pyqtSignature("const QString&")
+    def slotA13(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setMatrixComposant(name,'a13',value )
 
     @pyqtSignature("const QString&")
-    def slotLengthScale(self, text):
-        """
-        Private slot.
-        Input XLOMLG.
-        """
-        l_scale, ok = text.toDouble()
-        if self.sender().validator().state == QValidator.Acceptable:
-            self.model.setLengthScale(l_scale)
+    def slotA21(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setMatrixComposant(name,'a21',value )
 
+    @pyqtSignature("const QString&")
+    def slotA22(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setMatrixComposant(name,'a22',value )
 
     @pyqtSignature("const QString&")
-    def slotHeadLossesModel(self, text):
-        """
-        Private slot.
-        Input ITURB.
-        """
-        model = self.modelTurbModel.dicoV2M[str(text)]
-        self.model.setHeadLossesModel(model)
-
-        self.frameAdvanced.hide()
-        self.frameLength.hide()
-
-        if model == 'mixing_length':
-            self.frameLength.show()
-            self.frameAdvanced.hide()
-            self.model.getLengthScale()
-        elif model not in ('off', 'LES_Smagorinsky', 'LES_dynamique'):
-            self.frameLength.hide()
-            self.frameAdvanced.show()
-
-        if model in ('off', 'LES_Smagorinsky', 'LES_dynamique'):
-            self.line.hide()
-        else:
-            self.line.show()
+    def slotA23(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setMatrixComposant(name,'a23',value )
 
-##         if model in ('LES_Smagorinsky', 'LES_dynamique'):
-##             title = self.tr("HeadLosses model")
-##             msg   = self.tr("Please report to the informations \n" \
-##                             "contain in the user subroutine: 'ussmag'")
-##             QMessageBox.warning(self, title, msg)
+    @pyqtSignature("const QString&")
+    def slotA31(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setMatrixComposant(name,'a31',value )
 
+    @pyqtSignature("const QString&")
+    def slotA32(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setMatrixComposant(name,'a32',value )
 
-    @pyqtSignature("")
-    def slotAdvancedOptions(self):
-        """
-        Private slot.
-        Ask one popup for advanced specifications
-        """
-        default = {}
-        default['model']         = self.model.getHeadLossesModel()
-        default['scale_model']   = self.model.getScaleModel()
-        default['gravity_terms'] = self.model.getGravity()
-        log.debug("slotAdvancedOptions -> %s" % str(default))
-
-        dialog = HeadLossesAdvancedOptionsDialogView(self, default)
-        if dialog.exec_():
-            result = dialog.get_result()
-            log.debug("slotAdvancedOptions -> %s" % str(result))
-            self.model.setHeadLossesModel(result['model'])
-            self.model.setScaleModel(result['scale_model'])
-            self.model.setGravity(result['gravity_terms'])
-
-
-    def tr(self, text):
-        """
-        Translation
-        """
-        return text
+    @pyqtSignature("const QString&")
+    def slotA33(self, text):
+        cindex = self.treeView.currentIndex()
+        if cindex != (-1,-1):
+            row = cindex.row()
+            label, name, local = self.modelHeadLosses.getItem(row)
+            model = HeadLossesModel(self.case)
+            value, ok = text.toDouble()
+            if self.sender().validator().state == QValidator.Acceptable:
+                model.setMatrixComposant(name,'a33',value )
 
 
 #-------------------------------------------------------------------------------
@@ -220,4 +437,4 @@ if __name__ == "__main__":
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/IdentityAndPathesView.py b/gui/Pages/IdentityAndPathesView.py
index 00e030f..81f9450 100644
--- a/gui/Pages/IdentityAndPathesView.py
+++ b/gui/Pages/IdentityAndPathesView.py
@@ -69,7 +69,7 @@ meshes_dir = "MESH"
 unknown_dir = "????????"
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class IdentityAndPathesView(QtGui.QWidget, Ui_IdentityAndPathesForm):
@@ -167,10 +167,10 @@ class IdentityAndPathesView(QtGui.QWidget, Ui_IdentityAndPathesForm):
         """
         self.case_path = str(self.lineEditCasePath.text())
         self.lineEditCasePath.setText(self.case_path)
-        case_dir = os.path.abspath(self.case_path) 
+        case_dir = os.path.abspath(self.case_path)
         self.case_path = case_dir
 
-        line_name = ['Data', 'Results', 'UserSrc', 'Scripts']    
+        line_name = ['Data', 'Results', 'UserSrc', 'Scripts']
 
         if os.path.isdir(case_dir) :
             self.mdl.setCasePath(case_dir)
@@ -186,14 +186,14 @@ class IdentityAndPathesView(QtGui.QWidget, Ui_IdentityAndPathesForm):
             for i in range(0,4) :
                 if sub_dir[i] in os.listdir(case_dir):
                     self.mdl.setPath(self.path[i], os.path.abspath(case_dir + '/' + sub_dir[i]))
-                    line = getattr(self, "lineEdit"+line_name[i])  # line is self.lineEditXXX 
-                    line.setText(QtCore.QString(sub_dir[i])) 
+                    line = getattr(self, "lineEdit"+line_name[i])  # line is self.lineEditXXX
+                    line.setText(QtCore.QString(sub_dir[i]))
                     line.setStatusTip("")
                     self.mdl.setRelevantSubdir("yes", sub_dir[i])
                 else:
                     self.mdl.setPath(self.path[i], "")
-                    line = getattr(self, "lineEdit"+line_name[i])  # line is self.lineEditXXX 
-                    line.setText(msgError) 
+                    line = getattr(self, "lineEdit"+line_name[i])  # line is self.lineEditXXX
+                    line.setText(msgError)
                     line.setStatusTip(msg[i])
                     self.mdl.setRelevantSubdir("no", sub_dir[i])
 
@@ -212,8 +212,8 @@ class IdentityAndPathesView(QtGui.QWidget, Ui_IdentityAndPathesForm):
 
         else:
             for i in range(0,4) :
-                line = getattr(self, "lineEdit"+line_name[i])  # line is self.lineEditXXX 
-                line.setText(unknown_dir) 
+                line = getattr(self, "lineEdit"+line_name[i])  # line is self.lineEditXXX
+                line.setText(unknown_dir)
             self.lineEditMeshPath.setText(unknown_dir)
 
             msg = self.tr("Warning: the given directory does not exist.")
@@ -237,5 +237,5 @@ if __name__ == "__main__":
 
 
 #-------------------------------------------------------------------------------
-# End 
+# End
 #-------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/gui/Pages/InitializationModel.py b/gui/Pages/InitializationModel.py
index 55888b2..058e940 100644
--- a/gui/Pages/InitializationModel.py
+++ b/gui/Pages/InitializationModel.py
@@ -59,12 +59,6 @@ from DefineUserScalarsModel import DefineUserScalarsModel
 from LocalizationModel import LocalizationModel
 
 #-------------------------------------------------------------------------------
-# Multi-selection string
-#-------------------------------------------------------------------------------
-
-MULTISEL = "*****"
-
-#-------------------------------------------------------------------------------
 # Variables and Scalar model initialization modelling class
 #-------------------------------------------------------------------------------
 
@@ -85,7 +79,7 @@ class InitializationModel(Model):
 
         self.VelocityList = ('velocity_U', 'velocity_V', 'velocity_W')
         self.Turb_var_List = ('turb_k', 'turb_eps',
-                              'component_R11', 'component_R22', 'component_R33', 
+                              'component_R11', 'component_R22', 'component_R33',
                               'component_R12', 'component_R13', 'component_R23',
                               'turb_phi', 'turb_fb', 'turb_omega')
 
@@ -155,13 +149,13 @@ class InitializationModel(Model):
                         'component_R22',
                         'component_R33',
                         'component_R12',
-                        'component_R13', 
-                        'component_R23', 
+                        'component_R13',
+                        'component_R23',
                         'turb_eps'):
                 self.getTurbulenceInitialValue(zone, txt)
 
         elif turb_model == 'v2f-phi':
-            for txt in ('turb_k', 
+            for txt in ('turb_k',
                         'turb_eps',
                         'turb_phi',
                         'turb_fb'):
@@ -224,7 +218,7 @@ class InitializationModel(Model):
                 msg = "There is an error: this node " + str(node) + "should be existed"
                 raise ValueError, msg
             v = node.xmlGetDouble('initial_value', zone=zone)
-            if v == None: 
+            if v == None:
                 v = self.__defaultValues()['velocity']
             velocity_list.append(v)
 
@@ -269,7 +263,7 @@ class InitializationModel(Model):
         self.isFloat(velocity)
 
         node_init = self.node_turb.xmlGetNode('initialization')
-        if not node_init: 
+        if not node_init:
             msg = "There is an error: this node " + str(node_init) + "should be existed"
             raise ValueError, msg
 
@@ -285,9 +279,9 @@ class InitializationModel(Model):
         """
         node_init = self.node_turb.xmlGetNode('initialization',
                                               choice='reference_velocity')
-        if not node_init: 
+        if not node_init:
             msg = "There is an error: this node " + str(node_init) + "should be existed"
-            raise ValueError, msg 
+            raise ValueError, msg
 
         v = node_init.xmlGetDouble('reference_velocity')
         if v == None:
@@ -385,7 +379,7 @@ class InitializationModel(Model):
 
         label = Tool.dicoLabel(var_name)
         node = self.node_turb.xmlGetNode('variable', name=var_name)
-        if node: 
+        if node:
             label = node['label']
 
         return label
@@ -464,7 +458,7 @@ class InitializationTestCase(ModelTest):
         doc = '''<turbulence model="k-epsilon">
                     <variable label="TurbEner" name="turb_k"/>
                     <variable label="Dissip" name="turb_eps"/>
-                    <property label="turb. vi" name="turb_viscosity"/>
+                    <property label="TurbVisc" name="turb_viscosity"/>
                     <initialization choice="reference_velocity">
                             <reference_velocity>1</reference_velocity>
                     </initialization>
@@ -486,7 +480,7 @@ class InitializationTestCase(ModelTest):
         doc = '''<turbulence model="k-epsilon">
                     <variable label="TurbEner" name="turb_k"/>
                     <variable label="Dissip" name="turb_eps"/>
-                    <property label="turb. vi" name="turb_viscosity"/>
+                    <property label="TurbVisc" name="turb_viscosity"/>
                     <initialization choice="reference_velocity">
                             <reference_velocity>5</reference_velocity>
                     </initialization>
@@ -511,7 +505,7 @@ class InitializationTestCase(ModelTest):
         doc = '''<turbulence model="k-epsilon">
                     <variable label="TurbEner" name="turb_k"/>
                     <variable label="Dissip" name="turb_eps"/>
-                    <property label="turb. vi" name="turb_viscosity"/>
+                    <property label="TurbVisc" name="turb_viscosity"/>
                     <initialization choice="reference_velocity_length">
                             <reference_velocity>5</reference_velocity>
                             <reference_length>155.8</reference_length>
@@ -536,7 +530,7 @@ class InitializationTestCase(ModelTest):
         doc = '''<turbulence model="Rij-epsilon">
                     <variable label="TurbEner" name="turb_k"/>
                     <variable label="Dissip" name="turb_eps"/>
-                    <property label="turb. vi" name="turb_viscosity"/>
+                    <property label="TurbVisc" name="turb_viscosity"/>
                     <initialization choice="reference_velocity">
                             <reference_velocity>1</reference_velocity>
                     </initialization>
@@ -573,4 +567,4 @@ def runTest():
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/InitializationView.py b/gui/Pages/InitializationView.py
index b9082fd..91ff37c 100644
--- a/gui/Pages/InitializationView.py
+++ b/gui/Pages/InitializationView.py
@@ -159,8 +159,8 @@ class InitializationView(QWidget, Ui_InitializationForm):
                     self.zone = name
                 if not self.zone:
                     self.zone = name
-            else:
-                raise ValueError, "there is no initialization zone defined."
+        #    else:
+        #        raise ValueError, "there is no initialization zone defined."
 
         self.modelZone.setItem(str_model = self.zone)
 
@@ -218,7 +218,7 @@ class InitializationView(QWidget, Ui_InitializationForm):
         validatorKomega_omega = DoubleValidator(self.lineEditKomega_omega, min=0.)
         validatorRefVelocity  = DoubleValidator(self.lineEditRefVelocity, min=0.)
         validatorRefLength    = DoubleValidator(self.lineEditRefLength, min=0.)
-	validatorRefLength.setExclusiveMin()
+        validatorRefLength.setExclusiveMin()
 
         self.lineEditU.setValidator(validatorU)
         self.lineEditV.setValidator(validatorV)
@@ -294,7 +294,7 @@ class InitializationView(QWidget, Ui_InitializationForm):
         self.framev2f.hide()
         self.frameKomega.hide()
         self.frameReference.hide()
-       
+
         choice = self.modelTurbulence.dicoV2M[str(text)]
         log.debug("slotChoice choice =  %s "%str(choice))
         self.init.setInitialTurbulenceChoice(self.zone, choice)
@@ -305,7 +305,7 @@ class InitializationView(QWidget, Ui_InitializationForm):
 
                 self.frameKeps.show()
 
-                k   = self.init.getTurbulenceInitialValue(self.zone, 'turb_k') 
+                k   = self.init.getTurbulenceInitialValue(self.zone, 'turb_k')
                 eps = self.init.getTurbulenceInitialValue(self.zone, 'turb_eps')
                 self.lineEditKeps_k.setText(QString(str(k)))
                 self.lineEditKeps_eps.setText(QString(str(eps)))
@@ -334,7 +334,7 @@ class InitializationView(QWidget, Ui_InitializationForm):
 
                 self.framev2f.show()
 
-                k   = self.init.getTurbulenceInitialValue(self.zone, 'turb_k') 
+                k   = self.init.getTurbulenceInitialValue(self.zone, 'turb_k')
                 eps = self.init.getTurbulenceInitialValue(self.zone, 'turb_eps')
                 phi = self.init.getTurbulenceInitialValue(self.zone, 'turb_phi')
                 fb  = self.init.getTurbulenceInitialValue(self.zone, 'turb_fb')
@@ -360,12 +360,12 @@ class InitializationView(QWidget, Ui_InitializationForm):
             self.labelRefLength.hide()
             self.lineEditRefLength.hide()
             self.labelUnitRefLength.hide()
-            
+
             v = self.init.getReferenceVelocity()
             self.lineEditRefVelocity.setText(QString(str(v)))
 
         elif choice == 'reference_velocity_length':
-            
+
             self.frameReference.show()
             self.labelRefLength.show()
             self.lineEditRefLength.show()
@@ -405,7 +405,7 @@ class InitializationView(QWidget, Ui_InitializationForm):
         if self.sender().validator().state == QValidator.Acceptable:
             self.init.setTurbulenceInitialValue(self.zone, 'component_R11', val)
 
-        
+
     @pyqtSignature("const QString&")
     def slotR12(self, var):
         """
@@ -415,7 +415,7 @@ class InitializationView(QWidget, Ui_InitializationForm):
         if self.sender().validator().state == QValidator.Acceptable:
             self.init.setTurbulenceInitialValue(self.zone, 'component_R12', val)
 
-        
+
     @pyqtSignature("const QString&")
     def slotR13(self, var):
         """
@@ -464,7 +464,7 @@ class InitializationView(QWidget, Ui_InitializationForm):
         val, ok = var.toDouble()
         if self.sender().validator().state == QValidator.Acceptable:
             self.init.setTurbulenceInitialValue(self.zone, 'turb_eps', val)
-            
+
 
     @pyqtSignature("const QString&")
     def slotv2f_k(self, var):
@@ -551,7 +551,7 @@ class InitializationView(QWidget, Ui_InitializationForm):
 #                if long != -1e+12:
 #                    msg = self.tr("THE ONLY AUTHORIZED NEGATIVE VALUE IS: -1e+12")
 #                    self.stbar.showMessage(msg, 2000)
-#                    self.lineEditRefLength.setText(QString("")) 
+#                    self.lineEditRefLength.setText(QString(""))
 #                else:
 #                    self.init.setReferenceLength(long)
 #            else:
@@ -592,7 +592,7 @@ class InitializationView(QWidget, Ui_InitializationForm):
             min = self.th_sca.getScalarMinValue(self.th_sca_label)
             max = self.th_sca.getScalarMaxValue(self.th_sca_label)
             from DefineUserScalarsView import StandardItemModelScalars
-            if StandardItemModelScalars(self.parent, self.th_sca, 
+            if StandardItemModelScalars(self.parent, self.th_sca,
                 self.zone).checkInitMinMax(self.th_sca_label, v, min, max):
                 self.th_sca.setScalarInitialValue(self.zone, self.th_sca_label, v)
 
@@ -642,7 +642,7 @@ class InitializationView(QWidget, Ui_InitializationForm):
 
                 if turb_model in ('k-epsilon', 'k-epsilon-PL'):
 
-                    k   = self.init.getTurbulenceInitialValue(self.zone, 'turb_k') 
+                    k   = self.init.getTurbulenceInitialValue(self.zone, 'turb_k')
                     eps = self.init.getTurbulenceInitialValue(self.zone, 'turb_eps')
                     self.lineEditKeps_k.setText(QString(str(k)))
                     self.lineEditKeps_eps.setText(QString(str(eps)))
@@ -667,7 +667,7 @@ class InitializationView(QWidget, Ui_InitializationForm):
 
                 elif turb_model == 'v2f-phi':
 
-                    k   = self.init.getTurbulenceInitialValue(self.zone, 'turb_k') 
+                    k   = self.init.getTurbulenceInitialValue(self.zone, 'turb_k')
                     eps = self.init.getTurbulenceInitialValue(self.zone, 'turb_eps')
                     phi = self.init.getTurbulenceInitialValue(self.zone, 'turb_phi')
                     fb  = self.init.getTurbulenceInitialValue(self.zone, 'turb_fb')
@@ -718,4 +718,4 @@ if __name__ == "__main__":
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/LagrangianBoundariesModel.py b/gui/Pages/LagrangianBoundariesModel.py
index ac0b6bf..f23b29c 100644
--- a/gui/Pages/LagrangianBoundariesModel.py
+++ b/gui/Pages/LagrangianBoundariesModel.py
@@ -91,22 +91,22 @@ class LagrangianBoundariesModel(Model):
         default = {}
         default['particles'] = "inlet"
         default['nbclas'] = 0
-        default['number'] = 0
-        default['frequency'] = 0
+        default['number'] = 10
+        default['frequency'] = 1
         default['statistical_groups'] = 0.
         default['statistical_weight_choice'] = "prescribed"
-        default['statistical_weight'] = 0
+        default['statistical_weight'] = 1.0
         default['mass_flow_rate'] = 0.
-        default['density'] = 0.
+        default['density'] = 1000.
         default['velocity_choice'] = "fluid"
         default['velocity_norm'] = 0.
         default['velocity_value'] = 0.
         default['temperature_choice'] = "prescribed"
-        default['temperature'] = 0.
-        default['specific_heat'] = 0.
-        default['emissivity'] = 0.
+        default['temperature'] = 20.
+        default['specific_heat'] = 1400.
+        default['emissivity'] = 0.9
         default['diameter_choice'] = "prescribed"
-        default['diameter'] = 0.
+        default['diameter'] = 1.0e-5
         default['diameter_standard_deviation'] = 0.
         default['coal_number'] = 0
         default['coal_temperature'] = 0.
@@ -115,7 +115,7 @@ class LagrangianBoundariesModel(Model):
         return default
 
 
-    def setBoundaryChoice(self, nature, labelbc, value): 
+    def setBoundaryChoice(self, nature, labelbc, value):
         """
         Update value for the boundary condition. Here we defined the xml nodes
         'self.node_boundary' and 'self.node_particles' used in many functions.
@@ -136,7 +136,7 @@ class LagrangianBoundariesModel(Model):
         self.setCurrentBoundaryNode(nature, labelbc)
 
 
-    def getBoundaryChoice(self, nature, labelbc): 
+    def getBoundaryChoice(self, nature, labelbc):
         """
         Return value for the boundary condition.
         """
@@ -157,11 +157,11 @@ class LagrangianBoundariesModel(Model):
         """
         self.node_boundary = self.node_boundaries.xmlInitChildNode(nature, label=labelbc)
         self.node_particles = self.node_boundary.xmlInitChildNode('particles', 'choice')
-        
+
 
     def newClassNode(self):
         """
-        Add a new 'class' node with child nodes. 
+        Add a new 'class' node with child nodes.
         """
         node_class = self.node_particles.xmlAddChild('class')
         node_class.xmlSetData('number', self.default['number'])
@@ -202,12 +202,12 @@ class LagrangianBoundariesModel(Model):
             for i in range(value-nnodes):
                 self.newClassNode()
         else:
-            for i in range(nnodes-value): 
+            for i in range(nnodes-value):
                 node_list[-1].xmlRemoveNode()
             # redefine self.node_class
             self.setCurrentClassNode(labelbc, value)
-            
-        
+
+
     def getNumberOfClassesValue(self, labelbc):
         """
         Return the number of classes.
@@ -249,7 +249,6 @@ class LagrangianBoundariesModel(Model):
         Return the number of particles in a class.
         """
         value = self.node_class.xmlGetInt('number')
-        print "getNumberOfParticulesInClassValue value = ", value
         if value == None:
             value = self.defaultParticlesBoundaryValues()['number']
             self.setNumberOfParticulesInZoneValue(label, iclass,value)
@@ -263,7 +262,7 @@ class LagrangianBoundariesModel(Model):
         self.isInt(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('frequency', value)
-        
+
 
     def getInjectionFrequencyValue(self, label, iclass):
         """
@@ -283,7 +282,7 @@ class LagrangianBoundariesModel(Model):
         self.isInt(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('statistical_groups', value)
-        
+
 
     def getParticleGroupNumberValue(self, label, iclass):
         """
@@ -303,7 +302,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('mass_flow_rate', value)
-        
+
 
     def getMassFlowRateValue(self, label, iclass):
         """
@@ -343,9 +342,9 @@ class LagrangianBoundariesModel(Model):
         Update the statistical weight value.
         """
         self.isFloat(value)
-        self.isGreaterOrEqual(value, 0)
+        self.isGreater(value, 0)
         self.node_class.xmlSetData('statistical_weight', value)
-        
+
 
     def getStatisticalWeightValue(self, label, iclass):
         """
@@ -365,7 +364,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('density', value)
-        
+
 
     def getDensityValue(self, label, iclass):
         """
@@ -416,7 +415,7 @@ class LagrangianBoundariesModel(Model):
         choice = node_velocity['choice']
         self.isInList(choice, ["norm"])
         node_velocity.xmlSetData('norm', value)
-        
+
 
     def getVelocityNormValue(self, label, iclass):
         """
@@ -440,7 +439,7 @@ class LagrangianBoundariesModel(Model):
         choice = node_velocity['choice']
         self.isInList(choice, ["components"])
         node_velocity.xmlSetData('velocity_' + idir, value)
-        
+
 
     def getVelocityDirectionValue(self, label, iclass, idir):
         """
@@ -483,7 +482,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('temperature', value)
-        
+
 
     def getTemperatureValue(self, label, iclass):
         """
@@ -503,7 +502,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('specific_heat', value)
-        
+
 
     def getSpecificHeatValue(self, label, iclass):
         """
@@ -523,7 +522,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('emissivity', value)
-        
+
 
     def getEmissivityValue(self, label, iclass):
         """
@@ -565,7 +564,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('diameter', value)
-        
+
 
     def getDiameterValue(self, label, iclass):
         """
@@ -585,7 +584,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('diameter_standard_deviation', value)
-        
+
 
     def getDiameterVarianceValue(self, label, iclass):
         """
@@ -605,7 +604,7 @@ class LagrangianBoundariesModel(Model):
         self.isInt(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('coal_number', value)
-        
+
 
     def getCoalNumberValue(self, label, iclass):
         """
@@ -625,7 +624,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('coal_temperature', value)
-        
+
 
     def getCoalTemperatureValue(self, label, iclass):
         """
@@ -645,7 +644,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('raw_coal_mass_fraction', value)
-        
+
 
     def getCoalMassValue(self, label, iclass):
         """
@@ -665,7 +664,7 @@ class LagrangianBoundariesModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_class.xmlSetData('char_mass_fraction', value)
-        
+
 
     def getCokeMassValue(self, label, iclass):
         """
@@ -709,7 +708,7 @@ class LagrangianBoundariesTestCase(unittest.TestCase):
         """
         model = None
         model = LagrangianBoundariesModel(self.case)
-        
+
         assert model != None, 'Could not instantiate LagrangianBoundariesModel'
 
 
@@ -728,7 +727,7 @@ def suite():
     testSuite = unittest.makeSuite(LagrangianBoundariesTestCase, "check")
     return testSuite
 
-    
+
 def runTest():
     print "LagrangianBoundariesTestCase A COMPLETER *********."
     runner = unittest.TextTestRunner()
diff --git a/gui/Pages/LagrangianBoundariesView.py b/gui/Pages/LagrangianBoundariesView.py
index b7fe706..1ff05bf 100644
--- a/gui/Pages/LagrangianBoundariesView.py
+++ b/gui/Pages/LagrangianBoundariesView.py
@@ -77,7 +77,7 @@ log.setLevel(GuiParam.DEBUG)
 
 
 #-------------------------------------------------------------------------------
-# Line edit delegate with an integere validator 
+# Line edit delegate with an integere validator
 #-------------------------------------------------------------------------------
 
 
@@ -112,14 +112,14 @@ class ParticleBoundaryInteractionDelegate(QItemDelegate):
     """
     Use of a combo box in the table.
     """
-    def __init__(self, parent): 
+    def __init__(self, parent):
         super(ParticleBoundaryInteractionDelegate, self).__init__(parent)
         self.parent = parent
 
 
     def createEditor(self, parent, option, index):
         editor = QComboBox(parent)
-        self.combo_mdl = ComboModel(editor,1,1) 
+        self.combo_mdl = ComboModel(editor,1,1)
         nature = index.model()._data[index.row()][1]
         self.dico = index.model().dicoM2V[nature]
         for k, v in self.dico.items():
@@ -147,7 +147,7 @@ class ParticleBoundaryInteractionDelegate(QItemDelegate):
 
 
     def tr(self, text):
-        return text 
+        return text
 
 
 #-------------------------------------------------------------------------------
@@ -178,14 +178,14 @@ class StandardItemModelBoundaries(QStandardItemModel):
             "outlet" : { "outlet" : self.tr("Particles outlet zone") },
             "symmetry" : { "bounce" : self.tr("Particles rebound zone") }
             }
-        
+
         self.dicoV2M = {}
         for key in self.dicoM2V.keys():
             dico = self.dicoM2V[key]
             self.dicoV2M[key] = {}
             for k, v in dico.items():
                 self.dicoV2M[key][v] = k
-                
+
         # Initialization
         for zone in LocalizationModel('BoundaryZone', self.case).getZones():
             label = zone.getLabel()
@@ -197,11 +197,11 @@ class StandardItemModelBoundaries(QStandardItemModel):
             row = self.rowCount()
             self.setRowCount(row+1)
 
-        
+
     def data(self, index, role):
         if not index.isValid():
             return QVariant()
-        
+
         if role == Qt.DisplayRole:
             row = index.row()
             col = index.column()
@@ -211,7 +211,7 @@ class StandardItemModelBoundaries(QStandardItemModel):
                 return QVariant(dico[self._data[row][col]])
             else:
                 return QVariant(self._data[row][col])
-            
+
         if role == Qt.ToolTipRole:
             if index.column() == 2:
                 return QVariant(self.tr("Code_Saturne keyword: IUSCLB"))
@@ -243,7 +243,7 @@ class StandardItemModelBoundaries(QStandardItemModel):
     def setData(self, index, value, role):
         row = index.row()
         col = index.column()
-        
+
         if col == 2:
             interaction = str(value.toString())
             self._data[row][col] = interaction
@@ -252,7 +252,7 @@ class StandardItemModelBoundaries(QStandardItemModel):
             self.model.setBoundaryChoice(nature, label, interaction)
             if nature != "inlet":
                 self._data[row][3] = 0
-                
+
         elif col == 3:
             nclasses, ok = value.toInt()
             self._data[row][col] = nclasses
@@ -260,7 +260,7 @@ class StandardItemModelBoundaries(QStandardItemModel):
             nn = self.model.getNumberOfClassesValue(label)
             label = self._data[row][0]
             self.model.setNumberOfClassesValue(label, nclasses)
-            
+
         self.emit(SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"), index, index)
         return True
 
@@ -270,7 +270,7 @@ class StandardItemModelBoundaries(QStandardItemModel):
 
 
     def tr(self, text):
-        return text 
+        return text
 
 
 #-------------------------------------------------------------------------------
@@ -306,27 +306,27 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         self.tableViewBoundaries.setItemDelegateForColumn(2,delegateInteraction)
         self.tableViewBoundaries.setItemDelegateForColumn(3,delegateClassNumber)
 
-        self.modelIPOIT = ComboModel(self.comboBoxIPOIT,3,1)                                  
+        self.modelIPOIT = ComboModel(self.comboBoxIPOIT,3,1)
         self.modelIPOIT.addItem(self.tr("Volumic flow rate"), "rate")
         self.modelIPOIT.addItem(self.tr("Statistical weight set by values"), "prescribed")
         self.modelIPOIT.addItem(self.tr("User defined statistical weight"), "subroutine")
 
-        self.modelIJUVW = ComboModel(self.comboBoxIJUVW,4,1) 
+        self.modelIJUVW = ComboModel(self.comboBoxIJUVW,4,1)
         self.modelIJUVW.addItem(self.tr("Fluid velocity"), "fluid")
         self.modelIJUVW.addItem(self.tr("Normal direction velocity"), "norm")
         self.modelIJUVW.addItem(self.tr("Velocity given by values"), "components")
         self.modelIJUVW.addItem(self.tr("User defined velocity"), "subroutine")
 
-        self.modelIJRTP = ComboModel(self.comboBoxIJRTP,2,1)                                  
+        self.modelIJRTP = ComboModel(self.comboBoxIJRTP,2,1)
         self.modelIJRTP.addItem(self.tr("Temperature set by values"), "prescribed")
         self.modelIJRTP.addItem(self.tr("User defined temperature"), "subroutine")
 
-        self.modelIJRDP = ComboModel(self.comboBoxIJRDP,2,1)                                  
+        self.modelIJRDP = ComboModel(self.comboBoxIJRDP,2,1)
         self.modelIJRDP.addItem(self.tr("Diameter set by values"), "prescribed")
         self.modelIJRDP.addItem(self.tr("User defined diameter"), "subroutine")
 
         self.connect(self.tableViewBoundaries, SIGNAL("clicked(const QModelIndex &)"), self.slotSelectBoundary)
-        self.connect(self.modelBoundaries, SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"), self.slotEditBoundary)
+#        self.connect(self.modelBoundaries, SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"), self.slotEditBoundary)
         self.connect(self.spinBoxICLAS, SIGNAL("valueChanged(int)"), self.slotICLAS)
 
         self.connect(self.lineEditIJNBP,  SIGNAL("textChanged(const QString &)"), self.slotIJNBP)
@@ -336,22 +336,22 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         self.connect(self.comboBoxIPOIT,  SIGNAL("activated(const QString&)"), self.slotIPOITChoice)
         self.connect(self.lineEditIPOIT,  SIGNAL("textChanged(const QString &)"), self.slotIPOIT)
         self.connect(self.lineEditIROPT,  SIGNAL("textChanged(const QString &)"), self.slotIROPT)
-                     
+
         self.connect(self.comboBoxIJUVW, SIGNAL("activated(const QString&)"),    self.slotIJUVW)
         self.connect(self.lineEditIUNO,  SIGNAL("textChanged(const QString &)"), self.slotIUNO)
         self.connect(self.lineEditIUPT,  SIGNAL("textChanged(const QString &)"), self.slotIUPT)
         self.connect(self.lineEditIVPT,  SIGNAL("textChanged(const QString &)"), self.slotIVPT)
         self.connect(self.lineEditIWPT,  SIGNAL("textChanged(const QString &)"), self.slotIWPT)
-                     
+
         self.connect(self.comboBoxIJRTP, SIGNAL("activated(const QString&)"),    self.slotIJRTP)
         self.connect(self.lineEditITPT,  SIGNAL("textChanged(const QString &)"), self.slotITPT)
         self.connect(self.lineEditICPT,  SIGNAL("textChanged(const QString &)"), self.slotICPT)
         self.connect(self.lineEditIEPSI, SIGNAL("textChanged(const QString &)"), self.slotIEPSI)
-                     
+
         self.connect(self.comboBoxIJRDP, SIGNAL("activated(const QString&)"),    self.slotIJRDP)
         self.connect(self.lineEditIDPT,  SIGNAL("textChanged(const QString &)"), self.slotIDPT)
         self.connect(self.lineEditIVDPT, SIGNAL("textChanged(const QString &)"), self.slotIVDPT)
-                     
+
         self.connect(self.lineEditINUCHL, SIGNAL("textChanged(const QString &)"), self.slotINUCHL)
         self.connect(self.lineEditIHPT,   SIGNAL("textChanged(const QString &)"), self.slotIHPT)
         self.connect(self.lineEditIMCHT,  SIGNAL("textChanged(const QString &)"), self.slotIMCHT)
@@ -371,38 +371,38 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         validatorIUPT = DoubleValidator(self.lineEditIUPT)
         validatorIVPT = DoubleValidator(self.lineEditIVPT)
         validatorIWPT = DoubleValidator(self.lineEditIWPT)
-        
+
         validatorITPT  = DoubleValidator(self.lineEditITPT)
         validatorICPT  = DoubleValidator(self.lineEditICPT)
         validatorIEPSI = DoubleValidator(self.lineEditIEPSI)
-        
+
         validatorIDPT  = DoubleValidator(self.lineEditIDPT, min=0.)
         validatorIVDPT = DoubleValidator(self.lineEditIVDPT)
-        
+
         validatorINUCHL = IntValidator(self.lineEditINUCHL, min=0)
         validatorIHPT   = DoubleValidator(self.lineEditIHPT)
         validatorIMCHT  = DoubleValidator(self.lineEditIMCHT, min=0.)
         validatorIMCKT  = DoubleValidator(self.lineEditIMCKT, min=0.)
-        
+
         self.lineEditIJNBP.setValidator(validatorIJNBP)
         self.lineEditIJFRE.setValidator(validatorIJFRE)
         self.lineEditICLST.setValidator(validatorICLST)
         self.lineEditIDEBT.setValidator(validatorIDEBT)
         self.lineEditIPOIT.setValidator(validatorIPOIT)
         self.lineEditIROPT.setValidator(validatorIROPT)
-        
+
         self.lineEditIUNO.setValidator(validatorIUNO)
         self.lineEditIUPT.setValidator(validatorIUPT)
         self.lineEditIVPT.setValidator(validatorIVPT)
         self.lineEditIWPT.setValidator(validatorIWPT)
-        
+
         self.lineEditITPT.setValidator(validatorITPT)
         self.lineEditICPT.setValidator(validatorICPT)
         self.lineEditIEPSI.setValidator(validatorIEPSI)
-        
+
         self.lineEditIDPT.setValidator(validatorIDPT)
         self.lineEditIVDPT.setValidator(validatorIVDPT)
-        
+
         self.lineEditINUCHL.setValidator(validatorINUCHL)
         self.lineEditIHPT.setValidator(validatorIHPT)
         self.lineEditIMCHT.setValidator(validatorIMCHT)
@@ -410,7 +410,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
 
         self._hideAllWidgets()
 
-        
+
     def _hideAllWidgets(self):
         self.groupBoxClassNumber.hide()
         self.groupBoxMain.hide()
@@ -421,11 +421,11 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         self.groupBoxCoal.hide()
 
 
-    @pyqtSignature("const QModelIndex&, const QModelIndex&")
-    def slotEditBoundary(self, index, index2):
-        """
-        """
-        self.slotSelectBoundary(index)
+#    @pyqtSignature("const QModelIndex&, const QModelIndex&")
+#    def slotEditBoundary(self, index, index2):
+#        """
+#        """
+#        self.slotSelectBoundary(index)
 
 
     @pyqtSignature("const QModelIndex&")
@@ -441,11 +441,9 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if nclasses > 0:
             self.groupBoxClassNumber.show()
             self.spinBoxICLAS.setMinimum(1)
-            self.spinBoxICLAS.setMaximum(nclasses) 
+            self.spinBoxICLAS.setMaximum(nclasses)
             self.spinBoxICLAS.setValue(1)
             self.slotICLAS(1)
-        else:
-            return
 
 
     @pyqtSignature("int")
@@ -462,7 +460,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         self.LM = LagrangianModel(self.case)
         part_model = self.LM.getParticlesModel()
 
-        # Main variables 
+        # Main variables
         self.groupBoxMain.show()
         npart = self.model.getNumberOfParticulesInClassValue(self.label, self.iclass)
         self.lineEditIJNBP.setText(QString(str(npart)))
@@ -477,26 +475,26 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
             self.labelICLST.setDisabled(True)
             self.lineEditICLST.setDisabled(True)
 
-        # Rate / stat. weight 
+        # Rate / stat. weight
         self.groupBoxRate.show()
         choice = self.model.getStatisticalWeightChoice(self.label, self.iclass)
         self.modelIPOIT.setItem(str_model=choice)
         text = self.modelIPOIT.dicoM2V[choice]
         self.slotIPOITChoice(QString(text))
 
-        # Velocity 
+        # Velocity
         self.groupBoxVelocity.show()
         choice = self.model.getVelocityChoice(self.label, self.iclass)
-        self.modelIJUVW.setItem(str_model=choice)       
+        self.modelIJUVW.setItem(str_model=choice)
         text = self.modelIJUVW.dicoM2V[choice]
         self.slotIJUVW(QString(text))
 
         # Temperature
         status = self.LM.getHeating()
         if part_model == "thermal" and status == "on":
-            self.groupBoxTemperature.show() 
+            self.groupBoxTemperature.show()
             choice = self.model.getTemperatureChoice(self.label, self.iclass)
-            self.modelIJRTP.setItem(str_model=choice)       
+            self.modelIJRTP.setItem(str_model=choice)
             text = self.modelIJRTP.dicoM2V[choice]
             self.slotIJRTP(QString(text))
 
@@ -592,7 +590,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
             self.frameVolumicRate.show()
             rate = self.model.getMassFlowRateValue(self.label, self.iclass)
             self.lineEditIDEBT.setText(QString(str(rate)))
-            self.model.setStatisticalWeightValue(self.label, self.iclass, 1) # ???
+            self.model.setStatisticalWeightValue(self.label, self.iclass, 1)
         elif choice == "prescribed":
             self.frameStatisticalWeight.show()
             weight = self.model.getStatisticalWeightValue(self.label, self.iclass)
@@ -607,7 +605,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         Input IPOIT.
         """
         if self.sender().validator().state == QValidator.Acceptable:
-            value, ok = text.toInt()
+            value, ok = text.toDouble()
             self.model.setStatisticalWeightValue(self.label, self.iclass, value)
 
 
@@ -630,7 +628,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         self.model.setVelocityChoice(self.label, self.iclass, choice)
         self.frameVelocityNorm.hide()
         self.frameVelocityValues.hide()
-        if choice == "norm": 
+        if choice == "norm":
             self.frameVelocityNorm.show()
             norm = self.model.getVelocityNormValue(self.label, self.iclass)
             self.lineEditIUNO.setText(QString(str(norm)))
@@ -707,7 +705,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setTemperatureValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotICPT(self, text):
@@ -717,7 +715,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setSpecificHeatValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIEPSI(self, text):
@@ -727,7 +725,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setEmissivityValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIJRDP(self, text):
@@ -754,7 +752,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setDiameterValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIVDPT(self, text):
@@ -764,7 +762,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setDiameterVarianceValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotINUCHL(self, text):
@@ -774,7 +772,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toInt()
             self.model.setCoalNumberValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIHPT(self, text):
@@ -784,7 +782,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setCoalTemperatureValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIMCHT(self, text):
@@ -794,7 +792,7 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setCoalMassValue(self.label, self.iclass, value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotIMCKT(self, text):
@@ -804,23 +802,13 @@ class LagrangianBoundariesView(QWidget, Ui_LagrangianBoundariesForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setCokeMassValue(self.label, self.iclass, value)
-        
+
 
     def tr(self, text):
         """
         Translation
         """
-        return text 
-
-
-#-------------------------------------------------------------------------------
-# Testing part
-#-------------------------------------------------------------------------------
-
-
-if __name__ == "__main__":
-    pass
-
+        return text
 
 #-------------------------------------------------------------------------------
 # End
diff --git a/gui/Pages/LagrangianModel.py b/gui/Pages/LagrangianModel.py
index 7107691..5d4b3f1 100644
--- a/gui/Pages/LagrangianModel.py
+++ b/gui/Pages/LagrangianModel.py
@@ -683,7 +683,7 @@ class LagrangianModel(Model):
 
     def getSchemeOrder(self):
         """
-        Return value for scheme order. 
+        Return value for scheme order.
         """
         node_order = self.node_lagr.xmlInitChildNode('scheme_order', 'choice')
         if node_order:
@@ -861,7 +861,7 @@ class LagrangianTestCase(ModelTest):
 
 
     def checkCarrierFlowStationary(self):
-        """Check whether the stationary behavior of the carrier flow 
+        """Check whether the stationary behavior of the carrier flow
         could be set and get."""
         mdl = LagrangianModel(self.case)
 
diff --git a/gui/Pages/LagrangianOutputModel.py b/gui/Pages/LagrangianOutputModel.py
index 6c2de42..6e108cc 100644
--- a/gui/Pages/LagrangianOutputModel.py
+++ b/gui/Pages/LagrangianOutputModel.py
@@ -117,7 +117,7 @@ class LagrangianOutputModel(Model):
 ##         default = self._defaultLagrangianOutputValues()['listing_printing_frequency']
 ##         node = self.node_output.xmlInitChildNode('listing_printing_frequency')
 ##         node.xmlSetTextNode(str(default))
-        
+
 ##         default = self._defaultLagrangianOutputValues()['postprocessing_frequency']
 ##         node = self.node_output.xmlInitChildNode('postprocessing_frequency')
 ##         node.xmlSetTextNode(str(default))
@@ -127,38 +127,38 @@ class LagrangianOutputModel(Model):
 
 ##         default = self._defaultLagrangianOutputValues()['postprocessing_options']
 ##         self.node_output.xmlInitChildNode('postprocessing_options', choice=default)
-        
+
 ##         default = self._defaultLagrangianOutputValues()['particles']
 ##         self.node_output.xmlInitChildNode('particles', status=default)
-        
+
 ##         default = self._defaultLagrangianOutputValues()['trajectory']
 ##         self.node_output.xmlInitChildNode('trajectory', status=default)
-        
+
 ##         default = self._defaultLagrangianOutputValues()['number_of_particles']
 ##         node = self.node_output.xmlInitChildNode('number_of_particles')
 ##         node.xmlSetTextNode(str(default))
-        
+
 ##         default = self._defaultLagrangianOutputValues()['resident_time']
 ##         self.node_output.xmlInitChildNode('resident_time', status=default)
-        
+
 ##         default = self._defaultLagrangianOutputValues()['diameter']
 ##         self.node_output.xmlInitChildNode('diameter', status=default)
-        
+
 ##         default = self._defaultLagrangianOutputValues()['velocity_particles']
 ##         self.node_output.xmlInitChildNode('velocity_particles', status=default)
-        
+
 ##         default = self._defaultLagrangianOutputValues()['velocity_fluid_seen']
 ##         self.node_output.xmlInitChildNode('velocity_fluid_seen', status=default)
-        
+
 ##         default = self._defaultLagrangianOutputValues()['mass']
 ##         self.node_output.xmlInitChildNode('mass', status=default)
-        
+
 ##         default = self._defaultLagrangianOutputValues()['shrinking_core_diameter']
 ##         self.node_output.xmlInitChildNode('shrinking_core_diameter', status=default)
-        
+
 ##         default = self._defaultLagrangianOutputValues()['raw_coal_mass_fraction']
 ##         self.node_output.xmlInitChildNode('raw_coal_mass_fraction', status=default)
-        
+
 ##         default = self._defaultLagrangianOutputValues()['char_mass_fraction']
 ##         self.node_output.xmlInitChildNode('char_mass_fraction', status=default)
 
@@ -213,7 +213,7 @@ class LagrangianOutputModel(Model):
         self.isInt(value)
         self.isGreaterOrEqual(value, 0)
         self.node_output.xmlSetData('number_of_particles', value)
-        
+
 
     def getDisplayParticlesValue(self):
         """
@@ -288,7 +288,7 @@ class LagrangianOutputModel(Model):
             format = self._defaultLagrangianOutputValues()['postprocessing_options']
             #self.setPostProcessingOption(format)
         return format
-        
+
 
     def setFluidVelocityStatus(self, status):
         """
@@ -403,7 +403,7 @@ class LagrangianOutputModel(Model):
             status = self._defaultLagrangianOutputValues()['temperature']
             self.setParticleTemperatureStatus(status)
         return status
-    
+
 
     def setParticleMassStatus(self, status):
         """
@@ -427,7 +427,7 @@ class LagrangianOutputModel(Model):
             self.setParticleMassStatus(status)
         return status
 
-        
+
     def setCoalParticleTemperatureStatus(self, status):
         """
         Update the status markup from the XML document to associate the variable
@@ -453,7 +453,7 @@ class LagrangianOutputModel(Model):
             status = self._defaultLagrangianOutputValues()['mass']
             self.setParticleMassStatus(status)
         return status
-    
+
 
     def setCoalParticleDiameterStatus(self, status):
         """
@@ -556,7 +556,7 @@ class LagrangianOutputTestCase(unittest.TestCase):
         """
         model = None
         model = LagrangianOutputModel(self.case)
-        
+
         assert model != None, 'Could not instantiate LagrangianOutputModel'
 
 
@@ -659,7 +659,7 @@ class LagrangianOutputTestCase(unittest.TestCase):
         'Could not get default values for particles status'
         mdl.setParticlesStatus('on')
         doc = """
-        <particles status="on"/>        
+        <particles status="on"/>
         """
 
         assert mdl.node_output.xmlInitChildNode('particles') == self.xmlNodeFromString(doc) ,\
@@ -864,7 +864,7 @@ def suite():
     testSuite = unittest.makeSuite(LagrangianOutputTestCase, "check")
     return testSuite
 
-    
+
 def runTest():
     print "LagrangianOutputTestCase A COMPLETER *********."
     runner = unittest.TextTestRunner()
diff --git a/gui/Pages/LagrangianOutputView.py b/gui/Pages/LagrangianOutputView.py
index d9bab23..31d2858 100644
--- a/gui/Pages/LagrangianOutputView.py
+++ b/gui/Pages/LagrangianOutputView.py
@@ -56,7 +56,7 @@ from PyQt4.QtGui  import *
 
 from LagrangianOutputForm import Ui_LagrangianOutputForm
 from Base.Toolbox import GuiParam
-from Base.QtPage import ComboModel, IntValidator, DoubleValidator 
+from Base.QtPage import ComboModel, IntValidator, DoubleValidator
 from Pages.LagrangianOutputModel import LagrangianOutputModel
 import Pages.CoalThermoChemistry as CoalThermoChemistry
 
@@ -79,7 +79,7 @@ log.setLevel(GuiParam.DEBUG)
 class LagrangianOutputView(QWidget, Ui_LagrangianOutputForm):
     """
     """
-    
+
     def __init__(self, parent, case):
         """
         Constructor
@@ -125,16 +125,16 @@ class LagrangianOutputView(QWidget, Ui_LagrangianOutputForm):
 
         validatorNTLAL = IntValidator(self.lineEditNTLAL)
         self.lineEditNTLAL.setValidator(validatorNTLAL)
-        
+
         # initialize Widgets
 
-        # post processing info to display        
+        # post processing info to display
         status = self.model.getTrajectoryStatus()
         if status == "on":
             self.checkBoxIENSI1.setChecked(True)
         else:
             self.checkBoxIENSI1.setChecked(False)
-            
+
         status = self.model.getParticlesStatus()
         if status == "on":
             self.checkBoxIENSI2.setChecked(True)
@@ -207,7 +207,7 @@ class LagrangianOutputView(QWidget, Ui_LagrangianOutputForm):
             self.checkBoxIVISMP.setChecked(False)
 
         # FIXME
-        # check if coal model is activated 
+        # check if coal model is activated
 ##         coalThermoChModel = CoalThermoChemistry.CoalThermoChemistryModel("dp_FCP", self.case)
 ##         coals = coalThermoChModel.getCoals()
 ##         CoalsNumber = coals.getNumber()
@@ -244,7 +244,7 @@ class LagrangianOutputView(QWidget, Ui_LagrangianOutputForm):
         else:
             self.checkBoxIVISCK.setChecked(False)
 
-            
+
     @pyqtSignature("")
     def slotIENSI1(self):
         """
@@ -265,7 +265,7 @@ class LagrangianOutputView(QWidget, Ui_LagrangianOutputForm):
             self.model.setParticlesStatus("on")
         else:
             self.model.setParticlesStatus("off")
-        
+
 
     @pyqtSignature("const QString&")
     def slotNBVIS(self, text):
@@ -311,7 +311,7 @@ class LagrangianOutputView(QWidget, Ui_LagrangianOutputForm):
         """
         listing = self.modelNTLAL.dicoV2M[str(text)]
         log.debug("slotChoiceNTLAL-> listing = %s" % listing)
-        
+
         if listing == "None":
             ntlist = -1
             self.model.setListingFrequency(ntlist)
@@ -331,7 +331,7 @@ class LagrangianOutputView(QWidget, Ui_LagrangianOutputForm):
                 ntlist = 1
                 self.model.setListingFrequency(ntlist)
                 self.lineEditNTLAL.setText(QString(str(ntlist)))
-    
+
 
     @pyqtSignature("const QString&")
     def slotNTLAL(self, text):
@@ -352,7 +352,7 @@ class LagrangianOutputView(QWidget, Ui_LagrangianOutputForm):
             self.model.setFluidVelocityStatus("on")
         else:
             self.model.setFluidVelocityStatus("off")
-        
+
 
     @pyqtSignature("")
     def slotIVISV2(self):
@@ -363,7 +363,7 @@ class LagrangianOutputView(QWidget, Ui_LagrangianOutputForm):
             self.model.setParticlesVelocityStatus("on")
         else:
             self.model.setParticlesVelocityStatus("off")
-        
+
 
     @pyqtSignature("")
     def slotIVISTP(self):
@@ -441,7 +441,7 @@ class LagrangianOutputView(QWidget, Ui_LagrangianOutputForm):
         else:
             self.model.setCoalParticleMassStatus("off")
 
-                  
+
     @pyqtSignature("")
     def slotIVISCK(self):
         """
@@ -452,13 +452,13 @@ class LagrangianOutputView(QWidget, Ui_LagrangianOutputForm):
         else:
             self.model.setCokeParticleMassStatus("off")
 
-                  
+
     def tr(self, text):
         """
         Translation
         """
-        return text 
-        
+        return text
+
 
 #-------------------------------------------------------------------------------
 # Testing part
diff --git a/gui/Pages/LagrangianStatisticsModel.py b/gui/Pages/LagrangianStatisticsModel.py
index aea9805..7f4ce27 100644
--- a/gui/Pages/LagrangianStatisticsModel.py
+++ b/gui/Pages/LagrangianStatisticsModel.py
@@ -92,7 +92,7 @@ class LagrangianStatisticsModel(Model):
         default['boundary_statistics'] = "off"
         default['iteration_start_boundary'] = 1
         default['threshold_boundary'] = 0.
-        
+
         for v in self.getVariablesNamesBoundary():
             default[v] = v
 
@@ -121,7 +121,7 @@ class LagrangianStatisticsModel(Model):
         names = ["statistical_weight",
                  "velocity_U", "velocity_V", "velocity_W",
                  "mass_fraction", "resident_time", "temperature",
-                 "diameter", "shrinking_core_diameter", 
+                 "diameter", "shrinking_core_diameter",
                  "raw_coal_mass_fraction", "char_mass_fraction" ]
         return names
 
@@ -161,7 +161,7 @@ class LagrangianStatisticsModel(Model):
         self.isInt(value)
         self.isGreaterOrEqual(value, 0)
         self.node_stat.xmlSetData('statistics_groups_of_particles', value)
-        
+
 
     def getGroupOfParticlesValue(self):
         """
@@ -181,7 +181,7 @@ class LagrangianStatisticsModel(Model):
         """
         self.isOnOff(status)
         self.node_volume['status'] = status
-        
+
 
     def getVolumeStatisticsStatus(self):
         """
@@ -192,8 +192,8 @@ class LagrangianStatisticsModel(Model):
             status = self._defaultLagrangianStatisticsValues()['volume_statistics']
             self.setVolumeStatisticsStatus(status)
         return status
-        
-    
+
+
     def setIterationStartVolume(self, value):
         """
         Update the iteration value for start of volume statistics calculation.
@@ -201,7 +201,7 @@ class LagrangianStatisticsModel(Model):
         self.isInt(value)
         self.isGreaterOrEqual(value, 0)
         self.node_volume.xmlSetData('iteration_start_volume', value)
-        
+
 
     def getIterationStartVolume(self):
         """
@@ -221,7 +221,7 @@ class LagrangianStatisticsModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_volume.xmlSetData('threshold_volume', value)
-        
+
 
     def getThresholdValueVolume(self):
         """
@@ -241,13 +241,13 @@ class LagrangianStatisticsModel(Model):
             label = self._defaultLagrangianStatisticsValues()[name]
             self.setPropertyLabelFromNameVolume(label, label)
         return label
-            
-        
+
+
     def setPropertyLabelFromNameVolume(self, name, label):
         node = self.node_volume.xmlInitChildNode('property', name=name)
         node['label'] = label
 
-    
+
     def getMonitoringStatusFromName(self, name):
         node = self.node_volume.xmlInitChildNode('property', name=name)
         node2 = node.xmlGetChildNode('monitoring_point', 'status')
@@ -255,8 +255,8 @@ class LagrangianStatisticsModel(Model):
             return "on"
         else:
             return "off" # node2['status']
-        
-        
+
+
     def setMonitoringStatusFromName(self, name, status):
         self.isOnOff(status)
         node = self.node_volume.xmlInitChildNode('property', name=name)
@@ -265,7 +265,7 @@ class LagrangianStatisticsModel(Model):
             node.xmlRemoveChild('monitoring_point')
         elif status == "off":
             node2['status'] = status
-            
+
 
     # Boundary functions
     # ------------------
@@ -286,7 +286,7 @@ class LagrangianStatisticsModel(Model):
             self.setBoundaryStatisticsStatus(status)
         return status
 
-    
+
     def setIterationStartBoundary(self, value):
         """
         Update iteration value for start of boundary statistics calculation.
@@ -294,7 +294,7 @@ class LagrangianStatisticsModel(Model):
         self.isInt(value)
         self.isGreaterOrEqual(value, 0)
         self.node_boundary.xmlSetData('iteration_start_boundary', value)
-        
+
 
     def getIterationStartBoundary(self):
         """
@@ -314,7 +314,7 @@ class LagrangianStatisticsModel(Model):
         self.isFloat(value)
         self.isGreaterOrEqual(value, 0)
         self.node_boundary.xmlSetData('threshold_boundary', value)
-        
+
 
     def getThresholdValueBoundary(self):
         """
@@ -334,13 +334,13 @@ class LagrangianStatisticsModel(Model):
             label = self._defaultLagrangianStatisticsValues()[name]
             self.setPropertyLabelFromNameBoundary(label, label)
         return label
-            
-        
+
+
     def setPropertyLabelFromNameBoundary(self, name, label):
         node = self.node_boundary.xmlInitChildNode('property', name=name) #, support="boundary")
         node['label'] = label
 
-    
+
     def getListingPrintingStatusFromName(self, name):
         node = self.node_boundary.xmlInitChildNode('property', name=name) #, support="boundary")
         node2 = node.xmlGetChildNode('listing_printing', 'status')
@@ -349,7 +349,7 @@ class LagrangianStatisticsModel(Model):
         else:
             return "off" # node2['status']
 
-        
+
     def setListingPrintingStatusFromName(self, name, status):
         self.isOnOff(status)
         node = self.node_boundary.xmlInitChildNode('property', name=name) #, support="boundary")
@@ -359,7 +359,7 @@ class LagrangianStatisticsModel(Model):
         elif status == "off":
             node2['status'] = status
 
-    
+
     def getPostprocessingStatusFromName(self, name):
         node = self.node_boundary.xmlInitChildNode('property', name=name) #, support="boundary")
         node2 = node.xmlGetChildNode('postprocessing_recording', 'status')
@@ -408,7 +408,7 @@ class LagrangianStatisticsTestCase(unittest.TestCase):
         """
         model = None
         model = LagrangianStatisticsModel(self.case)
-        
+
         assert model != None, 'Could not instantiate LagrangianStatisticsModel'
 
 
@@ -442,7 +442,7 @@ class LagrangianStatisticsTestCase(unittest.TestCase):
         Check whether the restart method could be set and get
         """
         mdl = LagrangianStatisticsModel(self.case)
-        # default 
+        # default
         status = mdl.getRestart()
         assert status == 'off' ,\
         'Could not get default values for restart status'
diff --git a/gui/Pages/LagrangianStatisticsView.py b/gui/Pages/LagrangianStatisticsView.py
index 4628b15..71dfe55 100644
--- a/gui/Pages/LagrangianStatisticsView.py
+++ b/gui/Pages/LagrangianStatisticsView.py
@@ -58,7 +58,7 @@ from PyQt4.QtGui  import *
 
 from LagrangianStatisticsForm import Ui_LagrangianStatisticsForm
 from Base.Toolbox import GuiParam
-from Base.QtPage import ComboModel, IntValidator, DoubleValidator 
+from Base.QtPage import ComboModel, IntValidator, DoubleValidator
 from Pages.LagrangianStatisticsModel import LagrangianStatisticsModel
 from Pages.LagrangianModel import LagrangianModel
 
@@ -94,7 +94,7 @@ class StandardItemModelVolumicNames(QStandardItemModel):
 
 
     def initData(self):
-        
+
         self.dataVolumicNames = []
         vnames = self.model.getVariablesNamesVolume()
 
@@ -113,14 +113,14 @@ class StandardItemModelVolumicNames(QStandardItemModel):
             row = self.rowCount()
             self.setRowCount(row+1)
             self.dataVolumicNames.append(line)
-        
+
 
     def data(self, index, role):
-        
+
         self.kwords = [ "", "NOMLAG", "NOMLAV", "IHSLAG"]
         if not index.isValid():
             return QVariant()
-        
+
         # ToolTips
         if role == Qt.ToolTipRole:
             if index.column() == 0:
@@ -132,7 +132,7 @@ class StandardItemModelVolumicNames(QStandardItemModel):
         if role == Qt.DisplayRole:
             if index.column() in [0,1,2]:
                 return QVariant(self.dataVolumicNames[index.row()][index.column()])
-                
+
         # CheckState
         elif role == Qt.CheckStateRole:
             if index.column() == 3:
@@ -140,7 +140,7 @@ class StandardItemModelVolumicNames(QStandardItemModel):
                     return QVariant(Qt.Checked)
                 else:
                     return QVariant(Qt.Unchecked)
-        
+
         return QVariant()
 
 
@@ -175,7 +175,7 @@ class StandardItemModelVolumicNames(QStandardItemModel):
             labelv = str(value.toString())
             self.dataVolumicNames[index.row()][index.column()] = labelv
             name = self.dataVolumicNames[index.row()][0]
-            vname = "variance_" + name  
+            vname = "variance_" + name
             self.model.setPropertyLabelFromNameVolume(vname, labelv)
 
         elif index.column() == 3:
@@ -186,11 +186,11 @@ class StandardItemModelVolumicNames(QStandardItemModel):
             else:
                 status = "on"
                 self.dataVolumicNames[index.row()][index.column()] = "on"
-                
+
             vname = self.dataVolumicNames[index.row()][0]
             if index.row() != 0: vname = "mean_" + vname
             self.model.setMonitoringStatusFromName(vname, status)
-            
+
         self.emit(SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"), index, index)
         return True
 
@@ -216,7 +216,7 @@ class StandardItemModelBoundariesNames(QStandardItemModel):
 
 
     def initData(self):
-        
+
         self.dataBoundariesNames = []
         vnames = self.model.getVariablesNamesBoundary()
         for vname in vnames:
@@ -235,7 +235,7 @@ class StandardItemModelBoundariesNames(QStandardItemModel):
         self.kwords = [ "INBRBD", "IFLMBD", "IANGBD", "IVITBD", "IENCBD"]
         if not index.isValid():
             return QVariant()
-        
+
         # ToolTips
         if role == Qt.ToolTipRole:
             if index.column() == 1:
@@ -247,7 +247,7 @@ class StandardItemModelBoundariesNames(QStandardItemModel):
         if role == Qt.DisplayRole:
             if index.column() in [0, 1]:
                 return QVariant(self.dataBoundariesNames[index.row()][index.column()])
-        
+
         # CheckState
         elif role == Qt.CheckStateRole:
             if index.column() in [2, 3]:
@@ -255,7 +255,7 @@ class StandardItemModelBoundariesNames(QStandardItemModel):
                     return QVariant(Qt.Checked)
                 else:
                     return QVariant(Qt.Unchecked)
-        
+
         return QVariant()
 
 
@@ -293,7 +293,7 @@ class StandardItemModelBoundariesNames(QStandardItemModel):
             else:
                 status = "on"
                 self.dataBoundariesNames[index.row()][index.column()] = "on"
-                
+
             vname = self.dataBoundariesNames[index.row()][0]
             self.model.setListingPrintingStatusFromName(vname, status)
 
@@ -305,11 +305,11 @@ class StandardItemModelBoundariesNames(QStandardItemModel):
             else:
                 status = "on"
                 self.dataBoundariesNames[index.row()][index.column()] = "on"
-                
+
             vname = self.dataBoundariesNames[index.row()][0]
             self.model.setPostprocessingStatusFromName(vname, status)
-            
-        
+
+
         self.emit(SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"), index, index)
         return True
 
@@ -322,7 +322,7 @@ class StandardItemModelBoundariesNames(QStandardItemModel):
 class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
     """
     """
-    
+
     def __init__(self, parent, case):
         """
         Constructor
@@ -334,21 +334,21 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
 
         self.case = case
         self.model = LagrangianStatisticsModel(self.case)
-        
+
         self.connect(self.checkBoxISUIST, SIGNAL("clicked()"), self.slotISUIST)
         self.connect(self.lineEditNBCLST, SIGNAL("textChanged(const QString &)"), self.slotNBCLST)
-        
+
         self.connect(self.groupBoxISTALA, SIGNAL("clicked()"), self.slotISTALA)
         self.connect(self.lineEditIDSTNT, SIGNAL("textChanged(const QString &)"), self.slotIDSTNT)
         self.connect(self.lineEditSEUIL,  SIGNAL("textChanged(const QString &)"), self.slotSEUIL)
-        
+
         self.connect(self.groupBoxIENSI3, SIGNAL("clicked()"), self.slotIENSI3)
         self.connect(self.lineEditNSTBOR, SIGNAL("textChanged(const QString &)"), self.slotNSTBOR)
         self.connect(self.lineEditSEUILF, SIGNAL("textChanged(const QString &)"), self.slotSEUILF)
 
-        validatorNBCLST = IntValidator(self.lineEditNBCLST, min=0) # max=100 
+        validatorNBCLST = IntValidator(self.lineEditNBCLST, min=0) # max=100
         #validatorNBCLST.setExclusiveMin(True)
-        
+
         validatorIDSTNT = IntValidator(self.lineEditIDSTNT, min=0)
         validatorIDSTNT.setExclusiveMin(True)
         validatorSEUIL = DoubleValidator(self.lineEditSEUIL, min=0.)
@@ -375,10 +375,10 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
             self.checkBoxISUIST.setChecked(True)
         else:
             self.checkBoxISUIST.setChecked(False)
-        
+
         nclust = self.model.getGroupOfParticlesValue()
         self.lineEditNBCLST.setText(QString(str(nclust)))
-        
+
         # volume
         status = self.model.getVolumeStatisticsStatus()
         if status == "on":
@@ -394,14 +394,14 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
         else:
             self.groupBoxIENSI3.setChecked(False)
         self.slotIENSI3()
-        
+
 
     def _initVolumicNames(self):
         """
         Initialize names for volumic statistics.
         """
         self.modelVolumicNames = StandardItemModelVolumicNames(self.model)
-        
+
         self.tableViewVolumicNames.setModel(self.modelVolumicNames)
         self.tableViewVolumicNames.setAlternatingRowColors(True)
         self.tableViewVolumicNames.setSelectionBehavior(QAbstractItemView.SelectItems)
@@ -415,14 +415,14 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
         Initialize names for volumic statistics.
         """
         self.modelBoundariesNames = StandardItemModelBoundariesNames(self.model)
-        
+
         self.tableViewBoundariesNames.setModel(self.modelBoundariesNames)
         self.tableViewBoundariesNames.setAlternatingRowColors(True)
         self.tableViewBoundariesNames.setSelectionBehavior(QAbstractItemView.SelectItems)
         self.tableViewBoundariesNames.setSelectionMode(QAbstractItemView.ExtendedSelection)
         self.tableViewBoundariesNames.setEditTriggers(QAbstractItemView.DoubleClicked)
         self.tableViewBoundariesNames.horizontalHeader().setResizeMode(QHeaderView.Stretch)
-        
+
 
     @pyqtSignature("")
     def slotISUIST(self):
@@ -452,7 +452,7 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
         Input ISTALA.
         """
         if self.groupBoxISTALA.isChecked():
-            
+
             self.model.setVolumeStatisticsStatus("on")
             self._initVolumicNames()
 
@@ -461,9 +461,9 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
 
             seuil = self.model.getThresholdValueVolume()
             self.lineEditSEUIL.setText(QString(str(seuil)))
-            
+
         else:
-            
+
             self.model.setVolumeStatisticsStatus("off")
             if hasattr(self, "modelVolumicNames"):
                 del self.modelVolumicNames
@@ -477,7 +477,7 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toInt()
             self.model.setIterationStartVolume(value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotSEUIL(self, text):
@@ -487,7 +487,7 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toDouble()
             self.model.setThresholdValueVolume(value)
-        
+
 
     @pyqtSignature("")
     def slotIENSI3(self):
@@ -495,7 +495,7 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
         Input IENSI3.
         """
         if self.groupBoxIENSI3.isChecked():
-            
+
             self.model.setBoundaryStatisticsStatus("on")
             self._initBoundariesNames()
 
@@ -504,9 +504,9 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
 
             seuil = self.model.getThresholdValueBoundary()
             self.lineEditSEUILF.setText(QString(str(seuil)))
-            
+
         else:
-            
+
             self.model.setBoundaryStatisticsStatus("off")
             if hasattr(self, "modelBoundariesNames"):
                 del self.modelBoundariesNames
@@ -520,7 +520,7 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
         if self.sender().validator().state == QValidator.Acceptable:
             value, ok = text.toInt()
             self.model.setIterationStartBoundary(value)
-        
+
 
     @pyqtSignature("const QString&")
     def slotSEUILF(self, text):
@@ -536,8 +536,8 @@ class LagrangianStatisticsView(QWidget, Ui_LagrangianStatisticsForm):
         """
         Translation
         """
-        return text 
-        
+        return text
+
 
 #-------------------------------------------------------------------------------
 # Testing part
diff --git a/gui/Pages/LagrangianView.py b/gui/Pages/LagrangianView.py
index dc85014..13872f4 100644
--- a/gui/Pages/LagrangianView.py
+++ b/gui/Pages/LagrangianView.py
@@ -54,7 +54,7 @@ from PyQt4.QtGui  import *
 from LagrangianForm import Ui_LagrangianForm
 from LagrangianAdvancedOptionsDialogForm import Ui_LagrangianAdvancedOptionsDialogForm
 from Base.Toolbox import GuiParam
-from Base.QtPage import ComboModel, IntValidator, DoubleValidator 
+from Base.QtPage import ComboModel, IntValidator, DoubleValidator
 from Pages.LagrangianModel import LagrangianModel
 from Pages.StartRestartModel import StartRestartModel
 
@@ -74,7 +74,7 @@ class LagrangianAdvancedOptionsDialogView(QDialog, Ui_LagrangianAdvancedOptionsD
     """
     Advanced dialog
     """
-    def __init__(self, parent, default): 
+    def __init__(self, parent, default):
         """
         Constructor
         """
@@ -197,19 +197,19 @@ class LagrangianAdvancedOptionsDialogView(QDialog, Ui_LagrangianAdvancedOptionsD
 
     def get_result(self):
         """
-        Method to get the result 
+        Method to get the result
         """
         return self.result
 
 
-    def accept(self): 
+    def accept(self):
         """
         Method called when user clicks 'OK'
         """
         QDialog.accept(self)
 
 
-    def reject(self): 
+    def reject(self):
         """
         Method called when user clicks 'Cancel'
         """
@@ -221,7 +221,7 @@ class LagrangianAdvancedOptionsDialogView(QDialog, Ui_LagrangianAdvancedOptionsD
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # Line edit delegate for values in self.tableViewCoals
@@ -468,7 +468,7 @@ class LagrangianView(QWidget, Ui_LagrangianForm):
     @pyqtSignature("const QString&")
     def slotIILAGR(self, text):
         """
-        Input IILAGR. 
+        Input IILAGR.
         """
         model = self.modelIILAGR.dicoV2M[str(text)]
         self.model.setCouplingMode(model)
@@ -564,7 +564,7 @@ class LagrangianView(QWidget, Ui_LagrangianForm):
         self.frameModel1.hide()
         self.frameModel2.hide()
 
-        # No model 
+        # No model
         if value == "off":
             pass
 
@@ -767,7 +767,7 @@ class LagrangianView(QWidget, Ui_LagrangianForm):
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # Testing part
diff --git a/gui/Pages/LocalizationModel.py b/gui/Pages/LocalizationModel.py
index e9f3d8b..2eb6fc5 100644
--- a/gui/Pages/LocalizationModel.py
+++ b/gui/Pages/LocalizationModel.py
@@ -55,7 +55,7 @@ from Base.XMLengine import *
 from Pages.Boundary import Boundary
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class Zone(object):
@@ -76,7 +76,7 @@ class Zone(object):
 
     def __init__(self, typeZone , label = None, codeNumber = None, localization = None, nature = None):
         """
-        """           
+        """
         self._initNatureList()
 
         if label:
@@ -157,7 +157,7 @@ class Zone(object):
         return dico
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class BoundaryZone(Zone):
@@ -184,7 +184,7 @@ class BoundaryZone(Zone):
         """
         """
         dico = Zone.defaultValues(self)
-        dico['label'] = 'Wall_'
+        dico['label'] = 'BC_'
         dico['nature'] = self._natureList[0]
         return dico
 
@@ -196,7 +196,7 @@ class BoundaryZone(Zone):
         return text
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class VolumicZone(Zone):
@@ -243,7 +243,7 @@ class VolumicZone(Zone):
         return text
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class LocalizationModel(object):
@@ -277,7 +277,7 @@ class LocalizationModel(object):
         locals = []
         for zone in zones:
             locals.append(zone.getLocalization())
-        
+
         return locals
 
 
@@ -301,7 +301,7 @@ class LocalizationModel(object):
         codes = []
         for zone in zones:
             codes.append(zone.getCodeNumber())
-        
+
         return codes
 
 
@@ -370,7 +370,7 @@ class LocalizationModel(object):
 
     def setNature(self, label, nature):
         """
-        Define a new nature number for the current zone (zone.getLabel == label) 
+        Define a new nature number for the current zone (zone.getLabel == label)
         """
         # Set nature: nothing here, see other setNature reimplementation methods
         pass
@@ -449,22 +449,21 @@ class LocalizationModel(object):
         """
         Replace a zone by another in the XML file
         """
-        #
         newLabel = new_zone.getLabel()
         if newLabel == new_zone.defaultValues()['label']:
             newLabel = old_zone.getLabel()
         self.renameLabel(old_zone.getLabel(), newLabel)
-        
+
         newCodeNumber = new_zone.getCodeNumber()
         if newCodeNumber == new_zone.defaultValues()['codeNumber']:
             newCodeNumber = old_zone.getCodeNumber()
         self.renameName(old_zone.getCodeNumber(), newCodeNumber)
-        
+
         newLocal = new_zone.getLocalization()
         if newLocal == new_zone.defaultValues()['localization']:
             newLocal = old_zone.getLocalization()
         self.replaceLocalization(old_zone.getLocalization(), newLocal)
-        
+
         return newLabel, newCodeNumber, newLocal
 
 
@@ -475,7 +474,7 @@ class LocalizationModel(object):
         pass
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class VolumicLocalizationModel(LocalizationModel):
@@ -530,14 +529,14 @@ class VolumicLocalizationModel(LocalizationModel):
         for node in XMLZonesNodes:
             if node['label'] == label:
                 codeNumber = node['name']
-        
+
         return codeNumber
 
 
     def setLocalization(self, label, localization):
         """
         Define a new localization for the current zone (zone.getLabel == label)
-        Update XML file 
+        Update XML file
         """
         node = self.__XMLVolumicConditionsNode.xmlGetChildNode('zone', 'name', label = label)
         node.xmlSetTextNode(localization)
@@ -546,7 +545,7 @@ class VolumicLocalizationModel(LocalizationModel):
     def getCodeNumbersList(self, codeNumber=None):
         """
         Define a new code number for the current zone (zone.getLabel == label)
-        Update XML file 
+        Update XML file
         """
         XMLZonesNodesList = self._case.xmlGetNodeList('zone', 'label', 'name')
         codeList = []
@@ -558,7 +557,7 @@ class VolumicLocalizationModel(LocalizationModel):
     def getNature(self, label):
         """
         Define a new Nature for the current zone (zone.getLabel == label)
-        Update XML file 
+        Update XML file
         """
         node = self.__XMLVolumicConditionsNode.xmlGetChildNode('zone', 'name', label = label)
         nature = {}
@@ -573,7 +572,7 @@ class VolumicLocalizationModel(LocalizationModel):
     def setNature(self, label, nature):
         """
         Define a new Nature for the current zone (zone.getLabel == label)
-        Update XML file 
+        Update XML file
         """
         node = self.__XMLVolumicConditionsNode.xmlGetChildNode('zone', 'name', label = label)
         oldNature = self.getNature(label)
@@ -616,17 +615,24 @@ class VolumicLocalizationModel(LocalizationModel):
         # if codeNumber is modified, we must modify zone in initialization of variables
         if old_zone.getCodeNumber() != newCodeNumber:
             node['name'] = newCodeNumber
-            list = self.__natureOptions
-            list.append('initial_value')
-            for tag in self.__natureOptions:
-                for n in self._case.xmlGetNodeList(tag, zone=old_zone.getCodeNumber()):
-                    n['zone'] = newCodeNumber
-        
+
         node['label'] = newLabel
         node.xmlSetTextNode(newLocal)
         for k, v in new_zone.getNature().items():
             node[k] = v
 
+        # update data in the entire case
+        list = self.__natureOptions
+        list.append('initial_value')
+        list.append('head_loss')
+        for tag in list:
+            for n in self._case.xmlGetNodeList(tag, zone=old_zone.getCodeNumber()):
+                n['zone'] = newCodeNumber
+            for n in self._case.xmlGetNodeList(tag, name=old_zone.getCodeNumber()):
+                n['name'] = newCodeNumber
+            for n in self._case.xmlGetNodeList(tag, label=old_zone.getLabel()):
+                n['label'] = newLabel
+
 
     def deleteZone(self, label):
         """
@@ -639,7 +645,7 @@ class VolumicLocalizationModel(LocalizationModel):
         if node:
             name = node['name']
             node.xmlRemoveNode()
-            
+
         # Delete the other nodes for zone initializations
         for tag in self._tagList:
             nodeList = self._case.xmlGetNodeList(tag, zone=name)
@@ -647,7 +653,7 @@ class VolumicLocalizationModel(LocalizationModel):
                 node.xmlRemoveNode()
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class BoundaryLocalizationModel(LocalizationModel):
@@ -682,7 +688,7 @@ class BoundaryLocalizationModel(LocalizationModel):
             nature = str(node['nature'])
             codeNumber = int(node['name'])
             localization = str(node.xmlGetTextNode())
-            zone = Zone('BoundaryZone', label = label, codeNumber = codeNumber, localization = localization, nature = nature) 
+            zone = Zone('BoundaryZone', label = label, codeNumber = codeNumber, localization = localization, nature = nature)
             zones.append(zone)
         return zones
 
@@ -691,7 +697,7 @@ class BoundaryLocalizationModel(LocalizationModel):
         """
         Return maximum of nature number's values to put on name
         """
-        
+
         XMLZonesNodes = self.__XMLBoundaryConditionsNode.xmlGetChildNodeList('boundary', 'label', 'name', 'nature')
         max = 0
         #
@@ -707,7 +713,7 @@ class BoundaryLocalizationModel(LocalizationModel):
     def setLabel(self, label, newLabel):
         """
         Define a new label for the current zone (zone.getLabel == label)
-        Update XML file 
+        Update XML file
         """
         LocalizationModel.renameLabel(self, label, newLabel)
         #
@@ -725,7 +731,7 @@ class BoundaryLocalizationModel(LocalizationModel):
     def setLocalization(self, label, localization):
         """
         Define a new localization for the current zone (zone.getLabel == label)
-        Update XML file 
+        Update XML file
         """
         LocalizationModel.setLocalization(self, label, localization)
         #
@@ -737,7 +743,7 @@ class BoundaryLocalizationModel(LocalizationModel):
     def setCodeNumber(self, label, codeNumber):
         """
         Define a new code number for the current zone (zone.getLabel == label)
-        Update XML file 
+        Update XML file
         """
         LocalizationModel.setCodeNumber(self, label, codeNumber)
         #
@@ -749,7 +755,7 @@ class BoundaryLocalizationModel(LocalizationModel):
     def setNature(self, label, nature):
         """
         Define a new Nature for the current zone (zone.getLabel == label)
-        Update XML file 
+        Update XML file
         """
         LocalizationModel.setNature(self, label, nature)
 
@@ -758,7 +764,7 @@ class BoundaryLocalizationModel(LocalizationModel):
         oldNature = node['nature']
         node['nature'] = str(nature)
 
-        # Delete oldNature boundary 
+        # Delete oldNature boundary
         Boundary(oldNature, label, self._case).delete()
 
         # Create nature boundary
@@ -772,8 +778,8 @@ class BoundaryLocalizationModel(LocalizationModel):
         newZone = LocalizationModel.addZone(self, zone)
 
         # XML file updating
-        node = self.__XMLBoundaryConditionsNode.xmlInitNode('boundary', 
-                                                            label = newZone.getLabel(), 
+        node = self.__XMLBoundaryConditionsNode.xmlInitNode('boundary',
+                                                            label = newZone.getLabel(),
                                                             name = str(newZone.getCodeNumber()),
                                                             nature = newZone.getNature())
         node.xmlSetTextNode(newZone.getLocalization())
@@ -793,8 +799,8 @@ class BoundaryLocalizationModel(LocalizationModel):
 
         newNature = new_zone.getNature()
         Model().isInList(newNature, self.__natureList)
-        
-        node = self.__XMLBoundaryConditionsNode.xmlGetNode('boundary', 
+
+        node = self.__XMLBoundaryConditionsNode.xmlGetNode('boundary',
                                                             label = old_zone.getLabel())
 
         node['label'] = newLabel
@@ -816,7 +822,7 @@ class BoundaryLocalizationModel(LocalizationModel):
         nature = node['nature']
         node.xmlRemoveNode()
 
-        # Delete nature boundary 
+        # Delete nature boundary
         Boundary(nature, label, self._case).delete()
 
 #-------------------------------------------------------------------------------
@@ -844,7 +850,7 @@ class LocalizationVolumicTestCase(ModelTest):
                             all[]
                     </zone>
                  </volumic_conditions>'''
-                 
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not initialize default volumic zone'
 
@@ -883,7 +889,7 @@ class LocalizationVolumicTestCase(ModelTest):
 
         model.deleteZone(label="toto")
         model.deleteZone(label="Zone_2")
-        
+
         doc = '''<volumic_conditions>
                     <zone head_losses="off" initialization="on" label="all_cells" mass_source_term="off" momentum_source_term="off" name="1" thermal_source_term="off">
                             all[]
@@ -914,7 +920,7 @@ class LocalizationVolumicTestCase(ModelTest):
 ##        new_zone = Zone("VolumicZone", label='window')
 
         model.replaceZone(zone1, new_zone)
-        
+
         doc = '''<volumic_conditions>
                     <zone head_losses="off" initialization="on" label="all_cells" mass_source_term="off" momentum_source_term="off" name="1" thermal_source_term="off">
                             all[]
@@ -959,7 +965,7 @@ class LocalizationVolumicTestCase(ModelTest):
                             12 and window or door
                     </zone>
                 </volumic_conditions>'''
-                
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set localization on volumic zone'
 
@@ -990,13 +996,13 @@ class LocalizationVolumicTestCase(ModelTest):
                             12 and window or door
                     </zone>
                 </volumic_conditions>'''
-                
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not set nature on volumic zone'
 
         assert model.getNature('fenetre') == "initialization",\
            'Could not get nature on volumic zone'
-           
+
         assert model.getNature('porte') == "thermal_source_term,head_losses",\
            'Could not get nature on volumic zone'
 
@@ -1021,7 +1027,7 @@ class LocalizationSurfacicTestCase(ModelTest):
     """
     def checkLocalizationSurfacicInstantiation(self):
         """
-        Check whether the LocalizationModel class could be instantiated 
+        Check whether the LocalizationModel class could be instantiated
         for boundary conditions.
         """
         model = None
@@ -1070,7 +1076,7 @@ class LocalizationSurfacicTestCase(ModelTest):
                             <velocity_pressure choice="off"/>
                         </wall>
                   </boundary_conditions>'''
-                  
+
         model.deleteZone("entre2")
 
         doc = '''<boundary_conditions>
@@ -1109,7 +1115,7 @@ class LocalizationSurfacicTestCase(ModelTest):
         model.addZone(zone3)
         zone4 = Zone("BoundaryZone", label='hublot', localization="2 et 3", nature='symmetry')
         model.replaceZone(zone2, zone4)
-        
+
         doc = '''<boundary_conditions>
                         <boundary label="entre1" name="1" nature="inlet">
                                 porte
@@ -1133,7 +1139,7 @@ class LocalizationSurfacicTestCase(ModelTest):
                         </wall>
                         <symmetry label="hublot"/>
                   </boundary_conditions>'''
-        
+
         assert node == self.xmlNodeFromString(doc),\
            'Could not replace zone in localizationModel for boundaries conditions'
 
diff --git a/gui/Pages/LocalizationView.py b/gui/Pages/LocalizationView.py
index 17dc4ef..7512bf9 100644
--- a/gui/Pages/LocalizationView.py
+++ b/gui/Pages/LocalizationView.py
@@ -59,6 +59,7 @@ from PyQt4.QtGui  import *
 # Application modules import
 #-------------------------------------------------------------------------------
 
+from Base.Toolbox import GuiParam
 from LocalizationForm import Ui_LocalizationForm
 from Base.Common import LABEL_LENGTH_MAX
 from Base.QtPage import IntValidator, RegExpValidator
@@ -71,7 +72,7 @@ from Pages.LocalizationModel import LocalizationModel, Zone
 
 logging.basicConfig()
 log = logging.getLogger("LocalizationView")
-log.setLevel(logging.DEBUG)
+log.setLevel(GuiParam.DEBUG)
 
 #-------------------------------------------------------------------------------
 # Line edit delegate for the label
@@ -241,13 +242,14 @@ class StandardItemVolumeNature(QStandardItemModel):
         #self.keys = self.natureList.keys() # ordered tuple
         self.keys = Zone('VolumicZone').getNatureList()
 
-        self.setRowCount(len(self.dicoM2V.keys()))
         self.setColumnCount(1)
 
         row = 0
         for key in self.keys:
-            self.setItem(row, QStandardItem(QString(str(self.dicoM2V[key]))))
-            row += 1
+            if key in ('initialization', 'head_losses'):
+                self.setItem(row, QStandardItem(QString(str(self.dicoM2V[key]))))
+                row += 1
+        self.setRowCount(row)
 
 
     def data(self, index, role):
@@ -284,8 +286,6 @@ class StandardItemVolumeNature(QStandardItemModel):
                 disable_row = row
                 cpt += 1
 
-	#FIXME : delete the following line
-	return Qt.ItemIsSelectable
         if cpt == 1 and index.row() == disable_row:
             return Qt.ItemIsSelectable | Qt.ItemIsUserCheckable
         else:
@@ -352,8 +352,8 @@ class FlagBox(QComboBox):
         self.setItemData(index, QVariant(s), Qt.CheckStateRole)
 
 
-    def hidePopup(self):
-        pass
+#    def hidePopup(self):
+#        pass
 
 #-------------------------------------------------------------------------------
 # Delegate for the volume nature
diff --git a/gui/Pages/Makefile.am b/gui/Pages/Makefile.am
index ed34dad..9c1b56c 100644
--- a/gui/Pages/Makefile.am
+++ b/gui/Pages/Makefile.am
@@ -20,193 +20,223 @@
 #   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #-------------------------------------------------------------------------------
 
-all-local:
-	@$(PYTHON) $(top_srcdir)/gui/sbin/mkpyqt.py --build $(srcdir)
+# Python files
 
-clean-local:
-	@$(PYTHON) $(top_srcdir)/gui/sbin/mkpyqt.py --clean $(srcdir)
-
-# Install Python library
-
-pagesdir = $(pkgpythondir)/Pages
-pages_PYTHON = \
-__init__.py \
-resources_pages_rc.py \
-AnalysisFeaturesForm.py \
+PYFILES = \
 AnalysisFeaturesView.py \
-AtmosphericFlowsForm.py \
 AtmosphericFlowsModel.py \
 AtmosphericFlowsView.py \
-BatchRunningAdvancedOptionsDialogForm.py \
-BatchRunningForm.py \
 BatchRunningModel.py \
-BatchRunningPBSJobManagementDialogForm.py \
-BatchRunningUserFilesDialogForm.py \
 BatchRunningView.py \
-BodyForcesForm.py \
 BodyForcesModel.py \
 BodyForcesView.py \
-BoundaryConditionsCoalInletForm.py \
 BoundaryConditionsCoalInletView.py \
-BoundaryConditionsForm.py \
-BoundaryConditionsMeteoForm.py \
 BoundaryConditionsMeteoView.py \
-BoundaryConditionsMobileMeshForm.py \
 BoundaryConditionsMobileMeshView.py \
 BoundaryConditionsParticlesModel.py \
 BoundaryConditionsParticlesView.py \
-BoundaryConditionsRoughWallForm.py \
 BoundaryConditionsRoughWallView.py \
-BoundaryConditionsScalarsForm.py \
 BoundaryConditionsScalarsView.py \
-BoundaryConditionsSlidingWallForm.py \
 BoundaryConditionsSlidingWallView.py \
-BoundaryConditionsTurbulenceInletForm.py \
 BoundaryConditionsTurbulenceInletView.py \
-BoundaryConditionsVelocityInletForm.py \
 BoundaryConditionsVelocityInletView.py \
-BoundaryConditionsWallRadiativeTransferForm.py \
 BoundaryConditionsWallRadiativeTransferView.py \
 BoundaryConditionsView.py \
 Boundary.py \
-CoalCombustionForm.py \
 CoalCombustionModel.py \
 CoalCombustionView.py \
 CoalThermoChemistry.py \
 CommonCombustion.py \
-CurrentSpeciesForm.py \
+ConjugateHeatTransferView.py \
+ConjugateHeatTransferModel.py \
 CurrentSpeciesModel.py \
 CurrentSpeciesView.py \
-DefineUserScalarsForm.py \
 DefineUserScalarsModel.py \
 DefineUserScalarsView.py \
 ElectricalModelsModel.py \
-FacesSelectionForm.py \
 FacesSelectionView.py \
-FluidCharacteristicsForm.py \
 FluidCharacteristicsModel.py \
 FluidCharacteristicsView.py \
-FluidStructureInteractionAdvancedOptionsDialogForm.py \
-FluidStructureInteractionForm.py \
 FluidStructureInteractionModel.py \
 FluidStructureInteractionView.py \
 GasCombustionModel.py \
-HeadLossesForm.py \
 HeadLossesModel.py \
 HeadLossesView.py \
-IdentityAndPathesForm.py \
 IdentityAndPathesModel.py \
 IdentityAndPathesView.py \
-InitializationForm.py \
 InitializationModel.py \
 InitializationView.py \
-LagrangianAdvancedOptionsDialogForm.py \
-LagrangianBoundariesForm.py \
 LagrangianBoundariesModel.py \
 LagrangianBoundariesView.py \
-LagrangianForm.py \
 LagrangianModel.py \
-LagrangianOutputForm.py \
 LagrangianOutputModel.py \
 LagrangianOutputView.py \
-LagrangianStatisticsForm.py \
 LagrangianStatisticsModel.py \
 LagrangianStatisticsView.py \
 LagrangianView.py \
-LocalizationForm.py \
 LocalizationModel.py \
 LocalizationView.py \
-MatisseCustomForm.py \
 MatisseCustomView.py \
-MatisseGeomForm.py \
 MatisseGeomModel.py \
 MatisseGeomView.py \
-MatisseHydrauForm.py \
 MatisseHydrauModel.py \
 MatisseHydrauView.py \
 MatisseModel.py \
-MatisseNetworkForm.py \
 MatisseNetworkModel.py \
 MatisseNetworkView.py \
-MatisseRangeDescriptionForm.py \
 MatisseRangeDescriptionModel.py \
 MatisseRangeDescriptionView.py \
-MatisseThermicForm.py \
 MatisseThermicModel.py \
 MatisseThermicView.py \
-MatisseTypeForm.py \
 MatisseTypeModel.py \
 MatisseTypeView.py \
-MemoryAllocationForm.py \
 MemoryAllocationModel.py \
 MemoryAllocationView.py \
-MeshQualityCriteriaLogDialogForm.py \
-MobileMeshForm.py \
 MobileMeshModel.py \
 MobileMeshView.py \
-NumericalParamEquationForm.py \
 NumericalParamEquationModel.py \
 NumericalParamEquationView.py \
-NumericalParamGlobalForm.py \
 NumericalParamGlobalModel.py \
 NumericalParamGlobalView.py \
-OutputControlForm.py \
 OutputControlModel.py \
 OutputControlView.py \
-OutputSurfacicVariablesForm.py \
 OutputSurfacicVariablesModel.py \
 OutputSurfacicVariablesView.py \
-OutputVolumicVariablesForm.py \
 OutputVolumicVariablesModel.py \
 OutputVolumicVariablesView.py \
 PreProcessingInformationsView.py \
-ProfilesForm.py \
 ProfilesModel.py \
 ProfilesView.py \
-QMeiEditorForm.py \
 QMeiEditorView.py \
-ReferenceValuesForm.py \
 ReferenceValuesModel.py \
 ReferenceValuesView.py \
 SalomeHandler.py \
-SolutionDomainForm.py \
-SolutionDomainMeshFormatDialogForm.py \
 SolutionDomainModel.py \
 SolutionDomainView.py \
-SolutionVerifForm.py \
 SolutionVerifView.py \
-StartRestartAdvancedDialogForm.py \
-StartRestartForm.py \
 StartRestartModel.py \
 StartRestartView.py \
-SteadyManagementForm.py \
 SteadyManagementModel.py \
 SteadyManagementView.py \
-SyrthesForm.py \
-SyrthesView.py \
-ThermalRadiationAdvancedDialogForm.py \
-ThermalRadiationForm.py \
 ThermalRadiationModel.py \
 ThermalRadiationView.py \
-ThermalScalarForm.py \
 ThermalScalarModel.py \
 ThermalScalarView.py \
-TimeAveragesForm.py \
 TimeAveragesModel.py \
 TimeAveragesView.py \
-TimeStepForm.py \
 TimeStepModel.py \
 TimeStepView.py \
-TurbulenceAdvancedOptionsDialogForm.py \
-TurbulenceForm.py \
 TurbulenceModel.py \
 TurbulenceView.py \
-UserArraysForm.py \
 UserArraysModel.py \
 UserArraysView.py \
-UserScalarPropertiesForm.py \
 UserScalarPropertiesView.py \
-VerifyExistenceLabelDialogForm.py \
 VerifyExistenceLabelDialogView.py \
-WelcomeForm.py \
 WelcomeView.py
+
+# PyQt User Interface files
+
+UIFILES = \
+AnalysisFeaturesForm.ui \
+AtmosphericFlowsForm.ui \
+BatchRunningAdvancedOptionsDialogForm.ui \
+BatchRunningForm.ui \
+BatchRunningPBSJobManagementDialogForm.ui \
+BatchRunningUserFilesDialogForm.ui \
+BodyForcesForm.ui \
+BoundaryConditionsCoalInletForm.ui \
+BoundaryConditionsForm.ui \
+BoundaryConditionsMeteoForm.ui \
+BoundaryConditionsMobileMeshForm.ui \
+BoundaryConditionsRoughWallForm.ui \
+BoundaryConditionsScalarsForm.ui \
+BoundaryConditionsSlidingWallForm.ui \
+BoundaryConditionsTurbulenceInletForm.ui \
+BoundaryConditionsVelocityInletForm.ui \
+BoundaryConditionsWallRadiativeTransferForm.ui \
+CoalCombustionForm.ui \
+ConjugateHeatTransferForm.ui \
+CurrentSpeciesForm.ui \
+DefineUserScalarsForm.ui \
+FacesSelectionForm.ui \
+FluidCharacteristicsForm.ui \
+FluidStructureInteractionAdvancedOptionsDialogForm.ui \
+FluidStructureInteractionForm.ui \
+HeadLossesForm.ui \
+IdentityAndPathesForm.ui \
+InitializationForm.ui \
+LagrangianAdvancedOptionsDialogForm.ui \
+LagrangianBoundariesForm.ui \
+LagrangianForm.ui \
+LagrangianOutputForm.ui \
+LagrangianStatisticsForm.ui \
+LocalizationForm.ui \
+MatisseCustomForm.ui \
+MatisseGeomForm.ui \
+MatisseHydrauForm.ui \
+MatisseNetworkForm.ui \
+MatisseRangeDescriptionForm.ui \
+MatisseThermicForm.ui \
+MatisseTypeForm.ui \
+MemoryAllocationForm.ui \
+MeshQualityCriteriaLogDialogForm.ui \
+MobileMeshForm.ui \
+NumericalParamEquationForm.ui \
+NumericalParamGlobalForm.ui \
+OutputControlForm.ui \
+OutputSurfacicVariablesForm.ui \
+OutputVolumicVariablesForm.ui \
+ProfilesForm.ui \
+QMeiEditorForm.ui \
+ReferenceValuesForm.ui \
+SolutionDomainForm.ui \
+SolutionDomainMeshFormatDialogForm.ui \
+SolutionVerifForm.ui \
+StartRestartAdvancedDialogForm.ui \
+StartRestartForm.ui \
+SteadyManagementForm.ui \
+ThermalRadiationAdvancedDialogForm.ui \
+ThermalRadiationForm.ui \
+ThermalScalarForm.ui \
+TimeAveragesForm.ui \
+TimeStepForm.ui \
+TurbulenceAdvancedOptionsDialogForm.ui \
+TurbulenceForm.ui \
+UserArraysForm.ui \
+UserScalarPropertiesForm.ui \
+VerifyExistenceLabelDialogForm.ui \
+WelcomeForm.ui
+
+# PyQt Resources files
+
+QRCFILES = \
+resources_pages_rc.py
+
+# Generated files
+
+FORMS = $(UIFILES:.ui=.py)
+RESOURCES = $(QRCFILES:.qrc=_rc.py)
+
+# Specific rules
+
+SUFFIXES = .ui .qrc _rc.py
+
+.ui.py:
+	$(PYUIC4) -o $@ $<
+
+.qrc_rc.py:
+	$(PYRCC4) -o $@ $<
+
+all-local: $(FORMS) $(RESOURCES)
+
+clean-local:
+	-rm -f $(FORMS) $(RESOURCES)
+
+# Install Python library
+
+pagesdir = $(pkgpythondir)/Pages
+pages_PYTHON = \
+__init__.py \
+$(FORMS) \
+$(RESOURCES) \
+$(PYFILES)
diff --git a/gui/Pages/Makefile.in b/gui/Pages/Makefile.in
index f91d224..ffcc612 100644
--- a/gui/Pages/Makefile.in
+++ b/gui/Pages/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -35,10 +36,13 @@
 #   Free Software Foundation, Inc.,
 #   51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #-------------------------------------------------------------------------------
+
+# Python files
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -61,6 +65,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -76,6 +81,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -83,9 +89,23 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(pagesdir)"
-pagesPYTHON_INSTALL = $(INSTALL_DATA)
 py_compile = $(top_srcdir)/config/py-compile
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -130,6 +150,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -166,11 +188,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -185,15 +205,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -238,7 +261,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -255,8 +279,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -279,206 +306,228 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-
-# Install Python library
-pagesdir = $(pkgpythondir)/Pages
-pages_PYTHON = \
-__init__.py \
-resources_pages_rc.py \
-AnalysisFeaturesForm.py \
+PYFILES = \
 AnalysisFeaturesView.py \
-AtmosphericFlowsForm.py \
 AtmosphericFlowsModel.py \
 AtmosphericFlowsView.py \
-BatchRunningAdvancedOptionsDialogForm.py \
-BatchRunningForm.py \
 BatchRunningModel.py \
-BatchRunningPBSJobManagementDialogForm.py \
-BatchRunningUserFilesDialogForm.py \
 BatchRunningView.py \
-BodyForcesForm.py \
 BodyForcesModel.py \
 BodyForcesView.py \
-BoundaryConditionsCoalInletForm.py \
 BoundaryConditionsCoalInletView.py \
-BoundaryConditionsForm.py \
-BoundaryConditionsMeteoForm.py \
 BoundaryConditionsMeteoView.py \
-BoundaryConditionsMobileMeshForm.py \
 BoundaryConditionsMobileMeshView.py \
 BoundaryConditionsParticlesModel.py \
 BoundaryConditionsParticlesView.py \
-BoundaryConditionsRoughWallForm.py \
 BoundaryConditionsRoughWallView.py \
-BoundaryConditionsScalarsForm.py \
 BoundaryConditionsScalarsView.py \
-BoundaryConditionsSlidingWallForm.py \
 BoundaryConditionsSlidingWallView.py \
-BoundaryConditionsTurbulenceInletForm.py \
 BoundaryConditionsTurbulenceInletView.py \
-BoundaryConditionsVelocityInletForm.py \
 BoundaryConditionsVelocityInletView.py \
-BoundaryConditionsWallRadiativeTransferForm.py \
 BoundaryConditionsWallRadiativeTransferView.py \
 BoundaryConditionsView.py \
 Boundary.py \
-CoalCombustionForm.py \
 CoalCombustionModel.py \
 CoalCombustionView.py \
 CoalThermoChemistry.py \
 CommonCombustion.py \
-CurrentSpeciesForm.py \
+ConjugateHeatTransferView.py \
+ConjugateHeatTransferModel.py \
 CurrentSpeciesModel.py \
 CurrentSpeciesView.py \
-DefineUserScalarsForm.py \
 DefineUserScalarsModel.py \
 DefineUserScalarsView.py \
 ElectricalModelsModel.py \
-FacesSelectionForm.py \
 FacesSelectionView.py \
-FluidCharacteristicsForm.py \
 FluidCharacteristicsModel.py \
 FluidCharacteristicsView.py \
-FluidStructureInteractionAdvancedOptionsDialogForm.py \
-FluidStructureInteractionForm.py \
 FluidStructureInteractionModel.py \
 FluidStructureInteractionView.py \
 GasCombustionModel.py \
-HeadLossesForm.py \
 HeadLossesModel.py \
 HeadLossesView.py \
-IdentityAndPathesForm.py \
 IdentityAndPathesModel.py \
 IdentityAndPathesView.py \
-InitializationForm.py \
 InitializationModel.py \
 InitializationView.py \
-LagrangianAdvancedOptionsDialogForm.py \
-LagrangianBoundariesForm.py \
 LagrangianBoundariesModel.py \
 LagrangianBoundariesView.py \
-LagrangianForm.py \
 LagrangianModel.py \
-LagrangianOutputForm.py \
 LagrangianOutputModel.py \
 LagrangianOutputView.py \
-LagrangianStatisticsForm.py \
 LagrangianStatisticsModel.py \
 LagrangianStatisticsView.py \
 LagrangianView.py \
-LocalizationForm.py \
 LocalizationModel.py \
 LocalizationView.py \
-MatisseCustomForm.py \
 MatisseCustomView.py \
-MatisseGeomForm.py \
 MatisseGeomModel.py \
 MatisseGeomView.py \
-MatisseHydrauForm.py \
 MatisseHydrauModel.py \
 MatisseHydrauView.py \
 MatisseModel.py \
-MatisseNetworkForm.py \
 MatisseNetworkModel.py \
 MatisseNetworkView.py \
-MatisseRangeDescriptionForm.py \
 MatisseRangeDescriptionModel.py \
 MatisseRangeDescriptionView.py \
-MatisseThermicForm.py \
 MatisseThermicModel.py \
 MatisseThermicView.py \
-MatisseTypeForm.py \
 MatisseTypeModel.py \
 MatisseTypeView.py \
-MemoryAllocationForm.py \
 MemoryAllocationModel.py \
 MemoryAllocationView.py \
-MeshQualityCriteriaLogDialogForm.py \
-MobileMeshForm.py \
 MobileMeshModel.py \
 MobileMeshView.py \
-NumericalParamEquationForm.py \
 NumericalParamEquationModel.py \
 NumericalParamEquationView.py \
-NumericalParamGlobalForm.py \
 NumericalParamGlobalModel.py \
 NumericalParamGlobalView.py \
-OutputControlForm.py \
 OutputControlModel.py \
 OutputControlView.py \
-OutputSurfacicVariablesForm.py \
 OutputSurfacicVariablesModel.py \
 OutputSurfacicVariablesView.py \
-OutputVolumicVariablesForm.py \
 OutputVolumicVariablesModel.py \
 OutputVolumicVariablesView.py \
 PreProcessingInformationsView.py \
-ProfilesForm.py \
 ProfilesModel.py \
 ProfilesView.py \
-QMeiEditorForm.py \
 QMeiEditorView.py \
-ReferenceValuesForm.py \
 ReferenceValuesModel.py \
 ReferenceValuesView.py \
 SalomeHandler.py \
-SolutionDomainForm.py \
-SolutionDomainMeshFormatDialogForm.py \
 SolutionDomainModel.py \
 SolutionDomainView.py \
-SolutionVerifForm.py \
 SolutionVerifView.py \
-StartRestartAdvancedDialogForm.py \
-StartRestartForm.py \
 StartRestartModel.py \
 StartRestartView.py \
-SteadyManagementForm.py \
 SteadyManagementModel.py \
 SteadyManagementView.py \
-SyrthesForm.py \
-SyrthesView.py \
-ThermalRadiationAdvancedDialogForm.py \
-ThermalRadiationForm.py \
 ThermalRadiationModel.py \
 ThermalRadiationView.py \
-ThermalScalarForm.py \
 ThermalScalarModel.py \
 ThermalScalarView.py \
-TimeAveragesForm.py \
 TimeAveragesModel.py \
 TimeAveragesView.py \
-TimeStepForm.py \
 TimeStepModel.py \
 TimeStepView.py \
-TurbulenceAdvancedOptionsDialogForm.py \
-TurbulenceForm.py \
 TurbulenceModel.py \
 TurbulenceView.py \
-UserArraysForm.py \
 UserArraysModel.py \
 UserArraysView.py \
-UserScalarPropertiesForm.py \
 UserScalarPropertiesView.py \
-VerifyExistenceLabelDialogForm.py \
 VerifyExistenceLabelDialogView.py \
-WelcomeForm.py \
 WelcomeView.py
 
+
+# PyQt User Interface files
+UIFILES = \
+AnalysisFeaturesForm.ui \
+AtmosphericFlowsForm.ui \
+BatchRunningAdvancedOptionsDialogForm.ui \
+BatchRunningForm.ui \
+BatchRunningPBSJobManagementDialogForm.ui \
+BatchRunningUserFilesDialogForm.ui \
+BodyForcesForm.ui \
+BoundaryConditionsCoalInletForm.ui \
+BoundaryConditionsForm.ui \
+BoundaryConditionsMeteoForm.ui \
+BoundaryConditionsMobileMeshForm.ui \
+BoundaryConditionsRoughWallForm.ui \
+BoundaryConditionsScalarsForm.ui \
+BoundaryConditionsSlidingWallForm.ui \
+BoundaryConditionsTurbulenceInletForm.ui \
+BoundaryConditionsVelocityInletForm.ui \
+BoundaryConditionsWallRadiativeTransferForm.ui \
+CoalCombustionForm.ui \
+ConjugateHeatTransferForm.ui \
+CurrentSpeciesForm.ui \
+DefineUserScalarsForm.ui \
+FacesSelectionForm.ui \
+FluidCharacteristicsForm.ui \
+FluidStructureInteractionAdvancedOptionsDialogForm.ui \
+FluidStructureInteractionForm.ui \
+HeadLossesForm.ui \
+IdentityAndPathesForm.ui \
+InitializationForm.ui \
+LagrangianAdvancedOptionsDialogForm.ui \
+LagrangianBoundariesForm.ui \
+LagrangianForm.ui \
+LagrangianOutputForm.ui \
+LagrangianStatisticsForm.ui \
+LocalizationForm.ui \
+MatisseCustomForm.ui \
+MatisseGeomForm.ui \
+MatisseHydrauForm.ui \
+MatisseNetworkForm.ui \
+MatisseRangeDescriptionForm.ui \
+MatisseThermicForm.ui \
+MatisseTypeForm.ui \
+MemoryAllocationForm.ui \
+MeshQualityCriteriaLogDialogForm.ui \
+MobileMeshForm.ui \
+NumericalParamEquationForm.ui \
+NumericalParamGlobalForm.ui \
+OutputControlForm.ui \
+OutputSurfacicVariablesForm.ui \
+OutputVolumicVariablesForm.ui \
+ProfilesForm.ui \
+QMeiEditorForm.ui \
+ReferenceValuesForm.ui \
+SolutionDomainForm.ui \
+SolutionDomainMeshFormatDialogForm.ui \
+SolutionVerifForm.ui \
+StartRestartAdvancedDialogForm.ui \
+StartRestartForm.ui \
+SteadyManagementForm.ui \
+ThermalRadiationAdvancedDialogForm.ui \
+ThermalRadiationForm.ui \
+ThermalScalarForm.ui \
+TimeAveragesForm.ui \
+TimeStepForm.ui \
+TurbulenceAdvancedOptionsDialogForm.ui \
+TurbulenceForm.ui \
+UserArraysForm.ui \
+UserScalarPropertiesForm.ui \
+VerifyExistenceLabelDialogForm.ui \
+WelcomeForm.ui
+
+
+# PyQt Resources files
+QRCFILES = \
+resources_pages_rc.py
+
+
+# Generated files
+FORMS = $(UIFILES:.ui=.py)
+RESOURCES = $(QRCFILES:.qrc=_rc.py)
+
+# Specific rules
+SUFFIXES = .ui .qrc _rc.py
+
+# Install Python library
+pagesdir = $(pkgpythondir)/Pages
+pages_PYTHON = \
+__init__.py \
+$(FORMS) \
+$(RESOURCES) \
+$(PYFILES)
+
 all: all-am
 
 .SUFFIXES:
+.SUFFIXES: .ui .qrc _rc.py .py
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gui/Pages/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  gui/Pages/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gui/Pages/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu gui/Pages/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -496,6 +545,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -505,15 +555,20 @@ clean-libtool:
 install-pagesPYTHON: $(pages_PYTHON)
 	@$(NORMAL_INSTALL)
 	test -z "$(pagesdir)" || $(MKDIR_P) "$(DESTDIR)$(pagesdir)"
-	@list='$(pages_PYTHON)'; dlist=''; for p in $$list; do\
+	@list='$(pages_PYTHON)'; dlist=; list2=; test -n "$(pagesdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
 	  if test -f $$b$$p; then \
-	    f=$(am__strip_dir) \
+	    $(am__strip_dir) \
 	    dlist="$$dlist $$f"; \
-	    echo " $(pagesPYTHON_INSTALL) '$$b$$p' '$(DESTDIR)$(pagesdir)/$$f'"; \
-	    $(pagesPYTHON_INSTALL) "$$b$$p" "$(DESTDIR)$(pagesdir)/$$f"; \
+	    list2="$$list2 $$b$$p"; \
 	  else :; fi; \
 	done; \
+	for file in $$list2; do echo $$file; done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pagesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pagesdir)" || exit $$?; \
+	done || exit $$?; \
 	if test -n "$$dlist"; then \
 	  if test -z "$(DESTDIR)"; then \
 	    PYTHON=$(PYTHON) $(py_compile) --basedir "$(pagesdir)" $$dlist; \
@@ -524,12 +579,17 @@ install-pagesPYTHON: $(pages_PYTHON)
 
 uninstall-pagesPYTHON:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pages_PYTHON)'; dlist=''; for p in $$list; do\
-	  f=$(am__strip_dir) \
-	  rm -f "$(DESTDIR)$(pagesdir)/$$f"; \
-	  rm -f "$(DESTDIR)$(pagesdir)/$${f}c"; \
-	  rm -f "$(DESTDIR)$(pagesdir)/$${f}o"; \
-	done
+	@list='$(pages_PYTHON)'; test -n "$(pagesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	filesc=`echo "$$files" | sed 's|$$|c|'`; \
+	fileso=`echo "$$files" | sed 's|$$|o|'`; \
+	echo " ( cd '$(DESTDIR)$(pagesdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pagesdir)" && rm -f $$files || exit $$?; \
+	echo " ( cd '$(DESTDIR)$(pagesdir)' && rm -f" $$filesc ")"; \
+	cd "$(DESTDIR)$(pagesdir)" && rm -f $$filesc || exit $$?; \
+	echo " ( cd '$(DESTDIR)$(pagesdir)' && rm -f" $$fileso ")"; \
+	cd "$(DESTDIR)$(pagesdir)" && rm -f $$fileso
 tags: TAGS
 TAGS:
 
@@ -553,13 +613,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -590,6 +654,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -608,6 +673,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -616,18 +683,28 @@ install-data-am: install-pagesPYTHON
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -663,11 +740,17 @@ uninstall-am: uninstall-pagesPYTHON
 	ps ps-am uninstall uninstall-am uninstall-pagesPYTHON
 
 
-all-local:
-	@$(PYTHON) $(top_srcdir)/gui/sbin/mkpyqt.py --build $(srcdir)
+.ui.py:
+	$(PYUIC4) -o $@ $<
+
+.qrc_rc.py:
+	$(PYRCC4) -o $@ $<
+
+all-local: $(FORMS) $(RESOURCES)
 
 clean-local:
-	@$(PYTHON) $(top_srcdir)/gui/sbin/mkpyqt.py --clean $(srcdir)
+	-rm -f $(FORMS) $(RESOURCES)
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gui/Pages/MatisseCustomView.py b/gui/Pages/MatisseCustomView.py
index 70276f8..9a78c1b 100644
--- a/gui/Pages/MatisseCustomView.py
+++ b/gui/Pages/MatisseCustomView.py
@@ -50,6 +50,8 @@ from PyQt4.QtGui  import *
 # Application modules import
 #-------------------------------------------------------------------------------
 
+from Base.Toolbox import GuiParam
+
 from MatisseCustomForm import Ui_MatisseCustomForm
 import Base.QtPage as QtPage
 
@@ -66,7 +68,7 @@ from Pages.MatisseThermicModel import MatisseThermicModel
 
 logging.basicConfig()
 log = logging.getLogger("MatisseCustomView")
-log.setLevel(logging.DEBUG)
+log.setLevel(GuiParam.DEBUG)
 
 #-------------------------------------------------------------------------------
 # StandarItemModel class
@@ -81,7 +83,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
     Behavior depends on the value of attribute tagName (self.tagName).
     """
 
-    def __init__(self, parent, case, tagName, dico): 
+    def __init__(self, parent, case, tagName, dico):
         """
         """
         QStandardItemModel.__init__(self)
@@ -108,9 +110,9 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
             self.column_step_min = 3
             self.column_step_max = 4
 
-            # XML Model 
+            # XML Model
             if self.tagName in ["network_line", "network_row"]:
-                
+
                 self.model = MatisseNetworkModel(self.case)
 
                 model_geom = MatisseGeom.MatisseGeomModel(self.case)
@@ -122,40 +124,40 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
                 self.heightMax = model_geom.getMatisseGeomDoubleVar('nchest')
 
                 model_mat_type = MatisseType.MatisseTypeModel(self.case)
-                self.alveoStat = model_mat_type.node_alveo['status']               
-                
+                self.alveoStat = model_mat_type.node_alveo['status']
+
             elif self.tagName in ["inlet_range_line", "inlet_range_height"]:
-                
+
                 self.model = MatisseRangeDescriptionModel(self.case, 'inlet_range')
-                
+
                 model_geom = MatisseGeom.MatisseGeomModel(self.case)
                 self.lineStep = model_geom.getMatisseGeomDoubleVar('ptrres')
                 self.heightStep = model_geom.getMatisseGeomDoubleVar('epchel')
                 self.lineMax = model_geom.getMatisseGeomDoubleVar('nptran')
                 self.heightMax = model_geom.getMatisseGeomDoubleVar('nchest')
-        
+
             elif self.tagName in ["outlet_range_line", "outlet_range_height"]:
-                
+
                 self.model = MatisseRangeDescriptionModel(self.case, 'outlet_range')
-                
+
                 model_geom = MatisseGeom.MatisseGeomModel(self.case)
                 self.lineStep = model_geom.getMatisseGeomDoubleVar('ptrres')
                 self.heightStep = model_geom.getMatisseGeomDoubleVar('epchel')
                 self.lineMax = model_geom.getMatisseGeomDoubleVar('nptran')
                 self.heightMax = model_geom.getMatisseGeomDoubleVar('nchest')
-                                
+
         else:
         #elif self.tagName in ["thermal_line", "thermal_row", "thermal_height"]:
 
             # Thermic load
             self.areatype = self.dico['areatype']
-            
+
             self.default_row = ["default", 0., 0., 0., 0., 0.]
             self.columns_editable = [0, 1, 2, 3]
             self.column_step_min = 4
             self.column_step_max = 5
-            
-            # XML Model 
+
+            # XML Model
             self.model = MatisseThermicModel(self.case)
 
             self.model_mat_type = MatisseType.MatisseTypeModel(self.case)
@@ -171,16 +173,16 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
         #
         self.areatype = self.dico['areatype']
         if self.areatype == 'line' :
-            self.step = self.lineStep 
+            self.step = self.lineStep
         elif self.areatype == 'height' :
             self.step = self.heightStep
         elif self.areatype == 'row' :
             self.step = self.rowStep
 
-            
+
     def __initData(self):
         """
-        Load previous values 
+        Load previous values
         """
         if self.tagName in ["inlet_range_line", "inlet_range_height",
                             "outlet_range_line", "outlet_range_height",
@@ -213,7 +215,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
                 print "XML format error : bad definition of <area> "
                 sys.exit(1)
 
-            # Default values 
+            # Default values
             if len(llabel) == 0 :
                 dlabel, dmin, dmax, dval = self.model.DefaultArea(self.areatype)
                 self.model.NewArea(self.areatype, dlabel, dmin, dmax, dval)
@@ -233,7 +235,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
                 self.dataMatisse.append(row)
                 nrows = self.rowCount()
                 self.setRowCount(nrows+1)
-        
+
 
     def data(self, index, role):
         if not index.isValid():
@@ -249,8 +251,8 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
         if not index.isValid():
             return Qt.ItemIsEnabled
         else:
-            return Qt.ItemIsEnabled | Qt.ItemIsSelectable 
-    
+            return Qt.ItemIsEnabled | Qt.ItemIsSelectable
+
 
     def headerData(self, section, orientation, role):
         if orientation == Qt.Horizontal and role == Qt.DisplayRole:
@@ -272,14 +274,14 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
         if self.tagName in ["inlet_range_line", "inlet_range_height",
                             "outlet_range_line", "outlet_range_height",
                             "network_line", "network_row"]:
-            
+
             bool_create = self.__addRowRangeDescriptionNetwork(label, sbmin, sbmax, self.areatype, self.step)
 
         if self.tagName in ["thermal_line", "thermal_row", "thermal_height"]:
-            
+
             bool_create = self.__addRowThermal(label, sbmin, sbmax, svalue, self.areatype, self.step)
 
-            
+
         if bool_create:
             row = self.default_row
             row[0] = label
@@ -310,8 +312,8 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
             bool_modify = self.__editRangeThermal(new_label, new_bmin, new_bmax, new_value,
                                                   label, sbmin, sbmax, svalue,
                                                   self.areatype, self.step)
-            
-            
+
+
         if bool_modify:
             pass # TODO
 
@@ -324,25 +326,25 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
         if self.tagName in ["inlet_range_line", "inlet_range_height",
                             "outlet_range_line", "outlet_range_height",
                             "network_line", "network_row"]:
-            
+
             [label, sbmin, sbmax, sbmin2, sbmax2] = self.dataMatisse[row]
             bool_cancel = self.__deleteRowRangeDescription(label, sbmin, sbmax, self.areatype)
 
         if self.tagName in ["thermal_line", "thermal_row", "thermal_height"]:
             [label, sbmin, sbmax, svalue, sbmin2, sbmax2] = self.dataMatisse[row]
             bool_cancel = self.__deleteRowThermal(label, sbmin, sbmax, svalue, self.areatype)
-            
 
 
-        if bool_cancel: 
+
+        if bool_cancel:
             del self.dataMatisse[row]
             nrows = self.rowCount()
             self.setRowCount(nrows-1)
-        
+
 
     # RangeDescription & Network
     # --------------------------
-    
+
     def __addRowRangeDescriptionNetwork(self, label, sbmin, sbmax, areatype, step):
         """
         Add a row : test for RangeDescription & Network
@@ -360,7 +362,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
             msg   = self.tr("'%1' bad definition: see the bounds definition").arg(label)
             QMessageBox.warning(self.parent, title, msg)
             return
-        
+
         llabel, lbmin, lbmax  = self.model.GetAreas(areatype)
         create = True
         #
@@ -392,7 +394,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
 
         if create :
             #name = self.insertHlist(h, label, sbmin, sbmax, step)
-            self.model.NewArea(areatype, label, bmin, bmax)            
+            self.model.NewArea(areatype, label, bmin, bmax)
         else :
             title = self.tr("Warning")
             msg   = self.tr("'%1' bad definition: see the bounds definition").arg(label)
@@ -410,7 +412,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
             new_label = "Default"
 
         if areatype == 'line' :
-            step = self.lineStep 
+            step = self.lineStep
         elif areatype == 'height' :
             step = self.heightStep
         elif areatype == 'row' :
@@ -436,7 +438,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
 
             #
             # Type check
-            try : 
+            try :
                 fnew_bmin=float(new_bmin)
                 fnew_bmax=float(new_bmax)
             except :
@@ -445,7 +447,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
                 msg   = self.tr("'%1' bad definition: see the bounds definition").arg(label)
                 QMessageBox.warning(self.parent, title, msg)
                 return
-            
+
             if (fnew_bmin > fnew_bmax) or (fnew_bmin < 0):
                 modify = False
             if (areatype == 'line'):
@@ -465,12 +467,12 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
                     if ((label == llabel[area]) and
                         (abs(bmin - float(lbmin[area])) <= _EPSILON) and
                         (abs(bmax - float(lbmax[area])) <= _EPSILON)):
-                        
+
 
                         if ((label != new_label) or
                             (abs(bmax - fnew_bmax) >= _EPSILON) or
                             (abs(bmin - fnew_bmin) >= _EPSILON)) :
-                            
+
                             for area1 in range(0,len(llabel)) :
                                 if area1 != area :
                                     if (((fnew_bmin > float(lbmin[area1])) and (fnew_bmin < float(lbmax[area1]))) or
@@ -515,10 +517,10 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
 
     def __deleteRowRangeDescriptionNetwork(self, label, sbmin, sbmax, areatype):
         """
-        Delete row : test for RangeDescription & Network 
+        Delete row : test for RangeDescription & Network
         """
         log.debug("__deleteRowRangeDescriptionNetwork")
-                                    
+
         bmin = float(sbmin)
         bmax = float(sbmax)
 
@@ -577,7 +579,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
             return
 
         llabel, lbmin, lbmax, lval  = self.model.GetAreas(areatype)
-        
+
         create = True
         #
         # Bounds check
@@ -601,7 +603,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
                 (abs(bmax - float(lbmax[area])) < _EPSILON) and
                 (abs(value - float(lval[area])) < _EPSILON)) :
                 create = False
-                
+
             if (((bmin > float(lbmin[area])) and (bmin < float(lbmax[area]))) or
                 ((bmax > float(lbmin[area])) and (bmax < float(lbmax[area])))) :
                 create = False
@@ -629,7 +631,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
             new_label = "Default"
 
         if areatype == 'line' :
-            step = self.lineStep 
+            step = self.lineStep
         elif areatype == 'row' :
             step = self.rowStep
         elif areatype == 'height' :
@@ -641,7 +643,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
             bmin = float(sbmin)
             bmax = float(sbmax)
             value = float(svalue)
-                
+
             llabel, lbmin, lbmax, lval  = self.model.GetAreas(areatype)
 
             #
@@ -650,7 +652,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
 
             #
             # Type check
-            try : 
+            try :
                 fnew_bmin=float(new_bmin)
                 fnew_bmax=float(new_bmax)
                 fnew_value=float(new_value)
@@ -714,7 +716,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
 
                 #
                 # Type check
-                try : 
+                try :
                     fnew_value=float(new_value)
                 except :
                     if new_value != _MULTISEL :
@@ -733,7 +735,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
                         if ((label != new_label) or new_value == _MULTISEL or
                             (abs(value - fnew_value) >= _EPSILON)) :
 
-                            if (new_label == _MULTISEL) and (new_value != _MULTISEL): 
+                            if (new_label == _MULTISEL) and (new_value != _MULTISEL):
                                 self.model.SetArea(areatype, area, None, None , None , new_value)
                                 #self.replaceHlist( h, entry, label, bmin, bmax, new_value, step)
 
@@ -751,10 +753,10 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
 
     def __deleteRowThermal(self, label, sbmin, sbmax, svalue, areatype):
         """
-        Delete row : test for Thermal 
+        Delete row : test for Thermal
         """
         log.debug("__deleteRowThermal")
-        
+
         llabel, lbmin, lbmax, lval  = self.model.GetAreas(areatype)
         cancel = False
         for area in range(0,len(llabel)) :
@@ -766,7 +768,7 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
                 cancel = True
 
         return cancel
-                
+
 #-------------------------------------------------------------------------------
 # Main class
 #-------------------------------------------------------------------------------
@@ -774,8 +776,8 @@ class StandardItemModelMatisseCustom(QStandardItemModel):
 class MatisseCustomView(QWidget, Ui_MatisseCustomForm):
     """
     """
-    
-    def __init__(self, *args): 
+
+    def __init__(self, *args):
         """
         Constructor
         """
@@ -784,7 +786,7 @@ class MatisseCustomView(QWidget, Ui_MatisseCustomForm):
         self.setupUi(self)
 
 
-    def initWidget(self, case, tagName): 
+    def initWidget(self, case, tagName):
         """
         Method to initialize the widget.
         Must be explicitly called.
@@ -792,7 +794,7 @@ class MatisseCustomView(QWidget, Ui_MatisseCustomForm):
         self.case = case
         self.tagName = tagName
         self._createWidgets()
-        
+
 
     def getLabel(self):
         """
@@ -842,11 +844,11 @@ class MatisseCustomView(QWidget, Ui_MatisseCustomForm):
         selectionModel = self.tableView.selectionModel()
         for index in selectionModel.selectedRows():
             tab_rows.append(index.row())
-            nrows = nrows + 1 
+            nrows = nrows + 1
         log.debug("modifyItem nrows = %i tab_rows = %s "%(nrows, str(tab_rows)))
         for row in tab_rows:
             self.modelMatisseCustom.editRow(row, new_label, new_bmin, new_bmax, new_value)
-        
+
 
     def cancelItem(self):
         nrows = 0
@@ -854,7 +856,7 @@ class MatisseCustomView(QWidget, Ui_MatisseCustomForm):
         selectionModel = self.tableView.selectionModel()
         for index in selectionModel.selectedRows():
             tab_rows.append(index.row())
-            nrows = nrows + 1 
+            nrows = nrows + 1
         log.debug("cancelItem nrows = %i tab_rows = %s "%(nrows, str(tab_rows)))
         for row in tab_rows:
             self.modelMatisseCustom.deleteRow(row)
@@ -878,26 +880,26 @@ class MatisseCustomView(QWidget, Ui_MatisseCustomForm):
         self.labelMax.setText(QString(dico['max']))
         self.labelValue.hide()
         self.lineEditValue.hide()
-       
+
         if 'value' in dico.keys():
             self.labelValue.setText(QString(dico['value']))
             self.labelValue.show()
             self.lineEditValue.show()
-            
+
         # Set model for tableView
-        self.modelMatisseCustom = StandardItemModelMatisseCustom(self, self.case, self.tagName, dico) 
+        self.modelMatisseCustom = StandardItemModelMatisseCustom(self, self.case, self.tagName, dico)
         self.tableView.setModel(self.modelMatisseCustom)
         self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows)
         self.tableView.setSelectionMode(QAbstractItemView.ExtendedSelection)
-    
+
         # Connections
         self.connect(self.pushButtonNew,    SIGNAL("clicked()"), self.createItem)
         self.connect(self.pushButtonModify, SIGNAL("clicked()"), self.modifyItem)
         self.connect(self.pushButtonDelete, SIGNAL("clicked()"), self.cancelItem)
 
-        # validators 
+        # validators
         regExp = QRegExp("[_A-Za-z0-9]*") # QRegExp("^all[ ]*$|^[0-9\ ]*$")
-        validatorLabel = QRegExpValidator(regExp, self.lineEditLabel) 
+        validatorLabel = QRegExpValidator(regExp, self.lineEditLabel)
         self.lineEditLabel.setValidator(validatorLabel)
 
         validatorFloat = QtPage.DoubleValidator(self.lineEditMin)
@@ -910,8 +912,8 @@ class MatisseCustomView(QWidget, Ui_MatisseCustomForm):
         """
         Translation
         """
-        return text 
-        
+        return text
+
 
     def __initDico(self):
         """
@@ -964,9 +966,9 @@ class MatisseCustomView(QWidget, Ui_MatisseCustomForm):
         dico_custom['thermal_line']        = line
         dico_custom['thermal_height']      = height
         dico_custom['thermal_row']         = row
-        
+
         self.dico_custom = dico_custom
-        
+
 #-------------------------------------------------------------------------------
 # Testing part
 #-------------------------------------------------------------------------------
@@ -976,4 +978,4 @@ if __name__ == "__main__":
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/MatisseGeomModel.py b/gui/Pages/MatisseGeomModel.py
index 689a75e..55bd514 100644
--- a/gui/Pages/MatisseGeomModel.py
+++ b/gui/Pages/MatisseGeomModel.py
@@ -133,7 +133,7 @@ class MatisseGeomModel:
             print tag + ": unknown parameter"
             sys.exit(1)
         self.updateMeshAndProbes()
-                
+
 
     def getMatisseGeomIntVar(self,tag):
         """
@@ -151,7 +151,7 @@ class MatisseGeomModel:
                 self.node_geom_mesh.xmlInitChildNode(tag)
             elif tag in self.compute_geom_vars :
                 self.node_geom_compute.xmlInitChildNode(tag)
-                
+
             val = self.defaultMatisseGeomValues()[tag]
             self.setMatisseGeomVar(tag, val)
 
@@ -174,7 +174,7 @@ class MatisseGeomModel:
                 self.node_geom_mesh.xmlInitChildNode(tag)
             elif tag in self.compute_geom_vars :
                 self.node_geom_compute.xmlInitChildNode(tag)
-                
+
             val = self.defaultMatisseGeomValues()[tag]
             self.setMatisseGeomVar(tag, val)
 
@@ -259,7 +259,7 @@ class MatisseGeomModel:
                 geomFile.write(newLine)
             else:
                 break
-            
+
         #
         # update node <solution_domain> in XML file
         node_preprocessor  = self.case.root().xmlGetNode('solution_domain')
diff --git a/gui/Pages/MatisseGeomView.py b/gui/Pages/MatisseGeomView.py
index c6b43a1..34e3ef0 100644
--- a/gui/Pages/MatisseGeomView.py
+++ b/gui/Pages/MatisseGeomView.py
@@ -64,7 +64,7 @@ log = logging.getLogger("MatisseGeomView")
 log.setLevel(GuiParam.DEBUG)
 
 #-------------------------------------------------------------------------------
-# Line edit delegates 
+# Line edit delegates
 #-------------------------------------------------------------------------------
 
 class LineEditDelegateInt(QItemDelegate):
@@ -80,7 +80,7 @@ class LineEditDelegateInt(QItemDelegate):
         editor.setValidator(validator)
         #editor.installEventFilter(self)
         return editor
-    
+
     def setEditorData(self, lineEdit, index):
         value = index.model().data(index, Qt.DisplayRole).toString()
         lineEdit.setText(value)
@@ -103,7 +103,7 @@ class LineEditDelegateFloat(QItemDelegate):
         editor.setValidator(validator)
         #editor.installEventFilter(self)
         return editor
-    
+
     def setEditorData(self, lineEdit, index):
         value = index.model().data(index, Qt.DisplayRole).toString()
         lineEdit.setText(value)
@@ -127,14 +127,14 @@ class StandardItemModelGeom(QStandardItemModel):
         self.case = case
         self.model = MatisseGeomModel(self.case)
         self.model_mat_type = MatisseType.MatisseTypeModel(self.case)
-        
+
         self.setColumnCount(4)
         self._initData()
 
-        
+
     def _initData(self):
 
-        # Int 
+        # Int
         self.nechrg = 0
         self.nergrs = 0
         self.neclrg = 0
@@ -164,7 +164,7 @@ class StandardItemModelGeom(QStandardItemModel):
         self.plgres = 0.
         self.epchel = 0.
         self.dmcont = 0.
-        
+
         self.texts = {}
         self.texts['jeuchr'] = (6 , self.tr("Upstream space between chimney/register"), "m")
         self.texts['nechrg'] = (7 , self.tr("Number of cells between chimney/upstream register"))
@@ -199,9 +199,9 @@ class StandardItemModelGeom(QStandardItemModel):
             ['epregi', self.epregi, 'double'],
             ['epchem', self.epchem, 'double'],
             ['jeuchr', self.jeuchr, 'double'],
-            ['nechrg', self.nechrg, 'int'],                             
+            ['nechrg', self.nechrg, 'int'],
             ['jeurcl', self.jeurcl, 'double'],
-            ['nergrs', self.nergrs, 'int'],                             
+            ['nergrs', self.nergrs, 'int'],
             ['jeuclr', self.jeuclr, 'double'],
             ['neclrg', self.neclrg, 'int'],
             ['jeurch', self.jeurch, 'double'],
@@ -225,14 +225,14 @@ class StandardItemModelGeom(QStandardItemModel):
             ['dmcont', self.dmcont, 'double']
             ]
 
-        
-        self.rows_disabled = [] 
+
+        self.rows_disabled = []
 
         i = 0
         for variable in self.variables:
             if variable[2] == 'double':
                 val = self.model.getMatisseGeomDoubleVar(variable[0])
-            elif variable[2] == 'int':    
+            elif variable[2] == 'int':
                 val = self.model.getMatisseGeomIntVar(variable[0])
             else :
                 print variable[2]+": unknown type"
@@ -241,7 +241,7 @@ class StandardItemModelGeom(QStandardItemModel):
             var = val
             self.variables[i][1] = var
 
-            t = self.model_mat_type.getMatisseType()               
+            t = self.model_mat_type.getMatisseType()
             if variable[0] in ('hfttoi', 'hbdtoi', 'neciel') :
                 if (t == 'vault') or (t == 'djw'):
                     if not i in self.rows_disabled:
@@ -256,7 +256,7 @@ class StandardItemModelGeom(QStandardItemModel):
 
         self.setRowCount(len(self.variables))
 
-        
+
     def data(self, index, role):
         if not index.isValid():
             return QVariant()
@@ -264,7 +264,7 @@ class StandardItemModelGeom(QStandardItemModel):
         if role == Qt.DisplayRole:
             row = index.row()
             var = self.variables[row][0]
-            
+
             if index.column() == 0:
                 num = self.texts[var][0]
                 return QVariant(num)
@@ -297,7 +297,7 @@ class StandardItemModelGeom(QStandardItemModel):
         else:
             return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable
 
-    
+
     #def setData(self, index, value, role):
     def setData(self, index, value):
         row = index.row()
@@ -327,7 +327,7 @@ class StandardItemModelGeom(QStandardItemModel):
 class MatisseGeomView(QWidget, Ui_MatisseGeomForm):
     """
     """
-    
+
     def __init__(self, parent, case):
         """
         Constructor
@@ -336,9 +336,9 @@ class MatisseGeomView(QWidget, Ui_MatisseGeomForm):
 
         Ui_MatisseGeomForm.__init__(self)
         self.setupUi(self)
-        
+
         self.case = case
-        
+
         # Create the Page layout.
 
         self.modelGeom = StandardItemModelGeom(self.case)
@@ -354,7 +354,7 @@ class MatisseGeomView(QWidget, Ui_MatisseGeomForm):
         delegateFloat = LineEditDelegateFloat(self.tableView)
         self.tableView.setItemDelegateForColumn(2,delegateFloat)
 
-        # ... then define an int delegate for certain rows! 
+        # ... then define an int delegate for certain rows!
         delegateInt = LineEditDelegateInt(self.tableView)
         self.tableView.setItemDelegateForRow(3,delegateInt)
         self.tableView.setItemDelegateForRow(5,delegateInt)
@@ -366,14 +366,14 @@ class MatisseGeomView(QWidget, Ui_MatisseGeomForm):
         self.tableView.setItemDelegateForRow(22,delegateInt)
         self.tableView.setItemDelegateForRow(23,delegateInt)
         self.tableView.setItemDelegateForRow(25,delegateInt)
-        
-        
+
+
     def tr(self, text):
         """
         Translation
         """
-        return text 
-        
+        return text
+
 
 #-------------------------------------------------------------------------------
 # Testing part
diff --git a/gui/Pages/MatisseHydrauModel.py b/gui/Pages/MatisseHydrauModel.py
index 45efc87..5eabc0d 100644
--- a/gui/Pages/MatisseHydrauModel.py
+++ b/gui/Pages/MatisseHydrauModel.py
@@ -68,7 +68,7 @@ class MatisseHydrauModel:
 
         self.node_cofor         = self.node_phymodel.xmlInitChildNode('icofor','status')
         self.node_conlg         = self.node_phymodel.xmlInitChildNode('iconlg','status')
-        
+
         self.status = ('on', 'off')
 
 
@@ -102,7 +102,7 @@ class MatisseHydrauModel:
         default['amppdc'] = 1.
         default['dhalve'] = 0.13
         default['dpvent'] = 0.
-        
+
         return default
 
 
@@ -140,7 +140,7 @@ class MatisseHydrauModel:
         Return constrained convection status
         """
         stat = self.node_cofor['status']
-            
+
         if stat not in self.status :
             stat = self.defaultMatisseHydrauValues()['icofor']
             self.setConstrainedConvStatus(stat)
@@ -162,7 +162,7 @@ class MatisseHydrauModel:
         Return containers network in line status
         """
         stat = self.node_conlg['status']
-            
+
         if stat not in self.status :
             stat = self.defaultMatisseHydrauValues()['iconlg']
             self.setInlineContainerNetworkStatus(stat)
@@ -197,9 +197,9 @@ class MatisseHydrauModelTestCase(unittest.TestCase):
         model = None
         model = MatisseHydrauModel(self.case)
         assert model != None, 'Could not instantiate MatisseHydrauModel'
-        
-        
-        
+
+
+
 def suite():
     testSuite = unittest.makeSuite(MatisseHydrauModelTestCase, "check")
     return testSuite
diff --git a/gui/Pages/MatisseHydrauView.py b/gui/Pages/MatisseHydrauView.py
index 4080db0..83ec5d9 100644
--- a/gui/Pages/MatisseHydrauView.py
+++ b/gui/Pages/MatisseHydrauView.py
@@ -77,11 +77,11 @@ class StandardItemModelHydrau(QStandardItemModel):
         self.case = case
         self.model = MatisseHydrauModel(self.case)
         self.model_mat_type = MatisseType.MatisseTypeModel(self.case)
-        
+
         self.setColumnCount(4)
         self._initData()
 
-        
+
     def _initData(self):
 
         # String Var
@@ -90,7 +90,7 @@ class StandardItemModelHydrau(QStandardItemModel):
 
         #
         # Double Var
-        self.debmas = 0. 
+        self.debmas = 0.
         self.pdccha = 0.
         self.pdcfch = 0.
         self.dhchea = 0.
@@ -155,13 +155,13 @@ class StandardItemModelHydrau(QStandardItemModel):
         self.texts['dhalve'] = (23, self.tr("Double jacketed wells hydraulic diameter"), "m")
         self.texts['dpvent'] = (24, self.tr("Inlet/outlet atmospheric pressure difference"), "Pa")
 
-        self.rows_disabled = [] 
+        self.rows_disabled = []
 
         stat = self.model.getConstrainedConvStatus()
         self.icofor = stat
         if not 2 in self.rows_disabled and stat == "off":
             self.rows_disabled.append(2)
-        
+
         stat = self.model.getInlineContainerNetworkStatus()
         self.iconlg = stat
 
@@ -181,13 +181,13 @@ class StandardItemModelHydrau(QStandardItemModel):
 
 
     def data(self, index, role):
-        
+
         if not index.isValid():
             return QVariant()
 
         if role == Qt.DisplayRole:
             row = index.row()
-            
+
             if index.column() == 0:
                 var = self.variables[row][0]
                 num = self.texts[var][0]
@@ -240,7 +240,7 @@ class StandardItemModelHydrau(QStandardItemModel):
         else:
             return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable
 
-    
+
     def setData(self, index, value, role):
 
         if index.column() == 2:
@@ -264,13 +264,13 @@ class StandardItemModelHydrau(QStandardItemModel):
                 else:
                     self.iconlg = "on"
                 self.model.setInlineContainerNetworkStatus(self.iconlg)
-                
+
             else:
                 tag = self.variables[index.row()][0]
                 num = self.texts[tag][0]
                 var = self.variables[index.row()][1]
                 v, ok = value.toDouble()
-                var = v 
+                var = v
                 self.model.setMatisseHydrauVar(num, v) # ???
 
         self.emit(SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"), index, index)
@@ -284,7 +284,7 @@ class StandardItemModelHydrau(QStandardItemModel):
 class MatisseHydrauView(QWidget, Ui_MatisseHydrauForm):
     """
     """
-    
+
     def __init__(self, parent, case):
         """
         Constructor
@@ -293,9 +293,9 @@ class MatisseHydrauView(QWidget, Ui_MatisseHydrauForm):
 
         Ui_MatisseHydrauForm.__init__(self)
         self.setupUi(self)
-        
+
         self.case = case
-        
+
 
         # Create the Page layout.
 
@@ -304,14 +304,14 @@ class MatisseHydrauView(QWidget, Ui_MatisseHydrauForm):
         self.tableView.setAlternatingRowColors(True)
         self.tableView.resizeColumnsToContents()
         self.tableView.setShowGrid(False)
-    
+
 
     def tr(self, text):
         """
         Translation
         """
-        return text 
-        
+        return text
+
 
 #-------------------------------------------------------------------------------
 # Testing part
diff --git a/gui/Pages/MatisseModel.py b/gui/Pages/MatisseModel.py
index 2aec877..4074b30 100644
--- a/gui/Pages/MatisseModel.py
+++ b/gui/Pages/MatisseModel.py
@@ -75,7 +75,7 @@ class MatisseInit :
 
         #
         # save old geom files
-        geomvault = self.case['mesh_path'] +'/vault.geom' 
+        geomvault = self.case['mesh_path'] +'/vault.geom'
         geomemm = self.case['mesh_path'] +'/emm.geom'
         try:
             shutil.copyfile(geomvault,geomvault+'~')
@@ -84,13 +84,13 @@ class MatisseInit :
                 shutil.copyfile(geomemm,geomemm+'~')
             except:
                 pass
-        
+
         #
         # turbulence
         import Pages.TurbulenceModel as Turbulence
         Turbulence.TurbulenceModel(self.case).setTurbulenceModel("off")
         del Turbulence
-        
+
         #
         # gravity
         model_bodyForce = BodyForcesModel.BodyForcesModel(self.case)
@@ -136,9 +136,9 @@ class MatisseInit :
 
         temp.node_user_sca.xmlRemoveChild('initial_value')
         temp.node_user_sca.xmlRemoveChild('variance')
-        
+
         del DefineUserScalars
-        
+
         #
         # properties density , thermal_conductivity, molecular_viscosity
         import Pages.FluidCharacteristicsModel as FluidCharacteristics
@@ -215,14 +215,14 @@ class MatisseMeshRunning :
         self.case = case
         self.ok = True
         #
-        # update node <solution_domain> in XML file 
+        # update node <solution_domain> in XML file
         node_preprocessor  = self.case.root().xmlGetNode('solution_domain')
         node_meshes_list= node_preprocessor.xmlInitChildNode('meshes_list')
         mesh_nodes      = node_meshes_list.xmlGetNodeList('mesh', 'name')
 
         if len(mesh_nodes) == 1:
             try:
-                desFile = mesh_nodes[0]['name'] 
+                desFile = mesh_nodes[0]['name']
                 geomFile = desFile.split(".")[0]+'.geom'
                 datFile = desFile.split(".")[0]+'.dat'
             except:
@@ -233,7 +233,7 @@ class MatisseMeshRunning :
             # Files
             newGeom = self.case['mesh_path'] + '/' + geomFile
             oldGeom = self.case['mesh_path'] + '/' + geomFile + '~'
-            
+
             oldDes = self.case['mesh_path']  + '/' + desFile
             datFile = self.case['mesh_path'] + '/' + datFile
 
@@ -244,7 +244,7 @@ class MatisseMeshRunning :
                not os.path.isfile(datFile) or \
                not os.path.isfile(oldDes)  :
 
-                import Pages.MatisseGeomModel as MatisseGeom 
+                import Pages.MatisseGeomModel as MatisseGeom
                 MatisseGeom.MatisseGeomModel(self.case).updateMeshAndProbes()
                 del MatisseGeom
                 simail = True
@@ -252,7 +252,7 @@ class MatisseMeshRunning :
             else :
                 if not os.path.isfile(oldGeom) :
                     simail = True
-                else:    
+                else:
                     if not filecmp.cmp(oldGeom, newGeom):
                         simail = True
 
@@ -269,7 +269,7 @@ class MatisseMeshRunning :
                 os.chdir(self.case['case_path'])
                 if not os.path.isfile(newDes)  :
                     self.ok = False
-            
+
         else :
             print "MatisseMeshRunning: see meshes_list"
             sys.exit(1)
@@ -288,7 +288,7 @@ class PageText:
         else:
             self.NO_VARIANCE = "no"
 
-            
+
 #-------------------------------------------------------------------------------
 # Matisse Init test class
 #-------------------------------------------------------------------------------
@@ -368,7 +368,6 @@ def runTest():
     runner.run(suite1())
 
     print "MatisseThermUpdateTestCase: - A FAIRE************"
-    runner.run(suite2())        
-        
+    runner.run(suite2())
+
 
-        
\ No newline at end of file
diff --git a/gui/Pages/MatisseNetworkModel.py b/gui/Pages/MatisseNetworkModel.py
index 4d999d0..85b5c27 100644
--- a/gui/Pages/MatisseNetworkModel.py
+++ b/gui/Pages/MatisseNetworkModel.py
@@ -72,8 +72,8 @@ class MatisseNetworkModel:
         self.node_line          = self.node_network.xmlInitChildNode('line')
         self.node_row           = self.node_network.xmlInitChildNode('row')
 
-        self.list_line_area     = self.node_line.xmlGetNodeList('area','label') 
-        self.list_row_area      = self.node_row.xmlGetNodeList('area','label') 
+        self.list_line_area     = self.node_line.xmlGetNodeList('area','label')
+        self.list_row_area      = self.node_row.xmlGetNodeList('area','label')
 
 
     def defaultMatisseNetworkValues(self):
@@ -87,7 +87,7 @@ class MatisseNetworkModel:
         modelgeom = MatisseGeom.MatisseGeomModel(self.case)
         hreso = modelgeom.getMatisseGeomDoubleVar('nchest')
         step = modelgeom.getMatisseGeomDoubleVar('epchel')
-        
+
         default['nbcellreso'] = hreso
         default['nbcellplen'] = 0.
         default['hreso'] = hreso*step
@@ -125,7 +125,7 @@ class MatisseNetworkModel:
         else :
             print areatype + ": Unknown area type"
             sys.exit(1)
-            
+
         node.xmlAddChild('min').xmlSetTextNode(bmin)
         node.xmlAddChild('max').xmlSetTextNode(bmax)
 
@@ -185,7 +185,7 @@ class MatisseNetworkModel:
 
         return llabel, lbmin, lbmax
 
-        
+
     def EraseArea(self, areatype, num):
         """
         Remove Area.
@@ -220,7 +220,7 @@ class MatisseNetworkModel:
             tagtmp = tag
         val = self.node_phymodel.xmlGetDouble(tagtmp)
 
-        if val == "" or val == None: 
+        if val == "" or val == None:
             self.node_phymodel.xmlInitChildNode(tagtmp)
             val = self.defaultMatisseNetworkValues()[tagtmp]
             self.setMatisseNetworkVar(tag, val)
@@ -257,7 +257,7 @@ class MatisseNetworkModelTestCase(unittest.TestCase):
         model = None
         model = MatisseNetworkModel(self.case)
         assert model != None, 'Could not instantiate MatisseNetworkModel'
-        
+
 def suite():
     testSuite = unittest.makeSuite(MatisseNetworkModelTestCase, "check")
     return testSuite
diff --git a/gui/Pages/MatisseNetworkView.py b/gui/Pages/MatisseNetworkView.py
index 9f00238..1541c38 100644
--- a/gui/Pages/MatisseNetworkView.py
+++ b/gui/Pages/MatisseNetworkView.py
@@ -71,7 +71,7 @@ log.setLevel(GuiParam.DEBUG)
 class MatisseNetworkView(QWidget, Ui_MatisseNetworkForm):
     """
     """
-    
+
     def __init__(self, parent, case):
         """
         Constructor
@@ -80,7 +80,7 @@ class MatisseNetworkView(QWidget, Ui_MatisseNetworkForm):
 
         Ui_MatisseNetworkForm.__init__(self)
         self.setupUi(self)
-        
+
         self.case = case
 
         self.model = MatisseNetworkModel(self.case)
@@ -94,7 +94,7 @@ class MatisseNetworkView(QWidget, Ui_MatisseNetworkForm):
 ##         self.heightMax = model_geom.getMatisseGeomDoubleVar('nchest')
 
         model_mat_type = MatisseType.MatisseTypeModel(self.case)
-        self.alveoStat = model_mat_type.node_alveo['status']               
+        self.alveoStat = model_mat_type.node_alveo['status']
 
 
         # Create the Page layout.
@@ -134,14 +134,14 @@ class MatisseNetworkView(QWidget, Ui_MatisseNetworkForm):
             invStat = 'off'
 
         self.nbcellreso1 = self.model.getMatisseNetworkDoubleVar('nbcellreso1')
-        self.nbcellreso2 = self.model.getMatisseNetworkDoubleVar('nbcellreso2')       
+        self.nbcellreso2 = self.model.getMatisseNetworkDoubleVar('nbcellreso2')
         self.nbcellplen  = self.model.getMatisseNetworkDoubleVar('nbcellplen')
 
         self.lineEdit_hreso1.setText(QString(str(self.nbcellreso1)))
         self.lineEdit_hreso2.setText(QString(str(self.nbcellreso2)))
         self.lineEdit_hplen.setText(QString(str(self.nbcellplen)))
 
-        self.hreso1 = self.heightStep * self.nbcellreso1 
+        self.hreso1 = self.heightStep * self.nbcellreso1
         self.hreso2 = self.heightStep * self.nbcellreso2
         self.hplen  = self.heightStep * self.nbcellplen
 
@@ -160,12 +160,12 @@ class MatisseNetworkView(QWidget, Ui_MatisseNetworkForm):
         if self.alveoStat == "off":
             self.lineEdit_hreso2.setDisabled(True)
             self.lineEdit_hplen.setDisabled(True)
-            
+
 
         self.lineEdit2_1.setDisabled(True)
         self.lineEdit2_2.setDisabled(True)
         self.lineEdit2_3.setDisabled(True)
-    
+
 
     def getMatisseNetworkVar_hreso1(self):
         """
@@ -201,8 +201,8 @@ class MatisseNetworkView(QWidget, Ui_MatisseNetworkForm):
         """
         Translation
         """
-        return text 
-        
+        return text
+
 
 #-------------------------------------------------------------------------------
 # Testing part
diff --git a/gui/Pages/MatisseRangeDescriptionModel.py b/gui/Pages/MatisseRangeDescriptionModel.py
index a4d25a6..53a26d2 100644
--- a/gui/Pages/MatisseRangeDescriptionModel.py
+++ b/gui/Pages/MatisseRangeDescriptionModel.py
@@ -67,7 +67,7 @@ class MatisseRangeDescriptionModel :
         self.case               = case
         self.node_matisse       = self.case.root().xmlInitChildNode('matisse')
         self.node_compute       = self.node_matisse.xmlInitChildNode('compute')
-        
+
         #
         # Vars Filters
         self.node_map           = self.node_compute.xmlInitChildNode('map')
@@ -76,8 +76,8 @@ class MatisseRangeDescriptionModel :
         self.node_line          = self.node_range.xmlInitChildNode('line')
         self.node_height        = self.node_range.xmlInitChildNode('height')
 
-        self.list_line_area     = self.node_line.xmlGetNodeList('area','label') 
-        self.list_height_area   = self.node_height.xmlGetNodeList('area','label') 
+        self.list_line_area     = self.node_line.xmlGetNodeList('area','label')
+        self.list_height_area   = self.node_height.xmlGetNodeList('area','label')
 
 
     def SetArea(self, areatype, num, label, bmin, bmax):
@@ -109,7 +109,7 @@ class MatisseRangeDescriptionModel :
         else :
             print areatype + " : Unknown area type"
             sys.exit(1)
-            
+
         node.xmlAddChild('min').xmlSetTextNode(bmin)
         node.xmlAddChild('max').xmlSetTextNode(bmax)
 
@@ -165,7 +165,7 @@ class MatisseRangeDescriptionModel :
 
         return llabel, lbmin, lbmax
 
-        
+
     def EraseArea(self, areatype, num):
         """
         Remove Area.
@@ -213,7 +213,7 @@ class MatisseRangeDescriptionModelTestCase(unittest.TestCase):
         model = MatisseRangeDescriptionModel(self.case, 'inlet_range')
         assert model != None, 'Could not instantiate MatisseRangeDescriptionModel'
 
-        
+
 def suite():
     testSuite = unittest.makeSuite(MatisseRangeDescriptionModelTestCase, "check")
     return testSuite
diff --git a/gui/Pages/MatisseRangeDescriptionView.py b/gui/Pages/MatisseRangeDescriptionView.py
index 369591b..98f4b41 100644
--- a/gui/Pages/MatisseRangeDescriptionView.py
+++ b/gui/Pages/MatisseRangeDescriptionView.py
@@ -79,7 +79,7 @@ class MatisseRangeDescriptionView(QWidget, Ui_MatisseRangeDescriptionForm):
 
         Ui_MatisseRangeDescriptionForm.__init__(self)
         self.setupUi(self)
-        
+
         self.rangeType = rangeType
         self.case = case
 
@@ -90,14 +90,14 @@ class MatisseRangeDescriptionView(QWidget, Ui_MatisseRangeDescriptionForm):
         if self.rangeType == "outlet_range":
             self.widgetLine.initWidget(self.case, "outlet_range_line")
             self.widgetHeight.initWidget(self.case, "outlet_range_height")
-    
+
 
     def tr(self, text):
         """
         Translation
         """
-        return text 
-        
+        return text
+
 #-------------------------------------------------------------------------------
 # Testing part
 #-------------------------------------------------------------------------------
diff --git a/gui/Pages/MatisseThermicModel.py b/gui/Pages/MatisseThermicModel.py
index 8b5deb0..1edd216 100644
--- a/gui/Pages/MatisseThermicModel.py
+++ b/gui/Pages/MatisseThermicModel.py
@@ -47,7 +47,7 @@ import sys, unittest
 
 from Base.Common import *
 import Base.Toolbox as Tool
-import Pages.MatisseTypeModel as MatisseType 
+import Pages.MatisseTypeModel as MatisseType
 import Pages.MatisseGeomModel as MatisseGeom
 
 #-------------------------------------------------------------------------------
@@ -68,7 +68,7 @@ class MatisseThermicModel:
         self.node_phymodel      = self.node_compute.xmlInitChildNode('physical_model')
 
         self.node_mdcnt         = self.node_phymodel.xmlInitChildNode('imdcnt','status')
-        
+
         self.status = ('on',
                        'off')
 
@@ -80,17 +80,17 @@ class MatisseThermicModel:
         self.node_row           = self.node_th_cp.xmlInitChildNode('row')
         self.node_height        = self.node_th_cp.xmlInitChildNode('height')
 
-        self.list_line_area     = self.node_line.xmlGetNodeList('area','label') 
+        self.list_line_area     = self.node_line.xmlGetNodeList('area','label')
         self.list_line_min      = self.node_line.xmlGetNodeList('min')
         self.list_line_max      = self.node_line.xmlGetNodeList('max')
         self.list_line_value    = self.node_line.xmlGetNodeList('value')
 
-        self.list_row_area      = self.node_row.xmlGetNodeList('area','label') 
+        self.list_row_area      = self.node_row.xmlGetNodeList('area','label')
         self.list_row_min       = self.node_row.xmlGetNodeList('min')
         self.list_row_max       = self.node_row.xmlGetNodeList('max')
         self.list_row_value     = self.node_row.xmlGetNodeList('value')
 
-        self.list_height_area   = self.node_height.xmlGetNodeList('area','label') 
+        self.list_height_area   = self.node_height.xmlGetNodeList('area','label')
         self.list_height_min    = self.node_height.xmlGetNodeList('min')
         self.list_height_max    = self.node_height.xmlGetNodeList('max')
         self.list_height_value  = self.node_height.xmlGetNodeList('value')
@@ -115,7 +115,7 @@ class MatisseThermicModel:
         default['emimur'] = 0.8
         default['hepcnt'] = 6.
         default['dhpcnt'] = 0.
-        
+
         #
         # Vars Filters
         default['maplabel'] = 'default'
@@ -197,7 +197,7 @@ class MatisseThermicModel:
             nval.xmlSetTextNode(val)
         else:
             nval.xmlSetTextNode(dval)
-            
+
         if areatype == 'line' :
             self.list_line_area.append(node)
         elif areatype == 'row' :
@@ -212,14 +212,14 @@ class MatisseThermicModel:
     def DefaultArea(self,areatype):
         """
         Return default values of a area
-        """ 
+        """
         modelgeom = MatisseGeom.MatisseGeomModel(self.case)
         dlabel = "default"
         dmin = 0
         dval = 1.0
-        
+
         if areatype == 'line' :
-            dmax = modelgeom.getMatisseGeomDoubleVar('nptran') 
+            dmax = modelgeom.getMatisseGeomDoubleVar('nptran')
         elif areatype == 'row' :
             dmax = modelgeom.getMatisseGeomDoubleVar('nplgrs')
         elif areatype == 'height' :
@@ -283,9 +283,9 @@ class MatisseThermicModel:
             lbmax.append(bmax)
             lval.append(val)
 
-        return llabel, lbmin, lbmax, lval 
+        return llabel, lbmin, lbmax, lval
+
 
-        
     def EraseArea(self, areatype, num):
         """
         Remove Area.
@@ -313,7 +313,7 @@ class MatisseThermicModel:
 
         tinit = None
         tcrit = None
-        
+
         if tag == 'tinit':
             tinit = val
         elif tag == 'tcrit':
@@ -322,7 +322,7 @@ class MatisseThermicModel:
         import Pages.MatisseModel as Matisse
         Matisse.MatisseThermUpdate(self.case,tinit,tcrit).compute()
         del Matisse
-        
+
 
     def getMatisseThermicDoubleVar(self,tag):
         """
@@ -352,7 +352,7 @@ class MatisseThermicModel:
         Return natural convection panache status
         """
         stat = self.node_mdcnt['status']
-            
+
         if stat not in self.status :
             stat = self.defaultMatisseThermicValues()['imdcnt']
             self.setNatConvPanacheStatus(stat)
@@ -389,7 +389,7 @@ class MatisseThermicModelTestCase(unittest.TestCase):
         model = MatisseThermicModel(self.case)
         assert model != None, 'Could not instantiate MatisseThermicModel'
 
-        
+
 def suite():
     testSuite = unittest.makeSuite(MatisseThermicModelTestCase, "check")
     return testSuite
diff --git a/gui/Pages/MatisseThermicView.py b/gui/Pages/MatisseThermicView.py
index d524d68..d7fd642 100644
--- a/gui/Pages/MatisseThermicView.py
+++ b/gui/Pages/MatisseThermicView.py
@@ -77,7 +77,7 @@ class StandardItemModelThermic(QStandardItemModel):
         self.setColumnCount(4)
         self.model = MatisseThermicModel(self.case)
         self._initData()
-        
+
 
     def _initData(self):
 
@@ -86,7 +86,7 @@ class StandardItemModelThermic(QStandardItemModel):
 
         # Double Var
         self.puicon = 0.
-        self.tinit  = 0. 
+        self.tinit  = 0.
         self.tcrit  = 0.
         self.emicon = 0.
         self.emimur = 0.
@@ -114,10 +114,10 @@ class StandardItemModelThermic(QStandardItemModel):
         self.texts['dhpcnt'] = (9, self.tr("Natural convection plume heat flowrate"), "W")
 
         self.rows_disabled = []
-        
+
         stat = self.model.getNatConvPanacheStatus()
         self.imdcnt = stat
-        
+
         if stat == "off":
             if not 5 in self.rows_disabled : self.rows_disabled.append(5)
             if not 6 in self.rows_disabled : self.rows_disabled.append(6)
@@ -127,7 +127,7 @@ class StandardItemModelThermic(QStandardItemModel):
             if variable[0] != 'imdcnt':
                 val = self.model.getMatisseThermicDoubleVar(variable[0])
                 self.variables[idx][1] = val
-            idx += 1    
+            idx += 1
 
         self.setRowCount(len(self.variables))
 
@@ -139,7 +139,7 @@ class StandardItemModelThermic(QStandardItemModel):
         if role == Qt.DisplayRole:
             row = index.row()
             var = self.variables[row][0]
-            
+
             if index.column() == 0:
                 num = self.texts[var][0]
                 return QVariant(num)
@@ -198,13 +198,13 @@ class StandardItemModelThermic(QStandardItemModel):
                     if 5 in self.rows_disabled : self.rows_disabled.remove(5)
                     if 6 in self.rows_disabled : self.rows_disabled.remove(6)
                 self.model.setNatConvPanacheStatus(self.imdcnt)
-            
+
             else:
                 tag = self.variables[row][0]
                 num = self.texts[tag][0]
                 var = self.variables[row][1]
                 v, ok = value.toDouble()
-                var = v 
+                var = v
                 self.model.setMatisseThermicVar(tag,var)
 
         self.emit(SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"), index, index)
@@ -219,7 +219,7 @@ class StandardItemModelThermic(QStandardItemModel):
 class MatisseThermicView(QWidget, Ui_MatisseThermicForm):
     """
     """
-    
+
     def __init__(self, parent, case):
         """
         Constructor
@@ -228,7 +228,7 @@ class MatisseThermicView(QWidget, Ui_MatisseThermicForm):
 
         Ui_MatisseThermicForm.__init__(self)
         self.setupUi(self)
-        
+
         self.case = case
 
         # Create the Page layout.
@@ -236,12 +236,12 @@ class MatisseThermicView(QWidget, Ui_MatisseThermicForm):
         self.modelThermic = StandardItemModelThermic(self.case)
         self.tableView.setModel(self.modelThermic)
         self.tableView.resizeColumnsToContents()
-        
+
         self.widgetLine.initWidget(self.case, "thermal_line")
         self.widgetRow.initWidget(self.case, "thermal_row")
         self.widgetHeight.initWidget(self.case, "thermal_height")
 
-        
+
 ##     def _initModel(self):
 ##         """
 ##         Instantiate the matisse type modelling class.
@@ -256,14 +256,14 @@ class MatisseThermicView(QWidget, Ui_MatisseThermicForm):
 ##         self.lineMax = model_geom.getMatisseGeomDoubleVar('nptran')
 ##         self.rowMax = model_geom.getMatisseGeomDoubleVar('nplgrs')
 ##         self.heightMax = model_geom.getMatisseGeomDoubleVar('nchest')
-        
+
 
     def tr(self, text):
         """
         Translation
         """
-        return text 
-        
+        return text
+
 
 #-------------------------------------------------------------------------------
 # Testing part
diff --git a/gui/Pages/MatisseTypeModel.py b/gui/Pages/MatisseTypeModel.py
index db4a594..df9f194 100644
--- a/gui/Pages/MatisseTypeModel.py
+++ b/gui/Pages/MatisseTypeModel.py
@@ -59,7 +59,7 @@ class MatisseTypeModel:
         self.node_compute= self.node_matisse.xmlInitChildNode('compute')
         self.node_geom   = self.node_compute.xmlInitChildNode('geometry')
         self.node_phys   = self.node_compute.xmlInitChildNode('physical_model')
-        
+
         self.node_type   = self.node_geom.xmlInitChildNode('typent', 'label')
         self.node_alveo  = self.node_phys.xmlInitChildNode('ialveo', 'status')
 
@@ -102,7 +102,7 @@ class MatisseTypeModel:
             matisse_type = 'djw'
         else :
             matisse_type = self.node_type['label']
-            
+
         if matisse_type not in self.matisseTypes :
             matisse_type = self.defaultMatisseTypeValues()['typent']
             self.setMatisseType(matisse_type)
diff --git a/gui/Pages/MatisseTypeView.py b/gui/Pages/MatisseTypeView.py
index d68291f..fba295f 100644
--- a/gui/Pages/MatisseTypeView.py
+++ b/gui/Pages/MatisseTypeView.py
@@ -77,7 +77,7 @@ class MatisseTypeView(QWidget, Ui_MatisseTypeForm):
 
         Ui_MatisseTypeForm.__init__(self)
         self.setupUi(self)
-        
+
         self.case = case
 
         self.model = MatisseTypeModel(self.case)
@@ -92,7 +92,7 @@ class MatisseTypeView(QWidget, Ui_MatisseTypeForm):
         self.connect(self.comboBoxType,
                      SIGNAL("activated(const QString&)"),
                      self.getMatisseType)
-   
+
         # initialize
 
         t = self.model.getMatisseType()
@@ -111,8 +111,8 @@ class MatisseTypeView(QWidget, Ui_MatisseTypeForm):
         """
         Translation
         """
-        return text 
-        
+        return text
+
 
 #-------------------------------------------------------------------------------
 # Testing part
diff --git a/gui/Pages/MemoryAllocationModel.py b/gui/Pages/MemoryAllocationModel.py
index 2a7ee64..6f8764e 100644
--- a/gui/Pages/MemoryAllocationModel.py
+++ b/gui/Pages/MemoryAllocationModel.py
@@ -88,7 +88,7 @@ class MemoryAllocationModel(Model):
     def setIntegerNcelet(self, value):
         """
         Set number of cells with halo into integer work's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_int.xmlSetData('ncelet', value)
 
@@ -96,7 +96,7 @@ class MemoryAllocationModel(Model):
     def setIntegerNfac(self, value):
         """
         Set number of internal faces into integer work's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_int.xmlSetData('nfac', value)
 
@@ -104,7 +104,7 @@ class MemoryAllocationModel(Model):
     def setIntegerNfabor(self, value):
         """
         Set number of boundary faces into integer work's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_int.xmlSetData('nfabor', value)
 
@@ -120,7 +120,7 @@ class MemoryAllocationModel(Model):
     def setRealNcelet(self, value):
         """
         Set number of cells with halo into real work's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_real.xmlSetData('ncelet', value)
 
@@ -128,7 +128,7 @@ class MemoryAllocationModel(Model):
     def setRealNfac(self, value):
         """
         Set number of internal faces into real work's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_real.xmlSetData('nfac', value)
 
@@ -136,7 +136,7 @@ class MemoryAllocationModel(Model):
     def setRealNfabor(self, value):
         """
         Set number of boundary faces into real work's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_real.xmlSetData('nfabor', value)
 
@@ -144,7 +144,7 @@ class MemoryAllocationModel(Model):
     def setRealDimless(self, value):
         """
         Set integer value into real work's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_real.xmlSetData('dimless', value)
 
@@ -152,7 +152,7 @@ class MemoryAllocationModel(Model):
     def getIntegerNcelet(self):
         """
         Return number of cells with halo from integer work's array.
-        """ 
+        """
         value = self.node_int.xmlGetInt('ncelet')
         if value == None:
             value = self.defaultValues()['icel']
@@ -163,7 +163,7 @@ class MemoryAllocationModel(Model):
     def getIntegerNfac(self):
         """
         Return number of cells with halo from integer work's array.
-        """ 
+        """
         value = self.node_int.xmlGetInt('nfac')
         if value == None:
             value = self.defaultValues()['ifac']
@@ -173,7 +173,7 @@ class MemoryAllocationModel(Model):
     def getIntegerNfabor(self):
         """
         Return number of cells with halo from integer work's array.
-        """ 
+        """
         value = self.node_int.xmlGetInt('nfabor')
         if value == None:
             value = self.defaultValues()['ifab']
@@ -183,7 +183,7 @@ class MemoryAllocationModel(Model):
     def getIntegerDimless(self):
         """
         Return number of cells with halo from integer work's array.
-        """ 
+        """
         value = self.node_int.xmlGetInt('dimless')
         if value == None:
             value = self.defaultValues()['idls']
@@ -193,7 +193,7 @@ class MemoryAllocationModel(Model):
     def getRealNcelet(self):
         """
         Return number of cells with halo from real work's array.
-        """ 
+        """
         value = self.node_real.xmlGetInt('ncelet')
         if value == None:
             value = self.defaultValues()['rcel']
@@ -203,7 +203,7 @@ class MemoryAllocationModel(Model):
     def getRealNfac(self):
         """
         Return number of cells with halo from real work's array.
-        """ 
+        """
         value = self.node_real.xmlGetInt('nfac')
         if value == None:
             value = self.defaultValues()['rfac']
@@ -213,7 +213,7 @@ class MemoryAllocationModel(Model):
     def getRealNfabor(self):
         """
         Return number of cells with halo from real work's array.
-        """ 
+        """
         value = self.node_real.xmlGetInt('nfabor')
         if value == None:
             value = self.defaultValues()['rfab']
@@ -223,7 +223,7 @@ class MemoryAllocationModel(Model):
     def getRealDimless(self):
         """
         Return number of cells with halo from real work's array.
-        """ 
+        """
         value = self.node_real.xmlGetInt('dimless')
         if value == None:
             value = self.defaultValues()['rdls']
@@ -326,7 +326,7 @@ class MemoryAllocationTestCase(ModelTest):
                 'Could not set real nfabor memory allocation model'
         assert mdl.getRealNfabor() == 977,\
                 'Could not get real nfabor memory allocation model'
-    
+
     def checkGetandSetRealDimless(self):
         """Check whether the real dimless memory allocation model could be set"""
         mdl = MemoryAllocationModel(self.case)
@@ -338,11 +338,11 @@ class MemoryAllocationTestCase(ModelTest):
                 'Could not set real dimless memory allocation model'
         assert mdl.getRealDimless() == 966,\
                 'Could not get real dimless memory allocation model'
-            
 
 
 
-        
+
+
 def suite():
     testSuite = unittest.makeSuite(MemoryAllocationTestCase, "check")
     return testSuite
diff --git a/gui/Pages/MemoryAllocationView.py b/gui/Pages/MemoryAllocationView.py
index 0abcd9c..a3f24b0 100644
--- a/gui/Pages/MemoryAllocationView.py
+++ b/gui/Pages/MemoryAllocationView.py
@@ -222,7 +222,7 @@ class MemoryAllocationView(QWidget, Ui_MemoryAllocationForm):
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # Testing part
diff --git a/gui/Pages/MobileMeshModel.py b/gui/Pages/MobileMeshModel.py
index 8789425..03a69e9 100644
--- a/gui/Pages/MobileMeshModel.py
+++ b/gui/Pages/MobileMeshModel.py
@@ -67,7 +67,7 @@ class MobileMeshModel(Model):
 
         self.node_models = self.case.xmlGetNode('thermophysical_models')
         self.node_ale    = self.node_models.xmlInitChildNode('ale_method', 'status')
-        
+
         self.out = OutputControlModel(self.case)
 
 
@@ -79,10 +79,10 @@ class MobileMeshModel(Model):
         default['nalinf' ]  = 0
         default['iortvm' ]  = 'isotrop'
         default['mei'    ]  = 'user_subroutine'
-        default['formula_isotrop']  = 'mesh_vi1=0;'
-        default['formula_orthotrop'] = 'mesh_vi1=0;\nmesh_vi2=0;\nmesh_vi3=0;'
+        default['formula_isotrop']  = 'mesh_vi1 = 1;'
+        default['formula_orthotrop'] = 'mesh_vi1 = 1;\nmesh_vi2 = 1;\nmesh_vi3 = 1;'
         default['ale_method']  = 'off'
-    
+
         return default
 
 
@@ -101,8 +101,8 @@ class MobileMeshModel(Model):
             node['choice'] = self.__defaultInitialValues()['mei']
 
         self.__updateNodeViscosity()
-        
-        
+
+
     def __updateNodeViscosity(self):
         """
         Update properties beyond mesh visosity is isotrope or not.
@@ -124,7 +124,7 @@ class MobileMeshModel(Model):
 
         else:
             node1 = self.node_ale.xmlGetChildNode('property', name='mesh_viscosity_2')
-            node2 = self.node_ale.xmlGetChildNode('property', name='mesh_viscosity_3') 
+            node2 = self.node_ale.xmlGetChildNode('property', name='mesh_viscosity_3')
 
             if node1:
                 node1.xmlRemoveNode()
@@ -154,7 +154,7 @@ class MobileMeshModel(Model):
 ##        else:
 ##            if typ not in ('0', '1', '2'):
 ##                typ = '0'
-##        self.out.setTypePostMeshes(typ) 
+##        self.out.setTypePostMeshes(typ)
 ##
 ##
 ##    def getMethod(self):
@@ -186,7 +186,7 @@ class MobileMeshModel(Model):
         self.isOnOff(status)
         typ = ''
         typ = self.out.getTypePostMeshes()
-        self.node_ale['status'] = status    
+        self.node_ale['status'] = status
         if status == 'on':
             if typ not in ('10', '11', '12'):
                 typ = '10'
@@ -201,7 +201,7 @@ class MobileMeshModel(Model):
     def setSubIterations(self, value):
         """
         Set value of fluid initialization sub iterations into xml file.
-        """ 
+        """
         self.isInt(value)
         self.isGreaterOrEqual(value, 0)
         self.node_ale.xmlSetData('fluid_initialization_sub_iterations', value)
@@ -210,7 +210,7 @@ class MobileMeshModel(Model):
     def getSubIterations(self):
         """
         Get value of fluid initialization sub iterations from xml file.
-        """ 
+        """
         nalinf = self.node_ale.xmlGetInt('fluid_initialization_sub_iterations')
         if not nalinf:
             nalinf = self.__defaultInitialValues()['nalinf']
@@ -221,7 +221,7 @@ class MobileMeshModel(Model):
     def setViscosity(self, value):
         """
         Set value of mesh viscosity into xml file.
-        """ 
+        """
         self.isInList(value, ['isotrop', 'orthotrop'])
         node = self.node_ale.xmlInitChildNode('mesh_viscosity')
         node['type'] = value
@@ -249,7 +249,7 @@ class MobileMeshModel(Model):
     def setMEI(self, value):
         """
         Set value of spatial distribution of the viscosity of the mesh.
-        """ 
+        """
         self.isInList(value, ['user_subroutine', 'user_function'] )
 
         # do something only if mei has changed
@@ -266,7 +266,7 @@ class MobileMeshModel(Model):
         """
         Get value of spatial distribution of the viscosity of the mesh.
         """
-        # Get the first node 
+        # Get the first node
         mei  = self.getMEIWithoutDefaultValue()
 
         if not mei:
@@ -280,7 +280,7 @@ class MobileMeshModel(Model):
         Get value of spatial distribution of the viscosity of the mesh.
         Return null if no value is set
         """
-        # Get the first node 
+        # Get the first node
         node = self.node_ale.xmlGetNode('property', label='mesh_vi1')
         mei  = None
 
@@ -292,7 +292,7 @@ class MobileMeshModel(Model):
     def setFormula(self, value):
         """
         Set the formula for the viscosity of mesh
-        """ 
+        """
         self.node_ale.xmlSetData('formula', value)
 
 
@@ -313,8 +313,8 @@ class MobileMeshModel(Model):
         """
         viscosity = self.getViscosity()
         return self.__defaultInitialValues()['formula_'+ viscosity ]
-    
-        
+
+
 #-------------------------------------------------------------------------------
 # MobileMesh Model test case
 #-------------------------------------------------------------------------------
@@ -328,7 +328,7 @@ class MobileMeshTestCase(ModelTest):
         model = None
         model = MobileMeshModel(self.case)
         assert model != None, 'Could not instantiate MobileMeshModel'
-        
+
     def checkGetandSetMethod(self):
         """Check whether the MobileMeshModel class could be set and get method"""
         mdl = MobileMeshModel(self.case)
@@ -350,7 +350,7 @@ class MobileMeshTestCase(ModelTest):
         mdl = MobileMeshModel(self.case)
         mdl.setMethod('on')
         mdl.setSubIterations(12)
-##        
+##
         doc = """<ale_method status="on">
                     <variable label="mesh_u" name="mesh_velocity_U"/>
                     <variable label="mesh_v" name="mesh_velocity_V"/>
diff --git a/gui/Pages/MobileMeshView.py b/gui/Pages/MobileMeshView.py
index 1fe8a1f..1dacb75 100644
--- a/gui/Pages/MobileMeshView.py
+++ b/gui/Pages/MobileMeshView.py
@@ -81,6 +81,50 @@ class MobileMeshView(QWidget, Ui_MobileMeshForm):
     """
     Class to open Page.
     """
+    viscosity_iso = """# Viscosity of the mesh allows to control the deformation
+# of the mesh. Viscosity must be greater than zero.
+# It could be isotropic (the same for all directions) or
+# orthotropic.
+#
+# In the following example, a hight value of viscosity
+# is imposed around a mobile cylinder.
+# The viscosity is specfied for all cells
+# on the initial mesh before any deformation.
+#
+xr2 = 1.5^2;
+xcen = 5.0;
+ycen = 0.;
+zcen = 6.0;
+xray2 = (x-xcen)^2 + (y-ycen)^2 + (z-zcen)^2;
+mesh_vi1 = 1;
+if (xray2 < xr2) mesh_vi1 = 1e10;
+"""
+
+    viscosity_ortho = """# Viscosity of the mesh allows to control the deformation
+# of the mesh. Viscosity must be greater than zero.
+# It could be isotropic (the same for all directions) or
+# orthotropic.
+#
+# In the following example, a hight value of viscosity
+# is imposed around a mobile cylinder.
+# The viscosity is specfied for all cells
+# on the initial mesh before any deformation.
+#
+xr2 = 1.5^2;
+xcen = 5.0;
+ycen = 0.;
+zcen = 6.0;
+xray2 = (x-xcen)^2 + (y-ycen)^2 + (z-zcen)^2;
+mesh_vi1 = 1;
+mesh_vi2 = 1;
+mesh_vi3 = 1;
+if (xray2 < xr2) {
+    mesh_vi1 = 1e10;
+    mesh_vi2 = 1e10;
+    mesh_vi3 = 1e10;
+}
+"""
+
     def __init__(self, parent, case, browser):
         """
         Constructor
@@ -112,7 +156,7 @@ class MobileMeshView(QWidget, Ui_MobileMeshForm):
         self.connect(self.comboBoxVISCOSITY, SIGNAL("activated(const QString&)"), self.slotViscosityType)
         self.connect(self.comboBoxMEI, SIGNAL("activated(const QString&)"), self.slotMEI)
         self.connect(self.pushButtonFormula, SIGNAL("clicked(bool)"), self.slotFormula)
- 
+
         # Validators
         validatorNALINF = IntValidator(self.lineEditNALINF, min=0)
         self.lineEditNALINF.setValidator(validatorNALINF)
@@ -125,9 +169,9 @@ class MobileMeshView(QWidget, Ui_MobileMeshForm):
             checked = False
 
         self.slotMethod(checked)
-        
-        # Enable / disable formula state 
-        self.slotMEI(self.comboBoxMEI.currentText())  
+
+        # Enable / disable formula state
+        self.slotMEI(self.comboBoxMEI.currentText())
         setGreenColor(self.pushButtonFormula, False)
 
 
@@ -161,7 +205,7 @@ class MobileMeshView(QWidget, Ui_MobileMeshForm):
     def slotNalinf(self, text):
         """
         Input viscosity type of mesh : isotrop or orthotrop.
-        """        
+        """
         nalinf, ok = text.toInt()
         if self.sender().validator().state == QValidator.Acceptable:
             self.mdl.setSubIterations(nalinf)
@@ -181,7 +225,7 @@ class MobileMeshView(QWidget, Ui_MobileMeshForm):
     @pyqtSignature("const QString&")
     def slotMEI(self, text):
         """
-        MEI 
+        MEI
         """
         MEI = self.modelMEI.dicoV2M[str(text)]
         self.MEI = MEI
@@ -204,16 +248,16 @@ class MobileMeshView(QWidget, Ui_MobileMeshForm):
 
         if self.mdl.getViscosity() == 'isotrop':
             if not exp:
-                exp = "mesh_vi1 ="
+                exp = "mesh_vi1 = 1;"
             req = [('mesh_vi1', 'mesh viscosity')]
-            exa = "mesh_vi1 = 1000;"
+            exa = MobileMeshView.viscosity_iso
         else:
             if not exp:
-                exp = "mesh_vi11 ="
+                exp = "mesh_vi1 = 1;\nmesh_vi2 = 1;\nmesh_vi3 = 1;"
             req = [('mesh_vi1', 'mesh viscosity X'),
                    ('mesh_vi2', 'mesh viscosity Y'),
                    ('mesh_vi3', 'mesh viscosity Z')]
-            exa = "mesh_vi1 = 1000;\nmesh_vi2 = 1;\nmesh_vi3 = mesh_vi2;"
+            exa = MobileMeshView.viscosity_ortho
 
         symb = [('x', "X cell's gravity center"),
                 ('y', "Y cell's gravity center"),
@@ -237,7 +281,7 @@ class MobileMeshView(QWidget, Ui_MobileMeshForm):
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # End
diff --git a/gui/Pages/NumericalParamEquationModel.py b/gui/Pages/NumericalParamEquationModel.py
index 2c7c6c6..7dd409c 100644
--- a/gui/Pages/NumericalParamEquationModel.py
+++ b/gui/Pages/NumericalParamEquationModel.py
@@ -62,7 +62,7 @@ from Pages.TurbulenceModel import TurbulenceModel
 class NumericalParamEquatModel(Model):
     """
     """
-    def __init__(self, case):  
+    def __init__(self, case):
         """
         initialization of nodes lists
         """
@@ -137,7 +137,7 @@ class NumericalParamEquatModel(Model):
         """ Private method: return list of pulverized coal scalar's nodes """
         nodList = []
         node = self.node_models.xmlGetNode('atmospheric_flows', 'model')
-	if not node: return []
+        if not node: return []
         model = node['model']
         if model != 'off':
             nodList = node.xmlGetNodeList('scalar')
@@ -210,9 +210,9 @@ class NumericalParamEquatModel(Model):
 
     def _isPressure(self, node):
         """ Return : 1 if name of node is 'pressure', 0 if not """
-        if node and node['name'] == 'pressure': 
+        if node and node['name'] == 'pressure':
             return 1
-        else: 
+        else:
             return 0
 
 
@@ -249,14 +249,14 @@ class NumericalParamEquatModel(Model):
 
     def isScalar(self, label):
         """
-        Return : 1 if type of node is 'user' or 'thermal' or 'model', 
+        Return : 1 if type of node is 'user' or 'thermal' or 'model',
                  0 if not.  Only used by the view by solveur class
         """
         node = self._getSolveurLabelNode(label)
         if node:
             if node['type'] in ['user', 'thermal', 'model']:
                 return 1
-            else: 
+            else:
                 return 0
 
 
@@ -265,13 +265,9 @@ class NumericalParamEquatModel(Model):
     def getScheme(self, label):
         """ Return value of order scheme for variable labelled label """
         node = self._getSchemeLabelNode(label)
-##        if self._isPressure(node): 
-### FIXME: return nothing ?
-##            return
-##        else:
         value = self._defaultValues(label)['order_scheme']
         n = node.xmlGetNode('order_scheme')
-        if n: 
+        if n:
             value = n['choice']
         return value
 
@@ -279,9 +275,6 @@ class NumericalParamEquatModel(Model):
     def getBlendingFactor(self, label):
         """ Return value of blending factor for variable labelled label """
         node = self._getSchemeLabelNode(label)
-##        if self._isPressure(node): 
-##            return
-##        else:
         value = node.xmlGetDouble('blending_factor')
         if value == None:
             value = self._defaultValues(label)['blending_factor']
@@ -291,22 +284,16 @@ class NumericalParamEquatModel(Model):
     def getSlopeTest(self, label):
         """ Return value of slope test for variable labelled label """
         node = self._getSchemeLabelNode(label)
-##        if self._isPressure(node): 
-##            return
-##        else:
         value = self._defaultValues(label)['slope_test']
         n = node.xmlGetNode('slope_test')
-        if n: 
+        if n:
             value = n['status']
         return value
 
 
     def getFluxReconstruction(self, label):
         """ Return value of flux reconstruction for variable labelled label """
-        node = self._getSchemeLabelNode(label) 
-##        if self._isPressure(node): 
-##            return
-##        else:
+        node = self._getSchemeLabelNode(label)
         value = self._defaultValues()['flux_reconstruction']
         if node.xmlGetNode('flux_reconstruction'):
             value = node.xmlGetNode('flux_reconstruction')['status']
@@ -315,31 +302,29 @@ class NumericalParamEquatModel(Model):
 
     def setBlendingFactor(self, label, value):
         """
-        Put value of blending factor for variable labelled label 
+        Put value of blending factor for variable labelled label
         only if it 's different of default value
         """
         self.isGreaterOrEqual(value, 0.)
         self.isLowerOrEqual(value, 1.)
         node = self._getSchemeLabelNode(label)
         scheme = self.getScheme(label)
-##        if scheme == 'upwind': 
-##                node.xmlSetData('blending_factor', 0.)
-##        else:
-##            if value != self._defaultValues(label)['blending_factor']:
-##                node.xmlSetData('blending_factor', value)
         if scheme == self._defaultValues(label)['order_scheme']:
             if scheme == 'upwind':
                 node.xmlRemoveChild('blending_factor')
             else:
                 node.xmlSetData('blending_factor', value)
         else:
-            if value != self._defaultValues(label)['blending_factor']:
-                node.xmlSetData('blending_factor', value)
+            node.xmlSetData('blending_factor', value)
+#            if value != self._defaultValues(label)['blending_factor']:
+#                node.xmlSetData('blending_factor', value)
+#            else:
+#                node.xmlRemoveChild('blending_factor')
 
 
     def setScheme(self, label, value):
-        """ 
-        Put value of order scheme for variable or scalar labelled label 
+        """
+        Put value of order scheme for variable or scalar labelled label
         only if it 's different of default value
         """
         self.isInList(value, ('upwind', 'centered', 'solu'))
@@ -394,7 +379,7 @@ class NumericalParamEquatModel(Model):
         # for pressure default value always equal to 1e-8
         self.isPositiveFloat(value)
         node = self._getSolveurLabelNode(label)
-        if self._isPressure(node): 
+        if self._isPressure(node):
             default = self._defaultValues()['solveur_precision_pressure']
         else:
             default = self._defaultValues()['solveur_precision']
@@ -418,7 +403,7 @@ class NumericalParamEquatModel(Model):
         """ Return value of solveur precision for variable labelled label """
         node = self._getSolveurLabelNode(label)
 
-        if self._isPressure(node): 
+        if self._isPressure(node):
             default = self._defaultValues()['solveur_precision_pressure']
         else:
             default = self._defaultValues()['solveur_precision']
@@ -562,7 +547,7 @@ class NumericalParamEquatTestCase(ModelTest):
                 'Could not set status of flux reconstruction in NumericalParamEquationModel'
         assert model.getFluxReconstruction('VelocitW') == 'on',\
                 'Could not get status of flux reconstruction in NumericalParamEquationModel'
-                
+
         model.setFluxReconstruction('VelocitW', 'off')
         doc2 = """<velocity_pressure>
                     <variable label="Pressure" name="pressure"/>
@@ -609,14 +594,14 @@ class NumericalParamEquatTestCase(ModelTest):
         Check whether the NumericalParamEquatModel class could set and get solveur precision
         """
         model = NumericalParamEquatModel(self.case)
-        
+
         assert model.getSolveurPrecision('Pressure') == 1e-8,\
                 'Could not get solveur precision for pressure in NumericalParamEquationModel'
         from Pages.NumericalParamGlobalModel import NumericalParamGlobalModel
         NumericalParamGlobalModel(self.case).setTimeSchemeOrder(2)
         del NumericalParamGlobalModel
         assert model.getSolveurPrecision('VelocitU') == 1e-5
-        
+
         model.setSolveurPrecision('VelocitU', 2e-6)
         doc = """<velocity_pressure>
                     <variable label="Pressure" name="pressure"/>
@@ -647,7 +632,7 @@ class NumericalParamEquatTestCase(ModelTest):
 ##        self.failUnlessRaises(ValueError, model.setScalarTimeStepFactor('VelocitU', 25.), \
 ##           'Could not set time step factor in NumericalParamEquationModel')
 
-        model.setScalarTimeStepFactor('Temp.C', 52.)
+        model.setScalarTimeStepFactor('TempC', 52.)
         node_sca = self.case.xmlGetNode('additional_scalars')
         vit = """<velocity_pressure>
                     <variable label="Pressure" name="pressure"/>
@@ -660,7 +645,7 @@ class NumericalParamEquatTestCase(ModelTest):
                     <property label="all_variables" name="all_variables" support="boundary"/>
                  </velocity_pressure>"""
         sca = """<additional_scalars>
-                    <scalar label="Temp.C" name="temperature_celsius" type="thermal">
+                    <scalar label="TempC" name="temperature_celsius" type="thermal">
                             <initial_value zone="1">20.0</initial_value>
                             <min_value>-1e+12 </min_value>
                             <max_value>1e+12</max_value>
@@ -676,7 +661,7 @@ class NumericalParamEquatTestCase(ModelTest):
 ##        self.failUnlessRaises(ValueError, model.getScalarTimeStepFactor('VelocitV'), \
 ##           'Could not get time step factor in NumericalParamEquationModel')
 
-        assert model.getScalarTimeStepFactor('Temp.C') == 52.,\
+        assert model.getScalarTimeStepFactor('TempC') == 52.,\
                 'Could not get time step factor for scalar in NumericalParamEquationModel'
 
 def suite():
diff --git a/gui/Pages/NumericalParamEquationView.py b/gui/Pages/NumericalParamEquationView.py
index d1bdd14..217e1e0 100644
--- a/gui/Pages/NumericalParamEquationView.py
+++ b/gui/Pages/NumericalParamEquationView.py
@@ -361,7 +361,7 @@ class StandardItemModelScheme(QStandardItemModel):
 
 class StandardItemModelSolver(QStandardItemModel):
     """
-    Model associated with a QTableView. 
+    Model associated with a QTableView.
     """
     def __init__(self, NPE, SM):
         """
@@ -427,8 +427,8 @@ class StandardItemModelSolver(QStandardItemModel):
             return QVariant(Qt.AlignCenter)
 
         return QVariant()
- 
- 
+
+
     def flags(self, index):
         if not index.isValid():
             return Qt.ItemIsEnabled
@@ -461,7 +461,7 @@ class StandardItemModelSolver(QStandardItemModel):
     def setData(self, index, value, role=None):
         row = index.row()
         label = self.dataSolver[row]['label']
-        
+
         if index.column() == 1:
             self.dataSolver[row]['nitmax'], ok = value.toInt()
             self.NPE.setMaxIterNumber(label, self.dataSolver[row]['nitmax'])
diff --git a/gui/Pages/NumericalParamGlobalModel.py b/gui/Pages/NumericalParamGlobalModel.py
index 60b8d3e..52396e5 100644
--- a/gui/Pages/NumericalParamGlobalModel.py
+++ b/gui/Pages/NumericalParamGlobalModel.py
@@ -197,11 +197,11 @@ class NumericalParamGlobalModel(Model):
         self.isOnOff(status)
         node_ipucou = self.node_np.xmlInitNode('velocity_pressure_coupling', 'status')
         node_ipucou['status'] = status
-        if status == 'on': 
+        if status == 'on':
             node_Tx = node_ipucou.xmlInitNode('property', name='weight_matrix_X')
             node_Ty = node_ipucou.xmlInitNode('property', name='weight_matrix_Y')
             node_Tz = node_ipucou.xmlInitNode('property', name='weight_matrix_Z')
-    
+
             for (node, val) in [(node_Tx, 'weight_matrix_X'),
                                 (node_Ty, 'weight_matrix_Y'),
                                 (node_Tz, 'weight_matrix_Z')]:
@@ -294,7 +294,7 @@ class NumericalParamGlobalTestCase(ModelTest):
 
     def checkSetandGetGradTransp(self):
         """
-        Check whether the NumericalParamEquatModel class 
+        Check whether the NumericalParamEquatModel class
         could be set and get gradient transposed
         """
         model = NumericalParamGlobalModel(self.case)
@@ -302,7 +302,7 @@ class NumericalParamGlobalTestCase(ModelTest):
         doc = """<numerical_parameters>
                     <gradient_transposed status="on"/>
                  </numerical_parameters>"""
-                 
+
         assert model.node_np == self.xmlNodeFromString(doc),\
                 'Could not set gradient transposed in NumericalParamGlobalModel'
         assert model.getTransposedGradient() == 'on',\
@@ -310,7 +310,7 @@ class NumericalParamGlobalTestCase(ModelTest):
 
     def checkSetandGetVelPesCoupl(self):
         """
-        Check whether the NumericalParamEquatModel class 
+        Check whether the NumericalParamEquatModel class
         could be set and get velocity pressure coupling
         """
         model = NumericalParamGlobalModel(self.case)
@@ -338,7 +338,7 @@ class NumericalParamGlobalTestCase(ModelTest):
 
     def checkSetandGetWallPressureExtrapolation(self):
         """
-        Check whether the NumericalParamEquatModel class could be set 
+        Check whether the NumericalParamEquatModel class could be set
         and get wall pressure extrapolation
         """
         model = None
@@ -355,7 +355,7 @@ class NumericalParamGlobalTestCase(ModelTest):
 
     def checkSetandGetPressureRelaxation(self):
         """
-        Check whether the NumericalParamEquatModel class could be set 
+        Check whether the NumericalParamEquatModel class could be set
         and get pressure relaxation
         """
         model = None
@@ -371,7 +371,7 @@ class NumericalParamGlobalTestCase(ModelTest):
 
     def checkSetandGetDensityRelaxation(self):
         """
-        Check whether the NumericalParamEquatModel class could be set 
+        Check whether the NumericalParamEquatModel class could be set
         and get density relaxation
         """
         model = None
@@ -387,7 +387,7 @@ class NumericalParamGlobalTestCase(ModelTest):
 
     def checkSetandGetGradientReconstructionruction(self):
         """
-        Check whether the NumericalParamEquatModel class could be set 
+        Check whether the NumericalParamEquatModel class could be set
         and get gradient_reconstruction
         """
         model = None
@@ -403,7 +403,7 @@ class NumericalParamGlobalTestCase(ModelTest):
 
     def checkSetandGetsetTimeSchemeOrder(self):
         """
-        Check whether the NumericalParamEquatModel class could be set 
+        Check whether the NumericalParamEquatModel class could be set
         and get time scheme order
         """
         model = None
diff --git a/gui/Pages/NumericalParamGlobalView.py b/gui/Pages/NumericalParamGlobalView.py
index 6075bb9..00b3f26 100644
--- a/gui/Pages/NumericalParamGlobalView.py
+++ b/gui/Pages/NumericalParamGlobalView.py
@@ -226,7 +226,7 @@ class NumericalParamGlobalView(QWidget, Ui_NumericalParamGlobalForm):
         """
         Translation
         """
-        return text 
+        return text
 
 
 #-------------------------------------------------------------------------------
diff --git a/gui/Pages/OutputControlModel.py b/gui/Pages/OutputControlModel.py
index 48ddb33..323c1ce 100644
--- a/gui/Pages/OutputControlModel.py
+++ b/gui/Pages/OutputControlModel.py
@@ -66,7 +66,6 @@ class OutputControlModel(Model):
         self.case = case
         node_control  = self.case.xmlGetNode('analysis_control')
         self.node_out = node_control.xmlInitNode('output')
-        self.dicoName = {}
 
 
     def defaultInitialValues(self):
@@ -79,6 +78,8 @@ class OutputControlModel(Model):
         default['probe_recording_frequency'] = 1
         default['postprocessing_options'] = "binary"
         default['postprocessing_format'] = "EnSight"
+        if self.case['salome']:
+            default['postprocessing_format'] = "MED_fichier"
         default['fluid_domain'] = "on"
         default['domain_boundary'] = "off"
         default['syrthes_boundary'] = "on"
@@ -88,48 +89,22 @@ class OutputControlModel(Model):
         return default
 
 
-    def _getCoordPoint(self, name, coord):
+    def __getCoordinates(self, name, coord):
         """
         Private method: return coordinate 'coord' for probe named 'name'
         """
-        for probe in self.node_out.xmlGetNodeList('probe'):
-            if probe['name'] == name:
-                val = probe.xmlGetDouble(coord)
-                if val == None:
-                    val = self.defaultInitialValues()['coordinate']
-                    self._setCoordPoint(name, coord, val)
+        val = self.node_out.xmlGetNode('probe', name = name).xmlGetDouble(coord)
+        if val == None:
+            val = self.defaultInitialValues()['coordinate']
+            self.__setCoordinates(name, coord, val)
         return val
 
 
-    def _setCoordPoint(self, name, coord, val):
+    def __setCoordinates(self, name, coord, val):
         """
         Private method: put value of coordinate 'coord' for probe named 'name'
         """
-        node = self.node_out.xmlGetNode('probe', name=name)
-        node.xmlSetData(coord, val)
-
-
-    def __deleteMonitoringPoint(self, n):
-        """ Private method : remove monitoring point """
-        node = self.node_out.xmlGetNode('probe', name=n)
-        if node:
-            node.xmlRemoveNode()
-            self.case.xmlRemoveChild('probe_recording', name=n)
-            del self.dicoName[n]
-
-
-    def __deleteProbesNodes(self):
-        """ Private method : remove balise when choice = '0' is existed """
-        from OutputVolumicVariablesModel import OutputVolumicVariablesModel
-        listNodeVolum = OutputVolumicVariablesModel(self.case).listNodeVolum
-        del OutputVolumicVariablesModel
-        for nodeList in listNodeVolum:
-            for node in nodeList:
-                n = node.xmlGetChildNode('probes')
-                if n:
-                    nlist = n.xmlGetChildNodeList('probe_recording')
-                    if not nlist:
-                        n.xmlRemoveNode()
+        self.node_out.xmlGetNode('probe', name=name).xmlSetData(coord, val)
 
 
     def getListingFrequency(self):
@@ -176,7 +151,7 @@ class OutputControlModel(Model):
         """
         nod = self.node_out.xmlInitNode('fluid_domain', 'status')
         status = nod['status']
-        if not status: 
+        if not status:
             status = self.defaultInitialValues()['fluid_domain']
             self.setFluidDomainPostProStatus(status)
         return status
@@ -218,7 +193,7 @@ class OutputControlModel(Model):
         """
         nod = self.node_out.xmlInitNode('syrthes_boundary', 'status')
         status = nod['status']
-        if not status: 
+        if not status:
             status = self.defaultInitialValues()['syrthes_boundary']
             self.setSyrthesBoundaryPostProStatus(status)
         return status
@@ -284,7 +259,7 @@ class OutputControlModel(Model):
         if not line:
             line = self.defaultInitialValues()['postprocessing_options']
             self.setPostProOptionsFormat(line)
-        return line 
+        return line
 
 
     def setPostProOptionsFormat(self, line):
@@ -318,96 +293,133 @@ class OutputControlModel(Model):
 
     def addMonitoringPoint(self, x=0.0, y=0.0, z=0.0):
         """
-        Input a new monitoring point definition.
-        """
+        Public method.
+        Add a new monitoring point.
+        @type x: C{Float}
+        @param x: first coordinate
+        @type y: C{Float}
+        @param y: second coordinate
+        @type z: C{Float}
+        @param z: third coordinate
+        """
+        self.isFloat(x)
+        self.isFloat(y)
+        self.isFloat(z)
+        num = str(self.getNumberOfMonitoringPoints() + 1)
         status="on"
-        num = 1
-        while (str(num)) in self.dicoName.keys(): num = num+1
-        num = str(num)
-        probe_num = 'item' + num
-        self.dicoName[num] = probe_num
-        
         node = self.node_out.xmlInitNode('probe', name=num, status=status)
         for coord, val in [('probe_x', x), ('probe_y', y), ('probe_z', z)]:
-            self._setCoordPoint(num, coord, val)
+            self.__setCoordinates(num, coord, val)
 
 
-    def replaceMonitoringPointCoordinates(self, name=None, x=0.0, y=0.0, z=0.0):
+    def replaceMonitoringPointCoordinates(self, name, x=0.0, y=0.0, z=0.0):
         """
-        Change the localization of a probe
+        Public method.
+        Change the coordinates of a monitoring point.
+        @type name: C{String}
+        @param name: identifier of the monitoring point
+        @type x: C{Float}
+        @param x: first new coordinate
+        @type y: C{Float}
+        @param y: second new coordinate
+        @type z: C{Float}
+        @param z: third new coordinate
         """
-        if not name:
-            raise ValueError, "replaceMonitoringPointCoordinates : pas de nom au point de monitoring"
+        self.isFloat(x)
+        self.isFloat(y)
+        self.isFloat(z)
+        self.isStr(name)
+        self.isGreater(float(name), 0.0)
+        self.isLowerOrEqual(float(name), self.getNumberOfMonitoringPoints())
 
         for coord, val in [('probe_x', x), ('probe_y', y), ('probe_z', z)]:
-            self._setCoordPoint(name, coord, val)
-
-
-    def deleteMonitoringPointsList(self, nameList):
-        """
-        Destroy the definition of a monitoring points list
-        """
-        if not nameList: return
-        for n in nameList:
-            self.__deleteMonitoringPoint(n)
-            
-        self.__deleteProbesNodes()
-
-        # compactage du numero des points de monitorings
-        listprob, dicocoord = [], {}
-        for node in self.node_out.xmlGetNodeList('probe'):
-            listprob.append(node['name'])
-            dicocoord[node['name']] = (node.xmlGetDouble('probe_x'),
-                                       node.xmlGetDouble('probe_y'),
-                                       node.xmlGetDouble('probe_z'))
-        listprob.sort()
-        for n in range(len(listprob)):
-            # si l'indice de rangement ne correspond pas a un point de monitoring ...
-            if str(n+1) not in listprob:
-                # alors on fait un decalage sur tous les points de monitoring suivants
-                for num in range(n, len(listprob)):
-                    for node in self.node_out.xmlGetNodeList('probe'):
-                        if node['name'] == listprob[n]:
-                            node['name'] = str(n+1)
-                            prob = listprob[n]
-                            node.xmlSetData('probe_x',dicocoord[prob][0])
-                            node.xmlSetData('probe_y',dicocoord[prob][1])
-                            node.xmlSetData('probe_z',dicocoord[prob][2])
-                     
-                    for node in self.case.xmlGetNodeList('probe_recording'):
-                        if node['name'] == listprob[n]:
-                            node['name'] = str(n+1)
-                    listprob[n] = n+1
-
-        #on réinitialise le dico pour le remplir avec les valeurs compactees
-        self.dicoName = {}
-        for n in range(len(listprob)):
-            self.dicoName[str(n+1)] = 'item'+str(listprob[n])
-
-
-    def getProbeNameList(self):
-        """
-        Return list of names of used probes
-        """
-        nameList = []
-        for probe in self.node_out.xmlGetNodeList('probe'):
-            nameList.append(probe['name'])
-            probe_num = 'item' + probe['name']
-            self.dicoName[probe['name']] = probe_num
-        return nameList
-
-
-    def getMonitoringPointInfo(self, name):
-        """
-        Return coordinates X, Y, Z for probe named 'name'
-        """
-        self.isInList(name, self.dicoName.keys())
-        X = self._getCoordPoint(name, 'probe_x')
-        Y = self._getCoordPoint(name, 'probe_y')
-        Z = self._getCoordPoint(name, 'probe_z')
+            self.__setCoordinates(name, coord, val)
+
+
+    def deleteMonitoringPoints(self, list):
+        """
+        Public method.
+        Conveniant method for the view. Delete a list of monitoring points.
+        @type list: C{List} of C{Int}
+        @param list: list of identifier of monitoring points to delete
+        """
+        list.sort()
+        r = len(list)
+        for n in range(r):
+            name = str(list[n])
+            self.deleteMonitoringPoint(name)
+            for i in range(n, r):
+                list[i] = list[i] - 1
+
+
+    def deleteMonitoringPoint(self, num):
+        """
+        Public method.
+        Delete a single monitoring point.
+        @type num: C{String}
+        @param num: identifier of the monitoring point
+        """
+        self.isStr(num)
+        self.isGreater(float(num), 0.0)
+        self.isLowerOrEqual(float(num), self.getNumberOfMonitoringPoints())
+
+        # delete the node of the monitoring point
+
+        node = self.node_out.xmlGetNode('probe', name=num)
+        if node:
+            node.xmlRemoveNode()
+            self.case.xmlRemoveChild('probe_recording', name=num)
+
+            # renumerotation of all monitoring points
+
+            for p in range(int(num)+1, self.getNumberOfMonitoringPoints()+2):
+                probe = self.node_out.xmlGetNode('probe', name=p)
+                probe['name'] = p - 1
+                for probe_recording in self.case.xmlGetNodeList('probe_recording', name=p):
+                    probe_recording['name'] = p - 1
+
+            # update the attribute "choice" of the probes markup for variables
+
+            from OutputVolumicVariablesModel import OutputVolumicVariablesModel
+            listNodeVolum = OutputVolumicVariablesModel(self.case).listNodeVolum
+            del OutputVolumicVariablesModel
+            for nodeList in listNodeVolum:
+                for node in nodeList:
+                    n = node.xmlGetChildNode('probes')
+                    if n:
+                        nlist = n.xmlGetChildNodeList('probe_recording')
+                        if not nlist:
+                            n.xmlRemoveNode()
+                        else:
+                            n['choice']= str(len(nlist))
+
+
+    def getMonitoringPointCoordinates(self, name):
+        """
+        Public method.
+        @type name: C{String}
+        @param name: identifier of the monitoring point
+        @return: coordinates X, Y, Z for the monitoring point I{name}
+        @rtype: C{List} of C{Float}
+        """
+        self.isStr(name)
+        self.isGreater(float(name), 0.0)
+        self.isLowerOrEqual(float(name), self.getNumberOfMonitoringPoints())
+        X = self.__getCoordinates(name, 'probe_x')
+        Y = self.__getCoordinates(name, 'probe_y')
+        Z = self.__getCoordinates(name, 'probe_z')
         return X, Y, Z
 
 
+    def getNumberOfMonitoringPoints(self):
+        """
+        Public method.
+        @return: number of monitoring points already defined.
+        @rtype: C{Int}
+        """
+        return len(self.node_out.xmlGetNodeList('probe'))
+
+
 #-------------------------------------------------------------------------------
 # OutputControlModel test Class
 #-------------------------------------------------------------------------------
@@ -462,7 +474,7 @@ class OutputControlModelTestCase(ModelTest):
 
     def checkSetandGetDomainBoundaryPostProStatus(self):
         """
-        Check whether the status of post processing for domain 
+        Check whether the status of post processing for domain
         boundary could be set and get
         """
         model = OutputControlModel(self.case)
@@ -478,7 +490,7 @@ class OutputControlModelTestCase(ModelTest):
 
     def checkSetandGetSyrthesBoundaryPostProStatus(self):
         """
-        Check whether the status of post processing for boundary 
+        Check whether the status of post processing for boundary
         syrthes post processing could be set and get
         """
         model = OutputControlModel(self.case)
@@ -563,7 +575,7 @@ class OutputControlModelTestCase(ModelTest):
                  </output>'''
         assert model.node_out== self.xmlNodeFromString(doc),\
         'Could not add monitoring point in output control model'
-        assert model.getMonitoringPointInfo("1") == (11.1, 22.2, 33.3),\
+        assert model.getMonitoringPointCoordinates("1") == (11.1, 22.2, 33.3),\
         'Could not get monitoring point in output control model'
 
     def checkReplaceMonitoringPoint(self):
@@ -599,7 +611,7 @@ class OutputControlModelTestCase(ModelTest):
         model.addMonitoringPoint(11.1, 22.2, 33.3)
         model.addMonitoringPoint(5, 5.1, 5.21)
         model.addMonitoringPoint(9.,8.,7.)
-        model.deleteMonitoringPointsList("2")
+        model.deleteMonitoringPoint("2")
         doc = '''<output>
                     <postprocessing_mesh_options choice="0"/>
                     <probe name="1" status="on">
@@ -626,7 +638,6 @@ def runTest():
     runner = unittest.TextTestRunner()
     runner.run(suite())
 
-        
 #-------------------------------------------------------------------------------
 # End
 #-------------------------------------------------------------------------------
diff --git a/gui/Pages/OutputControlView.py b/gui/Pages/OutputControlView.py
index 6112000..687ad2e 100644
--- a/gui/Pages/OutputControlView.py
+++ b/gui/Pages/OutputControlView.py
@@ -61,7 +61,7 @@ from Base.Toolbox import GuiParam
 from OutputControlForm import Ui_OutputControlForm
 import Base.QtPage as QtPage
 from OutputControlModel import OutputControlModel
-from SolutionDomainModel import SolutionDomainModel
+from ConjugateHeatTransferModel import ConjugateHeatTransferModel
 from MobileMeshModel import MobileMeshModel
 
 #-------------------------------------------------------------------------------
@@ -109,7 +109,7 @@ class StandardItemModelMonitoring(QStandardItemModel):
         elif role == Qt.TextAlignmentRole:
             return QVariant(Qt.AlignCenter)
 
-        return QVariant() 
+        return QVariant()
 
 
     def flags(self, index):
@@ -226,10 +226,10 @@ class MonitoringPointDelegate(QItemDelegate):
             for index in selectionModel.selectedRows(index.column()):
                 model.setData(index, QVariant(item), Qt.DisplayRole)
                 dico = model.dataMonitoring[index.row()]
-                self.mdl.replaceMonitoringPointCoordinates(dico['n'],
-                                                           dico['X'],
-                                                           dico['Y'],
-                                                           dico['Z'])
+                self.mdl.replaceMonitoringPointCoordinates(str(dico['n']),
+                                                           float(dico['X']),
+                                                           float(dico['Y']),
+                                                           float(dico['Z']))
 
 #-------------------------------------------------------------------------------
 # Main class
@@ -265,7 +265,7 @@ class OutputControlView(QWidget, Ui_OutputControlForm):
         self.modelOutput.addItem(self.tr("No output"), 'None')
         self.modelOutput.addItem(self.tr("Output listing at each time step"), 'At each step')
         self.modelOutput.addItem(self.tr("Output every 'n' time steps"), 'Frequency_l')
-        
+
         self.modelPostProcessing.addItem(self.tr("Only at the end of calculation"), 'At the end')
         self.modelPostProcessing.addItem(self.tr("At each time step"), 'At each step')
         self.modelPostProcessing.addItem(self.tr("Post-processing every 'n' time steps"), 'Frequency_c')
@@ -283,7 +283,7 @@ class OutputControlView(QWidget, Ui_OutputControlForm):
             self.modelMeshes.disableItem(str_model='11')
             self.modelMeshes.disableItem(str_model='12')
 
-        self.modelFMTCHR.addItem(self.tr("EnSight Gold"), 'EnSight') 
+        self.modelFMTCHR.addItem(self.tr("EnSight Gold"), 'EnSight')
         self.modelFMTCHR.addItem(self.tr("MED"), 'MED_fichier')
         self.modelFMTCHR.addItem(self.tr("CGNS"), 'CGNS')
 
@@ -401,17 +401,15 @@ class OutputControlView(QWidget, Ui_OutputControlForm):
         else:
             self.checkBoxICHRBO.setChecked(False)
 
-        syrthes = SolutionDomainModel(self.case).getSyrthesCouplingStatus()
-        if syrthes != 'on':
+        if ConjugateHeatTransferModel(self.case).getSyrthesCouplingList():
+            if self.mdl.getSyrthesBoundaryPostProStatus() == 'on':
+                self.checkBoxICHRSY.setChecked(True)
+            else:
+                self.checkBoxICHRSY.setChecked(False)
+        else:
             self.labelICHRSY.hide()
             self.checkBoxICHRSY.hide()
 
-        self.checkBoxICHRSY.setChecked(False)
-        if syrthes == "on":
-            self.checkBoxICHRSY.setChecked(True)
-            if self.mdl.getDomainBoundaryPostProStatus() == "off":
-                self.checkBoxICHRSY.setChecked(False)
-
         # values of type of mesh's post processing
 
         if self.mdl.getTypePostMeshes() == '0':
@@ -421,7 +419,7 @@ class OutputControlView(QWidget, Ui_OutputControlForm):
                 self.modelMeshes.setItem(str_model='0')
         else:
             self.modelMeshes.setItem(str_model=self.mdl.getTypePostMeshes())
-        
+
 
         # values of post processing's format
 
@@ -432,8 +430,9 @@ class OutputControlView(QWidget, Ui_OutputControlForm):
 
         # Monitoring points initialisation
 
-        for name in self.mdl.getProbeNameList():
-            X, Y, Z = self.mdl.getMonitoringPointInfo(name)
+        for n in range(self.mdl.getNumberOfMonitoringPoints()):
+            name = str(n+1)
+            X, Y, Z = self.mdl.getMonitoringPointCoordinates(name)
             self.__insertMonitoringPoint(name, X, Y, Z)
 
 
@@ -642,13 +641,13 @@ class OutputControlView(QWidget, Ui_OutputControlForm):
         # update widgets from the options list
 
         for opt in list:
-            
+
             if opt == 'binary' or opt == 'text' :
                 self.modelFormat.setItem(str_model=opt)
-                
+
             if opt == 'discard_polygons' or opt == 'divide_polygons':
                 self.modelPolygon.setItem(str_model=opt)
-                
+
             if opt == 'discard_polyhedra' or opt == 'divide_polyhedra':
                 self.modelPolyhedra.setItem(str_model=opt)
 
@@ -692,7 +691,6 @@ class OutputControlView(QWidget, Ui_OutputControlForm):
         """
         Add a new 'item' into the Hlist.
         """
-        probe_num = self.mdl.dicoName[str(num)]
         self.modelMonitoring.insertData(num, X, Y, Z)
 
 
@@ -702,9 +700,11 @@ class OutputControlView(QWidget, Ui_OutputControlForm):
         Add one monitoring point with these coordinates in the list in the Hlist
         The number of the monitoring point is added at the precedent one
         """
-        self.mdl.addMonitoringPoint(x=0, y=0, z=0)
-        nameList = self.mdl.getProbeNameList()
-        self.__insertMonitoringPoint(len(nameList), QString('0'), QString('0'), QString('0'))
+        self.mdl.addMonitoringPoint(x=0.0, y=0.0, z=0.0)
+        self.__insertMonitoringPoint(self.mdl.getNumberOfMonitoringPoints(),
+                                     QString('0'),
+                                     QString('0'),
+                                     QString('0'))
 
 
     @pyqtSignature("")
@@ -713,18 +713,18 @@ class OutputControlView(QWidget, Ui_OutputControlForm):
         Just delete the current selected entries from the Hlist and
         of course from the XML file.
         """
-        rowList = []
+        list = []
         selectionModel = self.tableViewPoints.selectionModel()
         for index in selectionModel.selectedRows():
-            row = index.row()
-            rowList.append(str(index.row() + 1))
+            name = index.row() + 1
+            list.append(name)
 
-        self.mdl.deleteMonitoringPointsList(rowList)
+        self.mdl.deleteMonitoringPoints(list)
 
         self.modelMonitoring.deleteAllData()
-        nameList = self.mdl.getProbeNameList()
-        for name in nameList:
-            X, Y, Z = self.mdl.getMonitoringPointInfo(name)
+        for n in range(self.mdl.getNumberOfMonitoringPoints()):
+            name = str(n+1)
+            X, Y, Z = self.mdl.getMonitoringPointCoordinates(name)
             self.__insertMonitoringPoint(name, X, Y, Z)
 
 
@@ -732,7 +732,7 @@ class OutputControlView(QWidget, Ui_OutputControlForm):
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # Testing part
@@ -745,4 +745,4 @@ if __name__ == "__main__":
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/OutputSurfacicVariablesModel.py b/gui/Pages/OutputSurfacicVariablesModel.py
index eb2ccd6..77b30d8 100644
--- a/gui/Pages/OutputSurfacicVariablesModel.py
+++ b/gui/Pages/OutputSurfacicVariablesModel.py
@@ -77,7 +77,7 @@ class OutputSurfacicVariablesModel(Model):
         """
         default = {}
         default['status']    = "on"
-        
+
         return default
 
 
@@ -126,7 +126,7 @@ class OutputSurfacicVariablesModel(Model):
         for nodeList in self.listNodeSurface:
             for node in nodeList:
                 name = node['name']
-                if not name: 
+                if not name:
                     name = node['label']
                 if not node['label']:
                     msg = "xml node named "+ name +" has no label"
@@ -183,7 +183,7 @@ class OutputSurfacicVariablesModel(Model):
                     if status == 'off':
                         node.xmlInitChildNode('postprocessing_recording')['status'] = status
                     else:
-                        if node.xmlGetChildNode('postprocessing_recording'): 
+                        if node.xmlGetChildNode('postprocessing_recording'):
                             node.xmlRemoveChild('postprocessing_recording')
 
 #-------------------------------------------------------------------------------
@@ -245,7 +245,7 @@ def suite():
     testSuite = unittest.makeSuite(OutputSurfacicVariablesTestCase, "check")
     return testSuite
 
-    
+
 def runTest():
     print "OutputSurfacicVariablesTestCase"
     runner = unittest.TextTestRunner()
diff --git a/gui/Pages/OutputVolumicVariablesModel.py b/gui/Pages/OutputVolumicVariablesModel.py
index 85f4325..236dab1 100644
--- a/gui/Pages/OutputVolumicVariablesModel.py
+++ b/gui/Pages/OutputVolumicVariablesModel.py
@@ -79,7 +79,7 @@ class OutputVolumicVariablesModel(Model):
                               self.getMeteoScalProper(),
                               self.getPuCoalScalProper(),
                               self._getWeightMatrixProperty(),
-                              self.getListOfTimeMeans(),
+                              self.getListOfTimeAverage(),
                               self._getListOfAleMethod(),
                               self._getThermalRadiativeProperties())
 
@@ -280,7 +280,7 @@ class OutputVolumicVariablesModel(Model):
         return nodeList
 
 
-    def getListOfTimeMeans(self):
+    def getListOfTimeAverage(self):
         """
         Return list of time averages variables
         Also called by ProfilesModel
@@ -512,10 +512,10 @@ class OutputVolumicVariablesModelTestCase(ModelTest):
         del ThermalScalarModel
 
         mdl = OutputVolumicVariablesModel(self.case)
-        mdl.setPrintingStatus('Temp.C', 'off')
+        mdl.setPrintingStatus('TempC', 'off')
         node_out = mdl.case.xmlGetNode('additional_scalars')
         doc = '''<additional_scalars>
-                    <scalar label="Temp.C" name="temperature_celsius" type="thermal">
+                    <scalar label="TempC" name="temperature_celsius" type="thermal">
                         <initial_value zone="1">20.0</initial_value>
                         <min_value>-1e+12</min_value>
                         <max_value>1e+12</max_value>
@@ -525,7 +525,7 @@ class OutputVolumicVariablesModelTestCase(ModelTest):
 
         assert node_out == self.xmlNodeFromString(doc),\
             'Could not set status of listing printing in output volumic variables model'
-        assert mdl.getPrintingStatus('Temp.C') == 'off',\
+        assert mdl.getPrintingStatus('TempC') == 'off',\
             'Could not get status of listing printing in output volumic variables model'
 
     def checkSetAndGetPostStatus(self):
@@ -538,10 +538,10 @@ class OutputVolumicVariablesModelTestCase(ModelTest):
         del ThermalScalarModel
 
         mdl = OutputVolumicVariablesModel(self.case)
-        mdl.setPostStatus('Temp.C', 'off')
+        mdl.setPostStatus('TempC', 'off')
         node_out = mdl.case.xmlGetNode('additional_scalars')
         doc = '''<additional_scalars>
-                    <scalar label="Temp.C" name="temperature_celsius" type="thermal">
+                    <scalar label="TempC" name="temperature_celsius" type="thermal">
                         <initial_value zone="1">20.0</initial_value>
                         <min_value>-1e+12</min_value>
                         <max_value>1e+12</max_value>
@@ -551,7 +551,7 @@ class OutputVolumicVariablesModelTestCase(ModelTest):
 
         assert node_out == self.xmlNodeFromString(doc),\
             'Could not set status of post processing in output volumic variables model'
-        assert mdl.getPostStatus('Temp.C') == 'off',\
+        assert mdl.getPostStatus('TempC') == 'off',\
             'Could not get status of post processing in output volumic variables model'
 
     def checkSetAndGetPostStatusForRadiativeProperties(self):
@@ -606,4 +606,4 @@ def runTest():
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
+#-------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/gui/Pages/OutputVolumicVariablesView.py b/gui/Pages/OutputVolumicVariablesView.py
index d3954bd..5f2ff9d 100644
--- a/gui/Pages/OutputVolumicVariablesView.py
+++ b/gui/Pages/OutputVolumicVariablesView.py
@@ -55,6 +55,7 @@ from Base.QtPage import RegExpValidator
 from OutputVolumicVariablesForm import Ui_OutputVolumicVariablesForm
 from Pages.OutputControlModel import OutputControlModel
 from Pages.OutputVolumicVariablesModel import OutputVolumicVariablesModel
+from Pages.TimeStepModel import TimeStepModel
 
 #-------------------------------------------------------------------------------
 # log config
@@ -65,7 +66,7 @@ log = logging.getLogger("OutputVolumicVariablesView")
 log.setLevel(GuiParam.DEBUG)
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class ProbesValidator(QRegExpValidator):
@@ -76,7 +77,7 @@ class ProbesValidator(QRegExpValidator):
         """
         Initialization for validator
         """
-        regExp = QRegExp("^all[ ]*$|^[0-9\ ]*$")
+        regExp = QRegExp("^[0-9 ]*$")
         super(ProbesValidator, self).__init__(regExp, parent)
         self.parent = parent
         self.mdl = xml_model
@@ -116,7 +117,7 @@ class ProbesValidator(QRegExpValidator):
         return (state, pos)
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class ProbesDelegate(QItemDelegate):
@@ -152,7 +153,7 @@ class ProbesDelegate(QItemDelegate):
                     model.setData(idx, QVariant(value))
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class LabelDelegate(QItemDelegate):
@@ -192,7 +193,7 @@ class LabelDelegate(QItemDelegate):
                 default['list']   = self.mdl.getLabelsList()
                 default['regexp'] = self.regExp
                 log.debug("setModelData-> default = %s" % default)
-    
+
                 from VerifyExistenceLabelDialogView import VerifyExistenceLabelDialogView
                 dialog = VerifyExistenceLabelDialogView(self.parent, default)
                 if dialog.exec_():
@@ -247,7 +248,11 @@ class VolumicOutputStandardItemModel(QStandardItemModel):
                 self.disabledItem.append((row, 2))
             else:
                  post = self.mdl.getPostStatus(label)
-                
+
+            if TimeStepModel(self.case).getTimePassing() in (0, 1):
+                if name == 'local_time_step':
+                    self.disabledItem.append((row, 2))
+                    self.disabledItem.append((row, 3))
 
             if not self.mdl.getVariableProbeList():
                 self.disabledItem.append((row, 3))
@@ -258,7 +263,7 @@ class VolumicOutputStandardItemModel(QStandardItemModel):
             else:
                 probes = ""
 
-            # StandardItemModel data 
+            # StandardItemModel data
             self.dataLabel.append(label)
             self.dataPrinting.append(printing)
             self.dataPost.append(post)
@@ -386,7 +391,7 @@ class VolumicOutputStandardItemModel(QStandardItemModel):
                 self.dataPost[row] = "off"
 
             self.mdl.setPostStatus(self.dataLabel[row], self.dataPost[row])
-            
+
         elif index.column() == 3:
             probes = str(value.toString())
             self.dataProbe[row] = probes
@@ -448,7 +453,7 @@ class OutputVolumicVariablesView(QWidget, Ui_OutputVolumicVariablesForm):
         """
         Translation
         """
-        return text 
+        return text
 
 
 #-------------------------------------------------------------------------------
@@ -462,4 +467,4 @@ if __name__ == "__main__":
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/PreProcessingInformationsView.py b/gui/Pages/PreProcessingInformationsView.py
index be71ff0..8d1b085 100644
--- a/gui/Pages/PreProcessingInformationsView.py
+++ b/gui/Pages/PreProcessingInformationsView.py
@@ -73,7 +73,7 @@ def preprocessorFile(parent, initdir):
     title = tr("Select a Code_Saturne Preprocessor listing")
     filetypes = "Preprocessor listing (listpre.*);;All Files (*)"
     filt = "All files (*)"
-    file_name = QFileDialog.getOpenFileName(parent, title, initdir, filetypes, filt) 
+    file_name = QFileDialog.getOpenFileName(parent, title, initdir, filetypes, filt)
     file_name = str(file_name)
 
     if file_name:
@@ -84,7 +84,7 @@ def preprocessorFile(parent, initdir):
         j=0
         for i in range(len(lines)):
             index = string.rfind(lines[i], "ECS   version")
-            if index != -1: 
+            if index != -1:
                 j = i
                 break
 
@@ -115,23 +115,23 @@ class Informations:
         self.chain = chain
         if self.chain not in ('faces', 'cells'):
             raise ValueError, "Informations class is called with a wrong parameter 'chain'"
-    
+
         lines = self.readFile(file)
         if not lines:
             raise ValueError, "Code_Saturne Preprocessor listing language unknown."
 
         refList, groupList = self.getListes(lines)
-        
+
         self.refList = refList
         self.groupList = groupList
-        
+
         self.updateListes()
 
 
     def readFile(self, file):
-        if not file: 
+        if not file:
             return []
-        else: 
+        else:
             f = open(file, 'r')
             lines = f.readlines()
             f.close()
@@ -172,7 +172,7 @@ class Informations:
         refList = []
         groupList = []
         for i in range(len(lines)):
-            index = re.search(self.str1, lines[i]) 
+            index = re.search(self.str1, lines[i])
             if index != None:
                 j = i
                 break
@@ -188,13 +188,13 @@ class Informations:
                     if re.search(self.str2, lines[m]) != None:
                         p = m
                         for p in range(p-1,p-m,-1):
-                            if re.search(self.str4, lines[p]) != None: 
+                            if re.search(self.str4, lines[p]) != None:
                                 coul = re.split(self.str4 + ' ', lines[p])
                                 for cl in coul[1:]:
                                     ref = re.split('\n', cl)[0]
                                     if ref:
                                         if ref not in refList: refList.append(ref)
-                            if re.search(self.str5, lines[p]) != None: 
+                            if re.search(self.str5, lines[p]) != None:
                                 gr = re.split(self.str5 + ' ', lines[p])
                                 for g in gr[1:]:
                                     group = re.split('\n', g)[0]
diff --git a/gui/Pages/ProfilesForm.ui b/gui/Pages/ProfilesForm.ui
index 9f8faad..e2c36db 100644
--- a/gui/Pages/ProfilesForm.ui
+++ b/gui/Pages/ProfilesForm.ui
@@ -6,19 +6,19 @@
     <x>0</x>
     <y>0</y>
     <width>450</width>
-    <height>394</height>
+    <height>450</height>
    </rect>
   </property>
   <property name="windowTitle" >
    <string>Form</string>
   </property>
-  <layout class="QVBoxLayout" >
+  <layout class="QVBoxLayout" name="verticalLayout_2" >
    <item>
     <widget class="QGroupBox" name="groupBox" >
      <property name="title" >
       <string>Definition of 1D profiles</string>
      </property>
-     <layout class="QVBoxLayout" >
+     <layout class="QVBoxLayout" name="verticalLayout" >
       <item>
        <widget class="QTreeView" name="treeViewProfile" >
         <property name="indentation" >
@@ -118,7 +118,7 @@
        </widget>
       </item>
       <item>
-       <layout class="QHBoxLayout" >
+       <layout class="QHBoxLayout" name="horizontalLayout" >
         <item>
          <spacer>
           <property name="orientation" >
@@ -126,109 +126,120 @@
           </property>
           <property name="sizeHint" stdset="0" >
            <size>
-            <width>16</width>
-            <height>16</height>
+            <width>13</width>
+            <height>13</height>
            </size>
           </property>
          </spacer>
         </item>
         <item>
-         <layout class="QGridLayout" >
-          <item row="0" column="0" >
-           <widget class="QLabel" name="label" >
+         <layout class="QGridLayout" name="gridLayout" >
+          <item row="0" column="0" colspan="2" >
+           <widget class="QLabel" name="labelBaseName" >
             <property name="text" >
-             <string>Label of profile</string>
+             <string>Filename</string>
             </property>
            </widget>
           </item>
-          <item row="0" column="2" >
-           <widget class="QLineEdit" name="lineEditProfileName" />
+          <item row="0" column="2" colspan="3" >
+           <widget class="QLineEdit" name="lineEditBaseName" />
           </item>
           <item row="1" column="0" >
+           <widget class="QLabel" name="label" >
+            <property name="text" >
+             <string>Title</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2" colspan="3" >
+           <widget class="QLineEdit" name="lineEditTitle" />
+          </item>
+          <item row="2" column="0" >
            <widget class="QLabel" name="labelFirstPoint" >
             <property name="text" >
              <string>First point</string>
             </property>
            </widget>
           </item>
-          <item row="1" column="1" >
+          <item row="2" column="1" >
            <widget class="QLabel" name="labelX1" >
             <property name="text" >
              <string>X<sub>1</sub></string>
             </property>
            </widget>
           </item>
-          <item row="1" column="2" >
+          <item row="2" column="2" >
            <widget class="QLineEdit" name="lineEditX1" />
           </item>
-          <item row="1" column="3" >
+          <item row="2" column="3" >
            <widget class="QLabel" name="labelY1" >
             <property name="text" >
              <string>Y<sub>1</sub></string>
             </property>
            </widget>
           </item>
-          <item row="1" column="4" >
+          <item row="2" column="4" >
            <widget class="QLineEdit" name="lineEditY1" />
           </item>
-          <item row="1" column="5" >
+          <item row="2" column="5" >
            <widget class="QLabel" name="labelZ1" >
             <property name="text" >
              <string>Z<sub>1</sub></string>
             </property>
            </widget>
           </item>
-          <item row="1" column="6" >
+          <item row="2" column="6" >
            <widget class="QLineEdit" name="lineEditZ1" />
           </item>
-          <item row="2" column="0" >
+          <item row="3" column="0" >
            <widget class="QLabel" name="labelLastPoint" >
             <property name="text" >
              <string>Last point</string>
             </property>
            </widget>
           </item>
-          <item row="2" column="1" >
+          <item row="3" column="1" >
            <widget class="QLabel" name="labelX2" >
             <property name="text" >
              <string>X<sub>2</sub></string>
             </property>
            </widget>
           </item>
-          <item row="2" column="2" >
+          <item row="3" column="2" >
            <widget class="QLineEdit" name="lineEditX2" />
           </item>
-          <item row="2" column="3" >
+          <item row="3" column="3" >
            <widget class="QLabel" name="labelY2" >
             <property name="text" >
              <string>Y<sub>2</sub></string>
             </property>
            </widget>
           </item>
-          <item row="2" column="4" >
+          <item row="3" column="4" >
            <widget class="QLineEdit" name="lineEditY2" />
           </item>
-          <item row="2" column="5" >
+          <item row="3" column="5" >
            <widget class="QLabel" name="labelZ2" >
             <property name="text" >
              <string>Z<sub>2</sub></string>
             </property>
            </widget>
           </item>
-          <item row="2" column="6" >
+          <item row="3" column="6" >
            <widget class="QLineEdit" name="lineEditZ2" />
           </item>
-          <item row="3" column="0" >
+          <item row="4" column="0" >
            <widget class="QLabel" name="labelFreq" >
             <property name="text" >
-             <string>Frequency</string>
+             <string>Output
+frequency</string>
             </property>
            </widget>
           </item>
-          <item row="3" column="2" colspan="3" >
+          <item row="4" column="2" colspan="3" >
            <widget class="QComboBox" name="comboBoxFreq" />
           </item>
-          <item row="3" column="5" colspan="2" >
+          <item row="4" column="5" colspan="2" >
            <widget class="QLineEdit" name="lineEditFreq" >
             <property name="maximumSize" >
              <size>
@@ -247,8 +258,8 @@
           </property>
           <property name="sizeHint" stdset="0" >
            <size>
-            <width>16</width>
-            <height>16</height>
+            <width>17</width>
+            <height>18</height>
            </size>
           </property>
          </spacer>
diff --git a/gui/Pages/ProfilesModel.py b/gui/Pages/ProfilesModel.py
index e1e94e5..48d1964 100644
--- a/gui/Pages/ProfilesModel.py
+++ b/gui/Pages/ProfilesModel.py
@@ -71,7 +71,7 @@ class ProfilesModel(Model):
         self.node_var_vp    = self.node_model_vp.xmlGetNodeList('variable')
         self.node_pro_vp    = self.node_model_vp.xmlGetNodeList('property')
 
-        self.suffixe = self.__defaultValues()['suffixe']
+        self.suffix = self.__defaultValues()['suffix']
         self.__var_prop_list = self.getVariablesAndVolumeProperties()
 
 
@@ -81,19 +81,37 @@ class ProfilesModel(Model):
         Returns a dictionnary with default values.
         """
         value = {}
-        value['nfreq'] = -1
-        value['X1']    =  0.
-        value['Y1']    =  0.
-        value['Z1']    =  0.
-        value['X2']    =  1.
-        value['Y2']    =  1.
-        value['Z2']    =  1.
-        value['suffixe'] =  ""
+        value['nfreq']  = -1
+        value['X1']     =  0.
+        value['Y1']     =  0.
+        value['Z1']     =  0.
+        value['X2']     =  1.
+        value['Y2']     =  1.
+        value['Z2']     =  1.
+        value['suffix'] = ""
+        value['title']  = ""
 
         return value
 
 
-    def __updateBatchScriptFile(self, param, profile):
+    def updateOutputFiles(self, vlist):
+        """
+        Update the list of the USER_OUTPUT_FILES variable with the profiles.
+        """
+        for file in self.getProfilesLabelsList():
+            [lab, t, l, f, x1, y1, z1, x2, y2, z2] = self.getProfileData(file)
+            files = file + "_*" + ".dat"
+            file += ".dat"
+            if int(f) == -1:
+                if files in vlist: vlist.remove(files)
+                if file not in vlist: vlist.append(file)
+            elif int(f) != -1:
+                if file in vlist: vlist.remove(file)
+                if files not in vlist: vlist.append(files)
+        return vlist
+
+
+    def __updateBatchScriptFile(self):
         """
         Update the backup file if it's ready to run.
         """
@@ -107,16 +125,11 @@ class ProfilesModel(Model):
             batch.initializeBatchScriptFile()
 
             if batch.dicoValues['USER_OUTPUT_FILES']:
-                vlist = string.split(batch.dicoValues['USER_OUTPUT_FILES'])
+                v = string.split(batch.dicoValues['USER_OUTPUT_FILES'])
             else:
-                vlist = []
+                v = []
 
-            if param == "delete":
-                if profile in vlist:
-                    vlist.remove(profile)
-            elif param == "add":
-                if profile not in vlist:
-                    vlist.append(profile)
+            vlist = self.updateOutputFiles(v)
 
             batch.dicoValues['USER_OUTPUT_FILES'] = string.join(vlist, " ")
             batch.updateBatchScriptFile('USER_OUTPUT_FILES')
@@ -138,7 +151,7 @@ class ProfilesModel(Model):
                          output.getFluidProperty(),
                          output.getAdditionalScalarProperty(),
                          output.getTimeProperty(),
-                         output.getListOfTimeMeans(),
+                         output.getListOfTimeAverage(),
                          output.getPuCoalScalProper(),
                          output.getMeteoScalProper(),
                          output.getThermalScalar(),
@@ -166,7 +179,7 @@ class ProfilesModel(Model):
         for coord in (x1, y1, z1, x2, y2, z2):
             self.isFloat(coord)
 
-        label_xml = label + self.suffixe
+        label_xml = label + self.suffix
         node = self.node_prof.xmlGetNode('profile', label=label_xml)
         node.xmlSetData('x1', x1)
         node.xmlSetData('y1', y1)
@@ -182,7 +195,7 @@ class ProfilesModel(Model):
         Gets coordinates for profile named I{label}.
         """
         self.isInList(label, self.getProfilesLabelsList())
-        label_xml = label + self.suffixe
+        label_xml = label + self.suffix
         node = self.node_prof.xmlGetNode('profile', label=label_xml)
 
         x1 = node.xmlGetDouble('x1')
@@ -231,7 +244,7 @@ class ProfilesModel(Model):
         return list
 
 
-    def setProfile(self, label, list, freq, x1, y1, z1, x2, y2, z2):
+    def setProfile(self, label, title, list, freq, x1, y1, z1, x2, y2, z2):
         """
         Public method.
         Sets data to create one profile named I{label}.
@@ -241,17 +254,18 @@ class ProfilesModel(Model):
         for coord in (x1, y1, z1, x2, y2, z2):
             self.isFloat(coord)
 
-        label_xml = label + self.suffixe
+        label_xml = label + self.suffix
         node = self.node_prof.xmlInitNode('profile', label=label_xml)
         for var in list:
             self.isInList(var, self.__var_prop_list)
             node.xmlAddChild('var_prop', name=self.dicoLabel2Name[var])
         node.xmlSetData('output_frequency', freq)
+        node['title'] = title
         self.__setCoordinates(label, x1, y1, z1, x2, y2, z2)
-        self.__updateBatchScriptFile('add', label_xml)
+        self.__updateBatchScriptFile()
 
 
-    def replaceProfile(self, old_label, label, list, freq, x1, y1, z1, x2, y2, z2):
+    def replaceProfile(self, old_label, label, title, list, freq, x1, y1, z1, x2, y2, z2):
         """
         Public method.
         Replaces data from I{old_label} profile
@@ -264,24 +278,23 @@ class ProfilesModel(Model):
         for coord in (x1, y1, z1, x2, y2, z2):
             self.isFloat(coord)
 
-        old_label_xml = old_label + self.suffixe
-        label_xml = label + self.suffixe
+        old_label_xml = old_label + self.suffix
+        label_xml = label + self.suffix
         node = self.node_prof.xmlGetNode('profile', label=old_label_xml)
         if node:
-            node.xmlRemoveChild('var_prop')
-            node.xmlRemoveChild('output_frequency')
-            for tag in ('x1', 'y1', 'z1', 'x2', 'y2', 'z2'):
+            node['title'] = ""
+            for tag in ('var_prop', 'output_frequency', 'x1', 'y1', 'z1', 'x2', 'y2', 'z2'):
                 node.xmlRemoveChild(tag)
-        for var in list:
-            self.isInList(var, self.__var_prop_list)
-            node.xmlAddChild('var_prop', name=self.dicoLabel2Name[var])
-        node['label'] = label_xml
-        node.xmlSetData('output_frequency', freq)
-        self.__setCoordinates(label, x1, y1, z1, x2, y2, z2)
+            for var in list:
+                self.isInList(var, self.__var_prop_list)
+                node.xmlAddChild('var_prop', name=self.dicoLabel2Name[var])
+            node['label'] = label_xml
+            node.xmlSetData('output_frequency', freq)
+            node['title'] = title
+            self.__setCoordinates(label, x1, y1, z1, x2, y2, z2)
 
-        if old_label != label:
-            self.__updateBatchScriptFile('delete', old_label_xml)
-            self.__updateBatchScriptFile('add', label_xml)
+            if old_label != label:
+                self.__updateBatchScriptFile()
 
 
     def deleteProfile(self, label):
@@ -290,11 +303,11 @@ class ProfilesModel(Model):
         Deletes profile named I{label}.
         """
         self.isInList(label, self.getProfilesLabelsList())
-        label_xml = label + self.suffixe
+        label_xml = label + self.suffix
         node = self.node_prof.xmlGetNode('profile', label=label_xml)
         if node:
             node.xmlRemoveNode()
-            self.__updateBatchScriptFile('delete', label_xml)
+            self.__updateBatchScriptFile()
 
 
     def getProfileData(self, label):
@@ -305,9 +318,10 @@ class ProfilesModel(Model):
         """
         self.isInList(label, self.getProfilesLabelsList())
         list = []
-        label_xml = label + self.suffixe
+        label_xml = label + self.suffix
         node = self.node_prof.xmlGetNode('profile', label=label_xml)
         freq = node.xmlGetInt('output_frequency')
+        title = node['title']
         x1, y1, z1, x2, y2, z2 = self.__getCoordinates(label)
         for var in node.xmlGetChildNodeList('var_prop'):
             for name in self.__var_prop_list:
@@ -317,7 +331,7 @@ class ProfilesModel(Model):
         #label = label_xml[:-4]
         label = label_xml
 
-        return label, list, freq, x1, y1, z1, x2, y2, z2
+        return label, title, list, freq, x1, y1, z1, x2, y2, z2
 
 
 #-------------------------------------------------------------------------------
@@ -339,9 +353,9 @@ class ProfilesTestCase(ModelTest):
     def checkSetProfile(self):
         """Check whether the ProfilesModel class could set one profile"""
         mdl = ProfilesModel(self.case)
-        mdl.setProfile('prof1', ['VelocitU', 'VelocitV', 'VelocitW'], 20, 0.1, 0.2, 0.3, 2.1, 2.2, 2.3)
+        mdl.setProfile('prof1.dat', 'title', ['VelocitU', 'VelocitV', 'VelocitW'], 20, 0.1, 0.2, 0.3, 2.1, 2.2, 2.3)
         doc = '''<profiles>
-                    <profile label="prof1">
+                    <profile label="prof1.dat" title="title">
                             <var_prop name="velocity_U"/>
                             <var_prop name="velocity_V"/>
                             <var_prop name="velocity_W"/>
@@ -362,10 +376,10 @@ class ProfilesTestCase(ModelTest):
     def checkReplaceProfile(self):
         """Check whether the ProfilesModel class could replace profiles"""
         mdl = ProfilesModel(self.case)
-        mdl.setProfile('prof1', ['VelocitU', 'VelocitV', 'VelocitW'], 20, 0.1, 0.2, 0.3, 2.1, 2.2, 2.3)
-        mdl.replaceProfile('prof1', 'premier', ['VelocitU'], 30, 0.1, 0.2, 0.3, 2.0, 2.0, 2.0)
+        mdl.setProfile('prof1', 'title', ['VelocitU', 'VelocitV', 'VelocitW'], 20, 0.1, 0.2, 0.3, 2.1, 2.2, 2.3)
+        mdl.replaceProfile('prof1', 'premier', 'title_bis', ['VelocitU'], 30, 0.1, 0.2, 0.3, 2.0, 2.0, 2.0)
         doc = '''<profiles>
-                    <profile label="premier">
+                    <profile label="premier" title="title_bis">
                             <var_prop name="velocity_U"/>
                             <output_frequency>30</output_frequency>
                             <x1>0.1</x1>
@@ -385,11 +399,11 @@ class ProfilesTestCase(ModelTest):
         """Check whether the ProfilesModel class could delete profiles"""
         mdl = ProfilesModel(self.case)
 
-        mdl.setProfile('prof1', ['VelocitU', 'VelocitV', 'VelocitW'], 20, 0.1, 0.2, 0.3, 2.1, 2.2, 2.3)
-        mdl.setProfile('prof2', ['VelocitU'], 20, 0.9, 0.8, 0.7, 9.1, 9.2, 9.3)
+        mdl.setProfile('prof1.dat', 'title1', ['VelocitU', 'VelocitV', 'VelocitW'], 20, 0.1, 0.2, 0.3, 2.1, 2.2, 2.3)
+        mdl.setProfile('prof2.dat', 'title2', ['VelocitU'], 20, 0.9, 0.8, 0.7, 9.1, 9.2, 9.3)
         mdl.deleteProfile('prof1')
         doc = '''<profiles>
-                    <profile label="prof2">
+                    <profile label="prof2.dat" title="title2">
                             <var_prop name="velocity_U"/>
                             <output_frequency>20</output_frequency>
                             <x1>0.9</x1>
@@ -407,9 +421,9 @@ class ProfilesTestCase(ModelTest):
     def checkGetVarProfile(self):
         """Check whether the ProfilesModel class could get one profile"""
         mdl = ProfilesModel(self.case)
-        mdl.setProfile('prof1', ['VelocitU', 'VelocitV', 'VelocitW'], 20, 0.1, 0.2, 0.3, 2.1, 2.2, 2.3)
-        mdl.setProfile('prof2', ['VelocitU'], 20, 0.9, 0.8, 0.7, 9.1, 9.2, 9.3)
-        prof = ('prof2', ['VelocitU'], 20, 0.9, 0.8, 0.7, 9.1, 9.2, 9.3)
+        mdl.setProfile('prof1.dat', 'title1', ['VelocitU', 'VelocitV', 'VelocitW'], 20, 0.1, 0.2, 0.3, 2.1, 2.2, 2.3)
+        mdl.setProfile('prof2.dat', 'title2', ['VelocitU'], 20, 0.9, 0.8, 0.7, 9.1, 9.2, 9.3)
+        prof = ('prof2.dat', 'title2', ['VelocitU'], 20, 0.9, 0.8, 0.7, 9.1, 9.2, 9.3)
 
         assert mdl.getProfileData('prof2') == prof,\
             'Could not get values for profile named label in ProfilesModel'
diff --git a/gui/Pages/ProfilesView.py b/gui/Pages/ProfilesView.py
index a9bcd09..221e9d0 100644
--- a/gui/Pages/ProfilesView.py
+++ b/gui/Pages/ProfilesView.py
@@ -100,7 +100,7 @@ class StandardItemModelProfile(QStandardItemModel):
     def headerData(self, section, orientation, role):
         if orientation == Qt.Horizontal and role == Qt.DisplayRole:
             if section == 0:
-                return QVariant(self.tr("Profile name"))
+                return QVariant(self.tr("Filename"))
             elif section == 1:
                 return QVariant(self.tr("Variables"))
         elif role == Qt.TextAlignmentRole:
@@ -325,17 +325,27 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
         validatorFreq.setExclusiveMin(True)
         self.lineEditFreq.setValidator(validatorFreq)
 
-        validatorFloat = DoubleValidator(self.lineEditX1)
-        self.lineEditX1.setValidator(validatorFloat)
-        self.lineEditY1.setValidator(validatorFloat)
-        self.lineEditZ1.setValidator(validatorFloat)
-        self.lineEditX2.setValidator(validatorFloat)
-        self.lineEditY2.setValidator(validatorFloat)
-        self.lineEditZ2.setValidator(validatorFloat)
+        validatorFloatX1 = DoubleValidator(self.lineEditX1)
+        validatorFloatY1 = DoubleValidator(self.lineEditY1)
+        validatorFloatZ1 = DoubleValidator(self.lineEditZ1)
+        validatorFloatX2 = DoubleValidator(self.lineEditX2)
+        validatorFloatY2 = DoubleValidator(self.lineEditY2)
+        validatorFloatZ2 = DoubleValidator(self.lineEditZ2)
+
+        self.lineEditX1.setValidator(validatorFloatX1)
+        self.lineEditY1.setValidator(validatorFloatY1)
+        self.lineEditZ1.setValidator(validatorFloatZ1)
+        self.lineEditX2.setValidator(validatorFloatX2)
+        self.lineEditY2.setValidator(validatorFloatY2)
+        self.lineEditZ2.setValidator(validatorFloatZ2)
+
+        rx = "[\- _A-Za-z0-9]{1," + str(LABEL_LENGTH_MAX) + "}"
+        validatorTitle =  RegExpValidator(self.lineEditTitle, QRegExp(rx))
+        self.lineEditTitle.setValidator(validatorTitle)
 
         rx = "[\-_A-Za-z0-9]{1," + str(LABEL_LENGTH_MAX) + "}"
-        validatorLabel =  RegExpValidator(self.lineEditProfileName, QRegExp(rx))
-        self.lineEditProfileName.setValidator(validatorLabel)
+        validatorBaseName =  RegExpValidator(self.lineEditBaseName, QRegExp(rx))
+        self.lineEditBaseName.setValidator(validatorBaseName)
 
         #update list of variables, properties, scalars ...
         liste_label = QStringList()
@@ -346,7 +356,7 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
         #update list of profiles for view from xml file
         for lab in self.mdl.getProfilesLabelsList():
             self.entriesNumber = self.entriesNumber + 1
-            label, list, freq, x1, y1, z1, x2, y2, z2 = self.mdl.getProfileData(lab)
+            label, title, list, freq, x1, y1, z1, x2, y2, z2 = self.mdl.getProfileData(lab)
             self.__insertProfile(label, list)
 
         self.__eraseEntries()
@@ -356,7 +366,7 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
         """
         Verif label.
         """
-        label = str(self.lineEditProfileName.text())
+        label = str(self.lineEditBaseName.text())
         if label in self.mdl.getProfilesLabelsList():
             default = {}
             default['label'] = label
@@ -379,54 +389,30 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
         Input choice for frequency for profile.
         """
         choice = self.modelFreq.dicoV2M[str(text)]
-        self.freq = choice
 
         if choice == "end":
             nfreq = -1
             self.lineEditFreq.setText(QString(str(nfreq)))
             self.lineEditFreq.setDisabled(True)
+            self.labelBaseName.setText(QString("Filename"))
 
         if choice == "frequency":
+            nfreq, ok = self.lineEditFreq.text().toInt()
+            if nfreq == -1: nfreq = 1
             self.lineEditFreq.setEnabled(True)
-            nfreq = self.__getFrequency()
             self.lineEditFreq.setText(QString(str(nfreq)))
+            self.labelBaseName.setText(QString("Filename"))
 
         return choice, nfreq
 
 
-    def __getFrequency(self):
-        """
-        Input the frequency of the listing output
-        """
-        nfreq = 1
-
-        if self.freq == "frequency":
-            nfreq = int(self.lineEditFreq.text())
-            if nfreq > 0: self.nfreq = nfreq
-
-        return nfreq
-
-
-    #def setFrequency(self, nfreq):
-        #"""
-        #Put frequency' choice and values on view
-        #"""
-        #if nfreq == -1 or nfreq == None:
-            #self.modelFreq.setItem(str_model='end')
-            #self.lineEditFreq.setDisabled(True)
-        #else:
-            #self.modelFreq.setItem(str_model='frequency')
-            #self.lineEditFreq.setEnabled(True)
-        #self.lineEditFreq.setText(QString(str(nfreq)))
-
-
     def __infoProfile(self, row):
         """
         Return info from the argument entry.
         """
         label = self.modelProfile.getLabel(row)
-        lab, liste, freq, x1, y1, z1, x2, y2, z2 = self.mdl.getProfileData(label)
-        return label, liste, freq, x1, y1, z1, x2, y2, z2
+        lab, title, list, freq, x1, y1, z1, x2, y2, z2 = self.mdl.getProfileData(label)
+        return label, title, list, freq, x1, y1, z1, x2, y2, z2
 
 
     def __insertProfile(self, label, list):
@@ -473,6 +459,8 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
             self.__insertProfile(label, var_prof)
 
             choice, freq = self.slotFrequencyType(self.comboBoxFreq.currentText())
+            title = str(self.lineEditTitle.text())
+            if not title: title = label
             X1, ok = self.lineEditX1.text().toDouble()
             Y1, ok = self.lineEditY1.text().toDouble()
             Z1, ok = self.lineEditZ1.text().toDouble()
@@ -480,7 +468,7 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
             Y2, ok = self.lineEditY2.text().toDouble()
             Z2, ok = self.lineEditZ2.text().toDouble()
 
-            self.mdl.setProfile(label, var_prof, freq, X1, Y1, Z1, X2, Y2, Z2)
+            self.mdl.setProfile(label, title, var_prof, freq, X1, Y1, Z1, X2, Y2, Z2)
             self.__eraseEntries()
 
 
@@ -496,7 +484,7 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
             msg   = self.tr("You must select an existing profile")
             QMessageBox.information(self, title, msg)
         else:
-            label, vlist, freq, x1, y1, z1, x2, y2, z2 = self.__infoProfile(row)
+            label, title, list, freq, x1, y1, z1, x2, y2, z2 = self.__infoProfile(row)
             self.modelProfile.deleteRow(row)
             self.mdl.deleteProfile(label)
             self.__eraseEntries()
@@ -514,7 +502,7 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
             msg   = self.tr("You must select an existing profile")
             QMessageBox.information(self, title, msg)
         else:
-            old_label, vlist, freq, x1, y1, z1, x2, y2, z2 = self.__infoProfile(row)
+            old_label, title, vlist, freq, x1, y1, z1, x2, y2, z2 = self.__infoProfile(row)
 
             var_prof = [str(s) for s in self.modelDrop.stringList()]
             log.debug("slotEditProfile -> %s" % (var_prof,))
@@ -524,10 +512,10 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
                 QMessageBox.information(self, title, msg)
 
             else:
-                new_label = str(self.lineEditProfileName.text())
+                new_label = str(self.lineEditBaseName.text())
 
                 if new_label == '':
-                    new_label = 'profile' + repr(self.entriesNumber)
+                    new_label = old_label
 
                 if new_label != old_label and new_label in self.mdl.getProfilesLabelsList():
                     title = self.tr("Warning")
@@ -541,6 +529,8 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
                 self.treeViewProfile.dataChanged(idx, idx)
 
                 choice, freq = self.slotFrequencyType(self.comboBoxFreq.currentText())
+                title = str(self.lineEditTitle.text())
+                if not title: title = new_label
                 X1, ok = self.lineEditX1.text().toDouble()
                 Y1, ok = self.lineEditY1.text().toDouble()
                 Z1, ok = self.lineEditZ1.text().toDouble()
@@ -548,7 +538,7 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
                 Y2, ok = self.lineEditY2.text().toDouble()
                 Z2, ok = self.lineEditZ2.text().toDouble()
 
-                self.mdl.replaceProfile(old_label, new_label, var_prof, freq, X1, Y1, Z1, X2, Y2, Z2)
+                self.mdl.replaceProfile(old_label, new_label, title, var_prof, freq, X1, Y1, Z1, X2, Y2, Z2)
                 self.__eraseEntries()
 
 
@@ -560,18 +550,21 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
         row = index.row()
         log.debug("slotSelectProfile -> %s" % (row,))
 
-        label, liste, freq, x1, y1, z1, x2, y2, z2 = self.__infoProfile(row)
+        label, title, liste, freq, x1, y1, z1, x2, y2, z2 = self.__infoProfile(row)
 
-        self.lineEditProfileName.setText(QString(str(label)))
+        self.lineEditTitle.setText(QString(str(title)))
+        self.lineEditBaseName.setText(QString(str(label)))
 
         if freq >= 1:
             self.modelFreq.setItem(str_model='frequency')
             self.lineEditFreq.setEnabled(True)
             self.lineEditFreq.setText(QString(str(freq)))
+            self.labelBaseName.setText(QString("Filename"))
         else:
             self.modelFreq.setItem(str_model='end')
             self.lineEditFreq.setText(QString(str("-1")))
             self.lineEditFreq.setDisabled(True)
+            self.labelBaseName.setText(QString("Filename"))
 
         self.lineEditX1.setText(QString(str(x1)))
         self.lineEditY1.setText(QString(str(y1)))
@@ -589,7 +582,8 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
         """
         Delete all caracters in the entries.
         """
-        self.lineEditProfileName.setText(QString(str("")))
+        self.lineEditTitle.setText(QString(str("")))
+        self.lineEditBaseName.setText(QString(str("")))
         self.lineEditX1.setText(QString(str("")))
         self.lineEditY1.setText(QString(str("")))
         self.lineEditZ1.setText(QString(str("")))
@@ -600,6 +594,7 @@ class ProfilesView(QWidget, Ui_ProfilesForm):
         self.modelFreq.setItem(str_model='end')
         self.lineEditFreq.setText(QString(str("-1")))
         self.lineEditFreq.setDisabled(True)
+        self.labelBaseName.setText(QString("Filename"))
         self.modelDrop.setStringList(QStringList())
         self.treeViewProfile.clearSelection()
 
@@ -622,4 +617,4 @@ if __name__ == "__main__":
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/QMeiEditorView.py b/gui/Pages/QMeiEditorView.py
index 81923af..0723108 100644
--- a/gui/Pages/QMeiEditorView.py
+++ b/gui/Pages/QMeiEditorView.py
@@ -5,7 +5,7 @@
 #     This file is part of the Code_Saturne User Interface, element of the
 #     Code_Saturne CFD tool.
 #
-#     Copyright (C) 1998-2007 EDF S.A., France
+#     Copyright (C) 1998-2010 EDF S.A., France
 #
 #     contact: saturne-support at edf.fr
 #
@@ -31,6 +31,8 @@
 This module defines the Dialog window of the mathematical expression interpretor.
 
 This module contains the following classes and function:
+- format
+- QMeiHighlighter
 - QMeiEditorView
 """
 
@@ -65,67 +67,87 @@ log = logging.getLogger("QMeiEditorView")
 log.setLevel(GuiParam.DEBUG)
 
 #-------------------------------------------------------------------------------
-# 
+# Syntax highlighter for the mathematical expressions editor.
 #-------------------------------------------------------------------------------
 
+def format(color, style=''):
+    """Return a QTextCharFormat with the given attributes."""
+    _color = QColor()
+    _color.setNamedColor(color)
+
+    _format = QTextCharFormat()
+    _format.setForeground(_color)
+    if 'bold' in style:
+        _format.setFontWeight(QFont.Bold)
+    if 'italic' in style:
+        _format.setFontItalic(True)
+
+    return _format
+
+
+   # Syntax styles that can be shared by all expressions
+STYLES = {
+    'keyword': format('blue', 'bold'),
+    'operator': format('red'),
+    'brace': format('darkGray'),
+    'required': format('magenta', 'bold'),
+    'symbols': format('darkMagenta', 'bold'),
+    'comment': format('darkGreen', 'italic'),
+    }
+
+
 class QMeiHighlighter(QSyntaxHighlighter):
+    """
+    Syntax highlighter for the mathematical expressions editor.
+    """
+    keywords = [
+         'cos', 'sin', 'tan', 'exp', 'sqrt', 'log',
+         'acos', 'asin', 'atan', 'atan2', 'cosh', 'sinh',
+         'tanh', 'abs', 'mod', 'int', 'min', 'max',
+         'pi', 'e', 'while', 'if', 'else', 'print',
+         'raise', 'return', 'try', 'while', 'yield',
+         'None', 'True', 'False',
+    ]
+
+    operators = [
+        # logical
+        '!', '==', '!=', '<', '<=', '>', '>=', '&&', '\|\|',
+        # Arithmetic
+        '=', '\+', '-', '\*', '/', '\^',
+    ]
+
+    braces = ['\{', '\}', '\(', '\)', '\[', '\]',]
+
 
     def __init__(self, document, required, symbols):
         QSyntaxHighlighter.__init__(self, document)
 
-        list = []
-        for p,q in required:
-            list.append(p)
-        rx = string.join(list, r"|")
-        self.req_re  = QRegExp(rx)
-        self.req_fmt = QTextCharFormat()
-        self.req_fmt.setFontWeight(QFont.Bold)
+        rules = []
+        rules += [(r'\b%s\b' % w, STYLES['keyword']) for w in QMeiHighlighter.keywords]
+        rules += [(r'%s' % o, STYLES['operator']) for o in QMeiHighlighter.operators]
+        rules += [(r'%s' % b, STYLES['brace']) for b in QMeiHighlighter.braces]
+        rules += [(r'\b%s\b' % r, STYLES['required']) for r,l in required]
+        rules += [(r'\b%s\b' % s, STYLES['symbols']) for s,l in symbols]
+        rules += [(r'#[^\n]*', STYLES['comment'])]
 
-        list = []
-        for p,q in symbols:
-            list.append(p)
-        rx = string.join(list, r"|")
-        self.sym_re  = QRegExp(rx)
-        self.sym_fmt = QTextCharFormat()
-        self.sym_fmt.setFontWeight(QFont.Bold)
-
-        self.const_re  = QRegExp(r"e|pi")
-        self.const_fmt = QTextCharFormat()
-        self.const_fmt.setForeground(Qt.darkCyan)
-
-        self.func_re  = QRegExp(r"exp|log|sqrt|sin|cos|tan|asin|acos|atan|atan2|sinh|cosh|tanh|abs|min|max")
-        self.func_fmt = QTextCharFormat()
-        self.func_fmt.setFontWeight(QFont.Bold)
-        self.func_fmt.setForeground(Qt.blue)
-
-        self.kword_re  = QRegExp(r"while|if|else|print")
-        self.kword_fmt = QTextCharFormat()
-        self.kword_fmt.setForeground(Qt.darkRed)
-
-        #self.special_re = QRegExp(r"[^\\][(),]")
-        #self.special_fmt = QTextCharFormat()
-        #self.special_fmt.setForeground(Qt.blue)
-
-        self.rules = [
-            (self.req_re,   self.req_fmt, 0, 0),
-            (self.sym_re,   self.sym_fmt, 0, 0),
-            (self.const_re, self.const_fmt, 0, 0),
-            (self.func_re,  self.func_fmt, 0, 0),
-            (self.kword_re, self.kword_fmt, 0, 0),
-            #(self.special_re, self.special_fmt, 1, -1),
-        ]
+        # Build a QRegExp for each pattern
+        self.rules = [(QRegExp(pat), fmt) for (pat, fmt) in rules]
 
 
     def highlightBlock(self, text):
-        for expr, fmt, a, b in self.rules:
-            index = text.indexOf(expr)
-            while index >= 0:
-                length = expr.matchedLength()
-                self.setFormat(index + a, length + b, fmt)
-                index = text.indexOf(expr, index + length + b)
+        """
+        Apply syntax highlighting to the given block of text.
+        """
+        for rx, fmt in self.rules:
+            pos = rx.indexIn(text, 0)
+            while pos != -1:
+                pos = rx.pos(0)
+                s = rx.cap(0)
+                self.setFormat(pos, s.length(), fmt)
+                pos = rx.indexIn( text, pos+rx.matchedLength() )
 
 #-------------------------------------------------------------------------------
-# 
+# Dialog for mathematical expression interpretor
 #-------------------------------------------------------------------------------
 
 class QMeiEditorView(QDialog, Ui_QMeiDialog):
@@ -143,14 +165,15 @@ class QMeiEditorView(QDialog, Ui_QMeiDialog):
         self.required = required
         self.symbols  = symbols
 
-        #h1 = QMeiHighlighter(self.textEditExpression, required, symbols)
-        #h2 = QMeiHighlighter(self.textEditExamples, required, symbols)
+        # Syntax highlighting
+        self.h1 = QMeiHighlighter(self.textEditExpression, required, symbols)
+        self.h2 = QMeiHighlighter(self.textEditExamples, required, symbols)
 
         # Required symbols of the mathematical expression
 
         if not expression:
             expression = ""
-            for p,q in required:
+            for p, q in required:
                 expression += p + " = \n"
         else:
             while expression[0] in (" ", "\n", "\t"):
@@ -240,6 +263,7 @@ class QMeiEditorView(QDialog, Ui_QMeiDialog):
 
         intr = mei.mei_tree_new(str(self.textEditExpression.toPlainText()))
         log.debug("intr.string: %s" % intr.string)
+        log.debug("intr.errors: %s" % intr.errors)
 
         for p,q in self.symbols:
             mei.mei_tree_insert(intr, p, 0.0)
@@ -267,6 +291,7 @@ class QMeiEditorView(QDialog, Ui_QMeiDialog):
                        "    column: " + str(c) + " \n\n"
 
             QMessageBox.critical(self, self.tr('Expression Editor'), QString(msg))
+            intr.errors = 0
             intr = mei.mei_tree_destroy(intr)
             QObject.connect(self.textEditExpression, SIGNAL("textChanged()"), self.slotClearBackground)
             return
@@ -283,11 +308,12 @@ class QMeiEditorView(QDialog, Ui_QMeiDialog):
                 block_text = doc.findBlockByNumber(i)
                 cursor = QTextCursor(block_text)
                 block_format = QTextBlockFormat()
-                block_format.setBackground(QBrush(QColor(Qt.magenta)))
+                block_format.setBackground(QBrush(QColor(Qt.yellow)))
                 cursor.setBlockFormat(block_format)
                 #self.textEditExpression.setFocus()
             for i in range(0, intr.errors): msg += intr.labels[i] + " \n"
             QMessageBox.critical(self, self.tr('Expression Editor'), QString(msg))
+            intr.errors = 0
             intr = mei.mei_tree_destroy(intr)
             QObject.connect(self.textEditExpression, SIGNAL("textChanged()"), self.slotClearBackground)
             return
diff --git a/gui/Pages/ReferenceValuesModel.py b/gui/Pages/ReferenceValuesModel.py
index 3bec944..1a91f43 100644
--- a/gui/Pages/ReferenceValuesModel.py
+++ b/gui/Pages/ReferenceValuesModel.py
@@ -52,6 +52,7 @@ from Base.XMLmodel import ModelTest
 from Pages.CoalCombustionModel import CoalCombustionModel
 from Pages.GasCombustionModel import GasCombustionModel
 from Pages.ElectricalModelsModel import ElectricalModel
+from AtmosphericFlowsModel import AtmosphericFlowsModel
 
 #-------------------------------------------------------------------------------
 # Reference values model class
@@ -72,10 +73,7 @@ class ReferenceValuesModel(Model):
         self.node_coal = self.node_models.xmlGetNode('pulverized_coal', 'model')
         self.node_gas   = self.node_models.xmlGetNode('gas_combustion',  'model')
         self.node_joule = self.node_models.xmlGetNode('joule_effect',  'model')
-
-        self.ppList = ['off', 'ebu', 'd3p', 
-                       'coal_homo', 'coal_homo2', 'coal_lagr', 
-                       'joule', 'arc']
+        self.node_atmo = self.node_models.xmlGetNode('atmospheric_flows',  'model')
 
 
     def defaultValues(self):
@@ -85,16 +83,18 @@ class ReferenceValuesModel(Model):
         default = {}
         default['reference_pressure'] = 1.01325e+5
         default['reference_temperature'] = 1273.15
+        if self.getParticularPhysical()[0] == "atmo":
+            default['reference_temperature'] = 293.15
         # mass molar for dry air
         default['reference_mass_molar'] = 28.966e-3
-        
+
         return default
 
 
     def setPressure(self, value):
         """
         Set value of reference pressure into xml file.
-        """ 
+        """
         self.isGreaterOrEqual(value, 0.0)
         node = self.node_veloce.xmlGetNode('variable', name ='pressure')
         node.xmlSetData('reference_pressure', value)
@@ -103,10 +103,10 @@ class ReferenceValuesModel(Model):
     def getPressure(self):
         """
         Return the value of reference pressure.
-        """ 
+        """
         node = self.node_veloce.xmlGetNode('variable', name ='pressure')
         value = node.xmlGetDouble('reference_pressure')
-        if value == None: 
+        if value == None:
             value = self.defaultValues()['reference_pressure']
             self.setPressure(value)
 
@@ -161,26 +161,31 @@ class ReferenceValuesModel(Model):
         """
         model = 'off'
         node = None
+
         coalModel = CoalCombustionModel(self.case).getCoalCombustionModel()
         gasModel = GasCombustionModel(self.case).getGasCombustionModel()
         jouleModel = ElectricalModel(self.case).getElectricalModel()
-        if coalModel != 'off': 
-            model = coalModel
+        atmoModel = AtmosphericFlowsModel(self.case).getAtmosphericFlowsModel()
+
+        if coalModel != 'off':
+            model = "coal"
             node = self.node_coal
-        if gasModel != 'off': 
-            model = gasModel
+        elif gasModel != 'off':
+            model = "gas"
             node = self.node_gas
-        if jouleModel != 'off': 
-            model = jouleModel
+        elif jouleModel != 'off':
+            model = "joule"
             node = self.node_joule
-        self.isInList(model, self.ppList)
+        elif atmoModel != 'off':
+            model = "atmo"
+            node = self.node_atmo
+
         return model, node
 
 
 #-------------------------------------------------------------------------------
 # ReferenceValuesModel test case
 #-------------------------------------------------------------------------------
-GasCombustionModel
 
 class ReferenceValuesTestCase(ModelTest):
     """
diff --git a/gui/Pages/ReferenceValuesView.py b/gui/Pages/ReferenceValuesView.py
index a4d5889..cefbc2b 100644
--- a/gui/Pages/ReferenceValuesView.py
+++ b/gui/Pages/ReferenceValuesView.py
@@ -20,7 +20,7 @@
 #     GNU General Public License for more details.
 #
 #     You should have received a copy of the GNU General Public License
-#     along with the Code_Saturne Kernel; ReferenceValuesif not, write to the
+#     along with the Code_Saturne Kernel; if not, write to the
 #     Free Software Foundation, Inc.,
 #     51 Franklin St, Fifth Floor,
 #     Boston, MA  02110-1301  USA
@@ -106,7 +106,12 @@ class ReferenceValuesView(QWidget, Ui_ReferenceValuesForm):
         # Display
 
         model, node = self.mdl.getParticularPhysical()
-        if model != "off":
+
+        if model == "atmo":
+            self.groupBoxTemperature.show()
+            self.labelInfoT0.hide()
+            self.groupBoxMassMolar.hide()
+        elif model != "off":
             self.groupBoxTemperature.show()
             self.groupBoxMassMolar.show()
         else:
@@ -119,10 +124,12 @@ class ReferenceValuesView(QWidget, Ui_ReferenceValuesForm):
         self.lineEditP0.setText(QString(str(p)))
 
         model, node = self.mdl.getParticularPhysical()
-        if model != "off":
+        if model == "atmo":
+            t = self.mdl.getTemperature()
+            self.lineEditT0.setText(QString(str(t)))
+        elif model != "off":
             t = self.mdl.getTemperature()
             self.lineEditT0.setText(QString(str(t)))
-
             m = self.mdl.getMassemol()
             self.lineEditMassMolar.setText(QString(str(m)))
 
@@ -161,7 +168,7 @@ class ReferenceValuesView(QWidget, Ui_ReferenceValuesForm):
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # Testing part
@@ -173,4 +180,4 @@ if __name__ == "__main__":
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/SalomeHandler.py b/gui/Pages/SalomeHandler.py
index 3615f65..09cdb73 100644
--- a/gui/Pages/SalomeHandler.py
+++ b/gui/Pages/SalomeHandler.py
@@ -53,6 +53,8 @@ import logging
 # Third-party modules
 #-------------------------------------------------------------------------------
 
+from Base.Toolbox import GuiParam
+
 import CFDSTUDYGUI
 import CFDSTUDYGUI_ProcessMgr
 from CFDSTUDYGUI_DataModel import _getStudy, _getEngine
@@ -67,7 +69,7 @@ import GEOM
 
 logging.basicConfig()
 log = logging.getLogger("SalomeHandler")
-log.setLevel(logging.DEBUG)
+log.setLevel(GuiParam.DEBUG)
 
 #-------------------------------------------------------------------------------
 
@@ -80,6 +82,7 @@ builder = aStudy.NewBuilder()
 if aSMESH_SO != None:
     aSMESHEngine = lcc.FindOrLoadComponent("FactoryServer", "SMESH")
     builder.LoadWith(aSMESH_SO, aSMESHEngine)
+
 if aGEOM_SO != None:
     aGEOMEngine = lcc.FindOrLoadComponent("FactoryServer", "GEOM")
     builder.LoadWith(aGEOM_SO, aGEOMEngine)
@@ -242,35 +245,23 @@ def VolumeGroup():
 #    return local
 
 
-def runSolver(case, cmd, mdl, log_file):
-    #_CommandMgr = CFDSTUDYGUI_CommandMgr.CFDSTUDYGUI_CommandMgr()
-    #_CommandMgr.runCommand( cmd, os.path.abspath(os.path.curdir), "", log_file)
-
-    tmp_path = ''
-    if mdl.dicoValues['CS_TMP_PREFIX']:
-        tmp_path = mdl.dicoValues['CS_TMP_PREFIX']
-    elif os.environ["NOM_ARCH"] == "OSF1":
-        tmp_path = os.environ["TMPDIR"]
-    elif os.environ["NOM_ARCH"] == "Linux_CCRT":
-        tmp_path = os.environ["SCRATCHDIR"]
-    elif os.environ["NOM_ARCH"] == "Linux_IA64":
-        tmp_path = os.environ["SCRATCHDIR"]
-    elif os.environ["NOM_ARCH"] == "Linux_SCALI":
-        tmp_path = os.environ["HOME"]
-    elif "TMPDIR" in os.environ and os.environ["TMPDIR"] != '' and os.environ["TMPDIR"] != '/tmp':
-        tmp_path = os.environ["TMPDIR"]
+def runSolver(case, cmd):
+    """
+    Executing the Code_Saturne script runcase in background mode.
+    All output information catched by LogWindow.
+    """
+    import CFDSTUDYGUI_CommandMgr, CFDSTUDYGUI_DataModel
+
+    _CommandMgr = CFDSTUDYGUI_CommandMgr.CFDSTUDYGUI_CommandMgr()
+    aCase = case['salome']
+    aChList = CFDSTUDYGUI_DataModel.ScanChildren(aCase, "RESU")
+
+    if len(aChList) == 1:
+        _CommandMgr.runCommandDlg(aChList[0],
+                                  _CommandMgr.tr("STMSG_RUN_SCRIPT"),
+                                  cmd,
+                                  case['scripts_path'])
     else:
-        tmp_path = os.environ["HOME"]
-
-    study_dir, case_name = os.path.split(case['case_path'])
-    study_name = os.path.split(study_dir)[-1]
-    tmp_path = os.path.join(tmp_path, "tmp_Saturne")
-    tmp_path = os.path.join(tmp_path, study_name) + "." + case_name
-
-    CFDSTUDYGUI.processMgr().addProcess(cmd, \
-                                        case['case_path'], \
-                                        case['xmlfile'], \
-                                        tmp_path, \
-                                        mdl.dicoValues['ARG_CS_OUTPUT'])
+        raise ValueError,  "More than one RESU directory found!"
 
 #-------------------------------------------------------------------------------
diff --git a/gui/Pages/SolutionDomainModel.py b/gui/Pages/SolutionDomainModel.py
index 774ed41..34f8c16 100644
--- a/gui/Pages/SolutionDomainModel.py
+++ b/gui/Pages/SolutionDomainModel.py
@@ -28,10 +28,10 @@
 #-------------------------------------------------------------------------------
 
 """
-This module defines the XML calls for ecs execution                            
+This module defines the XML calls for ecs execution
 This module contains the following classes and function:
 - MeshModel
-- SolutionDomainModel 
+- SolutionDomainModel
 """
 
 #-------------------------------------------------------------------------------
@@ -71,14 +71,14 @@ class MeshModel:
         self.ext['neu']   = "gambit"
         self.ext['ccm']   = "ccm"
         self.ext['ngeom'] = "ngeom"
-        self.ext['unv']   = "unv"
+        self.ext['unv']   = "ideas"
         self.ext['mesh']  = "meta"
 
 
     def getMeshExtension(self, mesh):
         """
         Public method.
-        
+
         @return: Extension of the mesh file if it exists.
         @rtype: C{String}
         """
@@ -120,7 +120,7 @@ class MeshModel:
     def getBuildFormatList(self):
         """
         Public method.
-        
+
         @return: List of number, format and description for view of popup.
         @rtype: C{List} of C{3-tuple}
         """
@@ -170,7 +170,7 @@ class MeshModel:
                 ("GAMBIT Neutral files",      "*.neu"  ),
                 ("STAR-CCM+",                 "*.ccm"  ),
                 ("pro-STAR/STAR4 files",      "*.ngeom"),
-                ("I-DEAS universal files",    "*.unv"  ),
+                ("I-deas universal files",    "*.unv"  ),
                 ("Meta-mesh files",           "*.mesh" ) ]
 
         return list
@@ -196,7 +196,6 @@ class SolutionDomainModel(MeshModel, Model):
         self.node_join       = self.node_ecs.xmlInitNode('join_meshes', "status")
         self.node_cut        = self.node_ecs.xmlInitNode('faces_cutting', "status")
         self.node_orient     = self.node_ecs.xmlInitNode('reorientation', "status")
-        self.node_syrthes    = self.node_ecs.xmlInitNode('syrthes_coupling', "status")
         self.node_perio      = self.node_ecs.xmlInitNode('periodic_boundary')
         self.node_standalone = self.node_ecs.xmlInitNode('standalone')
 ##        self.node_select     = self.node_standalone.xmlInitNode('faces_select', "status")
@@ -238,23 +237,21 @@ class SolutionDomainModel(MeshModel, Model):
         """
         Update, for keyword, the backup file if it's ready to run.
         """
-        self.isInList(keyword,('MESH', 
+        self.isInList(keyword,('MESH',
                                'COMMAND_REORIENT',
                                'COMMAND_JOIN',
                                'COMMAND_CWF',
                                'COMMAND_PERIO',
-                               'COMMAND_SYRTHES',
                                'CWF_OFF',
                                'JOIN_OFF',
-                               'PERIO_OFF',
-                               'SYRTHES_OFF'))
+                               'PERIO_OFF'))
         key = self.case['computer']
         if key:
             if not self.case['batchScript'][key]: return
 
             from BatchRunningModel import BatchRunningModel
             batch = BatchRunningModel(self.case)
-            if keyword in ('CWF_OFF', 'JOIN_OFF', 'PERIO_OFF', 'SYRTHES_OFF'):
+            if keyword in ('CWF_OFF', 'JOIN_OFF', 'PERIO_OFF'):
                 cmd = string.split(keyword,'_')[:1][0]
                 keyword = 'COMMAND_' + str(cmd)
                 batch.dicoValues[keyword] = ''
@@ -270,12 +267,9 @@ class SolutionDomainModel(MeshModel, Model):
         """
         Private method: Return node corresponding at item "tag"
         """
-        self.isInList(tagName, ('faces_join', 'faces_syrthes', 
-                                'faces_select', 'faces_periodic'))
+        self.isInList(tagName, ('faces_join', 'faces_select', 'faces_periodic'))
         if tagName == 'faces_join':
             node = self.node_join
-        elif tagName == 'faces_syrthes':
-            node = self.node_syrthes
         elif tagName == 'faces_select':
             node = self.node_standalone
         elif tagName == 'faces_periodic':
@@ -298,7 +292,7 @@ class SolutionDomainModel(MeshModel, Model):
     def getJoinSelectionsNumber(self):
         """
         Public method.
-        
+
         @return: number of join faces selections
         @rtype: C{int}
         """
@@ -307,7 +301,7 @@ class SolutionDomainModel(MeshModel, Model):
 
     def _addFacesSelect(self, node, select):
         """
-        Private method: Add faces to node (join, periodic or syrthes) with dictionary select.
+        Private method: Add faces to node (join, periodic) with dictionary select.
         """
         for sel, txt in [ (select['color'],    'faces_color'),
                           (select['group'],    'faces_group'),
@@ -370,7 +364,7 @@ class SolutionDomainModel(MeshModel, Model):
 
     def _removeChildren(self, node):
         """
-        Private method: Remove all child nodes of node for one selection 
+        Private method: Remove all child nodes of node for one selection
         """
         for tag in ('faces_color',
                     'faces_group',
@@ -383,7 +377,7 @@ class SolutionDomainModel(MeshModel, Model):
 
     def _getLineCommand(self, node):
         """
-        Private method: Get color group faces and revers satus and fraction 
+        Private method: Get color group faces and revers satus and fraction
         and plan datas for ommand line to preprocessor execution
         """
         line = ""
@@ -424,7 +418,7 @@ class SolutionDomainModel(MeshModel, Model):
         Private method: Put default values of translation for periodic translation
         """
         node = self.node_perio.xmlGetNode('transformation', name=perio_name)
-        if node: 
+        if node:
             nList = node.xmlInitChildNodeList('translation')
             for n in nList:
                 n.xmlSetData('translation_x', self.defaultValues()['transfo_val'])
@@ -488,7 +482,7 @@ class SolutionDomainModel(MeshModel, Model):
         self.isInList(mesh, self.getMeshList())
         nodeList = self.node_meshes.xmlGetNodeList('mesh', 'name')
         for node in nodeList:
-            if node['name'] == mesh: 
+            if node['name'] == mesh:
                 node.xmlRemoveNode()
         self._updateBatchScriptFile('MESH')
 
@@ -598,7 +592,7 @@ class SolutionDomainModel(MeshModel, Model):
             grp = 'off'
         return grp
 
-# Methods to manage status of all main balises : 
+# Methods to manage status of all main balises :
 #=============================================
 
     def getJoinMeshesStatus(self):
@@ -692,58 +686,9 @@ class SolutionDomainModel(MeshModel, Model):
         self._updateBatchScriptFile('COMMAND_REORIENT')
 
 
-    def getSyrthesCouplingStatus(self):
-        """
-        Get status on balise "syrthes_coupling" in xml file
-        """
-        status = self.node_syrthes['status']
-        if not status:
-            status = self.defaultValues()['syrth_status']
-            self.setSyrthesCouplingStatus(status)
-        return status
-
-
-    def setSyrthesCouplingStatus(self, status):
-        """
-        Put status on balise "syrthes_coupling" in xml file
-        """
-        self.isOnOff(status)
-        self.node_syrthes['status'] = status
-        if status == 'off':
-            self._updateBatchScriptFile('SYRTHES_OFF')
-        else:
-            self._updateBatchScriptFile('COMMAND_SYRTHES')
-
-
-    def getSyrthes2dMeshStatus(self):
-        """
-        Return status of balise "'syrthes_mesh_2d'" from xml file
-        """
-        node = self.node_syrthes.xmlInitNode('syrthes_mesh_2d', 'status')
-        status = node['status']
-        if not status : 
-            status = self.defaultValues()['syrth_mesh_2d']
-            self.setSyrthes2dMeshStatus(status)
-        return status
-
-
-    def setSyrthes2dMeshStatus(self, status):
-        """
-        Put status of balise 'syrthes_mesh_2d' into xml file
-        """
-        self.isOnOff(status)
-        node = self.node_syrthes.xmlInitNode('syrthes_mesh_2d', 'status')
-        if status != self.defaultValues()['syrth_mesh_2d']:
-            node['status'] = status
-        else:
-            if node:
-                node.xmlRemoveNode()
-        self._updateBatchScriptFile('COMMAND_SYRTHES')
-
-
     def getSimCommStatus(self):
         """
-        Get status of balise ''similation_communication' into xml file             
+        Get status of balise ''similation_communication' into xml file
         """
         node = self.node_standalone.xmlInitNode('simulation_communication', 'status')
         status = node['status']
@@ -755,7 +700,7 @@ class SolutionDomainModel(MeshModel, Model):
 
     def setSimCommStatus(self, status):
         """
-        Put status of balise ''similation_communication' into xml file 
+        Put status of balise ''similation_communication' into xml file
         """
         self.isOnOff(status)
         node = self.node_standalone.xmlInitNode('simulation_communication', 'status')
@@ -792,7 +737,7 @@ class SolutionDomainModel(MeshModel, Model):
         if not line:
             line = self.defaultValues()['postprocessing_options']
             self.setPostProOptionsFormat(line)
-        return line 
+        return line
 
 
     def setPostProOptionsFormat(self, line):
@@ -903,7 +848,7 @@ class SolutionDomainModel(MeshModel, Model):
                         self._setTranslationDefault(perio_name)
                     if not node.xmlGetChildNodeList('rotation2'):
                         self._setRotation2Default(perio_name)
-    
+
             self._updateBatchScriptFile('COMMAND_PERIO')
 
 
@@ -1039,7 +984,7 @@ class SolutionDomainModel(MeshModel, Model):
         mode = self.getPeriodicityMode(perio_name)
         self.isInList(mode, ('rotation1', 'rotation2', 'tr+rota1', 'tr+rota2'))
 
-        node = self.node_perio.xmlGetNode('transformation', name=perio_name) 
+        node = self.node_perio.xmlGetNode('transformation', name=perio_name)
 
         if mode == "rotation1" or mode == "tr+rota1":
             n = node.xmlGetChildNode('rotation1')
@@ -1118,8 +1063,8 @@ class SolutionDomainModel(MeshModel, Model):
 
     def addJoinFaces(self, select):
         """
-        Add faces selection for join meshes. 
-        Select is a dictionary with 'color', 'group', 'fraction', 'plan' 
+        Add faces selection for join meshes.
+        Select is a dictionary with 'color', 'group', 'fraction', 'plan'
         """
         nb = self.getJoinSelectionsNumber()
         name = str(nb +1)
@@ -1130,7 +1075,7 @@ class SolutionDomainModel(MeshModel, Model):
 
     def getJoinFaces(self, number):
         """
-        Return faces selection named 'number' for join meshes . 
+        Return faces selection named 'number' for join meshes .
         """
         self.isLowerOrEqual(int(number), int(self.getJoinSelectionsNumber()))
 
@@ -1185,7 +1130,7 @@ class SolutionDomainModel(MeshModel, Model):
 
     def addPeriodicFaces(self, perio_name, select):
         """
-        Add faces selection for periodic transformation. 
+        Add faces selection for periodic transformation.
         Select is a dictionary with 'color', 'group', 'fraction', 'plan' ...
         """
         self.isInList(perio_name, self.getPeriodicityListName())
@@ -1199,7 +1144,7 @@ class SolutionDomainModel(MeshModel, Model):
     def getPeriodicFaces(self, perio_name):
         """
         Public method.
-        
+
         @return: faces selection for periodic transformation named perio_name
         @rtype: C{dictionary}
         """
@@ -1213,7 +1158,7 @@ class SolutionDomainModel(MeshModel, Model):
 
         return result
 
-        
+
     def replacePeriodicFaces(self, perio_name, select):
         """
         Replace values of faces selection for periodic transformation, by select
@@ -1267,73 +1212,9 @@ class SolutionDomainModel(MeshModel, Model):
             raise ValueError, "wrong periodicity"
 
 
-    def addSyrthesFaces(self, select):
-        """
-        Add faces selection for syrthes coupling. 
-        Select is a dictionary with 'color', 'group', 'fraction', 'plan' ...
-        """
-        node = self.node_syrthes.xmlAddChild('faces_syrthes', status="on")
-        select['fraction'] =""
-        select['plan'] = ""
-        self._addFacesSelect(node, select)
-        self._updateBatchScriptFile('COMMAND_SYRTHES')
-        
-        
-    def getSyrthesFaces(self):
-        """
-        Return faces selection for syrthes coupling (only one authorized selection)
-        """
-        result = {}
-        node  = self.node_syrthes.xmlGetChildNode('faces_syrthes', status="on")
-        if node:
-            result = self._getFaces(node)
-        
-        return result
-
-
-    def replaceSyrthesFaces(self, select):
-        """
-        Replace values of faces selection for syrthes coupling (only one authorized selection)
-        by select
-        """
-        node  = self.node_syrthes.xmlGetChildNode('faces_syrthes', status="on")
-        self._removeChildren(node)
-        self._addFacesSelect(node, select)
-        self._updateBatchScriptFile('COMMAND_SYRTHES')
-
-
-    def deleteSyrthesFaces(self):
-        """
-        Delete faces selection for syrthes coupling (only one authorized selection)
-        """
-        node = self.node_syrthes.xmlGetChildNode('faces_syrthes', status="on")
-        node.xmlRemoveNode()
-        self._updateBatchScriptFile('COMMAND_SYRTHES')
-
-
-    def setSyrthesStatus(self, status):
-        """
-        Set status of faces selection for syrthes coupling (only one authorized selection)
-        """
-        self.isOnOff(status)
-        node = self.node_syrthes.xmlGetChildNode('faces_syrthes', 'status')
-        if node:
-            node['status'] = status
-
-
-    def getSyrthesStatus(self):
-        """
-        Get status of faces selection for syrthes coupling (only one authorized selection)
-        """
-        node = self.node_syrthes.xmlGetChildNode('faces_syrthes', 'status')
-        if node:
-            status = node['status']
-        return status
-
-
     def addSelectFaces(self, select):
         """
-        Add faces selection for standalone selection. 
+        Add faces selection for standalone selection.
         Select is a dictionary with 'color', 'group', 'fraction', 'plan' ...
         """
         node = self.node_standalone.xmlGetChildNode('faces_select', 'status')
@@ -1442,7 +1323,7 @@ class SolutionDomainModel(MeshModel, Model):
         line = ''
         if self.node_orient and self.node_orient['status'] == 'on':
             line += ' --reorient '
-        
+
         return line
 
 
@@ -1455,11 +1336,11 @@ class SolutionDomainModel(MeshModel, Model):
             node_face_join_list = self.node_join.xmlGetNodeList('faces_join')
             if node_face_join_list:
                 for node_face_join in node_face_join_list:
-                    if node_face_join['status'] == 'on': 
+                    if node_face_join['status'] == 'on':
                         linecoul = ' -j '
                         line = self._getLineCommand(node_face_join)
                         lines = lines + linecoul + line
-                        
+
                         fraction = node_face_join.xmlGetString('faces_fraction')
                         lines = lines + " --fraction " + fraction +" "
                         plan = node_face_join.xmlGetString('faces_plan')
@@ -1500,14 +1381,14 @@ class SolutionDomainModel(MeshModel, Model):
                             l = self._getLineCommand(node)
                             line = line + lineperio + l
                             fraction = node.xmlGetString('faces_fraction')
-                            if fraction: 
+                            if fraction:
                                 line = line + " --fraction " + fraction +" "
                             plan = node.xmlGetString('faces_plan')
-                            if plan: 
+                            if plan:
                                 line = line + " --plane " + plan +" "
-            else: 
+            else:
                 line = line + ' --perio '
-            mode = self.getPeriodicityMode(perio_name) 
+            mode = self.getPeriodicityMode(perio_name)
             if mode == 'translation' or mode == 'tr+rota1' or mode == 'tr+rota2':
                 dx, dy, dz = self.getTranslationDirection(perio_name)
                 line = line + " --trans " + dx +" " + dy +" " + dz +" "
@@ -1520,28 +1401,8 @@ class SolutionDomainModel(MeshModel, Model):
                 m11, m12, m13, m21, m22, m23, m31, m32, m33 = self.getRotationMatrix(perio_name)
                 px, py, pz = self.getRotationCenter(perio_name)
                 line = line + " --rota "  + " --matrix " + m11 +" " + m12 +" " + m13 +" " + m21 +" " + m22 +" " + m23 +" " + m31 +" " + m32 +" " + m33 +" " + " --invpt " + px +" " + py +" " + pz +" "
-    
-        return line
-
 
-    def getSyrthesCommand(self):
-        """
-        Get syrthes command line for preprocessor execution
-        """
-        lines = ''
-        if self.node_syrthes and self.node_syrthes['status'] == 'on':
-            linesyr = ' --syrthes '
-            node_list = self.node_syrthes.xmlGetNodeList('faces_syrthes')
-            for node in node_list:
-                if node['status'] == 'on':
-                    line = self._getLineCommand(node)
-                    linesyr = linesyr + line
-            node_syrth_2d = self.node_syrthes.xmlGetNode('syrthes_mesh_2d', 'status')
-            if node_syrth_2d and node_syrth_2d['status'] == 'on':
-                linesyr += " --2d "
-            lines += linesyr 
-
-        return lines
+        return line
 
 
     def getSimCommCommand(self):
@@ -1580,12 +1441,12 @@ class SolutionDomainModel(MeshModel, Model):
             line = ' --med '
         if self.getPostProFormat() == "CGNS":
             line = ' --cgns '
-            
+
         options = self.getPostProOptionsFormat()
         options = string.split(options, ',')
 
         for opt in options:
-            if opt in ('binary', 'discard_polygons', 'discard_polyhedra'): 
+            if opt in ('binary', 'discard_polygons', 'discard_polyhedra'):
                 line = line
             if opt in ('divide_polygons', 'divide_polyhedra'):
                 opt = line + ' --divide-poly '
@@ -1673,12 +1534,12 @@ class SolutionDomainTestCase(ModelTest):
         mdl = SolutionDomainModel(self.case)
         mdl.setCutStatus('on')
         doc1 = '''<faces_cutting status="on"/>'''
-        
+
         assert mdl.node_cut == self.xmlNodeFromString(doc1), \
             'Could not set status of faces_cutting'
         assert mdl.getCutStatus() == 'on',\
             'Could not get status of faces_cutting'
-        
+
         mdl.setCutAngle(90.)
         doc2 = '''<faces_cutting status="on">
                     <warp_angle_max>90</warp_angle_max>
@@ -1689,30 +1550,6 @@ class SolutionDomainTestCase(ModelTest):
         assert mdl.getCutAngle() == 90, \
             'Could not get angle for faces_cutting'
 
-    def checkSetandGetSyrthesCouplingStatusAndMesh2d(self):
-        """ Check whether the status of node syrthes_coupling and mesh 2D could be set and get"""
-        mdl = SolutionDomainModel(self.case)       
-        mdl.setSyrthesCouplingStatus('on')
-        doc1 = '''<syrthes_coupling status="on"/>'''
-        assert mdl.node_syrthes == self.xmlNodeFromString(doc1), \
-            'Could not set status for syrthes_coupling balise'
-        assert mdl.getSyrthesCouplingStatus() == 'on',\
-            'Could not get status for syrthes_coupling balise'
-            
-        mdl.setSyrthes2dMeshStatus('on')
-        doc2 = '''<syrthes_coupling status="on">
-                    <syrthes_mesh_2d status="on"/>
-                  </syrthes_coupling>'''
-        assert mdl.node_syrthes == self.xmlNodeFromString(doc2), \
-            'Could not set status on syrthes_2dMesh balise'
-        assert mdl.getSyrthes2dMeshStatus() == 'on',\
-            'Could not get status of syrthes_mesh_2d balise'
-            
-        mdl.setSyrthes2dMeshStatus('off')
-        doc3 = '''<syrthes_coupling status="on"/>'''
-        assert mdl.node_syrthes == self.xmlNodeFromString(doc3), \
-            'Could not set status OFF on syrthes_2dMesh balise'
-
     def checkSetandGetSimCommStatus(self):
         """ Check whether the status of node simulation_communication could be set and get"""
         mdl = SolutionDomainModel(self.case)
@@ -1754,7 +1591,7 @@ class SolutionDomainTestCase(ModelTest):
             'Could not get number for periodicities'
 
     def checkSetandgetPeriodicityMode(self):
-        """ Check whether the mode of transformation could be set and get """         
+        """ Check whether the mode of transformation could be set and get """
         mdl = SolutionDomainModel(self.case)
         mdl.addPeriodicity('1')
         mdl.addPeriodicity('2')
@@ -1785,7 +1622,7 @@ class SolutionDomainTestCase(ModelTest):
                     </transformation>
             </periodic_boundary>'''
 
-                
+
         assert mdl.node_perio == self.xmlNodeFromString(doc),\
             'Could not set mode of transformation for periodicities'
         assert mdl.getPeriodicityMode('2') == "tr+rota1",\
@@ -1884,7 +1721,7 @@ class SolutionDomainTestCase(ModelTest):
                                     <rotation_center_z>0.0</rotation_center_z>
                             </rotation2>
                     </transformation>
-                 </periodic_boundary>'''                                  
+                 </periodic_boundary>'''
 
         assert mdl.node_perio == self.xmlNodeFromString(doc),\
             'Could not set values for matrix of rotation for rotation2 transformation mode'
@@ -1915,14 +1752,14 @@ class SolutionDomainTestCase(ModelTest):
 
         assert mdl.node_join == self.xmlNodeFromString(doc),\
             'Could not set values of faces join for join meshes'
-        assert mdl.getJoinFaces('1') == {'semiconf': 'on', 'reverse': 'off', 
-                                         'color': '1 2 3', 'plan': '0.8', 
+        assert mdl.getJoinFaces('1') == {'semiconf': 'on', 'reverse': 'off',
+                                         'color': '1 2 3', 'plan': '0.8',
                                          'fraction': '0.1', 'group': 'toto'},\
             'Could not get values of faces join for join meshes'
 
     def checkReplaceandDeleteandSetandGetStatusForJoinFaces(self):
-        """ 
-        Check whether faces of join meshes could be replaced and deleted 
+        """
+        Check whether faces of join meshes could be replaced and deleted
         and status could be set and get
         """
         select = {}
@@ -1962,10 +1799,10 @@ class SolutionDomainTestCase(ModelTest):
         assert mdl.node_join == self.xmlNodeFromString(doc),\
             'Could not set values of faces join for join meshes'
         assert mdl.getJoinFaces('1') == {'group': 'toto', 'reverse': 'off', 'color': '1 2 3',
-                                        'plan': '0.8', 'fraction': '0.1', 
+                                        'plan': '0.8', 'fraction': '0.1',
                                         'semiconf': 'on'},\
             'Could not get values of faces join for join meshes'
-        
+
         select['group'] = 'je vais partir'
         mdl.replaceJoinFaces('1', select)
         doc = '''<join_meshes status="on">
@@ -1983,10 +1820,10 @@ class SolutionDomainTestCase(ModelTest):
                             <faces_plan>0.82</faces_plan>
                     </faces_join>
                  </join_meshes>'''
-                 
+
         assert mdl.node_join == self.xmlNodeFromString(doc),\
             'Could not replace values of faces join for join meshes'
-            
+
         mdl.deleteJoinFaces('1')
         doc = '''<join_meshes status="on">
                     <faces_join name="1" status="on">
@@ -1996,10 +1833,10 @@ class SolutionDomainTestCase(ModelTest):
                             <faces_plan>0.82</faces_plan>
                     </faces_join>
                  </join_meshes>'''
-                 
+
         assert mdl.node_join == self.xmlNodeFromString(doc),\
             'Could not delete faces join for join meshes'
-            
+
         mdl.addJoinFaces(select)
         mdl.setJoinStatus('1', 'off')
         doc = '''<join_meshes status="on">
@@ -2017,12 +1854,12 @@ class SolutionDomainTestCase(ModelTest):
                             <faces_semi_conf status="on"/>
                     </faces_join>
                  </join_meshes>'''
-                 
+
         assert mdl.node_join == self.xmlNodeFromString(doc),\
             'Could not set status for active or not faces join for join meshes'
         assert mdl.getJoinStatus('1') == 'off',\
             'Could not get status for active or not faces join for join meshes'
-        
+
     def checkAddandGetPeriodicFaces(self):
         """ Check whether faces of periodicity could be added and get """
         select = {}
@@ -2082,8 +1919,8 @@ class SolutionDomainTestCase(ModelTest):
             'Could not get values of faces for periodicities'
 
     def checkReplaceandDeleteandSetandGetStatusForPeriodicFaces(self):
-        """ 
-        Check whether faces of of periodicity could be replaced and deleted 
+        """
+        Check whether faces of of periodicity could be replaced and deleted
         and status could be set and get
         """
         select = {}
@@ -2131,10 +1968,10 @@ class SolutionDomainTestCase(ModelTest):
                             </rotation1>
                     </transformation>
                  </periodic_boundary>'''
-                 
+
         assert mdl.node_perio == self.xmlNodeFromString(doc),\
             'Could not delete one selection of faces for periodicities'
-            
+
         select['color'] = '147 963'
         select['group'] = 'PERIODIC'
         select['fraction'] = '0.1'
@@ -2213,76 +2050,6 @@ class SolutionDomainTestCase(ModelTest):
         assert mdl.getPeriodicStatus('1') == 'off',\
             'Could not get status for activate or not selection of faces for periodicities'
 
-    def checkAddandGetSyrthesFaces(self):
-        """ Check whether faces of syrthes coupling could be added and get """
-        select = {}
-        select['color'] = '85 2'
-        select['group'] = 'SYRT'
-        select['reverse'] = 'off'
-        select['semiconf'] = 'off'
-        mdl = SolutionDomainModel(self.case)
-        mdl.setSyrthesCouplingStatus('on')
-        mdl.addSyrthesFaces(select)
-        doc = '''<syrthes_coupling status="on">
-                    <faces_syrthes status="on">
-                            <faces_color>85 2</faces_color>
-                            <faces_group>SYRT</faces_group>
-                    </faces_syrthes>
-                 </syrthes_coupling>'''
-        
-        assert mdl.node_syrthes == self.xmlNodeFromString(doc),\
-            'Could not add values of faces for syrthes coupling'
-        assert mdl.getSyrthesFaces() == {'group': 'SYRT', 'reverse': 'off', 'color': '85 2',
-                                        'plan': '', 'fraction': '', 'semiconf': 'off'},\
-            'Could not get values of faces for syrthes coupling'
-
-    def checkReplaceandDeleteandSetandGetStatusForSyrthesFaces(self):
-        """ 
-        Check whether faces of syrthes coupling could be replaced and deleted 
-        and status could be set and get
-        """
-        select = {}
-        select['color'] = '85 2'
-        select['group'] = 'SYRT'
-        select['reverse'] = 'off'
-        select['semiconf'] = 'off'
-        mdl = SolutionDomainModel(self.case)
-        mdl.setSyrthesCouplingStatus('on')
-        mdl.addSyrthesFaces(select)
-        select['color'] = '6 3'
-        select['group'] = 'COUPLING'
-        mdl.replaceSyrthesFaces(select)
-        doc = '''<syrthes_coupling status="on">
-                    <faces_syrthes status="on">
-                            <faces_color>6 3</faces_color>
-                            <faces_group>COUPLING</faces_group>
-                    </faces_syrthes>
-                 </syrthes_coupling>'''
-                 
-        assert mdl.node_syrthes == self.xmlNodeFromString(doc),\
-            'Could not replace values of faces for syrthes coupling'
-            
-        mdl.deleteSyrthesFaces()
-        doc = '''<syrthes_coupling status="on"/>'''
-        
-        assert mdl.node_syrthes == self.xmlNodeFromString(doc),\
-            'Could not delete values of faces for syrthes coupling'
-        
-        select['group'] = 'NOUVEAU'
-        mdl.addSyrthesFaces(select)
-        mdl.setSyrthesStatus('off')
-        doc = '''<syrthes_coupling status="on">
-                    <faces_syrthes status="off">
-                            <faces_color>6 3</faces_color>
-                            <faces_group>NOUVEAU</faces_group>
-                    </faces_syrthes>
-                 </syrthes_coupling>'''
-        
-        assert mdl.node_syrthes == self.xmlNodeFromString(doc),\
-            'Could not set status for activate selection of faces for syrthes coupling'
-        assert mdl.getSyrthesStatus() == 'off',\
-            'Could not get status for activate selection of faces for syrthes coupling'
-
     def checkAddandGetSelectFaces(self):
         """ Check whether faces of standalone could be added and get """
         select = {}
@@ -2298,7 +2065,7 @@ class SolutionDomainTestCase(ModelTest):
                             <faces_group>STAND</faces_group>
                     </faces_select>
                  </standalone>'''
-        
+
         assert mdl.node_standalone == self.xmlNodeFromString(doc),\
             'Could not add values of faces for standalone selection'
         assert mdl.getSelectFaces() == {'group': 'STAND', 'reverse': 'off', 'color': '8 2',
@@ -2306,8 +2073,8 @@ class SolutionDomainTestCase(ModelTest):
             'Could not get values of faces for standalone selection'
 
     def checkReplaceandDeleteandSetandGetStatusForSelectFaces(self):
-        """ 
-        Check whether faces of standalone could be replaced and deleted 
+        """
+        Check whether faces of standalone could be replaced and deleted
         and status could be set and get
         """
         select = {}
@@ -2332,13 +2099,13 @@ class SolutionDomainTestCase(ModelTest):
 
         assert mdl.node_standalone == self.xmlNodeFromString(doc),\
             'Could not replace values of faces for standalone selection'
-        
+
         mdl.deleteSelectFaces()
         doc = '''<standalone/>'''
-        
+
         assert mdl.node_standalone == self.xmlNodeFromString(doc),\
             'Could not delete values of faces for standalone selection'
-            
+
         select['group'] = 'NOUVEAU'
         mdl.addSelectFaces(select)
         mdl.setSelectStatus('off')
@@ -2357,7 +2124,7 @@ class SolutionDomainTestCase(ModelTest):
         mdl.addMesh('pic.des','des')
         mdl.addMesh('truc.ngeom','ngeom')
         line = ''' -m MESH/fdc.des -m MESH/pic.des -m MESH/truc.ngeom '''
-        
+
         assert mdl.getMeshCommand() == line,\
             'Mesh command is not verified in SolutionDomain Model'
 
@@ -2372,7 +2139,7 @@ class SolutionDomainTestCase(ModelTest):
             'Could not set reorient status in SolutionDomain Model'
         assert mdl.getOrientation() == "on",\
             'Could not get reorient status in SolutionDomain Model'
-            
+
         cmd_orient = ' --reorient '
         assert mdl.getReorientCommand() == cmd_orient,\
             'Reorient command is not verified in SolutionDomain Model'
@@ -2394,9 +2161,9 @@ class SolutionDomainTestCase(ModelTest):
 
         assert mdl.getJoinCommand() == cmd_join,\
             'Join command is not verified in SolutionDomain Model'
-        
+
         mdl.setCutStatus('on')
-        mdl.setCutAngle(0.05)        
+        mdl.setCutAngle(0.05)
         cmd_cut = mdl.getCutCommand()
         cut = ' --cwf 0.05'
         assert mdl.getCutCommand() == cmd_cut,\
@@ -2421,23 +2188,6 @@ class SolutionDomainTestCase(ModelTest):
         assert mdl.getPerioCommand() == cmd_perio,\
             'Perio command is not verified in SolutionDomain Model'
 
-    def checkSyrthesCommand(self):
-        """ Check whether syrthes command line could be get """
-        mdl = SolutionDomainModel(self.case)
-        mdl.setSyrthesCouplingStatus('on')
-        mdl.setSyrthes2dMeshStatus('on')
-        select = {}
-        select['color'] = '1 2 3'
-        select['group'] = 'toto'
-        select['reverse'] = 'off'
-        select['semiconf'] = 'on'
-        mdl = SolutionDomainModel(self.case)
-        mdl.addSyrthesFaces(select)
-        cmd_syr = ''' --syrthes  --color 1 2 3 --group toto --2d '''
-
-        assert mdl.getSyrthesCommand() == cmd_syr,\
-            'Syrthes command is not verified in SolutionDomain Model'
-
     def checkSimCommAndVerifMaillCommand(self):
         """ Check whether simulation_communication command line could be get """
         mdl = SolutionDomainModel(self.case)
@@ -2446,7 +2196,7 @@ class SolutionDomainTestCase(ModelTest):
         sim =' -sc '
         assert mdl.getSimCommCommand() == sim,\
             'Simulation_communication command is not verified in SolutionDomain Model'
-            
+
         #A reprendre :
 ####    def checkSelectCommand(self):
 ####        """Check whether standalone selection command line could be get"""
@@ -2463,7 +2213,7 @@ class SolutionDomainTestCase(ModelTest):
 ######        select =' --int-face  --color 1 2 3  --group toto  --semi-conf '
 ####        assert mdl.getSelectCommand().split() == select.split(),\
 ####            'Standalone selection faces command is not verified in SolutionDomain Model'
-####        
+####
     def checkPostCommand(self):
         """Check whether output postprocessing format command line could be get"""
         mdl = SolutionDomainModel(self.case)
@@ -2487,10 +2237,10 @@ class SolutionDomainTestCase(ModelTest):
         mdl.setJoinMeshesStatus('on')
         mdl.addJoinFaces(select)
         node = mdl.node_join.xmlGetChildNode('faces_join')
-        
+
         assert mdl.getStatusNode(node) == 'on',\
             'Could not get status of node in SolutionDomainModel'
-            
+
         deux = {}
         deux['color'] = '4 5 6'
         deux['group'] = 'coucou'
@@ -2500,7 +2250,7 @@ class SolutionDomainTestCase(ModelTest):
         deux['semiconf'] = 'on'
         mdl.addJoinFaces(deux)
         list = {'group': 'coucou', 'reverse': 'off', 'color': '4 5 6', 'plan': '0.8', 'fraction': '0.1', 'semiconf': 'on'}
-        
+
         assert mdl.getFacesSelect('faces_join', 1) == list,\
             'Could not get faces for view in SolutionDomainModel'
 
@@ -2545,7 +2295,7 @@ class MeshModelTestCase(unittest.TestCase):
     def checkGetMeshFormat(self):
         """Check whether mesh extension could be get"""
         mdl = MeshModel()
-        
+
         for f in self.files:
           fmt = mdl.getMeshFormat(f[0])
           if fmt:
diff --git a/gui/Pages/SolutionDomainView.py b/gui/Pages/SolutionDomainView.py
index 4c8a519..ef2060a 100644
--- a/gui/Pages/SolutionDomainView.py
+++ b/gui/Pages/SolutionDomainView.py
@@ -159,10 +159,10 @@ class StandardItemModelMeshes(QStandardItemModel):
                         self.tr("Add groups of faces"),
                         self.tr("Add groups of cells")]
 
-        self.tooltip = [self.tr("Code_Saturne Preprocessor option: --mesh"), 
-                        self.tr("Code_Saturne Preprocessor sub-option: --format"), 
-                        self.tr("Code_Saturne Preprocessor sub-option: --num"), 
-                        self.tr("Code_Saturne Preprocessor sub-option: --grp-fac"), 
+        self.tooltip = [self.tr("Code_Saturne Preprocessor option: --mesh"),
+                        self.tr("Code_Saturne Preprocessor sub-option: --format"),
+                        self.tr("Code_Saturne Preprocessor sub-option: --num"),
+                        self.tr("Code_Saturne Preprocessor sub-option: --grp-fac"),
                         self.tr("Code_Saturne Preprocessor sub-option: --grp-cel")]
 
         self.setColumnCount(len(self.headers))
@@ -225,7 +225,7 @@ class StandardItemModelMeshes(QStandardItemModel):
     def flags(self, index):
         if not index.isValid():
             return Qt.ItemIsEnabled
-            
+
         self.__disableData(index.row())
 
         # disable item
@@ -274,7 +274,7 @@ class StandardItemModelMeshes(QStandardItemModel):
 
     def addRow(self, name, format):
         """
-        Add a row in the table. 
+        Add a row in the table.
         """
         txt_format = MeshModel().getMeshFormatDescription(format)
 
@@ -371,7 +371,7 @@ class StandardItemModelPeriod(QStandardItemModel):
         if not index.isValid():
             return Qt.ItemIsEnabled
         elif index.column() == 0:
-            return Qt.ItemIsEnabled | Qt.ItemIsSelectable 
+            return Qt.ItemIsEnabled | Qt.ItemIsSelectable
         elif index.column() == 1:
             return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable
 
@@ -404,14 +404,6 @@ class StandardItemModelPeriod(QStandardItemModel):
         self.dataPeriod.append(item)
         self.setRowCount(row+1)
 
-#    def deleteRow(self, row=0):
-#        """
-#        Delete the row in the model.
-#        """
-#        # This deletes only the last row
-#        last = self.rowCount()
-#        del self.dataPeriod[last-1]
-#        self.setRowCount(self.rowCount()-1)
 
     def deleteRow(self, row):
         """
@@ -430,7 +422,7 @@ class SolutionDomainMeshFormatDialogView(QDialog, Ui_SolutionDomainMeshFormatDia
     """
     Advanced dialog
     """
-    def __init__(self, parent, default): 
+    def __init__(self, parent, default):
         """
         Constructor
         """
@@ -457,12 +449,12 @@ class SolutionDomainMeshFormatDialogView(QDialog, Ui_SolutionDomainMeshFormatDia
 
     def get_result(self):
         """
-        Method to get the result 
+        Method to get the result
         """
         return self.result
 
 
-    def accept(self): 
+    def accept(self):
         """
         Method called when user clicks 'OK'
         """
@@ -471,7 +463,7 @@ class SolutionDomainMeshFormatDialogView(QDialog, Ui_SolutionDomainMeshFormatDia
         QDialog.accept(self)
 
 
-    def reject(self): 
+    def reject(self):
         """
         Method called when user clicks 'Cancel'
         """
@@ -482,7 +474,7 @@ class SolutionDomainMeshFormatDialogView(QDialog, Ui_SolutionDomainMeshFormatDia
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # Main class
@@ -528,7 +520,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
         self.connect(self.groupBoxWarp, SIGNAL("clicked(bool)"), self.slotFacesCutting)
         self.connect(self.lineEditWarp, SIGNAL("textChanged(const QString &)"), self.slotWarpParam)
         self.connect(self.groupBoxOrient, SIGNAL("clicked(bool)"), self.slotOrientation)
-        
+
         # 1.3) Set up validators
         validatorWarp = DoubleValidator(self.lineEditWarp, min=0.0)
         self.lineEditWarp.setValidator(validatorWarp)
@@ -567,7 +559,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
 
         # Set up validators
 
-        # 2) 
+        # 2)
         self.lineEditTX.setValidator(DoubleValidator(self.lineEditTX))
         self.lineEditTY.setValidator(DoubleValidator(self.lineEditTY))
         self.lineEditTZ.setValidator(DoubleValidator(self.lineEditTZ))
@@ -594,6 +586,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
         # Connections
 
         self.connect(self.treeViewPeriod, SIGNAL("clicked(const QModelIndex &)"), self.slotUpdatePeriodicity)
+        self.connect(self.modelPeriod, SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"), self.slotUpdateByModel)
         self.connect(self.pushButtonAddPeriod,    SIGNAL("clicked()"), self.slotAddPeriodicity)
         self.connect(self.pushButtonDeletePeriod, SIGNAL("clicked()"), self.slotDeletePeriodicity)
 
@@ -645,8 +638,8 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
                 title = self.tr("WARNING")
                 msg2  = self.tr("The following meshes are not in the meshes "  \
                                 "directory given in the 'Identity and paths' " \
-                                "section:\n\n" + 
-                                msg +  
+                                "section:\n\n" +
+                                msg +
                                 "Verify existence and location of the mesh " \
                                 "files, and the 'Identity and Paths' section." )
                 QMessageBox.warning(self, title, msg2)
@@ -666,7 +659,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
         self._tableViewLayout()
 
 
-        # 3.2) Join parameters 
+        # 3.2) Join parameters
 
         if self.mdl.getJoinMeshesStatus() == 'on':
             self.groupBoxJoin.setChecked(True)
@@ -687,7 +680,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
         v = self.mdl.getCutAngle()
         self.warp = v
         self.lineEditWarp.setText(str(self.warp))
-        
+
         # 3.4) Reorientation
 
         if self.mdl.getOrientation() == 'on':
@@ -716,7 +709,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
 
         # If the format is not found ask to the user
         if not format:
-            default = "" 
+            default = ""
             dialog = SolutionDomainMeshFormatDialogView(self, default)
             if dialog.exec_():
                 format = dialog.get_result()
@@ -737,7 +730,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
 
         if "med" in format_list:
             self.tableViewMeshes.setColumnHidden(2, False)
-            self.tableViewMeshes.horizontalHeader().setResizeMode(2, QHeaderView.Stretch)
+            self.tableViewMeshes.horizontalHeader().setResizeMode(2, QHeaderView.ResizeToContents)
         else:
             self.tableViewMeshes.setColumnHidden(2, True)
 
@@ -750,9 +743,8 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
             self.tableViewMeshes.setColumnHidden(3, True)
             self.tableViewMeshes.setColumnHidden(4, True)
 
-        if "med" not in format_list and "cgns" not in format_list:
-            self.tableViewMeshes.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
-            self.tableViewMeshes.horizontalHeader().setResizeMode(1, QHeaderView.Stretch)
+        self.tableViewMeshes.horizontalHeader().setResizeMode(0, QHeaderView.Stretch)
+        self.tableViewMeshes.horizontalHeader().setResizeMode(1, QHeaderView.Stretch)
 
 
     def _addMeshInList(self,  m):
@@ -814,7 +806,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
             filetypes += "%s (%s);;"%(Format[0], Format[1])
 
         filt = "All files (*)"
-        file_name = QFileDialog.getOpenFileName(self, title, path, filetypes, filt) 
+        file_name = QFileDialog.getOpenFileName(self, title, path, filetypes, filt)
         file_name = str(file_name)
 
         if file_name:
@@ -828,7 +820,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
 
 
     @pyqtSignature("")
-    def slotDeleteMesh(self): 
+    def slotDeleteMesh(self):
         """
         Delete the selected mesh from the list
         """
@@ -842,7 +834,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
             # 2) Delete mesh from view and from model
 
             self.modelMeshes.deleteRow(row)
-            self.mdl.delMesh(mesh) 
+            self.mdl.delMesh(mesh)
 
         self._tableViewLayout()
 
@@ -928,7 +920,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
     @pyqtSignature("")
     def slotDeletePeriodicity(self):
         """
-        Delete a periodicity from the list. 
+        Delete a periodicity from the list.
         """
         self.groupBoxMode.hide()
         self.groupBoxFaces.hide()
@@ -1010,6 +1002,16 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
             self.__setValuesRotation2(perio)
 
 
+    @pyqtSignature("const QModelIndex&, const QModelIndex&")
+    def slotUpdateByModel(self, index1, index2):
+        """
+        This slot update the display for the periodicity modified
+        in the tree view.
+        """
+        log.debug("slotUpdateByModel index.row() = %i " % index1.row())
+        self.slotUpdatePeriodicity(index1)
+
+
     @pyqtSignature("const QModelIndex&")
     def slotUpdatePeriodicity(self, index):
         """
@@ -1124,7 +1126,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
     @pyqtSignature("const QString&")
     def slotTranslationZ(self, text):
         """
-        Periodicity translation for Z 
+        Periodicity translation for Z
         """
         if self.perio_mode != "rotation1" or self.perio_mode != "rotation2":
             val, ok = text.toDouble()
@@ -1179,7 +1181,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
     @pyqtSignature("const QString&")
     def slotCenterRotationX1(self, text):
         """
-        Periodicity : center of rotation 
+        Periodicity : center of rotation
         """
         if self.perio_mode != "translation":
             val, ok = text.toDouble()
@@ -1190,7 +1192,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
     @pyqtSignature("const QString&")
     def slotCenterRotationY1(self, text):
         """
-        Periodicity : center of rotation 
+        Periodicity : center of rotation
         """
         if self.perio_mode != "translation":
             val, ok = text.toDouble()
@@ -1201,7 +1203,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
     @pyqtSignature("const QString&")
     def slotCenterRotationZ1(self, text):
         """
-        Periodicity : center of rotation 
+        Periodicity : center of rotation
         """
         if self.perio_mode != "translation":
             val, ok = text.toDouble()
@@ -1268,7 +1270,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
     @pyqtSignature("const QString&")
     def slotCenterRotationX2(self, text):
         """
-        Periodicity : center of rotation 
+        Periodicity : center of rotation
         """
         if self.perio_mode != "translation":
             val, ok = text.toDouble()
@@ -1279,7 +1281,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
     @pyqtSignature("const QString&")
     def slotCenterRotationY2(self, text):
         """
-        Periodicity : center of rotation 
+        Periodicity : center of rotation
         """
         if self.perio_mode != "translation":
             val, ok = text.toDouble()
@@ -1290,7 +1292,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
     @pyqtSignature("const QString&")
     def slotCenterRotationZ2(self, text):
         """
-        Periodicity : center of rotation 
+        Periodicity : center of rotation
         """
         if self.perio_mode != "translation":
             val, ok = text.toDouble()
@@ -1302,7 +1304,7 @@ class SolutionDomainView(QWidget, Ui_SolutionDomainForm):
         """
         Translation
         """
-        return text 
+        return text
 
 
 #-------------------------------------------------------------------------------
diff --git a/gui/Pages/SolutionVerifView.py b/gui/Pages/SolutionVerifView.py
index b76e69d..ae3bc99 100644
--- a/gui/Pages/SolutionVerifView.py
+++ b/gui/Pages/SolutionVerifView.py
@@ -46,6 +46,8 @@ import string, shutil, cStringIO
 from PyQt4.QtCore import *
 from PyQt4.QtGui  import *
 
+import cs_config
+
 #-------------------------------------------------------------------------------
 # Application modules import
 #-------------------------------------------------------------------------------
@@ -69,7 +71,7 @@ log = logging.getLogger("SolutionVerifView")
 log.setLevel(GuiParam.DEBUG)
 
 #-------------------------------------------------------------------------------
-# 
+#
 #-------------------------------------------------------------------------------
 
 class MeshQualityCriteriaLogDialogView(QDialog, Ui_MeshQualityCriteriaLogDialogForm):
@@ -87,6 +89,9 @@ class MeshQualityCriteriaLogDialogView(QDialog, Ui_MeshQualityCriteriaLogDialogF
         self.setWindowTitle(self.tr("Run mesh quality criteria"))
         self.pushButton.setEnabled(False)
 
+        self.cs = os.path.join(cs_config.dirs.bindir, "cs_solver")
+        self.ecs = os.path.join(cs_config.dirs.ecs_bindir, "cs_preprocess")
+
         self.case = case
         self.case2 = case2
         self.mdl = SolutionDomainModel(self.case)
@@ -121,9 +126,8 @@ class MeshQualityCriteriaLogDialogView(QDialog, Ui_MeshQualityCriteriaLogDialogF
         f.writelines(lines)
         f.close()
 
-        ecs = "cs_preprocess "
         args = ' --in ' + f1
-        self.proc.start(ecs + args)
+        self.proc.start(self.ecs + args)
 
         self.connect(self.proc, SIGNAL('finished(int, QProcess::ExitStatus)'), self.__ecsPostTreatment)
 
@@ -131,7 +135,7 @@ class MeshQualityCriteriaLogDialogView(QDialog, Ui_MeshQualityCriteriaLogDialogF
     def __ecsPostTreatment(self):
         if self.proc.exitStatus() == QProcess.NormalExit and not self.procErrorFlag:
             if self.fmt == "--ensight":
-                os.chdir(self.case['resu_path'] + '/check_mesh.ensight')
+                os.chdir(os.path.join(self.case['resu_path'], 'check_mesh.ensight'))
                 os.rename('CHR.case', 'PREPROCESSOR.case')
                 os.rename('chr.geo', 'preprocessor.geo')
 
@@ -149,13 +153,13 @@ class MeshQualityCriteriaLogDialogView(QDialog, Ui_MeshQualityCriteriaLogDialogF
             elif self.fmt == "--med":
                 os.rename('check_mesh.med', 'PREPROCESSOR.med')
 
-            elif self.fmt == "--cgns":
-                os.rename('check_mesh.cgns', 'PREPROCESSOR.cgns')
+            #elif self.fmt == "--cgns":
+            #    os.rename('check_mesh.cgns', 'PREPROCESSOR.cgns')
 
-	    if os.path.isfile(self.case['resu_path'] + '/preprocessor_output'):
+            if os.path.isfile(os.path.join(self.case['resu_path'], 'preprocessor_output')):
                 self.__csProcess()
             else:
-	        self.__finished()
+                self.__finished()
 
         else:
             self.__finished()
@@ -167,9 +171,8 @@ class MeshQualityCriteriaLogDialogView(QDialog, Ui_MeshQualityCriteriaLogDialogF
         self.disconnect(self.proc, SIGNAL('finished(int, QProcess::ExitStatus)'), self.__ecsPostTreatment)
 
         self.case2.xmlSaveDocument()
-        cs = "cs_solver --quality --log 0 "
-        args = ' --param ' + self.case2['xmlfile']
-        self.proc.start(cs + args)
+        args = ' --quality --log 0 --param ' + self.case2['xmlfile']
+        self.proc.start(self.cs + args)
 
         self.connect(self.proc, SIGNAL('finished(int, QProcess::ExitStatus)'), self.__csPostTreatment)
 
@@ -177,13 +180,13 @@ class MeshQualityCriteriaLogDialogView(QDialog, Ui_MeshQualityCriteriaLogDialogF
     def __csPostTreatment(self):
         if self.proc.exitStatus() == QProcess.NormalExit and not self.procErrorFlag:
             if self.fmt == "--ensight":
-                for src in os.listdir(self.case['resu_path'] + '/chr.ensight'):
-                    shutil.copy(self.case['resu_path'] + '/chr.ensight/' + src,
-                                self.case['resu_path'] + '/check_mesh.ensight')
-                os.chdir(self.case['resu_path'] + '/check_mesh.ensight')
+                for src in os.listdir(os.path.join(self.case['resu_path'], 'chr.ensight')):
+                    shutil.copy(os.path.join(self.case['resu_path'], 'chr.ensight', src),
+                                os.path.join(self.case['resu_path'], 'check_mesh.ensight'))
+                os.chdir(os.path.join(self.case['resu_path'], 'check_mesh.ensight'))
                 os.rename('CHR.case', 'QUALITY.case')
 
-                for src in os.listdir(self.case['resu_path'] + '/check_mesh.ensight'):
+                for src in os.listdir(os.path.join(self.case['resu_path'], 'check_mesh.ensight')):
                     if src[:4] == "chr.":
                         dst = src.replace("chr.", "quality.")
                         os.rename(src, dst)
@@ -191,13 +194,13 @@ class MeshQualityCriteriaLogDialogView(QDialog, Ui_MeshQualityCriteriaLogDialogF
                 out = cStringIO.StringIO()
                 f = open('QUALITY.case')
                 for line in f:
-                    print >> out, line.replace('chr', 'quality'), 
+                    print >> out, line.replace('chr', 'quality'),
                 f.close()
                 out2 = open('QUALITY.case', 'w')
                 out2.write(out.getvalue())
-                out2.close() 
+                out2.close()
 
-                shutil.rmtree(self.case['resu_path'] + '/chr.ensight')
+                shutil.rmtree(os.path.join(self.case['resu_path'], 'chr.ensight'))
                 os.chdir(self.case['resu_path'])
 
             elif self.fmt == "--med":
@@ -312,6 +315,7 @@ class SolutionVerifView(QWidget, Ui_SolutionVerifForm):
         self.case2 = Case(None)
         XMLinit(self.case2)
         self.case2['xmlfile'] = 'cs_cmd'
+        self.case2['salome'] = self.case['salome']
         self.out2 = OutputControlModel(self.case2)
 
         # combo models
@@ -334,9 +338,9 @@ class SolutionVerifView(QWidget, Ui_SolutionVerifForm):
         self.modelPolyhedra.addItem(self.tr("display"), 'display')
         self.modelPolyhedra.addItem(self.tr("discard"), 'discard_polyhedra')
         self.modelPolyhedra.addItem(self.tr("subdivide"), 'divide_polyhedra')
-        
+
         # connections
-        
+
         self.connect(self.groupBoxFaces, SIGNAL("clicked(bool)"), self.slotInterneFacesPostPro)
         self.connect(self.comboBoxFMTCHR, SIGNAL("activated(const QString&)"), self.slotOutputFormat)
         self.connect(self.comboBoxFormat, SIGNAL("activated(const QString&)"), self.slotOutputOptions)
@@ -452,7 +456,7 @@ class SolutionVerifView(QWidget, Ui_SolutionVerifForm):
 
             if opt == 'discard_polygons' or opt == 'divide_polygons':
                 self.modelPolygon.setItem(str_model=opt)
-                
+
             if opt == 'discard_polyhedra' or opt == 'divide_polyhedra':
                 self.modelPolyhedra.setItem(str_model=opt)
 
@@ -530,14 +534,7 @@ class SolutionVerifView(QWidget, Ui_SolutionVerifForm):
         """
         Translation
         """
-        return text 
-
-#-------------------------------------------------------------------------------
-# Testing part
-#-------------------------------------------------------------------------------
-
-if __name__ == "__main__":
-    pass
+        return text
 
 #-------------------------------------------------------------------------------
 # End
diff --git a/gui/Pages/StartRestartAdvancedDialogForm.ui b/gui/Pages/StartRestartAdvancedDialogForm.ui
index e1990ed..6e274db 100644
--- a/gui/Pages/StartRestartAdvancedDialogForm.ui
+++ b/gui/Pages/StartRestartAdvancedDialogForm.ui
@@ -90,7 +90,7 @@ at the begin of the calculation</string>
            </size>
           </property>
           <property name="toolTip" >
-           <string>Code_Saturne key word: NSUIT</string>
+           <string>Code_Saturne key word: NTSUIT</string>
           </property>
          </widget>
         </item>
diff --git a/gui/Pages/StartRestartModel.py b/gui/Pages/StartRestartModel.py
index 31df64c..314935b 100644
--- a/gui/Pages/StartRestartModel.py
+++ b/gui/Pages/StartRestartModel.py
@@ -76,28 +76,11 @@ class StartRestartModel(Model):
         default['restart']                = "off"
         default['frozen_field']           = "off"
         default['restart_with_auxiliary'] = "on"
-##        default['main_restart']           = "binary"
-##        default['auxiliary_restart']      = "binary"
         default['restart_rescue']         = 0
         default['period_rescue']          = "4 output"
         return default
 
 
-    def _updateStartRestart(self):
-        """
-        If we don't continue calculation, TimeAveragesModel must to know
-        """
-        from TimeAveragesModel import TimeAveragesModel
-        ta_mdl = TimeAveragesModel(self.case)
-        for id in ta_mdl.getAverageList():
-            if ta_mdl.getAverageRestart(id) != '':
-                node_anal = self.case.xmlInitNode('analysis_control')
-                node_mean = node_anal.xmlInitNode('time_averages')
-                n = node_mean.xmlGetNode('time_average', id=id)
-                n.xmlRemoveChild('restart_from_time_average')
-        del TimeAveragesModel
-
-
     def getRestart(self):
         """
         Return if this calcul is restarted with a restart file
@@ -118,8 +101,10 @@ class StartRestartModel(Model):
         node = self.node_start.xmlInitNode('restart', 'status')
         node['status'] = v
         if v == 'off':
-            self._updateStartRestart()
             self.node_start.xmlRemoveChild('current_restart')
+            for n in self.case.xmlGetNodeList('time_average'):
+                n.xmlRemoveChild('restart_from_time_average')
+
 
 
     def getFrozenField(self):
@@ -154,30 +139,6 @@ class StartRestartModel(Model):
         return status
 
 
-##    def getMainRestartFormat(self):
-##        """
-##        Return format of main restart file from advanced options.
-##        """
-##        node = self.node_start.xmlInitNode('main_restart', 'format')
-##        format= node['format']
-##        if not format:
-##            format = self._defaultStartRestartValues()['main_restart']
-##            self.setMainRestartFormat(format)
-##        return format
-
-##
-##    def getAuxiliaryRestartFormat(self):
-##        """
-##        Return format of auxiliary restart file from advanced options.
-##        """
-##        node = self.node_start.xmlInitNode('auxiliary_restart', 'format')
-##        format= node['format']
-##        if not format:
-##            format = self._defaultStartRestartValues()['auxiliary_restart']
-##            self.setAuxiliaryRestartFormat(format)
-##        return format
-
-
     def getRestartRescue(self):
         """
         Return frequency for restart checkpoints from advanced options.
@@ -204,25 +165,6 @@ class StartRestartModel(Model):
         node['status'] = status
 
 
-##    def setMainRestartFormat(self, fmt):
-##        """
-##        Input format of main restart file for advanced options.
-##        """
-##        print "format ===", fmt
-##        self.isInList(fmt, ('ascii', 'binary'))
-##        node = self.node_start.xmlInitNode('main_restart', 'format')
-##        node['format'] = fmt
-##
-##
-##    def setAuxiliaryRestartFormat(self, fmt):
-##        """
-##        Input format of auxiliary restart file for advanced options.
-##        """
-##        self.isInList(fmt, ('ascii', 'binary'))
-##        node = self.node_start.xmlInitNode('auxiliary_restart', 'format')
-##        node['format'] = fmt
-
-
     def setRestartRescue(self, freq):
         """
         Inputfrequency for restart checkpoints from advanced options.
@@ -292,7 +234,7 @@ class StartRestartTestCase(ModelTest):
 
     def checkSetAuxiliaryRestartStatus(self):
         """
-        Check whether the  Auxiliary Restart Status method 
+        Check whether the  Auxiliary Restart Status method
         could be set and get
         """
         model = StartRestartModel(self.case)
@@ -309,7 +251,7 @@ class StartRestartTestCase(ModelTest):
 
 ##    def checkSetandGetMainandAxiliaryRestartFormat(self):
 ##        """
-##        Check whether the Main and Auxiliary Restart format method 
+##        Check whether the Main and Auxiliary Restart format method
 ##        could be set and get
 ##        """
 ##        model = StartRestartModel(self.case)
@@ -348,7 +290,7 @@ class StartRestartTestCase(ModelTest):
                 'Could not get restart rescue value in StartRestart model'
         assert period == "Frequency",\
                 'Could not get restart rescue period in StartRestart model'
-                
+
         model.setRestartRescue(-1)
         freq, period = model.getRestartRescue()
         assert freq == -1,\
@@ -391,4 +333,4 @@ def runTest():
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/StartRestartView.py b/gui/Pages/StartRestartView.py
index 7d6fe70..6548966 100644
--- a/gui/Pages/StartRestartView.py
+++ b/gui/Pages/StartRestartView.py
@@ -39,7 +39,7 @@ This module contains the following classes:
 # Library modules import
 #-------------------------------------------------------------------------------
 
-import os, sys, string, types
+import os, sys, string, types, shutil
 import logging
 
 #-------------------------------------------------------------------------------
@@ -232,7 +232,8 @@ class StartRestartView(QWidget, Ui_StartRestartForm):
         # Widget initialization
 
         if 'RESTART' in os.listdir(self.case['data_path']):
-            if not os.path.isdir(os.readlink(self.case['data_path'] + '/RESTART')):
+            p = os.path.join(self.case['data_path'], 'RESTART')
+            if not os.path.exists(p):
                 title = self.tr("WARNING")
                 msg   = self.tr("Invalid link in %s!" % self.case['data_path'])
                 QMessageBox.warning(self, title, msg)
@@ -263,8 +264,13 @@ class StartRestartView(QWidget, Ui_StartRestartForm):
         if dir_path:
             dir_path = os.path.abspath(str(dir_path))
             dir_name = os.path.basename(dir_path)
+            if os.path.dirname(dir_path) == self.case['data_path'] and dir_name == 'RESTART':
+                setGreenColor(self.toolButton, False)
+                self.slotStartRestart()
+                return
+
             log.debug("slotSearchRestartDirectory-> %s" % dir_name)
-            link = self.case['data_path'] + '/RESTART'
+            link = os.path.join(self.case['data_path'], 'RESTART')
 
             # a link already exists
             if os.path.islink(link):
@@ -290,7 +296,7 @@ class StartRestartView(QWidget, Ui_StartRestartForm):
                                 "Replace with the new directory?")
                 ans = QMessageBox.question(self, title, msg, QMessageBox.Yes, QMessageBox.No)
                 if ans == QMessageBox.Yes:
-                    os.rmdir(link)
+                    shutil.rmtree(link)
                     os.symlink(dir_path, link)
                     self.model.setRestartDirectory(dir_name)
                 else:
@@ -316,6 +322,13 @@ class StartRestartView(QWidget, Ui_StartRestartForm):
             self.radioButtonYes.setChecked(True)
             self.radioButtonNo.setChecked(False)
 
+            if 'RESTART' in os.listdir(self.case['data_path']):
+                p = os.path.join(self.case['data_path'], 'RESTART')
+                if os.path.isdir(p) and not os.path.islink(p):
+                    self.model.setRestartDirectory('RESTART')
+                elif os.path.isdir(p) and os.path.islink(p):
+                    self.model.setRestartDirectory(os.path.basename(os.readlink(p)))
+
             name = self.model.getRestartDirectory()
             if name:
                 self.labelDir1.show()
diff --git a/gui/Pages/SteadyManagementModel.py b/gui/Pages/SteadyManagementModel.py
index 1c0df73..9f097b6 100644
--- a/gui/Pages/SteadyManagementModel.py
+++ b/gui/Pages/SteadyManagementModel.py
@@ -52,6 +52,7 @@ from Base.XMLmodel import XMLmodel, ModelTest
 from Pages.CoalCombustionModel import CoalCombustionModel
 from Pages.GasCombustionModel import GasCombustionModel
 from Pages.ElectricalModelsModel import ElectricalModel
+from Pages.TimeStepModel import TimeStepModel
 
 #-------------------------------------------------------------------------------
 #  SteadyManagement model class
@@ -67,7 +68,7 @@ class SteadyManagementModel(Model):
         """
         self.case = case
         self.node_anal   = self.case.xmlGetNode('analysis_control')
-##        self.node_steady =  node_anal.xmlInitNode('steady_management', 'status')
+
 
     def defaultValues(self):
         """
@@ -90,10 +91,18 @@ class SteadyManagementModel(Model):
         node = self.node_anal.xmlInitNode('steady_management', 'status')
         node['status'] = steady
 
+        mdl_time = TimeStepModel(self.case)
+
         if steady == 'on':
+            mdl_time.node_time.xmlRemoveChild('property', name='courant_number')
+            mdl_time.node_time.xmlRemoveChild('property', name='fourier_number')
+            mdl_time.node_time.xmlRemoveChild('property', name='local_time_step')
+            self.case.xmlRemoveChild('time_average')
             self.getZeroIteration()
             self.getNbIter()
             self.getRelaxCoefficient()
+        else:
+            mdl_time.setTimePassing(0)
 
 
     def getSteadyFlowManagement(self):
@@ -111,7 +120,7 @@ class SteadyManagementModel(Model):
     def setRelaxCoefficient(self, value):
         """
         Set value of coefficient of relaxation into xml file.
-        """ 
+        """
         self.isGreater(value, 0.)
         self.isLowerOrEqual(value, 1.)
         node = self.node_anal.xmlInitNode('steady_management', 'status')
@@ -121,7 +130,7 @@ class SteadyManagementModel(Model):
     def setNbIter(self, value):
         """
         Set value of iterations number into xml file.
-        """ 
+        """
         self.isInt(value)
         self.isGreaterOrEqual(value, 0.)
         node = self.node_anal.xmlInitNode('steady_management', 'status')
@@ -131,7 +140,7 @@ class SteadyManagementModel(Model):
     def setZeroIteration(self, status):
         """
         Set status of option of zero iteration into xml file.
-        """ 
+        """
         self.isOnOff(status)
         node_steady = self.node_anal.xmlInitNode('steady_management', 'status')
         node = node_steady.xmlInitChildNode('zero_iteration', 'status')
@@ -141,7 +150,7 @@ class SteadyManagementModel(Model):
     def getRelaxCoefficient(self):
         """
         Get value of coefficient of relaxation from xml file.
-        """ 
+        """
         node = self.node_anal.xmlInitNode('steady_management', 'status')
         coef = node.xmlGetDouble('relaxation_coefficient')
         if not coef:
@@ -154,7 +163,7 @@ class SteadyManagementModel(Model):
     def getNbIter(self):
         """
         Get value of coefficient of relaxation from xml file.
-        """ 
+        """
         node = self.node_anal.xmlInitNode('steady_management', 'status')
         value = node.xmlGetInt('iterations')
         if not value:
@@ -167,7 +176,7 @@ class SteadyManagementModel(Model):
     def getZeroIteration(self):
         """
         Get status of option of zero iteration from xml file.
-        """ 
+        """
         node_steady = self.node_anal.xmlInitNode('steady_management', 'status')
         node = node_steady.xmlGetChildNode('zero_iteration')
         if not node or not node['status']:
@@ -192,7 +201,7 @@ class SteadyManagementTestCase(ModelTest):
         assert model != None, 'Could not instantiate SteadyManagementModel'
 
     def checkSetandGetRelaxCoefficient(self):
-        """Check whether the SteadyManagementModel class could be set or get relax coefficient """ 
+        """Check whether the SteadyManagementModel class could be set or get relax coefficient """
         mdl = SteadyManagementModel(self.case)
         mdl.setSteadyFlowManagement('on')
         node = mdl.node_anal.xmlInitNode('steady_management', 'status')
@@ -209,9 +218,9 @@ class SteadyManagementTestCase(ModelTest):
 
     def checkSetandGeNbIter(self):
         """
-        Check whether the SteadyManagementModel class could be 
+        Check whether the SteadyManagementModel class could be
         set or get number of iterations
-        """ 
+        """
         mdl = SteadyManagementModel(self.case)
         mdl.setSteadyFlowManagement('on')
         node = mdl.node_anal.xmlInitNode('steady_management', 'status')
@@ -225,12 +234,12 @@ class SteadyManagementTestCase(ModelTest):
                     'Could not set a number of iterations'
         assert mdl.getNbIter() == 33,\
             'Could not get a number of iterations in SteadyManagementModel'
-        
+
     def checkSetandGetZeroIteration(self):
         """
         Check whether the SteadyManagementModel class could be
         set or get zero iteration status
-        """ 
+        """
         mdl = SteadyManagementModel(self.case)
         mdl.setSteadyFlowManagement('on')
         node = mdl.node_anal.xmlInitNode('steady_management', 'status')
@@ -244,7 +253,7 @@ class SteadyManagementTestCase(ModelTest):
                     'Could not set a status for zero iteration'
         stat = mdl.getZeroIteration()
         assert stat == 'on', 'Could not get a status for zero iteration in SteadyManagementModel'
-    
+
 def suite():
     testSuite = unittest.makeSuite(SteadyManagementTestCase, "check")
     return testSuite
@@ -256,4 +265,4 @@ def runTest():
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/SteadyManagementView.py b/gui/Pages/SteadyManagementView.py
index 673fc49..4add3c8 100644
--- a/gui/Pages/SteadyManagementView.py
+++ b/gui/Pages/SteadyManagementView.py
@@ -98,7 +98,7 @@ class SteadyManagementView(QWidget, Ui_SteadyManagementForm):
         self.lineEditRELXST.setValidator(validatorRELXST)
 
         validatorNTMABS = QtPage.IntValidator(self.lineEditNTMABS, min=0)
-        self.lineEditNTMABS.setValidator(validatorNTMABS) 
+        self.lineEditNTMABS.setValidator(validatorNTMABS)
 
         # Initialization
 
@@ -107,7 +107,7 @@ class SteadyManagementView(QWidget, Ui_SteadyManagementForm):
 
         nb_iter = self.mdl.getNbIter()
         self.lineEditNTMABS.setText(QString(str(nb_iter)))
-        
+
         if self.mdl.getZeroIteration() == 'on':
             self.checkBoxINPDT0.setChecked(True)
         else:
diff --git a/gui/Pages/SyrthesForm.ui b/gui/Pages/SyrthesForm.ui
deleted file mode 100644
index edc7c1f..0000000
--- a/gui/Pages/SyrthesForm.ui
+++ /dev/null
@@ -1,241 +0,0 @@
-<ui version="4.0" >
- <class>SyrthesForm</class>
- <widget class="QWidget" name="SyrthesForm" >
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>471</width>
-    <height>603</height>
-   </rect>
-  </property>
-  <property name="minimumSize" >
-   <size>
-    <width>350</width>
-    <height>250</height>
-   </size>
-  </property>
-  <property name="windowTitle" >
-   <string>Form</string>
-  </property>
-  <widget class="QFrame" name="frame" >
-   <property name="geometry" >
-    <rect>
-     <x>20</x>
-     <y>30</y>
-     <width>398</width>
-     <height>446</height>
-    </rect>
-   </property>
-   <property name="frameShape" >
-    <enum>QFrame::StyledPanel</enum>
-   </property>
-   <property name="frameShadow" >
-    <enum>QFrame::Raised</enum>
-   </property>
-   <layout class="QGridLayout" >
-    <item row="0" column="0" >
-     <layout class="QGridLayout" >
-      <item row="0" column="0" >
-       <layout class="QGridLayout" >
-        <item row="0" column="0" >
-         <spacer>
-          <property name="orientation" >
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" >
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-        <item row="0" column="1" >
-         <widget class="QLabel" name="labelSyrthes" >
-          <property name="toolTip" >
-           <string>Preprocessor option: -syrthes</string>
-          </property>
-          <property name="text" >
-           <string>Syrthes coupling:</string>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="2" >
-         <spacer>
-          <property name="orientation" >
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" >
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-        <item row="0" column="3" >
-         <widget class="QRadioButton" name="radioButtonCouplingOn" >
-          <property name="text" >
-           <string>on</string>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="4" >
-         <widget class="QRadioButton" name="radioButtonCouplingOff" >
-          <property name="text" >
-           <string>off</string>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="5" >
-         <spacer>
-          <property name="orientation" >
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" >
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-       </layout>
-      </item>
-      <item row="1" column="0" >
-       <widget class="QGroupBox" name="groupBox" >
-        <property name="statusTip" >
-         <string>Boundary faces selections for Syrthes coupling. These selections are optional. A selection can be activated or not. </string>
-        </property>
-        <property name="title" >
-         <string/>
-        </property>
-        <layout class="QGridLayout" >
-         <item row="0" column="0" >
-          <layout class="QGridLayout" >
-           <item row="0" column="0" >
-            <widget class="QLabel" name="labelFaces" >
-             <property name="toolTip" >
-              <string/>
-             </property>
-             <property name="text" >
-              <string>Select boundary faces for Syrthes coupling:</string>
-             </property>
-            </widget>
-           </item>
-           <item row="1" column="0" >
-            <widget class="FacesSelectionView" native="1" name="widgetFaces" >
-             <property name="sizePolicy" >
-              <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
-               <horstretch>0</horstretch>
-               <verstretch>0</verstretch>
-              </sizepolicy>
-             </property>
-             <property name="minimumSize" >
-              <size>
-               <width>350</width>
-               <height>250</height>
-              </size>
-             </property>
-            </widget>
-           </item>
-           <item row="2" column="0" >
-            <widget class="Line" name="line" >
-             <property name="orientation" >
-              <enum>Qt::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item row="3" column="0" >
-            <layout class="QGridLayout" >
-             <item row="0" column="0" >
-              <widget class="QLabel" name="label" >
-               <property name="text" >
-                <string>Project mesh for 2D syrthes run:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="1" >
-              <widget class="QRadioButton" name="radioButton2DOn" >
-               <property name="text" >
-                <string>on</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="2" >
-              <widget class="QRadioButton" name="radioButton2DOff" >
-               <property name="text" >
-                <string>off</string>
-               </property>
-              </widget>
-             </item>
-            </layout>
-           </item>
-          </layout>
-         </item>
-        </layout>
-       </widget>
-      </item>
-      <item row="2" column="0" >
-       <spacer>
-        <property name="orientation" >
-         <enum>Qt::Vertical</enum>
-        </property>
-        <property name="sizeHint" >
-         <size>
-          <width>20</width>
-          <height>40</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-     </layout>
-    </item>
-   </layout>
-  </widget>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>FacesSelectionView</class>
-   <extends>QWidget</extends>
-   <header>FacesSelectionView.h</header>
-   <container>1</container>
-  </customwidget>
- </customwidgets>
- <resources/>
- <connections>
-  <connection>
-   <sender>radioButtonCouplingOff</sender>
-   <signal>clicked()</signal>
-   <receiver>groupBox</receiver>
-   <slot>hide()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>311</x>
-     <y>56</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>354</x>
-     <y>82</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>radioButtonCouplingOn</sender>
-   <signal>clicked()</signal>
-   <receiver>groupBox</receiver>
-   <slot>show()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>264</x>
-     <y>56</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>235</x>
-     <y>78</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>
diff --git a/gui/Pages/SyrthesView.py b/gui/Pages/SyrthesView.py
deleted file mode 100644
index 6f66704..0000000
--- a/gui/Pages/SyrthesView.py
+++ /dev/null
@@ -1,195 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-#
-#-------------------------------------------------------------------------------
-#
-#     This file is part of the Code_Saturne User Interface, element of the
-#     Code_Saturne CFD tool.
-#
-#     Copyright (C) 1998-2009 EDF S.A., France
-#
-#     contact: saturne-support at edf.fr
-#
-#     The Code_Saturne User Interface is free software; you can redistribute it
-#     and/or modify it under the terms of the GNU General Public License
-#     as published by the Free Software Foundation; either version 2 of
-#     the License, or (at your option) any later version.
-#
-#     The Code_Saturne User Interface is distributed in the hope that it will be
-#     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-#     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#     GNU General Public License for more details.
-#
-#     You should have received a copy of the GNU General Public License
-#     along with the Code_Saturne Kernel; if not, write to the
-#     Free Software Foundation, Inc.,
-#     51 Franklin St, Fifth Floor,
-#     Boston, MA  02110-1301  USA
-#
-#-------------------------------------------------------------------------------
-
-"""
-This module contains the following class:
-- SyrthesView
-"""
-
-#-------------------------------------------------------------------------------
-# Standard modules
-#-------------------------------------------------------------------------------
-
-import logging
-
-#-------------------------------------------------------------------------------
-# Third-party modules
-#-------------------------------------------------------------------------------
-
-from PyQt4.QtCore import *
-from PyQt4.QtGui  import *
-
-#-------------------------------------------------------------------------------
-# Application modules import
-#-------------------------------------------------------------------------------
-
-from Base.Toolbox import GuiParam
-from SyrthesForm import Ui_SyrthesForm
-from Pages.SolutionDomainModel import SolutionDomainModel
-import Base.QtPage as QtPage
-
-#-------------------------------------------------------------------------------
-# log config
-#-------------------------------------------------------------------------------
-
-logging.basicConfig()
-log = logging.getLogger("SyrthesView")
-log.setLevel(GuiParam.DEBUG)
-
-#-------------------------------------------------------------------------------
-# Main class
-#-------------------------------------------------------------------------------
-
-class SyrthesView(QWidget, Ui_SyrthesForm):
-    """
-    """
-    
-    def __init__(self, parent, case):
-        """
-        Constructor
-        """
-        QWidget.__init__(self, parent)
-
-        Ui_SyrthesForm.__init__(self)
-        self.setupUi(self)
-        
-        self.case = case
-
-        # Create the Page layout.
-
-        # Configure Faces Selection Widget
-        self.widgetFaces.setTagName("faces_syrthes")
-        self.widgetFaces.setCase(self.case)
-
-        # Connections
-        self.connect(self.radioButtonCouplingOn,  SIGNAL("clicked()"), self.slotSyrthesCoupling)
-        self.connect(self.radioButtonCouplingOff, SIGNAL("clicked()"), self.slotSyrthesCoupling)
-
-        self.connect(self.radioButton2DOn,  SIGNAL("clicked()"), self.slotSyrthes2dMesh)
-        self.connect(self.radioButton2DOff, SIGNAL("clicked()"), self.slotSyrthes2dMesh)
-
-        # Signals for the Faces Selection Widget
-        self.connect(self.widgetFaces.pushButtonDelete, SIGNAL("clicked()"), self.delListboxSyrthes) 
-
-        # initialize
-
-        if SolutionDomainModel(self.case).getSyrthesCouplingStatus() == 'on':
-            self.radioButtonCouplingOn.setChecked(True)
-            self.radioButtonCouplingOff.setChecked(False)
-            self.groupBox.show()
-            if SolutionDomainModel(self.case).getSyrthes2dMeshStatus() == 'on':
-                self.radioButton2DOn.setChecked(True)
-                self.radioButton2DOff.setChecked(False)
-            else:
-                self.radioButton2DOn.setChecked(False)
-                self.radioButton2DOff.setChecked(True)
-        else:
-            self.radioButtonCouplingOn.setChecked(False)
-            self.radioButtonCouplingOff.setChecked(True)
-            self.groupBox.hide()
-            SolutionDomainModel(self.case).setSyrthesCouplingStatus('off')
-
-        #for node in self.node_syrthes.xmlGetNodeList('faces_syrthes'):
-        result = {}
-        result = SolutionDomainModel(self.case).getSyrthesFaces()
-        if result:
-            self.widgetFaces.insertItemFromDico(result)
-        
-
-    @pyqtSignature("")
-    def slotSyrthesCoupling(self):
-        """
-        Do we have a syrthes coupling ?
-        """
-        if self.radioButtonCouplingOn.isChecked():
-            self.syr_on_off = "on"
-        else:
-            self.syr_on_off = "off"
-        answer = self.syr_on_off
-        SolutionDomainModel(self.case).setSyrthesCouplingStatus(answer)
-
-        # Hide/Show of the group box is handled by signals in the Form
-        if SolutionDomainModel(self.case).getSyrthes2dMeshStatus() == 'on':
-            self.radioButton2DOn.setChecked(True)
-            self.radioButton2DOff.setChecked(False)
-        else:
-            self.radioButton2DOn.setChecked(False)
-            self.radioButton2DOff.setChecked(True)
-
-
-    @pyqtSignature("")
-    def slotSyrthes2dMesh(self):
-        """
-        Is the mesh for Syrthes a 2D mesh ?
-        This command is invoked with 2 arguments. The first is the name of the
-        button subwidget that has toggled. The second is a boolean value
-        indicating whether the button subwidget is selected.
-        """
-        if self.radioButton2DOn.isChecked():
-            self.syr2d_on_off  = "on"
-        else:
-            self.syr2d_on_off  = "off"
-        SolutionDomainModel(self.case).setSyrthes2dMeshStatus(self.syr2d_on_off)
-        if self.syr2d_on_off == 'off':
-##            SolutionDomainModel(self.case).setSyrthes2dMeshStatus('on')
-##        else:
-##            SolutionDomainModel(self.case).delSyrthes2dMeshNode()
-            self.radioButton2DOn.setChecked(False)
-            self.radioButton2DOff.setChecked(True)
-
-
-    @pyqtSignature("")
-    def delListboxSyrthes(self):
-        """
-        Delete the selection from the listView.
-        """
-        self.widgetFaces.slotDelItem()
-        self.syr2d_on_off = "off"
-        self.slotSyrthes2dMesh()
-        
-
-    def tr(self, text):
-        """
-        Translation
-        """
-        return text 
-        
-
-#-------------------------------------------------------------------------------
-# Testing part
-#-------------------------------------------------------------------------------
-
-
-if __name__ == "__main__":
-    pass
-
-
-#-------------------------------------------------------------------------------
-# End
-#-------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/gui/Pages/ThermalRadiationModel.py b/gui/Pages/ThermalRadiationModel.py
index 84c445f..bcea011 100644
--- a/gui/Pages/ThermalRadiationModel.py
+++ b/gui/Pages/ThermalRadiationModel.py
@@ -139,15 +139,15 @@ class ThermalRadiationModel(Model):
         rayName = ['srad',     'qrad',     'absorp',  'emiss',    'coefAb',
                     'wall_temp', 'flux_incident', 'thermal_conductivity', 'thickness',
                     'emissivity', 'flux_net',      'flux_convectif',  'coeff_ech_conv']
-    
+
         raylabF = ['Srad',       'Qrad',          'Absorp',     'Emiss',    'CoefAb',
                     'Temp_paroi', 'Flux_incident', 'Conductivite_th', 'Epaisseur',
                 'Emissivite', 'Flux_net',      'Flux_convectif',  'Coeff_ech_conv']
-    
+
         raylabE = ['Srad',      'Qrad',      'Absorp',          'Emiss',    'CoefAb',
                     'Wall_temp', 'Flux_incident', 'Th_conductivity', 'Thickness',
                 'Emissivity','Flux_net',      'Flux_convectif',  'Coeff_ech_conv']
-    
+
         dico['name'] = rayName
         dico['labF'] = raylabF
         dico['labE'] = raylabE
@@ -155,7 +155,7 @@ class ThermalRadiationModel(Model):
             label = dico['labF']
         else:
             label = dico['labE']
-    
+
         return dico['name'], label
 
 
@@ -190,12 +190,12 @@ class ThermalRadiationModel(Model):
 #            if model2 == "p-1":
 #                ind = 2
 #            coalCoeff = 'constant'
-#            if node_coeff: 
+#            if node_coeff:
 #                coalCoeff = node_coeff['type']
 #            if coalCoeff == 'constant':
 #                ind += 1
 #            elif coalCoeff == 'modak':
-#                ind += 2          
+#                ind += 2
 #        model.radiativTransfer.setRadiativTransfer(ind)
 #        model.save()
 
@@ -218,7 +218,7 @@ class ThermalRadiationModel(Model):
 
 #    def _setTypeCoalCoeff(self, val):
 #        """
-#        Private method : put indice relatively to type of 
+#        Private method : put indice relatively to type of
 #        coefficient absorption for coal
 #        """
 #        self.isInList(val, ('constant', 'variable', 'modak'))
@@ -229,7 +229,7 @@ class ThermalRadiationModel(Model):
 #            ind = 1
 #        else :
 #            ind = 2
-#            
+#
 #        radModel = self.node_ray['model']
 #        if radModel == 'p-1':
 #            ind += 2
@@ -241,7 +241,7 @@ class ThermalRadiationModel(Model):
 
     def _setBoundCond(self):
         """
-        Private method : put by default boundary conditions for radiative 
+        Private method : put by default boundary conditions for radiative
         variables as soon as a radiative model is set
         """
         from Pages.LocalizationModel import LocalizationModel, Zone
@@ -257,7 +257,7 @@ class ThermalRadiationModel(Model):
 
     def _updateModelParameters(self, model):
         """
-        Private method : put by default all parameters for radiative 
+        Private method : put by default all parameters for radiative
         variables as soon a radiative model is set
         """
         self.getRestart()
@@ -266,11 +266,15 @@ class ThermalRadiationModel(Model):
         elif model == 'p-1':
             self.node_ray.xmlRemoveChild('directions_number')
         self.getAbsorCoeff()
+        self.getFrequency()
+        self.getTrs()
+        self.getTemperatureListing()
+        self.getIntensityResolution()
 
 
     def isCoalCombustion(self):
         """
-        Return 0 if pulverized_coal's attribute model is 'off', 
+        Return 0 if pulverized_coal's attribute model is 'off',
         return 1 if it's different
         """
         value = 0
@@ -293,11 +297,11 @@ class ThermalRadiationModel(Model):
 #            for nb in range(len(dico[0])):
 #                if not self.node_ray.xmlGetNode('property', name =dico[0][nb]):
 #                    if dico[0][nb] in ("srad", "qrad", "absorp", "emiss", "coefAb"):
-#                        self.node_ray.xmlInitNode('property', 
+#                        self.node_ray.xmlInitNode('property',
 #                                                   label=dico[1][nb],
 #                                                   name =dico[0][nb])
 #                    else:
-#                        self.node_ray.xmlInitNode('property', 
+#                        self.node_ray.xmlInitNode('property',
 #                                                   label=dico[1][nb],
 #                                                   name =dico[0][nb],
 #                                                   support='boundary')
@@ -434,8 +438,8 @@ class ThermalRadiationModel(Model):
         self.isPositiveFloat(val)
         if self.isCoalCombustion():
             import Pages.CoalThermoChemistry as CoalThermoChemistry
-            model = CoalThermoChemistry.CoalThermoChemistryModel("dp_FCP", self.case) 
-            model.load() 
+            model = CoalThermoChemistry.CoalThermoChemistryModel("dp_FCP", self.case)
+            model.load()
             model.radiativTransfer.setAbsorptionCoeff(val)
             model.save()
 
@@ -518,7 +522,7 @@ class ThermalRadiationModel(Model):
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # ThermalRadiation test case
@@ -577,7 +581,7 @@ class ThermalRadiationTestCase(ModelTest):
 
     def checkSetandgetNbDir(self):
         """
-        Check whether the ThermalRadiationModel class could be set and get 
+        Check whether the ThermalRadiationModel class could be set and get
         number of directions
         """
         mdl = ThermalRadiationModel(self.case)
@@ -635,11 +639,11 @@ class ThermalRadiationTestCase(ModelTest):
             'Could not set restart in ThermalRadiationModel'
         assert mdl.getRestart() == 'on', \
             'Could not get restart in ThermalRadiationModel'
-            
+
     def checkSetandGetTypeCoeff(self):
         """
-        Check whether the ThermalRadiationModel class could be set and 
-        get type of absorption coefficient 
+        Check whether the ThermalRadiationModel class could be set and
+        get type of absorption coefficient
         """
         mdl = ThermalRadiationModel(self.case)
         mdl.setRadiativeModel('dom')
@@ -669,8 +673,8 @@ class ThermalRadiationTestCase(ModelTest):
 
     def checkSetandGetAbsorCoeff(self):
         """
-        Check whether the ThermalRadiationModel class could be set and 
-        get value of absorption coefficient 
+        Check whether the ThermalRadiationModel class could be set and
+        get value of absorption coefficient
         """
         mdl = ThermalRadiationModel(self.case)
         mdl.setRadiativeModel('dom')
@@ -700,7 +704,7 @@ class ThermalRadiationTestCase(ModelTest):
 
     def checkSetandGetFrequency(self):
         """
-        Check whether the ThermalRadiationModel class could be set and get 
+        Check whether the ThermalRadiationModel class could be set and get
         frequency for advanced options
         """
         mdl = ThermalRadiationModel(self.case)
@@ -732,7 +736,7 @@ class ThermalRadiationTestCase(ModelTest):
 
     def checkSetandGetIntensityResolution(self):
         """
-        Check whether the ThermalRadiationModel class could be set and get 
+        Check whether the ThermalRadiationModel class could be set and get
         IIMLUM for advanced options
         """
         mdl = ThermalRadiationModel(self.case)
@@ -764,7 +768,7 @@ class ThermalRadiationTestCase(ModelTest):
 
     def checkSetandGetTemperatureListing(self):
         """
-        Check whether the ThermalRadiationModel class could be set and get 
+        Check whether the ThermalRadiationModel class could be set and get
         IIMPAR for advanced options
         """
         mdl = ThermalRadiationModel(self.case)
@@ -796,7 +800,7 @@ class ThermalRadiationTestCase(ModelTest):
 
     def checkSetandGetTrs(self):
         """
-        Check whether the ThermalRadiationModel class could be set and get 
+        Check whether the ThermalRadiationModel class could be set and get
         IDIVER for advanced options
         """
         mdl = ThermalRadiationModel(self.case)
@@ -825,7 +829,7 @@ class ThermalRadiationTestCase(ModelTest):
             'Could not set IDIVER for advanced options in ThermalRadiationModel'
         assert mdl.getTrs() == 2,\
             'Could not get IDIVER for advanced options in ThermalRadiationModel'
-  
+
     def checkGetThermalRadiativeModel(self):
         """
         Check whether a thermal radiative model could be get
@@ -833,7 +837,7 @@ class ThermalRadiationTestCase(ModelTest):
         mdl = ThermalRadiationModel(self.case)
         assert mdl.getThermalRadiativeModel() == 1,\
             'Could not get thermal radiative model'
-            
+
 
 
 def suite():
diff --git a/gui/Pages/ThermalRadiationView.py b/gui/Pages/ThermalRadiationView.py
index fc96eb7..726291f 100644
--- a/gui/Pages/ThermalRadiationView.py
+++ b/gui/Pages/ThermalRadiationView.py
@@ -220,7 +220,7 @@ class ThermalRadiationView(QWidget, Ui_ThermalRadiationForm):
                      SIGNAL("textChanged(const QString &)"),
                      self.slotAbsorptionCoefficient)
         self.connect(self.toolButtonAdvanced,
-                     SIGNAL("clicked()"), 
+                     SIGNAL("clicked()"),
                      self.slotAdvancedOptions)
 
         # Validator
diff --git a/gui/Pages/ThermalScalarModel.py b/gui/Pages/ThermalScalarModel.py
index 2b74bb3..b671783 100644
--- a/gui/Pages/ThermalScalarModel.py
+++ b/gui/Pages/ThermalScalarModel.py
@@ -53,6 +53,7 @@ from Base.XMLmodel import ModelTest
 from Base.XMLvariables import Variables, Model
 from DefineUserScalarsModel import DefineUserScalarsModel
 from ThermalRadiationModel import ThermalRadiationModel
+from ConjugateHeatTransferModel import ConjugateHeatTransferModel
 
 #-------------------------------------------------------------------------------
 # Thermal scalar model class
@@ -169,6 +170,7 @@ class ThermalScalarModel(DefineUserScalarsModel, Variables, Model):
                 self.deleteScalar(node['label'])
             self._removeThermalTimeStep()
             ThermalRadiationModel(self.case).setRadiativeModel('off')
+            ConjugateHeatTransferModel(self.case).setConjugateHeatTransferStatus('off')
             self.node_therm.xmlRemoveChild('property',
                                            name="input_thermal_flux",
                                            support="boundary")
@@ -218,7 +220,7 @@ class ThermalScalarTestCase(ModelTest):
         mdl = ThermalScalarModel(self.case)
         mdl.setThermalModel('temperature_kelvin')
         doc = '''<additional_scalars>
-                    <scalar label="Temp.K" name="temperature_kelvin" type="thermal">
+                    <scalar label="TempK" name="temperature_kelvin" type="thermal">
                         <initial_value zone="1">293.15</initial_value>
                         <min_value>-1e+12</min_value>
                         <max_value>1e+12</max_value>
@@ -244,4 +246,4 @@ def runTest():
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/ThermalScalarView.py b/gui/Pages/ThermalScalarView.py
index c487927..5a96721 100644
--- a/gui/Pages/ThermalScalarView.py
+++ b/gui/Pages/ThermalScalarView.py
@@ -122,8 +122,8 @@ class ThermalScalarView(QWidget, Ui_ThermalScalarForm):
         """
         Translation
         """
-        return text 
-        
+        return text
+
 #-------------------------------------------------------------------------------
 # Testing part
 #-------------------------------------------------------------------------------
diff --git a/gui/Pages/TimeAveragesForm.ui b/gui/Pages/TimeAveragesForm.ui
index ce06f24..d170cac 100644
--- a/gui/Pages/TimeAveragesForm.ui
+++ b/gui/Pages/TimeAveragesForm.ui
@@ -5,8 +5,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>450</width>
-    <height>448</height>
+    <width>397</width>
+    <height>455</height>
    </rect>
   </property>
   <property name="acceptDrops" >
@@ -15,13 +15,13 @@
   <property name="windowTitle" >
    <string>Form</string>
   </property>
-  <layout class="QVBoxLayout" >
-   <item>
+  <layout class="QGridLayout" name="gridLayout_2" >
+   <item row="0" column="0" >
     <widget class="QGroupBox" name="groupBox" >
      <property name="title" >
       <string>Time averages</string>
      </property>
-     <layout class="QVBoxLayout" >
+     <layout class="QVBoxLayout" name="verticalLayout" >
       <item>
        <widget class="QTreeView" name="treeViewAverage" >
         <property name="alternatingRowColors" >
@@ -60,19 +60,6 @@
            </widget>
           </item>
           <item>
-           <spacer>
-            <property name="orientation" >
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeHint" stdset="0" >
-             <size>
-              <width>16</width>
-              <height>16</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-          <item>
            <widget class="QPushButton" name="pushButtonEdit" >
             <property name="text" >
              <string>Edit</string>
@@ -80,19 +67,6 @@
            </widget>
           </item>
           <item>
-           <spacer>
-            <property name="orientation" >
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeHint" stdset="0" >
-             <size>
-              <width>16</width>
-              <height>16</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-          <item>
            <widget class="QPushButton" name="pushButtonDelete" >
             <property name="text" >
              <string>Delete</string>
@@ -124,7 +98,7 @@
        </widget>
       </item>
       <item>
-       <layout class="QHBoxLayout" >
+       <layout class="QHBoxLayout" name="horizontalLayout" >
         <item>
          <spacer>
           <property name="orientation" >
@@ -132,14 +106,14 @@
           </property>
           <property name="sizeHint" stdset="0" >
            <size>
-            <width>20</width>
-            <height>20</height>
+            <width>17</width>
+            <height>17</height>
            </size>
           </property>
          </spacer>
         </item>
         <item>
-         <layout class="QGridLayout" >
+         <layout class="QGridLayout" name="gridLayout" >
           <item row="0" column="0" >
            <widget class="QLabel" name="labelAverage" >
             <property name="text" >
@@ -172,7 +146,7 @@ for time average calculation</string>
             </property>
            </widget>
           </item>
-          <item row="2" column="0" >
+          <item rowspan="2" row="2" column="0" >
            <widget class="QLabel" name="labelRestart" >
             <property name="toolTip" >
              <string>Code_Saturne key word: IMOOLD(IMOM)</string>
@@ -180,12 +154,15 @@ for time average calculation</string>
             <property name="text" >
              <string>If restart, number in preceding calculation
 of the time average to use to initalize 
-the selected time average.
+the current selected time average.
 </string>
             </property>
            </widget>
           </item>
           <item row="2" column="1" >
+           <widget class="QComboBox" name="comboBoxIMOOLD" />
+          </item>
+          <item row="3" column="1" >
            <widget class="QLineEdit" name="lineEditRestart" >
             <property name="toolTip" >
              <string>Code_Saturne key word: IMOOLD(IMOM)</string>
@@ -201,8 +178,8 @@ the selected time average.
           </property>
           <property name="sizeHint" stdset="0" >
            <size>
-            <width>16</width>
-            <height>16</height>
+            <width>17</width>
+            <height>17</height>
            </size>
           </property>
          </spacer>
@@ -273,7 +250,7 @@ the selected time average.
      </layout>
     </widget>
    </item>
-   <item>
+   <item row="1" column="0" >
     <spacer>
      <property name="orientation" >
       <enum>Qt::Vertical</enum>
diff --git a/gui/Pages/TimeAveragesModel.py b/gui/Pages/TimeAveragesModel.py
index 1f1b718..c2b8446 100644
--- a/gui/Pages/TimeAveragesModel.py
+++ b/gui/Pages/TimeAveragesModel.py
@@ -65,26 +65,30 @@ class TimeAveragesModel(Model):
         Simple constructor.
         """
         self.case = case
-        self.node_anal      = self.case.xmlInitNode('analysis_control')
-        self.node_mean      = self.node_anal.xmlInitNode('time_averages')
-        self.node_model     = self.case.xmlInitNode('thermophysical_models')
-        self.node_model_vp  = self.node_model.xmlInitNode('velocity_pressure')
-        self.node_var_vp    = self.node_model_vp.xmlGetNodeList('variable')
-        self.node_pro_vp    = self.node_model_vp.xmlGetNodeList('property')
+        self.node_anal     = self.case.xmlInitNode('analysis_control')
+        self.node_mean     = self.node_anal.xmlInitNode('time_averages')
+        self.node_model    = self.case.xmlInitNode('thermophysical_models')
+        self.node_model_vp = self.node_model.xmlInitNode('velocity_pressure')
+        self.node_var_vp   = self.node_model_vp.xmlGetNodeList('variable')
+        self.node_pro_vp   = self.node_model_vp.xmlGetNodeList('property')
 
         self.__updateDicoLabel2Name()
 
 
-    def __defaultValues(self):
+    def defaultValues(self):
         """
-        Private method.
-        Return a dictionnary with default values
+        Public method.
+        @return: dictionary with default values.
+        @rtype: C{Dict}
         """
         value = {}
-        if StartRestartModel(self.case).getRestart() == 'off':
-            value['restart']    = 0
-        else:
-            value['restart']    = -1
+        value['start']   = 1
+        value['restart'] = -2
+
+#        if StartRestartModel(self.case).getRestart() == 'off':
+#            value['restart']    = 0
+#        else:
+#            value['restart']    = -1
 
         return value
 
@@ -105,7 +109,6 @@ class TimeAveragesModel(Model):
                          output.getFluidProperty(),
                          output.getAdditionalScalarProperty(),
                          output.getTimeProperty(),
-                         output.getListOfTimeMeans(),
                          output.getPuCoalScalProper(),
                          output.getMeteoScalProper(),
                          output.getThermalScalar(),
@@ -124,114 +127,118 @@ class TimeAveragesModel(Model):
         return self.dicoLabel2Name.keys()
 
 
-    def ___updateAverageNumbers(self, imom):
+    def __updateTimeAverage(self, nb, label, start, restart, list):
         """
         Private method.
-        Update order of average.
+        Update data for average I{label}.
+        @type nb: C{Int}
+        @param nb: time average I{label} number.
+        @type start: C{Int}
+        @param start: start iteration for the time average I{label}.
+        @type restart: C{Int}
+        @param restart: restart parameter value for the new time average I{label}.
+        @type list: C{List}
+        @param list: list of variables and properties for the new time average I{label}.
+        @type label: C{String}
+        @param label: label for the time average I{label}.
+        @type start: C{Int}
+        @param start: start iteration for time average I{label}.
+        @type restart: C{Int}
+        @param restart: restart parameter value for the time average I{label}.
+        @type list: C{List}
+        @param list: list of variables and properties for the time average I{label}.
         """
-        for index in self.getAverageList():
-            lab, start, restart, list = self.getAverageInformations(index)
-            if index >= imom:
-                nb = str(index - 1)
-                if lab == 'Moy' + str(index):
-                    lab = 'Moy' + nb
-                node = self.node_mean.xmlGetNode('time_average', id=index)
-                node['id'] = nb
-                node['label'] = lab
-
-
-    def __updateAverage(self, nb, label, start, restart, list):
-        """
-        Private method.
-        Update data for average I{llabel}.
-        """
-        node = self.node_mean.xmlInitNode('time_average', id=nb)
-        node['label'] = label
+        node = self.node_mean.xmlInitNode('time_average', label=label)
+        node['id'] = str(nb)
+
         for var in list:
             self.isInList(var, self.dicoLabel2Name.keys())
             node.xmlAddChild('var_prop', name=self.dicoLabel2Name[var])
+
         node.xmlSetData('time_step_start', start)
-        if StartRestartModel(self.case).getRestart() != 'off' and restart != -1:
-            node.xmlSetData('restart_from_time_average', restart)
+
+        if StartRestartModel(self.case).getRestart() == 'on':
+            if restart != -2:
+                node.xmlSetData('restart_from_time_average', restart)
         else:
-            if node.xmlGetInt('restart_from_time_average'):
-                node.xmlRemoveChild('restart_from_time_average')
+            node.xmlRemoveChild('restart_from_time_average')
 
 
-    def setAverage(self, nb, label, start, restart, list):
+    def setTimeAverage(self, label, start, restart, list):
         """
         Public method.
-        Sets list of variables or properties used for calculation of average
-        for average number nb, and time's start and restart values.
+        Add a new time average I{label}.
+        @type label: C{String}
+        @param label: label for the new time average I{label}.
+        @type start: C{Int}
+        @param start: start iteration for the time average I{label}.
+        @type restart: C{Int}
+        @param restart: restart parameter value for the new time average I{label}.
+        @type list: C{List}
+        @param list: list of variables and properties for the new time average I{label}.
         """
-        self.isNotInList(nb, self.getAverageList())
-        for i in (nb, start):
-            self.isInt(i)
-        if StartRestartModel(self.case).getRestart() != 'off':
-            self.isInt(restart)
-        self.isNotInList(label, self.getAverageLabelsList())
+        self.isGreater(start, 0)
+        self.isNotInList(restart, [0])
+        self.isNotInList(label, self.getTimeAverageLabels())
 
-        self.__updateAverage(nb, label, start, restart, list)
+        nb = self.getNumberOfTimeAverage()
+        self.__updateTimeAverage(nb+1, label, start, restart, list)
 
 
-    def replaceAverage(self, nb, label, start, restart, list):
+    def replaceTimeAverage(self, old_label, new_label, start, restart, list):
         """
         Public method.
-        Replaces list of variables or properties used for calculation of mean
-        for average number nb, or label, or time's start or restart values.
+        Replaces data for time average I{old_label}.
+        @type old_label: C{String}
+        @param old_label: label of the time average to change.
+        @type new_label: C{String}
+        @param new_label: new label for the time average I{old_label}.
+        @type start: C{Int}
+        @param start: new start iteration for the time average I{old_label}.
+        @type restart: C{Int}
+        @param restart: new restart parameter value for the time average I{old_label}.
+        @type list: C{List}
+        @param list: new list of variables and properties for the time average I{old_label}.
         """
-        self.isInList(nb, self.getAverageList())
-        for i in (nb, start):
-            self.isInt(i)
-        if StartRestartModel(self.case).getRestart() != 'off':
-            self.isInt(restart)
+        self.isGreater(start, 0)
+        self.isNotInList(restart, [0])
 
-        node = self.node_mean.xmlGetNode('time_average', id=nb)
+        node = self.node_mean.xmlGetNode('time_average', label=old_label)
         if node:
+            node['label'] = new_label
             node.xmlRemoveChild('var_prop')
             node.xmlRemoveChild('time_step_start')
             node.xmlRemoveChild('restart_from_time_average')
-        self.__updateAverage(nb, label, start, restart, list)
+        self.__updateTimeAverage(node['id'], new_label, start, restart, list)
 
 
-    def deleteAverage(self, nb):
+    def deleteTimeAverage(self, label):
         """
         Public method.
-        Sets list of variables or properties used for calculation of mean
-        for average number nb, and time's start and restart values.
+        @type label: C{String}
+        @param label: label of the time average to delete.
         """
-        self.isInt(nb)
-        node = self.node_mean.xmlGetNode('time_average', id=nb)
+        node = self.node_mean.xmlGetNode('time_average', label=label)
         if node:
+            nb = node['id']
             node.xmlRemoveNode()
-##            node.xmlRemoveChild('var_prop')
-##            node.xmlRemoveChild('time_step_start')
-##            if node.xmlGetInt('restart_from_time_average'):
-##                node.xmlRemoveChild('restart_from_time_average')
-        self.___updateAverageNumbers(nb)
 
+            # renumerotation of all time average
 
-    def getAverageList(self):
-        """
-        Public method.
-        Gets list of averages and return list of imom number.
-        """
-        list = []
-        for node in self.node_mean.xmlGetNodeList('time_average'):
-            list.append(int(node['id']))
+            for p in range(int(nb)+1, self.getNumberOfTimeAverage()+2):
+                t = self.node_mean.xmlGetNode('time_average', id=p)
+                t['id'] = p - 1
 
-        return list
 
-
-    def getAverageInformations(self, imom):
+    def getTimeAverageData(self, imom):
         """
         Public method.
-        Gets average with imom and return time_step_start, restart_from_time_average,
-        and list of variables or properties ....
+        @return: data for time average number I{imom}.
+        @rtype: C{Tuple}
         """
         self.isInt(imom)
         list = []
-        restart = self.__defaultValues()['restart']
+        restart = self.defaultValues()['restart']
         node = self.node_mean.xmlGetNode('time_average', id=imom)
         start = node.xmlGetInt('time_step_start')
         if StartRestartModel(self.case).getRestart() != 'off':
@@ -244,10 +251,11 @@ class TimeAveragesModel(Model):
         return node['label'], start, restart, list
 
 
-    def getAverageLabelsList(self):
+    def getTimeAverageLabels(self):
         """
         Public method.
-        Gets list of averages's labels.
+        @return: list of time averages labels.
+        @rtype: C{List} of C{String}
         """
         list = []
         for node in self.node_mean.xmlGetNodeList('time_average'):
@@ -256,17 +264,13 @@ class TimeAveragesModel(Model):
         return list
 
 
-    def getAverageRestart(self, nb):
+    def getNumberOfTimeAverage(self):
         """
-        Public method. Only for GUI (StartRestartModel class).
-        Get restart to know if balise exists.
+        Public method.
+        @return: number of time averages already defined.
+        @rtype: C{Int}
         """
-        self.isInt(nb)
-        restart = ''
-        node = self.node_mean.xmlGetNode('time_average', id=nb)
-        if node:
-            restart = node.xmlGetInt('restart_from_time_average')
-        return restart
+        return len(self.node_mean.xmlGetNodeList('time_average'))
 
 #-------------------------------------------------------------------------------
 # TimeAveragesModel test case
@@ -283,11 +287,11 @@ class TimeAveragesTestCase(ModelTest):
         assert model != None, 'Could not instantiate TimeAveragesModel'
 
 
-    def checkSetAverage(self):
+    def checksetTimeAverage(self):
         """Check whether the TimeAveragesModel class could be set a average"""
         mdl = TimeAveragesModel(self.case)
-        mdl.setAverage(1, 'moyenne', 10, 1, ['VelocitU', 'VelocitV'])
-        mdl.setAverage(2, 'deux', 20, 1, ['Pressure'])
+        mdl.setTimeAverage(1, 'moyenne', 10, 1, ['VelocitU', 'VelocitV'])
+        mdl.setTimeAverage(2, 'deux', 20, 1, ['Pressure'])
 
         doc = '''<time_averages>
                     <time_average id="1" label="moyenne">
@@ -305,14 +309,14 @@ class TimeAveragesTestCase(ModelTest):
             'Could not set some averages in TimeAveragesModel'
 
 
-    def checkReplaceAverage(self):
+    def checkreplaceTimeAverage(self):
         """Check whether the TimeAveragesModel class could be replaced one average"""
         mdl = TimeAveragesModel(self.case)
-        mdl.setAverage(1, 'moyenne', 10, 1, ['VelocitU', 'VelocitV'])
-        mdl.setAverage(2, 'deux', 20, 1, ['Pressure'])
-        mdl.setAverage(3, 'trois', 33, 1, ['Pressure', 'VelocitU'])
-        mdl.replaceAverage(2, 'SECOND', 12, 1, ['VelocitW', 'VelocitV'])
-        mdl.replaceAverage(3, 'trois', 33, 1, ['Pressure', 'VelocitW'])
+        mdl.setTimeAverage(1, 'moyenne', 10, 1, ['VelocitU', 'VelocitV'])
+        mdl.setTimeAverage(2, 'deux', 20, 1, ['Pressure'])
+        mdl.setTimeAverage(3, 'trois', 33, 1, ['Pressure', 'VelocitU'])
+        mdl.replaceTimeAverage(2, 'SECOND', 12, 1, ['VelocitW', 'VelocitV'])
+        mdl.replaceTimeAverage(3, 'trois', 33, 1, ['Pressure', 'VelocitW'])
         doc = '''<time_averages>
                     <time_average id="1" label="moyenne">
                             <var_prop name="velocity_U"/>
@@ -334,13 +338,13 @@ class TimeAveragesTestCase(ModelTest):
             'Could not replace one average in TimeAveragesModel'
 
 
-    def checkDeleteAverage(self):
+    def checkdeleteTimeAverage(self):
         """Check whether the TimeAveragesModel class could be deleted one average"""
         mdl = TimeAveragesModel(self.case)
-        mdl.setAverage(1, 'moyenne', 10, 1, ['VelocitU', 'VelocitV'])
-        mdl.setAverage(2, 'deux', 20, 1, ['VelocitU'])
-        mdl.setAverage(3, 'trois', 33, 1, ['VelocitW', 'VelocitU'])
-        mdl.deleteAverage(2)
+        mdl.setTimeAverage(1, 'moyenne', 10, 1, ['VelocitU', 'VelocitV'])
+        mdl.setTimeAverage(2, 'deux', 20, 1, ['VelocitU'])
+        mdl.setTimeAverage(3, 'trois', 33, 1, ['VelocitW', 'VelocitU'])
+        mdl.deleteTimeAverage(2)
         doc = '''<time_averages>
                     <time_average id="1" label="moyenne">
                             <var_prop name="velocity_U"/>
@@ -358,24 +362,6 @@ class TimeAveragesTestCase(ModelTest):
             'Could not delete one average in TimeAveragesModel'
 
 
-    def checkDeleteAverage(self):
-        """Check whether the TimeAveragesModel class could be get restart average"""
-        mdl = TimeAveragesModel(self.case)
-        mdl.setAverage(1, 'moyenne', 10, 1, ['VelocitU', 'VelocitV'])
-        mdl.setAverage(2, 'deux', 20, 1, ['VelocitU'])
-        mdl.setAverage(3, 'trois', 33, 1, ['VelocitW', 'VelocitU'])
-
-        assert mdl.getAverageRestart(1) == None,\
-            'Could not get restart average in TimeAveragesModel'
-
-        from Pages.StartRestartModel import StartRestartModel
-        StartRestartModel(self.case).setRestart('on')
-        mdl.replaceAverage(2, 'deux', 20, 3, ['VelocitU'])
-
-        assert mdl.getAverageRestart(2) == 3,\
-            'Could not get restart average in TimeAveragesModel'
-
-
 def suite():
     testSuite = unittest.makeSuite(TimeAveragesTestCase, "check")
     return testSuite
diff --git a/gui/Pages/TimeAveragesView.py b/gui/Pages/TimeAveragesView.py
index bc4cdb0..eddd70d 100644
--- a/gui/Pages/TimeAveragesView.py
+++ b/gui/Pages/TimeAveragesView.py
@@ -54,7 +54,7 @@ from PyQt4.QtGui  import *
 from Base.Common import LABEL_LENGTH_MAX
 from Base.Toolbox import GuiParam
 from TimeAveragesForm import Ui_TimeAveragesForm
-from Base.QtPage import IntValidator, RegExpValidator
+from Base.QtPage import IntValidator, RegExpValidator, ComboModel
 from Pages.StartRestartModel import StartRestartModel
 from Pages.TimeAveragesModel import TimeAveragesModel
 
@@ -113,13 +113,14 @@ class StandardItemModelAverage(QStandardItemModel):
         return True
 
 
-    def addItem(self, imom, label, ntdmom, imoold, list):
+    def addItem(self, label, ntdmom, imoold, list):
         """
         Add a row in the table.
         """
+        row = self.rowCount()
+        imom = row + 1
         item = [imom, label, ntdmom, imoold, list]
         self.dataAverage.append(item)
-        row = self.rowCount()
         if row +1 > 50:
             title = self.tr("Information")
             msg = self.tr("The maximal number of time averages cannot exceed 50. ")
@@ -128,10 +129,11 @@ class StandardItemModelAverage(QStandardItemModel):
             self.setRowCount(row+1)
 
 
-    def replaceItem(self, row, imom, label, ntdmom, imoold, list):
+    def replaceItem(self, row, label, ntdmom, imoold, list):
         """
         Replace a row in the table.
         """
+        imom = row + 1
         self.dataAverage[row] = [imom, label, ntdmom, imoold, list]
 
 
@@ -150,6 +152,15 @@ class StandardItemModelAverage(QStandardItemModel):
         """
         return self.dataAverage[row]
 
+
+    def deleteAllData(self):
+        """
+        Destroy the contents of the list.
+        """
+        self.dataAverage = []
+        self.setRowCount(0)
+
+
 #-------------------------------------------------------------------------------
 # Main class
 #-------------------------------------------------------------------------------
@@ -200,12 +211,18 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
         self.listViewDrop.setDragEnabled(True)
         self.listViewDrop.setDragDropOverwriteMode(False)
 
+        self.modelIMOOLD  = ComboModel(self.comboBoxIMOOLD, 3, 1)
+        self.modelIMOOLD.addItem(self.tr('automatic'), 'automatic')
+        self.modelIMOOLD.addItem(self.tr('reset'), 'reset')
+        self.modelIMOOLD.addItem(self.tr('specified'), 'specified')
+
         # Connections
         self.connect(self.pushButtonAdd,    SIGNAL("clicked()"), self.slotAddAverage)
         self.connect(self.pushButtonEdit,   SIGNAL("clicked()"), self.slotEditAverage)
-        self.connect(self.pushButtonDelete, SIGNAL("clicked()"), self.slotDeleteAverage)
+        self.connect(self.pushButtonDelete, SIGNAL("clicked()"), self.slotdeleteTimeAverage)
         self.connect(self.treeViewAverage,  SIGNAL("pressed(const QModelIndex &)"), self.slotSelectAverage)
         self.connect(self.lineEditStart, SIGNAL("textChanged(const QString &)"), self.slotStart)
+        self.connect(self.comboBoxIMOOLD, SIGNAL("activated(const QString&)"), self.slotRestartChoice)
         self.connect(self.lineEditRestart, SIGNAL("textChanged(const QString &)"), self.slotRestart)
 
         # Validators
@@ -213,6 +230,7 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
         self.lineEditStart.setValidator(validatorStart)
 
         validatorRestart = IntValidator(self.lineEditRestart, min=-2, max=50)
+        validatorRestart.setExclusiveValues([0])
         self.lineEditRestart.setValidator(validatorRestart)
 
         rx = "[\-_A-Za-z0-9]{1," + str(LABEL_LENGTH_MAX) + "}"
@@ -233,17 +251,18 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
 
         if StartRestartModel(self.case).getRestart() == 'off':
             self.labelRestart.setDisabled(True)
+            self.comboBoxIMOOLD.setDisabled(True)
             self.lineEditRestart.setDisabled(True)
             self.treeViewAverage.hideColumn(3)
+        else:
+            self.slotRestartChoice(QString("automatic"))
 
         # Update list of averages for view from xml file
 
-        for nb in self.mdl.getAverageList():
+        for nb in range(self.mdl.getNumberOfTimeAverage()):
             self.entriesNumber = self.entriesNumber + 1
-            label, start, restart, list = self.mdl.getAverageInformations(nb)
-            if restart == 0:
-                restart = ''
-            self.insertAverage(str(nb), label, start, restart, list)
+            label, start, restart, list = self.mdl.getTimeAverageData(nb+1)
+            self.insertAverage(label, start, restart, list)
 
 
     def getLabel(self):
@@ -251,10 +270,10 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
         Return label of average.
         """
         label = str(self.lineEditAverage.text())
-        if label in self.mdl.getAverageLabelsList():
+        if label in self.mdl.getTimeAverageLabels():
             default = {}
             default['label'] = label
-            default['list'] = self.mdl.getAverageLabelsList()
+            default['list'] = self.mdl.getTimeAverageLabels()
             rx = "[\-_A-Za-z0-9]{1," + str(LABEL_LENGTH_MAX) + "}"
             default['regexp'] = QRegExp(rx)
             from VerifyExistenceLabelDialogView import VerifyExistenceLabelDialogView
@@ -275,6 +294,25 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
         start, ok = text.toInt()
         if self.sender().validator().state == QValidator.Acceptable:
             self.start = start
+        else:
+            self.start = self.mdl.defaultValues()['start']
+
+
+    @pyqtSignature("const QString&")
+    def slotRestartChoice(self, text):
+        choice = self.modelIMOOLD.dicoV2M[str(text)]
+        if choice == "automatic":
+            self.restart = -2
+            self.lineEditRestart.setDisabled(True)
+            self.lineEditRestart.setText(QString(str(self.restart)))
+        elif choice == "reset":
+            self.restart = -1
+            self.lineEditRestart.setDisabled(True)
+            self.lineEditRestart.setText(QString(str(self.restart)))
+        elif choice == "specified":
+            self.restart = self.mdl.defaultValues()['restart']
+            self.lineEditRestart.setDisabled(False)
+            self.lineEditRestart.setText(QString(""))
 
 
     @pyqtSignature("const QString&")
@@ -284,12 +322,9 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
         """
         restart, ok = text.toInt()
         if self.sender().validator().state == QValidator.Acceptable:
-            if restart != 0:
-                self.restart = restart
-                return
-
-        self.restart = self.treeViewAverage.currentIndex().row()
-        self.sender().setText(QString(self.restart))
+            self.restart = restart
+        else:
+            self.restart = self.mdl.defaultValues()['restart']
 
 
     def averageInfo(self):
@@ -300,19 +335,19 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
         return self.modelAverage.getItem(row)
 
 
-    def insertAverage(self, imom, label, ntdmom, imoold, list):
+    def insertAverage(self, label, ntdmom, imoold, list):
         """
         Insert values in Hlist.
         """
         idfmom = string.join(list,'*')
         idfmom_view = "<" + idfmom +">"
 
-        if imoold == None:
-            imoold = -1
-        self.modelAverage.addItem(imom, label, ntdmom, imoold, idfmom_view)
+        if imoold == self.mdl.defaultValues()['restart']:
+            imoold = ""
+        self.modelAverage.addItem(label, ntdmom, imoold, idfmom_view)
 
 
-    def replaceAverage(self, row, imom, label, ntdmom, imoold, list):
+    def replaceTimeAverage(self, row, label, ntdmom, imoold, list):
         """
         Insert values in Hlist.
         """
@@ -321,7 +356,7 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
 
         if imoold == None:
             imoold = -1
-        self.modelAverage.replaceItem(row, imom, label, ntdmom, imoold, idfmom_view)
+        self.modelAverage.replaceItem(row, label, ntdmom, imoold, idfmom_view)
 
 
     @pyqtSignature("")
@@ -341,11 +376,11 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
         else:
             label = self.getLabel()
 
-            self.entriesNumber = self.entriesNumber+1
+            self.entriesNumber = self.entriesNumber + 1
             if label == '':
-                label = 'Average' + repr(self.entriesNumber)
+                label = 'TimeAverage' + repr(self.entriesNumber)
 
-            if label in self.mdl.getAverageLabelsList():
+            if label in self.mdl.getTimeAverageLabels():
                 title = self.tr("Warning")
                 msg = self.tr("This label already exists")
                 QMessageBox.information(self, title, msg)
@@ -357,30 +392,35 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
             if StartRestartModel(self.case).getRestart() != 'off':
                 imoold = self.restart
             else:
-                imoold = 0
+                imoold = self.mdl.defaultValues()['restart']
 
-            self.insertAverage(self.entriesNumber, label, ntdmom, imoold, var_prop)
+            self.insertAverage(label, ntdmom, imoold, var_prop)
             average = string.split(idfmom, '*')
-            self.mdl.setAverage(self.entriesNumber, label, ntdmom, imoold, average)
+            self.mdl.setTimeAverage(label, ntdmom, imoold, average)
         self.__eraseEntries()
 
 
     @pyqtSignature("")
-    def slotDeleteAverage(self):
+    def slotdeleteTimeAverage(self):
         """
         Delete the selected average from the list (one by one).
         """
         row = self.treeViewAverage.currentIndex().row()
-        log.debug("slotDeleteAverage -> %s" % (row,))
+        log.debug("slotdeleteTimeAverage -> %s" % (row,))
         if row == -1:
             title = self.tr("Warning")
             msg   = self.tr("You must select an existing time average")
             QMessageBox.information(self, title, msg)
         else:
             [imom, label, ntdmom, imoold, idfmom] = self.averageInfo()
-            self.modelAverage.deleteRow(row)
-            self.mdl.deleteAverage(int(imom))
-            self.__eraseEntries()
+            #self.modelAverage.deleteRow(row)
+            self.mdl.deleteTimeAverage(label)
+            self.modelAverage.deleteAllData()
+            for n in range(self.mdl.getNumberOfTimeAverage()):
+                label, ntdmom, imoold, var_prop = self.mdl.getTimeAverageData(n+1)
+                self.insertAverage(label, ntdmom, imoold, var_prop)
+
+        self.__eraseEntries()
 
 
     @pyqtSignature("")
@@ -410,7 +450,7 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
                 if new_label == '':
                     new_label = old_label
 
-                if new_label != old_label and new_label in self.mdl.getAverageLabelsList():
+                if new_label != old_label and new_label in self.mdl.getTimeAverageLabels():
                     title = self.tr("Warning")
                     msg = self.tr("This label already exists: the old label is kept")
                     QMessageBox.information(self, title, msg)
@@ -422,10 +462,10 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
                 if StartRestartModel(self.case).getRestart() != 'off':
                     new_restart = self.restart
                 else:
-                    new_restart = 0
+                    new_restart = self.mdl.defaultValues()['restart']
 
-                self.replaceAverage(row, imom, new_label, new_start, new_restart, var_prof)
-                self.mdl.replaceAverage(int(imom), new_label, new_start, new_restart, var_prof)
+                self.replaceTimeAverage(row, new_label, new_start, new_restart, var_prof)
+                self.mdl.replaceTimeAverage(old_label, new_label, new_start, new_restart, var_prof)
                 idx = self.treeViewAverage.currentIndex()
                 self.treeViewAverage.dataChanged(idx, idx)
 
@@ -446,9 +486,17 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
         self.lineEditStart.setText(QString(str(ntdmom)))
 
         if StartRestartModel(self.case).getRestart() != 'off':
-            if imoold == '':
-                imoold = -1
+            if not imoold or imoold == -2:
+                imoold = -2
+                choice = "automatic"
+            elif imoold == -1:
+                choice = "reset"
+            else:
+                choice = "specified"
+            self.slotRestartChoice(QString(choice))
+            self.modelIMOOLD.setItem(str_model=choice)
             self.lineEditRestart.setText(QString(str(imoold)))
+
         liste = [QString(s) for s in idfmom.replace('>','').replace('<','').split('*')]
         self.modelDrop.setStringList(liste)
 
@@ -465,13 +513,6 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
         self.treeViewAverage.clearSelection()
 
 
-    def insertListVarP(self, name):
-        """
-        Insert name of variable or property into the list (one by one).
-        """
-        log.debug("insertListVarP")
-
-
     def tr(self, text):
         """
         Translation
@@ -479,12 +520,5 @@ class TimeAveragesView(QWidget, Ui_TimeAveragesForm):
         return text
 
 #-------------------------------------------------------------------------------
-# Testing part
-#-------------------------------------------------------------------------------
-
-if __name__ == "__main__":
-    pass
-
-#-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/TimeStepForm.ui b/gui/Pages/TimeStepForm.ui
index 5de875f..b603837 100644
--- a/gui/Pages/TimeStepForm.ui
+++ b/gui/Pages/TimeStepForm.ui
@@ -272,7 +272,7 @@
                 </widget>
                </item>
                <item row="2" column="0" >
-                <widget class="QLabel" name="labelDTMIN" >
+                <widget class="QLabel" name="labelCDTMIN" >
                  <property name="toolTip" >
                   <string>Code_Saturne key word: DTMIN/DTREF</string>
                  </property>
@@ -285,7 +285,7 @@
                 </widget>
                </item>
                <item row="2" column="1" >
-                <widget class="QLineEdit" name="lineEditDTMIN" >
+                <widget class="QLineEdit" name="lineEditCDTMIN" >
                  <property name="maximumSize" >
                   <size>
                    <width>80</width>
@@ -301,7 +301,7 @@
                 </widget>
                </item>
                <item row="3" column="0" >
-                <widget class="QLabel" name="labelDTMAX" >
+                <widget class="QLabel" name="labelCDTMAX" >
                  <property name="toolTip" >
                   <string>Code_Saturne key word: DTMAX/DTREF</string>
                  </property>
@@ -314,7 +314,7 @@
                 </widget>
                </item>
                <item row="3" column="1" >
-                <widget class="QLineEdit" name="lineEditDTMAX" >
+                <widget class="QLineEdit" name="lineEditCDTMAX" >
                  <property name="maximumSize" >
                   <size>
                    <width>80</width>
diff --git a/gui/Pages/TimeStepModel.py b/gui/Pages/TimeStepModel.py
index 6d4fae4..39e2fc9 100644
--- a/gui/Pages/TimeStepModel.py
+++ b/gui/Pages/TimeStepModel.py
@@ -51,6 +51,7 @@ from Base.Common import *
 import Base.Toolbox as Tool
 from Base.XMLvariables import Variables, Model
 from Base.XMLmodel import ModelTest
+from OutputVolumicVariablesModel import OutputVolumicVariablesModel
 
 #-------------------------------------------------------------------------------
 # Time Step Model class
@@ -71,9 +72,6 @@ class TimeStepModel(Model):
         self.node_control      = self.case.xmlGetNode('analysis_control')
         self.node_time         = self.node_control.xmlInitNode('time_parameters')
 
-        Variables(self.case).setNewProperty(self.node_time, 'courant_number')
-        Variables(self.case).setNewProperty(self.node_time, 'fourier_number')
-
 
     def defaultValues(self):
         """
@@ -86,8 +84,8 @@ class TimeStepModel(Model):
         default['time_step_ref']     = 0.1
         default['max_courant_num']   = 1.0
         default['max_fourier_num']   = 10.0
-        default['time_step_min']     = 0.1*default['time_step_ref']
-        default['time_step_max']     = 1000.0*default['time_step_ref']
+        default['time_step_min_factor'] = 0.1
+        default['time_step_max_factor'] = 1000.0
         default['time_step_var']     = 0.1
         default['thermal_time_step'] = 'off'
         default['zero_time_step']    = 'off'
@@ -137,7 +135,7 @@ class TimeStepModel(Model):
         from TurbulenceModel import TurbulenceModel
         model = TurbulenceModel(self.case).getTurbulenceModel()
         del TurbulenceModel
-        if model in ('LES_Smagorinsky', 'LES_dynamique', 'LES_WALE'): 
+        if model in ('LES_Smagorinsky', 'LES_dynamique', 'LES_WALE'):
             v = 0
             self.setTimePassing(v)
 
@@ -151,13 +149,26 @@ class TimeStepModel(Model):
         """
         self.isIntInList(val, [0, 1, 2])
         self.node_time.xmlSetData('time_passing', val)
+
+        Variables(self.case).setNewProperty(self.node_time, 'courant_number')
+        Variables(self.case).setNewProperty(self.node_time, 'fourier_number')
+
         if val in (1, 2):
-            Variables(self.case).setNewProperty(self.node_time,
-                                                'local_time_step')
+            Variables(self.case).setNewProperty(self.node_time, 'local_time_step')
+            n = self.node_time.xmlInitNode('property', name='local_time_step')
+            if val == 1:
+                n.xmlInitNode('postprocessing_recording')['status']= "off"
+                n.xmlInitNode('probes')['choice']= "0"
+            else:
+                n.xmlRemoveChild('postprocessing_recording')
+                n.xmlRemoveChild('probes')
         else:
             self.node_time.xmlRemoveChild('property', name='local_time_step')
-            for tag in ('max_courant_num', 'max_fourier_num',
-                        'time_step_min', 'time_step_max', 'time_step_var'):
+            for tag in ('max_courant_num',
+                        'max_fourier_num',
+                        'time_step_min_factor',
+                        'time_step_max_factor',
+                        'time_step_var'):
                 self.node_time.xmlRemoveChild(tag)
 
 
@@ -234,36 +245,36 @@ class TimeStepModel(Model):
         self.setOptions('max_fourier_num', val)
 
 
-    def getTimeStepMin(self):
+    def getTimeStepMinFactor(self):
         """
-        Return the minimal time step
+        Return the minimal time step factor
         """
-        tag = 'time_step_min'
+        tag = 'time_step_min_factor'
         return self.getOptions(tag)
 
 
-    def setTimeStepMin(self, val):
+    def setTimeStepMinFactor(self, val):
         """
-        Input the minimal time step
+        Input the minimal time step factor
         """
         self.isPositiveFloat(val)
-        self.setOptions('time_step_min', val)
+        self.setOptions('time_step_min_factor', val)
 
 
-    def getTimeStepMax(self):
+    def getTimeStepMaxFactor(self):
         """
-        Return the maximal time step
+        Return the maximal time step factor
         """
-        tag = 'time_step_max'
+        tag = 'time_step_max_factor'
         return self.getOptions(tag)
 
 
-    def setTimeStepMax(self, val):
+    def setTimeStepMaxFactor(self, val):
         """
-        Input the maximal time step
+        Input the maximal time step factor
         """
         self.isStrictPositiveFloat(val)
-        self.setOptions('time_step_max', val)
+        self.setOptions('time_step_max_factor', val)
 
 
     def getTimeStepVariation(self):
@@ -305,7 +316,7 @@ class TimeStepModel(Model):
             msg = "No option : " + tag + " in this case"
             raise ValueError, msg
 
-        if tag == 'time_step_min':
+        if tag == 'time_step_min_factor':
             self.isPositiveFloat(val)
         else:
             self.isStrictPositiveFloat(val)
@@ -318,13 +329,13 @@ class TimeStepModel(Model):
         """
         if not self.thermalCase():
             raise ValueError, "TimeStepModel: no thermal model in this case"
-        
+
         node = self.node_time.xmlInitChildNode('thermal_time_step', 'status')
         s = node['status']
         if not s:
             s = self.defaultValues()['thermal_time_step']
             self.setThermalTimeStep(s)
-        return s 
+        return s
 
 
     def setThermalTimeStep(self, status):
@@ -334,7 +345,7 @@ class TimeStepModel(Model):
 
         if not self.thermalCase():
             raise ValueError, "TimeStepModel: no thermal model in this case"
-        
+
         self.isOnOff(status)
         node = self.node_time.xmlInitChildNode('thermal_time_step', 'status')
         node['status'] = status
@@ -349,7 +360,7 @@ class TimeStepModel(Model):
         if not s:
             s = self.defaultValues()['zero_time_step']
             self.setZeroTimeStep(s)
-        return s 
+        return s
 
 
     def setZeroTimeStep(self, status):
@@ -428,7 +439,7 @@ class TimeStepModelTestCase(ModelTest):
         mdl = None
         mdl = TimeStepModel(self.case)
         assert mdl != None, 'Could not instantiate TimeStepModel'
-        
+
     def checkSetandGetTimePassing(self):
         """Check whether the TimeStepModel class could be set and get time passing"""
         mdl = TimeStepModel(self.case)
@@ -487,9 +498,9 @@ class TimeStepModelTestCase(ModelTest):
             'Could not set number of iterations in TimeStepModel'
         assert mdl.getIterationsNumber() == 50,\
             'Could not get number of iterations in TimeStepModel'
-        
+
     def checkSetandGetMaxCourant(self):
-        """Check whether the TimeStepModel class could be 
+        """Check whether the TimeStepModel class could be
         set and get max courant number : option(s) only for idtvar = 1 or 2"""
         mdl = TimeStepModel(self.case)
         mdl.setTimePassing(1)
@@ -507,7 +518,7 @@ class TimeStepModelTestCase(ModelTest):
             'Could not set max courant number in TimeStepModel'
         assert mdl.getMaxCourant() == 10,\
             'Could not get max courant number in TimeStepModel'
-        
+
     def checkSetandGetMaxFourier(self):
         """Check whether the TimeStepModel class could be set and get
          max fourier number (if idtvar = 0 : no options max fourier)"""
@@ -527,7 +538,7 @@ class TimeStepModelTestCase(ModelTest):
             'Could not set max fourier number in TimeStepModel'
         assert mdl.getMaxFourier() == 100.,\
             'Could not get max fourier number in TimeStepModel'
-        
+
     def checkSetandGetTimeStepMinMaxandVariation(self):
         """Check whether the TimeStepModel class could be set and get
          options :min max and variation for time step"""
@@ -543,8 +554,8 @@ class TimeStepModelTestCase(ModelTest):
                     <iterations>10</iterations>
                     <time_passing>2</time_passing>
                     <property label="loc.time" name="local_time_step"/>
-                    <time_step_min>0.05</time_step_min>
-                    <time_step_max>500</time_step_max>
+                    <time_step_min_factor>0.05</time_step_min_factor>
+                    <time_step_max_factor>500</time_step_max_factor>
                     <time_step_var>0.25</time_step_var>
                  </time_parameters>'''
         assert mdl.node_time == self.xmlNodeFromString(doc),\
@@ -622,7 +633,7 @@ class TimeStepModelTestCase(ModelTest):
                  </time_parameters>'''
         assert mdl.node_time == self.xmlNodeFromString(doc),\
             'Could not remove thermal time step node in TimeStepModel'
-            
+
 def suite():
     testSuite = unittest.makeSuite(TimeStepModelTestCase, "check")
     return testSuite
@@ -644,7 +655,7 @@ class TimeStepMatisseModelTestCase(ModelTest):
         model = None
         model = TimeStepMatisseModel(self.case)
         assert model != None, 'Could not instantiate TimeStepMatisseModel'
-        
+
     def checkSetandGetDtdtmx(self):
         """Check whether the TimeStepMatisseModel class could be set and get Dtdtmx"""
         model = TimeStepMatisseModel(self.case)
@@ -656,7 +667,7 @@ class TimeStepMatisseModelTestCase(ModelTest):
             'Could not set Dtdtmx in TimeStepMatisseModel'
         assert model.getDtdtmx() == 10.5,\
             'Could not get Dtdtmx in TimeStepMatisseModel'
-            
+
 def suite2():
     testSuite = unittest.makeSuite(TimeStepMatisseModelTestCase, "check")
     return testSuite
diff --git a/gui/Pages/TimeStepView.py b/gui/Pages/TimeStepView.py
index 5c0e9d3..bed7b1c 100644
--- a/gui/Pages/TimeStepView.py
+++ b/gui/Pages/TimeStepView.py
@@ -80,7 +80,7 @@ class TimeStepView(QWidget, Ui_TimeStepForm):
 
         self.case = case
         self.mdl = TimeStepModel(self.case)
-       
+
        # Combo model
 
         self.modelTimeOptions = QtPage.ComboModel(self.comboBoxOptions,3,1)
@@ -88,15 +88,15 @@ class TimeStepView(QWidget, Ui_TimeStepForm):
         self.modelTimeOptions.addItem(self.tr("Uniform and constant"), '0')
         self.modelTimeOptions.addItem(self.tr("Variable in time and uniform in space"), '1')
         self.modelTimeOptions.addItem(self.tr("Variable in time and in space"), '2')
-        
+
         # Connections
         self.connect(self.comboBoxOptions, SIGNAL("activated(const QString&)"), self.slotTimePassing)
         self.connect(self.lineEditDTREF, SIGNAL("textChanged(const QString &)"), self.slotTimeStep)
         self.connect(self.lineEditNTMABS, SIGNAL("textChanged(const QString &)"), self.slotIter)
         self.connect(self.lineEditCOUMAX, SIGNAL("textChanged(const QString &)"), self.slotTimeOptionCOUMAX)
         self.connect(self.lineEditFOUMAX, SIGNAL("textChanged(const QString &)"), self.slotTimeOptionFOUMAX)
-        self.connect(self.lineEditDTMIN, SIGNAL("textChanged(const QString &)"), self.slotTimeOptionDTMIN)
-        self.connect(self.lineEditDTMAX, SIGNAL("textChanged(const QString &)"), self.slotTimeOptionDTMAX)
+        self.connect(self.lineEditCDTMIN, SIGNAL("textChanged(const QString &)"), self.slotTimeOptionCDTMIN)
+        self.connect(self.lineEditCDTMAX, SIGNAL("textChanged(const QString &)"), self.slotTimeOptionCDTMAX)
         self.connect(self.lineEditVARRDT, SIGNAL("textChanged(const QString &)"), self.slotTimeOptionVARRDT)
         self.connect(self.checkBoxIPTLRO, SIGNAL("clicked()"), self.slotThermalTimeStep)
         self.connect(self.checkBoxINPDT0, SIGNAL("clicked()"), self.slotZeroTimeStep)
@@ -110,9 +110,9 @@ class TimeStepView(QWidget, Ui_TimeStepForm):
         validatorCOUMAX.setExclusiveMin(True)
         validatorFOUMAX = QtPage.DoubleValidator(self.lineEditFOUMAX, min=0.0)
         validatorFOUMAX.setExclusiveMin(True)
-        validatorDTMIN = QtPage.DoubleValidator(self.lineEditDTMIN, min=0.0, max=1.0)
-        validatorDTMIN.setExclusiveMin(True)
-        validatorDTMAX = QtPage.DoubleValidator(self.lineEditDTMAX, min=1.0)
+        validatorCDTMIN = QtPage.DoubleValidator(self.lineEditCDTMIN, min=0.0, max=1.0)
+        validatorCDTMIN.setExclusiveMin(True)
+        validatorCDTMAX = QtPage.DoubleValidator(self.lineEditCDTMAX, min=1.0)
         validatorVARRDT = QtPage.DoubleValidator(self.lineEditVARRDT, min=0.0, max=1.0)
         validatorVARRDT.setExclusiveMin(True)
 
@@ -120,15 +120,15 @@ class TimeStepView(QWidget, Ui_TimeStepForm):
         self.lineEditNTMABS.setValidator(validatorNTMABS)
         self.lineEditCOUMAX.setValidator(validatorCOUMAX)
         self.lineEditFOUMAX.setValidator(validatorFOUMAX)
-        self.lineEditDTMIN.setValidator(validatorDTMIN)
-        self.lineEditDTMAX.setValidator(validatorDTMAX)
+        self.lineEditCDTMIN.setValidator(validatorCDTMIN)
+        self.lineEditCDTMAX.setValidator(validatorCDTMAX)
         self.lineEditVARRDT.setValidator(validatorVARRDT)
 
         # Initialization
 
         idtvar = self.mdl.getTimePassing()
         self.modelTimeOptions.setItem(str_model=str(idtvar))
-        
+
         from TurbulenceModel import TurbulenceModel
         model = TurbulenceModel(self.case).getTurbulenceModel()
         del TurbulenceModel
@@ -172,20 +172,20 @@ class TimeStepView(QWidget, Ui_TimeStepForm):
         Input IDTVAR.
         """
         idtvar = int(self.modelTimeOptions.dicoV2M[str(text)])
-        
+
         self.mdl.setTimePassing(idtvar)
 
         if idtvar in (1, 2):
             courant_max   = self.mdl.getOptions('max_courant_num')
             fourier_max   = self.mdl.getOptions('max_fourier_num')
-            time_step_min = self.mdl.getOptions('time_step_min') / self.mdl.getTimeStep()
-            time_step_max = self.mdl.getOptions('time_step_max') / self.mdl.getTimeStep()
+            time_step_min_factor = self.mdl.getOptions('time_step_min_factor')
+            time_step_max_factor = self.mdl.getOptions('time_step_max_factor')
             time_step_var = self.mdl.getOptions('time_step_var')
 
             self.lineEditCOUMAX.setText(QString(str(courant_max)))
             self.lineEditFOUMAX.setText(QString(str(fourier_max)))
-            self.lineEditDTMIN.setText(QString(str(time_step_min)))
-            self.lineEditDTMAX.setText(QString(str(time_step_max)))
+            self.lineEditCDTMIN.setText(QString(str(time_step_min_factor)))
+            self.lineEditCDTMAX.setText(QString(str(time_step_max_factor)))
             self.lineEditVARRDT.setText(QString(str(time_step_var)))
 
             self.groupBoxLabels.show()
@@ -234,25 +234,23 @@ class TimeStepView(QWidget, Ui_TimeStepForm):
 
 
     @pyqtSignature("const QString &")
-    def slotTimeOptionDTMIN(self, text):
+    def slotTimeOptionCDTMIN(self, text):
         """
-        Input DTMIN.
+        Input CDTMIN.
         """
-        time_step_min, ok = text.toDouble()
+        time_step_min_factor, ok = text.toDouble()
         if self.sender().validator().state == QValidator.Acceptable:
-            time_step_min = time_step_min * self.mdl.getTimeStep()
-            self.mdl.setOptions('time_step_min', time_step_min)
+            self.mdl.setOptions('time_step_min_factor', time_step_min_factor)
 
 
     @pyqtSignature("const QString &")
-    def slotTimeOptionDTMAX(self, text):
+    def slotTimeOptionCDTMAX(self, text):
         """
-        Input DTMAX.
+        Input CDTMAX.
         """
-        time_step_max, ok = text.toDouble()
+        time_step_max_factor, ok = text.toDouble()
         if self.sender().validator().state == QValidator.Acceptable:
-            time_step_max = time_step_max * self.mdl.getTimeStep()
-            self.mdl.setOptions('time_step_max', time_step_max)
+            self.mdl.setOptions('time_step_max_factor', time_step_max_factor)
 
 
     @pyqtSignature("const QString &")
@@ -302,4 +300,4 @@ if __name__ == "__main__":
 
 #-------------------------------------------------------------------------------
 # End
-#-------------------------------------------------------------------------------
\ No newline at end of file
+#-------------------------------------------------------------------------------
diff --git a/gui/Pages/TurbulenceModel.py b/gui/Pages/TurbulenceModel.py
index e559a39..406cd67 100644
--- a/gui/Pages/TurbulenceModel.py
+++ b/gui/Pages/TurbulenceModel.py
@@ -394,7 +394,7 @@ class TurbulenceModelTestCase(ModelTest):
         mdl.setTurbulenceModel('mixing_length')
         mdl.setLengthScale(1)
         doc ='''<turbulence model="mixing_length">
-                    <property label="turb. vi" name="turb_viscosity"/>
+                    <property label="TurbVisc" name="turb_viscosity"/>
                     <initialization choice="reference_velocity">
                         <reference_velocity>1</reference_velocity>
                     </initialization>
@@ -411,7 +411,7 @@ class TurbulenceModelTestCase(ModelTest):
         doc ='''<turbulence model="k-epsilon">
                 <variable label="TurbEner" name="turb_k"/>
                 <variable label="Dissip" name="turb_eps"/>
-                <property label="turb. vi" name="turb_viscosity"/>
+                <property label="TurbVisc" name="turb_viscosity"/>
                 <initialization choice="reference_velocity">
                   <reference_velocity>1</reference_velocity>
                 </initialization>
@@ -427,7 +427,7 @@ class TurbulenceModelTestCase(ModelTest):
         doc ='''<turbulence model="k-epsilon-PL">
                 <variable label="TurbEner" name="turb_k"/>
                 <variable label="Dissip" name="turb_eps"/>
-                <property label="turb. vi" name="turb_viscosity"/>
+                <property label="TurbVisc" name="turb_viscosity"/>
                 <initialization choice="reference_velocity">
                   <reference_velocity>1</reference_velocity>
                 </initialization>
@@ -441,7 +441,7 @@ class TurbulenceModelTestCase(ModelTest):
         mdl.node_turb.xmlRemoveChild('variable')
         mdl.setTurbulenceModel('Rij-epsilon')
         doc ='''<turbulence model="Rij-epsilon">
-                <property label="turb. vi" name="turb_viscosity"/>
+                <property label="TurbVisc" name="turb_viscosity"/>
                 <variable label="R11" name="component_R11"/>
                 <variable label="R22" name="component_R22"/>
                 <variable label="R33" name="component_R33"/>
@@ -463,7 +463,7 @@ class TurbulenceModelTestCase(ModelTest):
         mdl.setTurbulenceModel('Rij-SSG')
         truc = mdl.node_turb
         doc ='''<turbulence model="Rij-SSG">
-                <property label="turb. vi" name="turb_viscosity"/>
+                <property label="TurbVisc" name="turb_viscosity"/>
                 <initialization choice="reference_velocity">
                   <reference_velocity>1</reference_velocity>
                 </initialization>
@@ -515,7 +515,7 @@ class TurbulenceModelTestCase(ModelTest):
                 <variable label="Dissip" name="turb_eps"/>
                 <variable label="phi" name="turb_phi"/>
                 <variable label="fb" name="turb_fb"/>
-                <property label="turb. vi" name="turb_viscosity"/>
+                <property label="TurbVisc" name="turb_viscosity"/>
                 <initialization choice="reference_velocity">
                   <reference_velocity>1.0</reference_velocity>
                 </initialization>
@@ -530,7 +530,7 @@ class TurbulenceModelTestCase(ModelTest):
         doc = '''<turbulence model="k-omega-SST">
                 <variable label="TurbEner" name="turb_k"/>
                 <variable label="Dissip" name="turb_eps"/>
-                <property label="turb. vi" name="turb_viscosity"/>
+                <property label="TurbVisc" name="turb_viscosity"/>
                 <variable label="omega" name="turb_omega"/>
                 <initialization choice="reference_velocity">
                   <reference_velocity>1.0</reference_velocity>
@@ -570,7 +570,7 @@ class TurbulenceModelTestCase(ModelTest):
         doc = '''<turbulence model="k-epsilon">
                 <variable label="TurbEner" name="turb_k"/>
                 <variable label="Dissip" name="turb_eps"/>
-                <property label="turb. vi" name="turb_viscosity"/>
+                <property label="TurbVisc" name="turb_viscosity"/>
                 <initialization choice="reference_velocity">
                     <reference_velocity>1</reference_velocity>
                 </initialization>
@@ -589,7 +589,7 @@ class TurbulenceModelTestCase(ModelTest):
         doc = '''<turbulence model="k-epsilon">
                 <variable label="TurbEner" name="turb_k"/>
                 <variable label="Dissip" name="turb_eps"/>
-                <property label="turb. vi" name="turb_viscosity"/>
+                <property label="TurbVisc" name="turb_viscosity"/>
                 <initialization choice="reference_velocity">
                     <reference_velocity>1</reference_velocity>
                 </initialization>
diff --git a/gui/Pages/UserArraysModel.py b/gui/Pages/UserArraysModel.py
index 6a51933..50c067b 100644
--- a/gui/Pages/UserArraysModel.py
+++ b/gui/Pages/UserArraysModel.py
@@ -88,7 +88,7 @@ class UserArraysModel(Model):
     def setIntegerNcelet(self, value):
         """
         Set number of cells with halo into integer user's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_int.xmlSetData('ncelet', value)
 
@@ -96,7 +96,7 @@ class UserArraysModel(Model):
     def setIntegerNfac(self, value):
         """
         Set number of internal faces into integer user's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_int.xmlSetData('nfac', value)
 
@@ -104,7 +104,7 @@ class UserArraysModel(Model):
     def setIntegerNfabor(self, value):
         """
         Set number of boundary faces into integer user's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_int.xmlSetData('nfabor', value)
 
@@ -120,7 +120,7 @@ class UserArraysModel(Model):
     def setRealNcelet(self, value):
         """
         Set number of cells with halo into real user's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_real.xmlSetData('ncelet', value)
 
@@ -128,7 +128,7 @@ class UserArraysModel(Model):
     def setRealNfac(self, value):
         """
         Set number of internal faces into real user's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_real.xmlSetData('nfac', value)
 
@@ -136,7 +136,7 @@ class UserArraysModel(Model):
     def setRealNfabor(self, value):
         """
         Set number of boundary faces into real user's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_real.xmlSetData('nfabor', value)
 
@@ -144,7 +144,7 @@ class UserArraysModel(Model):
     def setRealDimless(self, value):
         """
         Set integer value into real user's array.
-        """ 
+        """
         self.isPositiveInt(value)
         self.node_real.xmlSetData('dimless', value)
 
@@ -152,7 +152,7 @@ class UserArraysModel(Model):
     def getIntegerNcelet(self):
         """
         Return number of cells with halo from integer user's array.
-        """ 
+        """
         value = self.node_int.xmlGetInt('ncelet')
         if value == None:
             value = self.defaultValues()['icel']
@@ -163,7 +163,7 @@ class UserArraysModel(Model):
     def getIntegerNfac(self):
         """
         Return number of cells with halo from integer user's array.
-        """ 
+        """
         value = self.node_int.xmlGetInt('nfac')
         if value == None:
             value = self.defaultValues()['ifac']
@@ -173,7 +173,7 @@ class UserArraysModel(Model):
     def getIntegerNfabor(self):
         """
         Return number of cells with halo from integer user's array.
-        """ 
+        """
         value = self.node_int.xmlGetInt('nfabor')
         if value == None:
             value = self.defaultValues()['ifab']
@@ -183,7 +183,7 @@ class UserArraysModel(Model):
     def getIntegerDimless(self):
         """
         Return number of cells with halo from integer user's array.
-        """ 
+        """
         value = self.node_int.xmlGetInt('dimless')
         if value == None:
             value = self.defaultValues()['idls']
@@ -193,7 +193,7 @@ class UserArraysModel(Model):
     def getRealNcelet(self):
         """
         Return number of cells with halo from real user's array.
-        """ 
+        """
         value = self.node_real.xmlGetInt('ncelet')
         if value == None:
             value = self.defaultValues()['rcel']
@@ -203,7 +203,7 @@ class UserArraysModel(Model):
     def getRealNfac(self):
         """
         Return number of cells with halo from real user's array.
-        """ 
+        """
         value = self.node_real.xmlGetInt('nfac')
         if value == None:
             value = self.defaultValues()['rfac']
@@ -213,7 +213,7 @@ class UserArraysModel(Model):
     def getRealNfabor(self):
         """
         Return number of cells with halo from real user's array.
-        """ 
+        """
         value = self.node_real.xmlGetInt('nfabor')
         if value == None:
             value = self.defaultValues()['rfab']
@@ -223,7 +223,7 @@ class UserArraysModel(Model):
     def getRealDimless(self):
         """
         Return number of cells with halo from real user's array.
-        """ 
+        """
         value = self.node_real.xmlGetInt('dimless')
         if value == None:
             value = self.defaultValues()['rdls']
@@ -325,7 +325,7 @@ class UserArraysTestCase(ModelTest):
                 'Could not set real nfabor user arrays model'
         assert mdl.getRealNfabor() == 977,\
                 'Could not get real nfabor user arrays model'
-    
+
     def checkGetandSetRealDimless(self):
         """Check whether the real dimless user arrays model could be set"""
         mdl = UserArraysModel(self.case)
@@ -337,7 +337,7 @@ class UserArraysTestCase(ModelTest):
                 'Could not set real dimless user arrays model'
         assert mdl.getRealDimless() == 966,\
                 'Could not get real dimless user arrays model'
-            
+
 def suite():
     testSuite = unittest.makeSuite(UserArraysTestCase, "check")
     return testSuite
diff --git a/gui/Pages/UserArraysView.py b/gui/Pages/UserArraysView.py
index 340208a..2caee10 100644
--- a/gui/Pages/UserArraysView.py
+++ b/gui/Pages/UserArraysView.py
@@ -222,7 +222,7 @@ class UserArraysView(QWidget, Ui_UserArraysForm):
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # Testing part
diff --git a/gui/Pages/UserScalarPropertiesView.py b/gui/Pages/UserScalarPropertiesView.py
index 4ed2c1b..876dd16 100644
--- a/gui/Pages/UserScalarPropertiesView.py
+++ b/gui/Pages/UserScalarPropertiesView.py
@@ -111,7 +111,7 @@ class LabelDelegate(QItemDelegate):
                 default['list']   = model.mdl.getScalarLabelsList()
                 default['regexp'] = self.regExp
                 log.debug("setModelData -> default = %s" % default)
-    
+
                 from VerifyExistenceLabelDialogView import VerifyExistenceLabelDialogView
                 dialog = VerifyExistenceLabelDialogView(self.parent, default)
                 if dialog.exec_():
@@ -124,14 +124,14 @@ class LabelDelegate(QItemDelegate):
             model.setData(index, QVariant(QString(new_plabel)), Qt.DisplayRole)
 
 #-------------------------------------------------------------------------------
-# Combo box delegate for the type of coefficient 
+# Combo box delegate for the type of coefficient
 #-------------------------------------------------------------------------------
 
 class TypeDelegate(QItemDelegate):
     """
     Use of a combo box in the table.
     """
-    def __init__(self, parent, stbar): 
+    def __init__(self, parent, stbar):
         super(TypeDelegate, self).__init__(parent)
         self.parent   = parent
         self.stbar    = stbar
@@ -168,7 +168,7 @@ class TypeDelegate(QItemDelegate):
 
 
     def tr(self, text):
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # Line edit delegate for the value
@@ -213,14 +213,14 @@ class StandardItemModelScalars(QStandardItemModel):
         """
         """
         QStandardItemModel.__init__(self)
-        
+
         self.headers = [self.tr("Name"),
                         self.tr("Associated\nScalar"),
                         self.tr("Type of\ncoefficient"),    # constant/variable
                         self.tr("Type of\nvalue"),          # initial/reference value
                         self.tr("Value\n(m2/s)")]
         self.setColumnCount(len(self.headers))
-        
+
         self._data = []
         self.mdl = mdl
         self.parent = parent
@@ -237,7 +237,7 @@ class StandardItemModelScalars(QStandardItemModel):
             val = self._data[row][col]
             return QVariant(val)
         return QVariant()
-    
+
 
     def flags(self, index):
         if not index.isValid():
@@ -281,7 +281,7 @@ class StandardItemModelScalars(QStandardItemModel):
 
         # Value
         elif col == 4:
-            coeff, ok  = value.toDouble() 
+            coeff, ok  = value.toDouble()
             self._data[row][col] = coeff
             self.mdl.setScalarDiffusivityInitialValue(scalar_label, coeff)
 
@@ -306,7 +306,7 @@ class StandardItemModelScalars(QStandardItemModel):
 
         row = self.rowCount()
         self.setRowCount(row+1)
-        
+
         self._subroutineMessage()
 
 
@@ -375,7 +375,7 @@ class UserScalarPropertiesView(QWidget, Ui_UserScalarPropertiesForm):
 
 
     def tr(self, text):
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # End
diff --git a/gui/Pages/VerifyExistenceLabelDialogView.py b/gui/Pages/VerifyExistenceLabelDialogView.py
index 3a0479a..34108b4 100644
--- a/gui/Pages/VerifyExistenceLabelDialogView.py
+++ b/gui/Pages/VerifyExistenceLabelDialogView.py
@@ -49,7 +49,7 @@ class VerifyExistenceLabelDialogView(QDialog, Ui_VerifyExistenceLabelDialogForm)
     """
     Advanced dialog
     """
-    def __init__(self, parent, default): 
+    def __init__(self, parent, default):
         """
         Constructor
         """
@@ -93,14 +93,14 @@ class VerifyExistenceLabelDialogView(QDialog, Ui_VerifyExistenceLabelDialogForm)
         return self.result
 
 
-    def accept(self): 
+    def accept(self):
         """
         Method called when user clicks 'OK'
         """
         QDialog.accept(self)
 
 
-    def reject(self): 
+    def reject(self):
         """
         Method called when user clicks 'Cancel'
         """
@@ -111,7 +111,7 @@ class VerifyExistenceLabelDialogView(QDialog, Ui_VerifyExistenceLabelDialogForm)
         """
         Translation
         """
-        return text 
+        return text
 
 #-------------------------------------------------------------------------------
 # End
diff --git a/gui/Pages/WelcomeView.py b/gui/Pages/WelcomeView.py
index afa5ec3..b095abd 100644
--- a/gui/Pages/WelcomeView.py
+++ b/gui/Pages/WelcomeView.py
@@ -60,5 +60,5 @@ class WelcomeView(QtGui.QWidget, Ui_WelcomeForm):
         self.setupUi(self)
 
 #-------------------------------------------------------------------------------
-# End 
+# End
 #-------------------------------------------------------------------------------
diff --git a/gui/Pages/__init__.py b/gui/Pages/__init__.py
index 7b18410..fa80813 100644
--- a/gui/Pages/__init__.py
+++ b/gui/Pages/__init__.py
@@ -28,7 +28,7 @@
 
 """
 This file makes this directory Pages a Python package.
-                               ===== 
+                               =====
 This package contains each Pages writing as an independant module.
 """
 
diff --git a/gui/VERSION b/gui/VERSION
deleted file mode 100644
index dfdc755..0000000
--- a/gui/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-2.0.0-beta1
diff --git a/gui/cs_gui.py b/gui/cs_gui.py
index a7a6675..7e6731a 100644
--- a/gui/cs_gui.py
+++ b/gui/cs_gui.py
@@ -35,6 +35,8 @@ Parse command line arguments and launch the GUI.
 
 import os, sys, string
 
+from optparse import OptionParser
+
 if not hasattr(sys, 'version_info') or sys.version_info <= (2, 4, 0, 'final'):
     raise SystemExit, "Graphical users interface of Code_Saturne "\
                       "requires python 2.4 or later."
@@ -70,22 +72,77 @@ try:
 except:
     pass
 
-from Base.Common import VERSION, icon_base_path
-from Base.CommandLine import usage, process_cmd_line
+from Base.Common import icon_base_path
 from Base.MainView import MainView
 
+import cs_config
+
 #-------------------------------------------------------------------------------
-# Help messages
+# Processes the passed command line arguments
 #-------------------------------------------------------------------------------
 
-if ('-h' in sys.argv[1:]) or ('--help' in sys.argv[1:]):
-    print usage()
-    sys.exit(0)
+def process_cmd_line(argv):
+    """
+    Processes the passed command line arguments.
+    """
 
+    parser = OptionParser(usage="usage: %prog [options]")
 
-if ('-v' in sys.argv[1:]) or ('--version' in sys.argv[1:]):
-    print "Graphical users interface of Code_Saturne %s" % VERSION
-    sys.exit(0)
+    parser.add_option("-f", "--file", dest="file_name", type="string",
+                      metavar="<file>",
+                      help="upload a previous case at the interface start")
+
+    parser.add_option("-b", "--batch", dest="batch_file", type="string",
+                      metavar="<batchfile>",
+                      help="set batchrunning window with batch file")
+
+    parser.add_option("-n", "--new", dest="new",
+                      action="store_true",
+                      help="open a new case")
+
+    parser.add_option("-r", "--read-only", dest="read_only",
+                      action="store_true",
+                      help="load file in read only mode")
+
+    parser.add_option("-z", "--no-splash", dest="splash_screen",
+                      action="store_false",
+                      help="load file in read only mode")
+
+    parser.add_option("--no-tree", dest="tree_window",
+                      action="store_false",
+                      help="load file in read only mode")
+
+
+    parser.set_defaults(matisse=False)
+    parser.set_defaults(read_only=False)
+    parser.set_defaults(splash_screen=True)
+    parser.set_defaults(tree_window=True)
+
+    (options, args) = parser.parse_args(argv)
+
+
+    if options.new and options.file_name:
+        parser.error("Options --new and --file are mutually exclusive")
+
+    if options.new:
+        options.file_name = "new case"
+
+    if options.batch_file and not options.file_name:
+        parser.error("Option --batch requires --file")
+
+    if len(args) > 0:
+        if options.file_name or len(args) > 1:
+            parser.error("Multiple filenames are given")
+        else:
+            options.file_name = args[0]
+
+    batch_window = False
+    if options.batch_file:
+        batch_window = True
+        options.batch_file = os.path.basename(options.batch_file)
+
+    return options.file_name, options.splash_screen, options.matisse, \
+        batch_window, options.batch_file, options.tree_window, options.read_only
 
 #-------------------------------------------------------------------------------
 # Start point of the Graphical User Interface
@@ -111,7 +168,7 @@ def main(argv):
         splash = QSplashScreen(pixmap, Qt.WindowStaysOnTopHint)
         splash.setMask(pixmap.mask()) # this is usefull if the splashscreen is not a regular ractangle...
         splash.show()
-        splash.showMessage('GUI %sStarting...' % VERSION,
+        splash.showMessage('GUI %s starting...' % cs_config.package.version,
                            Qt.AlignHCenter | Qt.AlignVCenter, Qt.black)
         app.processEvents()
         QTimer.singleShot(1500, splash.hide)
diff --git a/gui/sbin/mkpyqt.py b/gui/sbin/mkpyqt.py
deleted file mode 100755
index e03df07..0000000
--- a/gui/sbin/mkpyqt.py
+++ /dev/null
@@ -1,270 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2007-9 Qtrac Ltd. All rights reserved.
-# This program or module is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 2 of the License, or
-# version 3 of the License, or (at your option) any later version. It is
-# provided for educational purposes and is distributed in the hope that
-# it will be useful, but WITHOUT ANY WARRANTY; without even the implied
-# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
-# the GNU General Public License for more details.
-
-import os
-import platform
-import stat
-import sys
-import PyQt4.QtCore
-
-__version__ = "1.0.3"
-
-if sys.platform.startswith("win"):
-    PATH = os.path.join(os.path.dirname(sys.executable),
-                        "Lib/site-packages/PyQt4")
-else:
-    app = PyQt4.QtCore.QCoreApplication([])
-    PATH = unicode(app.applicationDirPath())
-    del app
-if sys.platform.startswith("darwin"):
-    i = PATH.find("Resources")
-    if i > -1:
-        PATH = PATH[:i] + "bin"
-PYUIC4 = os.path.join(PATH, "pyuic4") # e.g. PYUIC4 = "/usr/bin/pyuic4"
-if sys.platform.startswith("darwin"):
-    PYUIC4 = os.path.dirname(sys.executable)
-    i = PYUIC4.find("Resources")
-    if i > -1:
-        PYUIC4 = PYUIC4[:i] + "Lib/python2.5/site-packages/PyQt4/uic/pyuic.py"
-PYRCC4 = os.path.join(PATH, "pyrcc4")
-PYLUPDATE4 = os.path.join(PATH, "pylupdate4")
-LRELEASE = "lrelease"
-if platform.system() == "Windows":
-    PYUIC4 = PYUIC4.replace("/", "\\") + ".bat"
-    PYRCC4 = PYRCC4.replace("/", "\\") + ".exe"
-    PYLUPDATE4 = PYLUPDATE4.replace("/", "\\") + ".exe"
-
-msg = []
-if not os.access(PYUIC4, os.F_OK):
-    msg.append("failed to find pyuic4; tried %s" % PYUIC4)
-if not os.access(PYRCC4, os.F_OK):
-    msg.append("failed to find pyrcc4; tried %s" % PYRCC4)
-if not os.access(PYLUPDATE4, os.F_OK):
-    msg.append("failed to find pylupdate4; tried %s" % PYLUPDATE4)
-if msg:
-    print "\n".join(msg)
-    print "try manually editing this program to put the correct " + \
-          "paths in place"
-    sys.exit()
-
-Debug = False
-Verbose = False
-
-def usage():
-    print """usage: mkpyqt.py [options] [path]
-
-Options (which can be given in any of the forms shown):
--b  --build      build [default]
--c  --clean      clean
--f  --force      force
--t  --translate  translate
--r  --recurse    recurse
--v  --verbose    verbose
--D  --debug      debug
-path defaults to .
-
-If executed with no arguments (or with a build argument) it does a
-build, i.e., it looks for all *.ui and *.qrc files and makes sure that
-the corresponding ui_*.py and qrc_*.py files exist and are up-to-date.
-
-If executed with clean, deletes all ui_*.py and qrc_*.py files that have
-corresponding *.ui and *.qrc files, and all *.pyc and *.pyo files.
-
-If executed with force, it does a clean followed by a build.
-
-If building and the translate option is given, after building, it runs
-pylupdate4 on all .py and .pyw files it encounters, and then runs lrelease
-on all .ts files it encounters. It does not use a .pro file so the .ts
-files must be created in the first place, e.g., using pylupdate4 on one
-of the source files and using its -ts option.
-
-WARNING: Do not give any hand-coded files names that match ui_*.py or
-qrc_*.py since these will be deleted by mkpyqt.py clean!
-
-NOTE: If any tool fails to run, e.g., pyuic4, then edit this program and
-hard-code the path; the variables with the tool paths are near the top
-of the file.
-
-mkpyqt.py v %s. Copyright (c) 2007-9 Qtrac Ltd. All rights reserved.
-""" % __version__
-    sys.exit()
-
-
-def report_failure(command, args, process):
-    msg = ""
-    ba = process.readAllStandardError()
-    if not ba.isEmpty():
-        msg = ": " + str(QString(ba))
-    print "failed", command, " ".join(args), msg
-
-
-def build(path):
-    for name in os.listdir(path):
-        source = os.path.join(path, name)
-        target = None
-        if source.endswith(".ui"):
-            target = os.path.join(path,
-                                  name.replace(".ui", ".py"))
-#                                  "ui_" + name.replace(".ui", ".py"))
-            command = PYUIC4
-        elif source.endswith(".qrc"):
-            target = os.path.join(path,
-                                  name.replace(".qrc", "_rc.py"))
-#                                  "qrc_" + name.replace(".qrc", ".py"))
-            command = PYRCC4
-        process = PyQt4.QtCore.QProcess()
-        if target is not None:
-            if not os.access(target, os.F_OK) or (
-               os.stat(source)[stat.ST_MTIME] > \
-               os.stat(target)[stat.ST_MTIME]):
-                args = ["-o", target, source]
-                if sys.platform.startswith("darwin") and command == PYUIC4:
-                    command = sys.executable
-                    args = [PYUIC4] + args
-                if Debug:
-                    print "# %s %s" % (command, " ".join(args))
-                else:
-                    process.start(command, args)
-                    if not process.waitForFinished(2 * 60 * 1000):
-                        report_failure(command, args, process)
-                    else:
-                        print source, "->", target
-            elif Verbose:
-                print source, "is up-to-date"
-
-
-def clean(path):
-    deletelist = []
-    for name in os.listdir(path):
-        target = os.path.join(path, name)
-        source = None
-        if target.endswith(".py") or target.endswith(".pyc") or \
-           target.endswith(".pyo"):
-            #if name.startswith("ui_") and not name[-1] in "oc":
-            if name.endswith("Form.py") and not name[-1] in "oc":
-                #source = os.path.join(path, name[3:-3] + ".ui")
-                source = os.path.join(path, name[:-3] + ".ui")
-            #elif name.startswith("qrc_"):
-            elif name.endswith("_rc.py"):
-                if target[-1] in "oc":
-                    #source = os.path.join(path, name[4:-4] + ".qrc")
-                    source = os.path.join(path, name[:-7] + ".qrc")
-                else:
-                    #source = os.path.join(path, name[4:-3] + ".qrc")
-                    source = os.path.join(path, name[:-6] + ".qrc")
-            elif target[-1] in "oc":
-                source = target[:-1]
-            if source is not None:
-                if os.access(source, os.F_OK):
-                    if Debug:
-                        print "# delete ", target
-                    else:
-                        deletelist.append(target)
-                else:
-                    print "will not remove '%s' since `%s' not found" % (
-                            target, source)
-    if not Debug:
-        for target in deletelist:
-            if Verbose:
-                print "deleted", target
-            os.remove(target)
-
-
-def translate(path):
-    files = []
-    tsfiles = []
-    for name in os.listdir(path):
-        if name.endswith((".py", ".pyw")):
-            files.append(os.path.join(path, name))
-        elif name.endswith(".ts"):
-            tsfiles.append(os.path.join(path, name))
-    if not tsfiles:
-        return
-    #verbose = "-verbose" if Verbose else ""
-    if Verbose:
-        verbose = "-verbose"
-    else:
-        verbose = ""
-    #silent = "-silent" if not Verbose else ""
-    if not Verbose:
-        silent = "-silent"
-    else:
-        silent = ""
-    process = PyQt4.QtCore.QProcess()
-    for ts in tsfiles:
-        qm = ts[:-3] + ".qm"
-        command1 = PYLUPDATE4
-        args1 = [verbose] + files + ["-ts", ts]
-        command2 = LRELEASE
-        args2 = [silent, ts, "-qm", qm]
-        if Debug:
-            print "updated", ts
-            print "generated", qm
-        else:
-            process.start(command1, args1)
-            if not process.waitForFinished(2 * 60 * 1000):
-                report_failure(command1, args1, process)
-            process.start(command2, args2)
-            if not process.waitForFinished(2 * 60 * 1000):
-                report_failure(command2, args2, process)
-            
-
-def apply(recurse, function, path):
-    if not recurse:
-        function(path)
-    else:
-        for root, dirs, files in os.walk(path):
-            for dir in dirs:
-                function(os.path.join(root, dir))
-
-
-def main():
-    global Debug, Verbose
-    function = build
-    recurse = False
-    trans = False
-    force = False
-    path = "."
-    args = sys.argv[1:]
-    while args:
-        arg = args.pop(0)
-        if arg in ("-D", "--debug", "debug"):
-            Debug = True
-        elif arg in ("-b", "--build", "build"):
-            pass # This is the default
-        elif arg in ("-c", "--clean", "clean"):
-            function = clean
-        elif arg in ("-f", "--force", "force"):
-            force = True
-        elif arg in ("-t", "--translate", "translate"):
-            trans = True
-        elif arg in ("-r", "--recurse", "recurse"):
-            recurse = True
-        elif arg in ("-v", "--verbose", "verbose"):
-            Verbose = True
-        elif arg in ("-h", "--help", "help"):
-            usage()
-        else:
-            path = arg
-    if not force:
-        apply(recurse, function, path)
-    else:
-        apply(recurse, clean, path)
-        apply(recurse, build, path)
-    if trans and (function == build or force):
-        apply(recurse, translate, path)
-
-main()
-
-# 1.0.1 Fixed bug reported by Brian Downing where paths that contained
-#       spaces were not handled correctly.
-# 1.0.2 Changed default path on Windows to match PyQt 4.4
-# 1.0.3 Tried to make the paths work on Mac OS X
diff --git a/gui/sbin/unittests.py b/gui/sbin/unittests.py
index 725f4d7..c2b1d5f 100755
--- a/gui/sbin/unittests.py
+++ b/gui/sbin/unittests.py
@@ -107,7 +107,7 @@ def starttest17():
 def starttest18():
     from Pages.DefineUserScalarsModel import runTest
     runTest()
-    
+
 def starttest19():
     from Pages.Boundary import runTest, runTest2, runTest3, runTest4, runTest5
     from Pages.Boundary import runTest6, runTest7
diff --git a/gui/setup.py b/gui/setup.py
deleted file mode 100644
index ae2dcb6..0000000
--- a/gui/setup.py
+++ /dev/null
@@ -1,115 +0,0 @@
-#-------------------------------------------------------------------------------
-#
-#     This file is part of the Code_Saturne User Interface, element of the
-#     Code_Saturne CFD tool.
-#
-#     Copyright (C) 1998-2009 EDF S.A., France
-#
-#     contact: saturne-support at edf.fr
-#
-#     The Code_Saturne User Interface is free software; you can redistribute it
-#     and/or modify it under the terms of the GNU General Public License
-#     as published by the Free Software Foundation; either version 2 of
-#     the License, or (at your option) any later version.
-#
-#     The Code_Saturne User Interface is distributed in the hope that it will be
-#     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-#     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#     GNU General Public License for more details.
-#
-#     You should have received a copy of the GNU General Public License
-#     along with the Code_Saturne Kernel; if not, write to the
-#     Free Software Foundation, Inc.,
-#     51 Franklin St, Fifth Floor,
-#     Boston, MA  02110-1301  USA
-#
-#-------------------------------------------------------------------------------
-
-"""
-This is the cs_gui setup.py script.
-
-1) for installation:
-python setup.py build
-python setup.py install
-python setup.py install --prefix MY_INSTALL_PATH
-python setup.py install --prefix=MY_INSTALL_PATH
-
-2) for distribution:
-python setup.py bdist --format=wininst
-python setup.py bdist --format=rpm
-python setup.py sdist
-python setup.py sdist --formats=gztar,zip
-python setup.py bdist_rpm
-python setup.py bdist_wininst
-
-3) for more options:
-python setup.py --help
-python setup.py bdist --help-formats
-"""
-
-#-------------------------------------------------------------------------------
-# Check versions
-#-------------------------------------------------------------------------------
-
-import sys, string, os
-
-if not hasattr(sys, 'version_info') or sys.version_info < (2, 4, 0, 'final'):
-    raise SystemExit, "Graphical users interface of Code_Saturne "\
-                      "requires python 2.4 or later."
-try:
-    from PyQt4.QtCore import *
-    from PyQt4.QtGui  import *
-except ImportError:
-    print "\n  Error: Unable to import PyQt4.QtCore or PyQt4.QtGui modules."
-    print "  Please check your PyQt4 installation.\n"
-    sys.exit(0)
-
-
-if map(int, string.split(QT_VERSION_STR, ".")) < [4, 3, 0]:
-    raise SystemExit, "Graphical users interface of Code_Saturne "\
-                      "requires Qt 4.3 or later (found %s)." % QT_VERSION_STR
-
-
-if map(int, string.split(PYQT_VERSION_STR, ".")) < [4, 3, 0]:
-    raise SystemExit, "Graphical users interface of Code_Saturne "\
-                      "requires PyQt 4.3 or later (found %s)." % PYQT_VERSION_STR
-
-#-------------------------------------------------------------------------------
-# Distribution or installation
-#-------------------------------------------------------------------------------
-
-from Base.Common import VERSION
-from distutils.core import setup
-from distutils.sysconfig import get_python_lib
-
-install_dir = os.path.join(get_python_lib(), 'ncs')
-
-for arg in sys.argv[1:]:
-    if arg.startswith("--prefix="):
-        install_dir = os.path.join(get_python_lib(prefix=arg[9:]), 'ncs')
-        break
-
-for i in range(len(sys.argv)):
-    if sys.argv[i].startswith("--prefix") and not sys.argv[i].startswith("--prefix="):
-        install_dir = os.path.join(get_python_lib(prefix=sys.argv[i+1]), 'ncs')
-        break
-
-setup(name='cs_gui',
-      version=VERSION,
-      url='www.code-saturne.org',
-      description='Graphical user interface of Code_Saturne CFD code',
-      license='GNU GPL',
-      maintainer='Code_Saturne team',
-      maintainer_email='saturne-support at edf.fr',
-      scripts=['cs_gui'],
-      package_dir={ 'ncs' : '.', 'ncs.Base' : 'Base', 'ncs.Pages' : 'Pages'},
-      packages=['ncs', 'ncs.Base', 'ncs.Pages'],
-      data_files=[(install_dir,
-                  ["AUTHORS", "COPYING", "VERSION"]),
-                  (os.path.join(install_dir, "Base", "icons", "SplashScreen"),
-                  [os.path.join("Base", "icons", "SplashScreen", "logocs.png")])]
-      )
-
-#-------------------------------------------------------------------------------
-# End
-#-------------------------------------------------------------------------------
diff --git a/include/atmo/atincl.h b/include/atmo/atincl.h
index bb9335f..2db0dd5 100644
--- a/include/atmo/atincl.h
+++ b/include/atmo/atincl.h
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/alaste.h b/include/base/alaste.h
index b7efc1a..414a5af 100644
--- a/include/base/alaste.h
+++ b/include/base/alaste.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/albase.h b/include/base/albase.h
index b363a10..bb7f6ed 100644
--- a/include/base/albase.h
+++ b/include/base/albase.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/alstru.h b/include/base/alstru.h
index 4249b9c..fa4f413 100644
--- a/include/base/alstru.h
+++ b/include/base/alstru.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/cplsat.h b/include/base/cplsat.h
index 2c59a9e..7a284ba 100644
--- a/include/base/cplsat.h
+++ b/include/base/cplsat.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -31,10 +31,12 @@
 !  COUPLAGE CODE / CODE - GESTION DES PARAMETRES PRINCIPAUX
 
 ! NBRCPL : NOMBRE DE COUPLAGE CODE_SATURNE / CODE_SATURNE
+! IFACCP : INDICATEUR DE COUPLAGE FACE/FACE UNIQUEMENT
+! IMOBIL : INDICATEUR DE MAILLAGE MOBILE POUR LES TURBOMACHINES
 
-integer           nbrcpl
+integer           nbrcpl, ifaccp, imobil
 
-common / icplcs / nbrcpl
+common / icplcs / nbrcpl, ifaccp, imobil
 
 ! NBCPMX : NOMBRE DE COUPLAGE MAX ADMISSIBLE
 
diff --git a/include/base/cs_ale.h b/include/base/cs_ale.h
index a30c6d3..8674a80 100644
--- a/include/base/cs_ale.h
+++ b/include/base/cs_ale.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_ast_coupling.h b/include/base/cs_ast_coupling.h
index 700082d..d5f84a9 100644
--- a/include/base/cs_ast_coupling.h
+++ b/include/base/cs_ast_coupling.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_base.h b/include/base/cs_base.h
index a32a706..d693619 100644
--- a/include/base/cs_base.h
+++ b/include/base/cs_base.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -66,16 +66,11 @@
 
 #if (_CS_STDC_VERSION >= 199901L)
 #include <stdint.h>
+#include <stdbool.h>
 #endif
 
 #if defined(HAVE_MPI)
-
 #include <mpi.h>
-
-#if defined(HAVE_MPE)
-#include <mpe.h>
-#endif
-
 #endif
 
 #if defined(HAVE_OPENMP)
@@ -201,8 +196,14 @@ typedef char             cs_byte_t;     /* Byte (untyped memory unit) */
 
 typedef cs_real_t        cs_point_t[3];
 
+#if (_CS_STDC_VERSION >= 199901L)
+
+typedef _Bool cs_bool_t;                /* Boolean */
+
+#else
+
 typedef enum {                          /* Boolean */
-  CS_FALSE ,
+  CS_FALSE,
   CS_TRUE
 } cs_bool_t;
 
@@ -214,6 +215,8 @@ typedef enum {                          /* Boolean */
 #define true CS_TRUE
 #endif
 
+#endif /* (_CS_STDC_VERSION >= 199901L) */
+
 /* Mappings to MPI datatypes */
 
 #if defined(HAVE_MPI)
@@ -247,23 +250,6 @@ extern int  cs_glob_n_ranks;        /* Number of processes in group */
 extern MPI_Comm  cs_glob_mpi_comm;    /* Intra-communicator */
 #endif
 
-/* Global variables used for MPE instrumentation */
-
-#if defined(HAVE_MPI) && defined(HAVE_MPE)
-extern int  cs_glob_mpe_broadcast_a;
-extern int  cs_glob_mpe_broadcast_b;
-extern int  cs_glob_mpe_synchro_a;
-extern int  cs_glob_mpe_synchro_b;
-extern int  cs_glob_mpe_send_a;
-extern int  cs_glob_mpe_send_b;
-extern int  cs_glob_mpe_rcv_a;
-extern int  cs_glob_mpe_rcv_b;
-extern int  cs_glob_mpe_reduce_a;
-extern int  cs_glob_mpe_reduce_b;
-extern int  cs_glob_mpe_compute_a;
-extern int  cs_glob_mpe_compute_b;
-#endif
-
 /*============================================================================
  * Public function prototypes for Fortran API
  *============================================================================*/
diff --git a/include/base/cs_benchmark.h b/include/base/cs_benchmark.h
index 975583b..5279b25 100644
--- a/include/base/cs_benchmark.h
+++ b/include/base/cs_benchmark.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_blas.h b/include/base/cs_blas.h
index d3e28d2..1c19ae7 100644
--- a/include/base/cs_blas.h
+++ b/include/base/cs_blas.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_calcium.h b/include/base/cs_calcium.h
index b7f014b..dad5240 100644
--- a/include/base/cs_calcium.h
+++ b/include/base/cs_calcium.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_coupling.h b/include/base/cs_coupling.h
index 7c89910..c8fef8a 100644
--- a/include/base/cs_coupling.h
+++ b/include/base/cs_coupling.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_ext_neighborhood.h b/include/base/cs_ext_neighborhood.h
index f28c815..4171302 100644
--- a/include/base/cs_ext_neighborhood.h
+++ b/include/base/cs_ext_neighborhood.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_gradient.h b/include/base/cs_gradient.h
index a6212fb..310fb6e 100644
--- a/include/base/cs_gradient.h
+++ b/include/base/cs_gradient.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_gui.h b/include/base/cs_gui.h
index fdc7287..f56ada7 100644
--- a/include/base/cs_gui.h
+++ b/include/base/cs_gui.h
@@ -205,12 +205,14 @@ void CS_PROCF (csvnum, CSVNUM) (const int *const nvar,
  * *****************
  *
  * INTEGER          ISUITE  <--   restart
+ * INTEGER          NTSUIT  <--   checkpoint frequency
  * INTEGER          ILEAUX  <--   restart with auxiliary
  * INTEGER          ICCFVG  <--   restart with frozen field
  *----------------------------------------------------------------------------*/
 
 
 void CS_PROCF (csisui, CSISUI) (int *const isuite,
+                                int *const ntsuit,
                                 int *const ileaux,
                                 int *const iccvfg);
 
@@ -367,6 +369,8 @@ void CS_PROCF (uiprop, UIPROP) (const int *const irom,
                                 const int *const ipptz,
                                 const int *const ippdt,
                                 const int *const ivisma,
+                                const int *const idtvar,
+                                const int *const ipucou,
                                 const int *const iappel);
 
 /*----------------------------------------------------------------------------
@@ -452,21 +456,25 @@ void CS_PROCF(nvamem, NVAMEM) (void);
 void CS_PROCF (uiusar, UIUSAR) (int *const icoftu);
 
 /*----------------------------------------------------------------------------
- * Variables and user scalars initialization
+ * Variables and user scalars initialization.
  *
  * Fortran Interface:
  *
- * SUBROUTINE UIINIV (NCELET, ISCA, RTP)
+ * subroutine uiiniv (ncelet, isuite, isca, iscold, rtp)
  * *****************
  *
- * INTEGER          NCELET   -->  number of cells with halo
- * INTEGER          ISCA     -->  indirection array for scalar number
- * DOUBLE PRECISION RTP     <--   variables and scalars array
+ * integer          ncelet   -->  number of cells with halo
+ * integer          isuite   -->  restart indicator
+ * integer          isca     -->  indirection array for scalar number
+ * integer          iscold   -->  scalar number for restart
+ * double precision rtp     <--   variables and scalars array
  *----------------------------------------------------------------------------*/
 
-void CS_PROCF(uiiniv, UIINIV) (const int    *const ncelet,
-                               const int    *const isca,
-                                     double *const rtp);
+void CS_PROCF(uiiniv, UIINIV) (const int    *ncelet,
+                               const int    *isuite,
+                               const int     isca[],
+                               const int     iscold[],
+                                     double  rtp[]);
 
 /*----------------------------------------------------------------------------
  * User law for material Properties
@@ -514,6 +522,31 @@ void CS_PROCF(uiphyv, UIPHYV)(const cs_int_t  *const ncel,
                                     cs_real_t        propce[]);
 
 /*----------------------------------------------------------------------------
+ * Head losses definition
+ *
+ * Fortran Interface:
+ *
+ * subroutine uikpdc
+ * *****************
+ *
+ * integer          iappel   -->  number of calls during a time step
+ * integer          iphas    -->  number of phase (only 1 allowed)
+ * integer          ncelet   -->  number of cells with halo
+ * integer          ncepdp  <--   number of cells with head losses
+ * integer          icepdc  <--   ncepdp cells number with head losses
+ * double precision ckupdc  <--   head losses matrix
+ * double precision rtpa     -->  variables array at previous time step
+ *----------------------------------------------------------------------------*/
+
+void CS_PROCF(uikpdc, UIKPDC)(const int*   iappel,
+                              const int*   iphas,
+                              const int*   ncelet,
+                                    int*   ncepdp,
+                                    int    icepdc[],
+                                    double ckupdc[],
+                              const double rtpa[] );
+
+/*----------------------------------------------------------------------------
  * 1D profile postprocessing
  *
  * Fortran Interface:
diff --git a/include/base/tremai.h b/include/base/cs_gui_conjugate_heat_transfer.h
similarity index 69%
copy from include/base/tremai.h
copy to include/base/cs_gui_conjugate_heat_transfer.h
index 111e06a..ce2da5e 100644
--- a/include/base/tremai.h
+++ b/include/base/cs_gui_conjugate_heat_transfer.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -25,47 +25,45 @@
  *
  *============================================================================*/
 
-#ifndef __CS_TREMAI_H__
-#define __CS_TREMAI_H__
+#ifndef __CS_GUI_CONJUGATE_HEAT_TRANSFER_H__
+#define __CS_GUI_CONJUGATE_HEAT_TRANSFER_H__
 
 /*============================================================================
- * Compute remaining time allocated to this process
+ * Management of the GUI parameters file: conjugate heat transfer
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
- *  Local headers
+ * Local headers
  *----------------------------------------------------------------------------*/
 
 #include "cs_base.h"
 
-/*----------------------------------------------------------------------------*/
-
 BEGIN_C_DECLS
 
 /*============================================================================
- * Public function prototypes for Fortran API
+ * Public Fortran function definitions
  *============================================================================*/
 
-/*----------------------------------------------------------------------------
- * Compute remaining time allocated to this process
+/*-----------------------------------------------------------------------------
+ * Define new SYRTHES coupling.
+ *
+ * In the case of a single Code_Saturne and single SYRTHES instance, the
+ * syrthes_app_num and syrthes_name arguments are ignored.
  *
- * Fortran interface:
+ * In case of multiple couplings, a coupling will be matched with available
+ * SYRTHES instances prioritarily based on the syrthes_name argument, then
+ * on the syrthes_app_num argument. If syrthes_name is empty, matching will
+ * be based on syrthes_app_num only.
  *
- * SUBROUTINE TREMAI (TPS   , RET)
+ * subroutine uisyrc
  * *****************
  *
- * DOUBLE PRECISION TPS        : <-- : remaining time (default: 7 days)
- * INTEGER          RET        : <-- : return code:
- *                             :     :  -1: error
- *                             :     :   0: no limit using this method
- *                             :     :   1: CPU limit determined
  *----------------------------------------------------------------------------*/
 
-void CS_PROCF (tremai, TREMAI) (double  *tps,
-                                int     *ret);
+void CS_PROCF (uisyrc, UISYRC) (void);
 
 /*----------------------------------------------------------------------------*/
 
 END_C_DECLS
 
-#endif /* _CS_TREMAI_H_ */
+#endif /* __CS_GUI_CONJUGATE_HEAT_TRANSFER_H__ */
diff --git a/include/base/cs_io.h b/include/base/cs_io.h
index 55abc01..fb6227a 100644
--- a/include/base/cs_io.h
+++ b/include/base/cs_io.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -104,28 +104,6 @@ extern int       cs_glob_io_hints;
 extern cs_io_t  *cs_glob_pp_io;
 
 /*============================================================================
- * Public function prototypes for Fortran API
- *============================================================================*/
-
-/*----------------------------------------------------------------------------
- * Set the default kernel IO hints to the specified value.
- *
- * Fortran interface :
- *
- * SUBROUTINE IOHINT (IHINT)
- * *****************
- *
- * INTEGER          IHINT       : <-> : IO hints (bit mask)
- *                                        0: default
- *                                        1: disable MPI IO
- *                                        4: MPI IO uses explicit offsets
- *                                        8: MPI IO uses individual pointers
- *----------------------------------------------------------------------------*/
-
-void
-CS_PROCF (iohint, IOHINT) (const cs_int_t  *iopt);
-
-/*============================================================================
  * Public function prototypes
  *============================================================================*/
 
@@ -529,6 +507,31 @@ cs_io_write_block_buffer(const char      *sec_name,
                          cs_io_t         *outp);
 
 /*----------------------------------------------------------------------------
+ * Print information on default options for file access.
+ *----------------------------------------------------------------------------*/
+
+void
+cs_io_defaults_info(void);
+
+/*----------------------------------------------------------------------------
+ * Set the default semantics for file access.
+ *
+ * Allowed values for mpi_io_mode are:
+ *   0: no MPI-IO,
+ *   1: MPI-IO with explicit offsets,
+ *   2: MPI-IO with individual file pointers
+ *
+ * Invalid values (for example an MPI-IO mode with no MPI or MPI-IO
+ * support) are silently ignored.
+ *
+ * parameters:
+ *   mpi_io_mode <-- mode for default semantics
+ *----------------------------------------------------------------------------*/
+
+void
+cs_io_set_defaults(int  mpi_io_mode);
+
+/*----------------------------------------------------------------------------
  * Dump a kernel IO file handle's metadata.
  *
  * parameters:
diff --git a/include/base/cs_join.h b/include/base/cs_join.h
index 39aea5a..3935cf4 100644
--- a/include/base/cs_join.h
+++ b/include/base/cs_join.h
@@ -29,7 +29,7 @@
 #define __CS_JOIN_H__
 
 /*============================================================================
- * Structure and function headers handling with ghost cells
+ * Structure and function headers handling with joining operation
  *===========================================================================*/
 
 /*----------------------------------------------------------------------------
@@ -41,6 +41,7 @@
  *---------------------------------------------------------------------------*/
 
 #include "cs_base.h"
+#include "cs_join_util.h"
 
 /*---------------------------------------------------------------------------*/
 
@@ -54,15 +55,44 @@ BEGIN_C_DECLS
  * Type definition
  *===========================================================================*/
 
+typedef struct {
+
+  cs_join_param_t   param;      /* Set of parameters used to control
+                                   the joining operations */
+
+  char             *criteria;   /* Criteria used to select border faces
+                                   implied in the joining operation */
+
+} cs_join_t;
+
 /*=============================================================================
  * Global variables
  *===========================================================================*/
 
+extern cs_int_t  cs_glob_n_joinings;
+extern cs_join_t  **cs_glob_join_array;
+
 /*============================================================================
  *  Public function prototypes for Fortran API
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
+ * Get the number of joining operations already defined
+ *
+ * Fortran Interface:
+ *
+ * SUBROUTINE NUMJOI
+ * *****************
+ *
+ * INTEGER        numjoi       : --> : number of joining op. already defined
+ *----------------------------------------------------------------------------*/
+
+void CS_PROCF(numjoi, NUMJOI)
+(
+ cs_int_t    *numjoi
+);
+
+/*----------------------------------------------------------------------------
  * Define new boundary faces joining.
  *
  * Fortran Interface:
@@ -70,28 +100,60 @@ BEGIN_C_DECLS
  * SUBROUTINE DEFJO1
  * *****************
  *
+ * INTEGER        numjoi           : <-- : number related to the joining op.
  * CHARACTER*     joining_criteria : <-- : boundary face selection criteria,
  * REAL           fraction         : <-- : parameter for merging vertices
  * REAL           plane            : <-- : parameter for splitting faces
- * REAL           rtf              : <-- : reduction of tolerance factor
- * REAL           mtf              : <-- : merge tolerance coefficient
- * REAL           etf              : <-- : equivalence tolerance coefficient
  * INTEGER        verbosity        : <-- : verbosity level
  * INTEGER        joining_c_len    : <-- : length of joining_criteria
  *----------------------------------------------------------------------------*/
 
 void CS_PROCF(defjo1, DEFJO1)
 (
+ cs_int_t    *numjoi,
  const char  *joining_criteria,
  cs_real_t   *fraction,
  cs_real_t   *plane,
- cs_real_t   *rtf,
- cs_real_t   *mtf,
- cs_real_t   *etf,
  cs_int_t    *verbosity,
  cs_int_t    *joining_c_len
  CS_ARGF_SUPP_CHAINE
- );
+);
+
+/*----------------------------------------------------------------------------
+ * Set advanced parameters for the joining algorithm.
+ *
+ * Fortran Interface:
+ *
+ * SUBROUTINE SETAJP
+ * *****************
+ *
+ * INTEGER      join_num          : <-- : join number
+ * REAL         mtf               : <-- : merge tolerance coefficient
+ * REAL         pmf               : <-- : pre-merge factor
+ * INTEGER      tcm               : <-- : tolerance computation mode
+ * INTEGER      icm               : <-- : intersection computation mode
+ * INTEGER      maxbrk            : <-- : max number of tolerance reduction
+ * INTEGER      max_sub_faces     : <-- : max. possible number of sub-faces
+ *                                        by splitting a selected face
+ * INTEGER      tml               : <-- : tree max level
+ * INTEGER      tmb               : <-- : tree max boxes
+ * REAL         tmr               : <-- : tree max ratio
+ *---------------------------------------------------------------------------*/
+
+void CS_PROCF(setajp, SETAJP)
+(
+ cs_int_t    *join_num,
+ cs_real_t   *mtf,
+ cs_real_t   *pmf,
+ cs_int_t    *tcm,
+ cs_int_t    *icm,
+ cs_int_t    *maxbrk,
+ cs_int_t    *max_sub_faces,
+ cs_int_t    *tml,
+ cs_int_t    *tmb,
+ cs_real_t   *tmr
+ CS_ARGF_SUPP_CHAINE
+);
 
 /*=============================================================================
  * Public function prototypes
@@ -101,36 +163,49 @@ void CS_PROCF(defjo1, DEFJO1)
  * Create and initialize a cs_join_t structure.
  *
  * parameters:
+ *   join_number   <-- number related to the joining operation
  *   sel_criteria  <-- boundary face selection criteria
  *   fraction      <-- value of the fraction parameter
  *   plane         <-- value of the plane parameter
- *   rtf           <-- value of the "reduction tolerance factor" parameter
- *   mtf           <-- value of the "merge tolerance factor" parameter
- *   etf           <-- value of the "edge equiv. tolerance factor" parameter
- *   max_sub_faces <-- value of the max_sub_faces
- *   tml           <-- value of the "tree max level" parameter
- *   tmb           <-- value of the "tree max boxes" parameter
- *   tmr           <-- value of the "tree max ratio" parameter
  *   verbosity     <-- level of verbosity required
- *
- * returns:
- *   a pointer to a cs_join_t structure.
  *---------------------------------------------------------------------------*/
 
 void
-cs_join_add(char   *sel_criteria,
+cs_join_add(int     join_number,
+            char   *sel_criteria,
             float   fraction,
             float   plane,
-            float   rtf,
-            float   mtf,
-            float   etf,
-            int     max_sub_faces,
-            int     tml,
-            int     tmb,
-            float   tmr,
             int     verbosity);
 
 /*----------------------------------------------------------------------------
+ * Set advanced parameters to user-defined values.
+ *
+ * parameters:
+ *   join           <-> pointer a to cs_join_t struct. to update
+ *   mtf            <-- merge tolerance coefficient
+ *   pmf            <-- pre-merge factor
+ *   tcm            <-- tolerance computation mode
+ *   icm            <-- intersection computation mode
+ *   maxbrk         <-- max number of equivalences to break (merge step)
+ *   max_sub_faces  <-- max. possible number of sub-faces by splitting a face
+ *   tml            <-- tree max level
+ *   tmb            <-- tree max boxes
+ *   tmr            <-- tree max ratio
+ *---------------------------------------------------------------------------*/
+
+void
+cs_join_set_advanced_param(cs_join_t   *join,
+                           cs_real_t    mtf,
+                           cs_real_t    pmf,
+                           cs_int_t     tcm,
+                           cs_int_t     icm,
+                           cs_int_t     maxbrk,
+                           cs_int_t     max_sub_faces,
+                           cs_int_t     tml,
+                           cs_int_t     tmb,
+                           cs_real_t    tmr);
+
+/*----------------------------------------------------------------------------
  * Apply all the defined joining operations.
  *---------------------------------------------------------------------------*/
 
diff --git a/include/base/cs_join_intersect.h b/include/base/cs_join_intersect.h
index 511a24f..60fe6c3 100644
--- a/include/base/cs_join_intersect.h
+++ b/include/base/cs_join_intersect.h
@@ -203,8 +203,8 @@ cs_join_inter_edges_destroy(cs_join_inter_edges_t   *inter_edges);
  *---------------------------------------------------------------------------*/
 
 void
-cs_join_add_equiv_from_edges(const cs_join_param_t         param,
-                             const cs_join_mesh_t         *mesh,
+cs_join_add_equiv_from_edges(cs_join_param_t               param,
+                             cs_join_mesh_t               *mesh,
                              const cs_join_edges_t        *edges,
                              const cs_join_inter_edges_t  *inter_edges,
                              cs_join_eset_t               *vtx_equiv);
diff --git a/include/base/cs_join_mesh.h b/include/base/cs_join_mesh.h
index 3d04881..d1ee844 100644
--- a/include/base/cs_join_mesh.h
+++ b/include/base/cs_join_mesh.h
@@ -53,6 +53,7 @@
  *---------------------------------------------------------------------------*/
 
 #include "cs_base.h"
+#include "cs_join_util.h"
 
 /*---------------------------------------------------------------------------*/
 
@@ -66,6 +67,7 @@ typedef enum {
 
   CS_JOIN_FACE_UNDEFINED,
   CS_JOIN_FACE_BORDER,
+  CS_JOIN_FACE_MULTIPLE_BORDER,
   CS_JOIN_FACE_INTERIOR
 
 } cs_join_face_type_t;
@@ -146,6 +148,36 @@ typedef struct {
 MPI_Datatype
 cs_join_mesh_create_vtx_datatype(void);
 
+/*----------------------------------------------------------------------------
+ * Create a function to define an operator for MPI reduction operation
+ *
+ * parameters:
+ *   in        <--  input vertices
+ *   inout     <->  in/out vertices (vertex with the min. toelrance)
+ *   len       <--  size of input array
+ *   datatype  <--  MPI_datatype associated to cs_join_vertex_t
+ *---------------------------------------------------------------------------*/
+
+void  cs_join_mesh_mpi_vertex_min(cs_join_vertex_t   *in,
+                                  cs_join_vertex_t   *inout,
+                                  int                *len,
+                                  MPI_Datatype       *datatype);
+
+/*----------------------------------------------------------------------------
+ * Create a function to define an operator for MPI reduction operation
+ *
+ * parameters:
+ *   in        <--  input vertices
+ *   inout     <->  in/out vertices (vertex with the max. toelrance)
+ *   len       <--  size of input array
+ *   datatype  <--  MPI_datatype associated to cs_join_vertex_t
+ *---------------------------------------------------------------------------*/
+
+void  cs_join_mesh_mpi_vertex_max(cs_join_vertex_t   *in,
+                                  cs_join_vertex_t   *inout,
+                                  int                *len,
+                                  MPI_Datatype       *datatype);
+
 #endif /* HAVE_MPI */
 
 /*----------------------------------------------------------------------------
@@ -274,6 +306,18 @@ void
 cs_join_mesh_copy(cs_join_mesh_t        **mesh,
                   const cs_join_mesh_t   *ref_mesh);
 
+/*----------------------------------------------------------------------------
+ * Compute the global min/max tolerance defined on vertices and display it
+ *
+ * parameters:
+ *   param <-- user-defined parameters for the joining algorithm
+ *   mesh  <-- pointer to a cs_join_mesh_t structure
+ *---------------------------------------------------------------------------*/
+
+void
+cs_join_mesh_minmax_tol(cs_join_param_t    param,
+                        cs_join_mesh_t    *mesh);
+
 #if defined(HAVE_MPI)
 
 /*----------------------------------------------------------------------------
@@ -322,6 +366,17 @@ void
 cs_join_mesh_face_order(cs_join_mesh_t  *mesh);
 
 /*----------------------------------------------------------------------------
+ * Synchronize vertices definition over the rank. For a vertex with the same
+ * global number but a not equal tolerance, we keep the minimal tolerance.
+ *
+ * parameters:
+ *  mesh <->  pointer to the cs_join_mesh_t structure to synchronize
+ *---------------------------------------------------------------------------*/
+
+void
+cs_join_mesh_sync_vertices(cs_join_mesh_t  *mesh);
+
+/*----------------------------------------------------------------------------
  * Delete vertices which appear several times (same global number) and
  * vertices which are not used in face definition.
  *
diff --git a/include/base/cs_join_util.h b/include/base/cs_join_util.h
index 9b90494..370cb65 100644
--- a/include/base/cs_join_util.h
+++ b/include/base/cs_join_util.h
@@ -66,7 +66,7 @@ BEGIN_C_DECLS
 typedef enum {
 
   CS_JOIN_TYPE_CONFORM,
-  CS_JOIN_TYPE_NO_CONFORM,
+  CS_JOIN_TYPE_NO_CONFORM
 
 } cs_join_type_t;
 
@@ -81,13 +81,12 @@ typedef struct {
   /* Octree - Quadtree search algorithm */
   /* ---------------------------------- */
 
-  int   tree_max_level;     /* Deepest level reachable during tree building */
-  int   tree_n_max_boxes;   /* Max. number of boxes which can be related to a
+  int    tree_max_level;     /* Deepest level reachable during tree building */
+  int    tree_n_max_boxes;   /* Max. number of boxes which can be related to
                                a leaf of the tree if level != tree_max_level */
 
-  int   tree_max_box_ratio; /* Stop tree building if:
-                               n_linked_boxes > tree_max_box_ratio*n_init_boxes
-                            */
+  float  tree_max_box_ratio; /* Stop tree building if:
+                                n_linked_boxes > tree_max_box_ratio*n_init_boxes */
 
   /* Geometric parameters */
   /* -------------------- */
@@ -95,17 +94,12 @@ typedef struct {
   /* parameter used to compute the tolerance associated to each vertex.
      Also used for finding equivalent vertices during edge intersections */
 
-  double  fraction;
+  float  fraction;
 
   /* maximum angle between normals of two faces considered to
      be in the same plane (for face split) */
 
-  double  plane;
-
-  /* Coef. used to reduce the tolerance: new tol. = tol * coef
-     Values between [0.0, 1.0[ */
-
-  double  reduce_tol_factor;
+  float  plane;
 
   /* Coef. used to modify the tolerance associated to each vertex before the
      merge operation.
@@ -114,47 +108,48 @@ typedef struct {
      If coef = 1.0 => no change
      If coef > 1.0 => increase vertex merge */
 
-  double  merge_tol_coef;
+  float  merge_tol_coef;
 
-  /* Coef. used to modify locally the tolerance associated to each vertex
-     BEFORE adding equivalences between vertices after edge intersections.
-     If coef = 0.0 => add no equivalence
-     If coef < 1.0 => reduce the number of equivalences between vertices
-                      sharing the same edge
-     If coef = 1.0 => no change
-     If coef > 1.0 => increase the number of equivalences between vertices
-                      sharing the same edge. NOT ADVISED. */
+  /* Coef. used to compute a limit on staightfoward merge between
+     two vertices before the merge step. It should be a small value. */
 
-  double  edge_equiv_tol_coef;
+  float  pre_merge_factor;
 
-  /* Parameter to switch on/off the influence of adjacent faces in the
-     computation of tolerance */
+  /* Maximum number of equivalence breaks */
 
-  cs_bool_t  include_adj_faces;
+  int  n_max_equiv_breaks;
 
-  /* Parameter used to define if we get vertex equivalence trough the
-     comparison of vertex tolerance or through the difference of curvilinear
-     abscissa of vertices on edges.
-     If include_adj_faces = false => this parameter should not have any
-     effect. (Not a user-defined parameter) */
+   /* Tolerance computation mode: tcm
+      1: (default) tol = min. edge length related to a vertex * fraction
+      2: tolerance is computed like in mode 1 with in addition, the
+         multiplication by a coef. which is equal to the max sin(e1, e2)
+         where e1 and e2 are two edges sharing the same vertex V for which
+         we want to compute the tolerance
+     11: like 1 but only in taking into account only the selected faces
+     12: like 2 but only in taking into account only the selected faces */
 
-  cs_bool_t  edge_equiv_by_tolerance;
+  int  tcm;
 
-  int  max_sub_faces;  /* Maximum number of sub-faces when splitting a face */
+   /* Intersection computation mode: icm
+      1: (default) Original algorithm. Try to clip intersection on extremity
+      2: New intersection algorithm. Avoid to clip intersection on extremity
+   */
 
-  int  verbosity;  /* Level of display:
-                      O : no information printed
-                      1 : general information printed
-                      2 : more information printed
-                      5 and beyond : highest level (DEBUG LEVEL) */
+  int  icm;
 
+  /* Maximum number of sub-faces when splitting a face */
 
-} cs_join_param_t;
+  int  max_sub_faces;
 
-/*----------------------------------------------------------------------------
- * Structure used to store the result of the extraction of entities
- * implied in the joining operation
- *----------------------------------------------------------------------------*/
+  /* Level of display:
+       O : no information printed
+       1 : general information printed
+       2 : more information printed
+       5 and beyond : highest level (DEBUG LEVEL) */
+
+  int  verbosity;
+
+} cs_join_param_t;
 
 typedef struct { /* Structure used to synchronize single elements */
 
@@ -166,6 +161,11 @@ typedef struct { /* Structure used to synchronize single elements */
 
 } cs_join_sync_t;
 
+/*----------------------------------------------------------------------------
+ * Structure used to store the result of the extraction of entities
+ * implied in the joining operation
+ *---------------------------------------------------------------------------*/
+
 typedef struct {
 
   cs_int_t      n_faces;     /* Number of border faces selected
@@ -201,9 +201,9 @@ typedef struct {
   cs_int_t     *i_adj_faces;
 
   /*
-     Single elements (Only possible in parallel. It appears
+     Single elements (Only possible in parallel). It appears
      when the domain splitting has a poor quality and elements
-     on the joining interface are prisms or tetraedrals)
+     on the joining interface are prisms or tetraedrals
      s = single / c = coupled
   */
 
@@ -218,7 +218,7 @@ typedef struct {
 
 /*----------------------------------------------------------------------------
  * Structure used to store information about a block distribution
- *----------------------------------------------------------------------------*/
+ *---------------------------------------------------------------------------*/
 
 typedef struct {
 
@@ -252,7 +252,7 @@ typedef struct {
  *
  * returns:
  *   a new defined cs_join_block_info_t structure
- *----------------------------------------------------------------------------*/
+ *---------------------------------------------------------------------------*/
 
 cs_join_block_info_t
 cs_join_get_block_info(fvm_gnum_t  n_g_elts,
@@ -263,16 +263,9 @@ cs_join_get_block_info(fvm_gnum_t  n_g_elts,
  * Initialize a cs_join_param_t structure.
  *
  * parameters:
- *   join_id       <-- id of the current joining operation
+ *   join_num      <-- num of the current joining operation
  *   fraction      <-- value of the fraction parameter
  *   plane         <-- value of the plane parameter
- *   rtf           <-- value of the "reduction tolerance factor" parameter
- *   ftf           <-- value of the "merge tolerance factor" parameter
- *   etf           <-- value of the "edge equiv. tolerance factor" parameter
- *   max_sub_faces <-- maximum number of sub-faces allowed during splitting
- *   tml           <-- value of the "tree max level" parameter
- *   tmb           <-- value of the "tree max boxes" parameter
- *   tmr           <-- value of the "tree max ratio" parameter
  *   verbosity     <-- level of verbosity required
  *
  * returns:
@@ -280,17 +273,10 @@ cs_join_get_block_info(fvm_gnum_t  n_g_elts,
  *---------------------------------------------------------------------------*/
 
 cs_join_param_t
-cs_join_param_define(int     join_id,
-                     double  fraction,
-                     double  plane,
-                     double  rtf,
-                     double  ftf,
-                     double  etf,
-                     int     max_sub_faces,
-                     int     tml,
-                     int     tmb,
-                     double  tmr,
-                     int     verbosity);
+cs_join_param_define(int      join_num,
+                     float    fraction,
+                     float    plane,
+                     int      verbosity);
 
 /*----------------------------------------------------------------------------
  * Create and initialize a cs_join_select_t structure.
diff --git a/include/base/cs_matrix.h b/include/base/cs_matrix.h
index e17addd..b196d1e 100644
--- a/include/base/cs_matrix.h
+++ b/include/base/cs_matrix.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_mesh_coherency.h b/include/base/cs_mesh_coherency.h
index 27c7958..cb49554 100644
--- a/include/base/cs_mesh_coherency.h
+++ b/include/base/cs_mesh_coherency.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_mesh_connect.h b/include/base/cs_mesh_connect.h
index be14db6..fa31014 100644
--- a/include/base/cs_mesh_connect.h
+++ b/include/base/cs_mesh_connect.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_mesh_halo.h b/include/base/cs_mesh_halo.h
index d485bf6..9e99e22 100644
--- a/include/base/cs_mesh_halo.h
+++ b/include/base/cs_mesh_halo.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_mesh_quality.h b/include/base/cs_mesh_quality.h
index 47f9a30..bee22e0 100644
--- a/include/base/cs_mesh_quality.h
+++ b/include/base/cs_mesh_quality.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_mesh_quantities.h b/include/base/cs_mesh_quantities.h
index d2a25d7..5d7d6a4 100644
--- a/include/base/cs_mesh_quantities.h
+++ b/include/base/cs_mesh_quantities.h
@@ -187,6 +187,18 @@ cs_mesh_quantities_b_faces(const cs_mesh_t   *mesh,
                            cs_real_t         *p_b_face_normal[]);
 
 /*----------------------------------------------------------------------------
+ * Check that no negative volumes are present, and exit on error otherwise.
+ *
+ * parameters:
+ *   mesh            <-- pointer to mesh structure
+ *   mesh_quantities <-- pointer to mesh quantities structure
+ *----------------------------------------------------------------------------*/
+
+void
+cs_mesh_quantities_check_vol(const cs_mesh_t             *mesh,
+                             const cs_mesh_quantities_t  *mesh_quantities);
+
+/*----------------------------------------------------------------------------
  * Dump a cs_mesh_quantities_t structure
  *
  * parameters:
diff --git a/include/base/cs_mesh_warping.h b/include/base/cs_mesh_warping.h
index dd0c6e8..66de9d5 100644
--- a/include/base/cs_mesh_warping.h
+++ b/include/base/cs_mesh_warping.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_multigrid.h b/include/base/cs_multigrid.h
index 74228a4..2a992f0 100644
--- a/include/base/cs_multigrid.h
+++ b/include/base/cs_multigrid.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_opts.h b/include/base/cs_opts.h
index 54d5872..5cbed69 100644
--- a/include/base/cs_opts.h
+++ b/include/base/cs_opts.h
@@ -68,6 +68,13 @@ typedef struct {
                                    1: redirected to "listing_n*" file;
                                    2: redirected to "/dev/null", suppressed) */
 
+  /* MPI-IO mode */
+
+  int            mpi_io_mode;   /* MPI-IO mode:
+                                   0: no MPI-IO
+                                   1: MPI-IO with explicit offsets
+                                   2: MPI-IO with individual file pointers */
+
   /* Other options */
 
   cs_bool_t      verif;         /* Mesh quality verification mode */
diff --git a/include/base/cs_parall.h b/include/base/cs_parall.h
index 4b03471..d3c744a 100644
--- a/include/base/cs_parall.h
+++ b/include/base/cs_parall.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -569,6 +569,21 @@ CS_PROCF (parfbg, PARFBG)(cs_int_t   *lnum,
                           cs_int_t   *rankid,
                           cs_int_t   *gnum);
 
+/*----------------------------------------------------------------------------
+ * Call a barrier in case of parallelism
+ *
+ * This function should not be necessary in production code,
+ * but it may be useful for debugging purposes.
+ *
+ * Fortran interface :
+ *
+ * SUBROUTINE PARBAR
+ * *****************
+ *----------------------------------------------------------------------------*/
+
+void
+CS_PROCF (parbar, PARBAR)(void);
+
 /*=============================================================================
  * Public function definitions
  *============================================================================*/
diff --git a/include/base/cs_perio.h b/include/base/cs_perio.h
index be36f50..924f884 100644
--- a/include/base/cs_perio.h
+++ b/include/base/cs_perio.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_preprocessor_data.h b/include/base/cs_preprocessor_data.h
index 0be8f30..ab74904 100644
--- a/include/base/cs_preprocessor_data.h
+++ b/include/base/cs_preprocessor_data.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -52,35 +52,70 @@ BEGIN_C_DECLS
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
+ * Query or modification of the option for domain partitioning when no
+ * partitioning file is present.
+ *
+ * This function returns 1 or 2 according to the selected algorithm.
+ *
+ * Fortran interface :
+ *
+ * subroutine algdom (iopt)
+ * *****************
+ *
+ * integer          iopt        : <-> : Choice of the partitioning base
+ *                                        0: query
+ *                                        1: initial numbering
+ *                                        2: space-filling curve (default)
+ *----------------------------------------------------------------------------*/
+
+void
+CS_PROCF (algdom, ALGDOM)(cs_int_t  *iopt);
+
+/*----------------------------------------------------------------------------
  * Receive messages from the pre-processor about the dimensions of mesh
  * parameters
  *
- * FORTRAN Interface:
+ * Fortran Interface:
  *
- * SUBROUTINE LEDEVI(NOMRUB, TYPENT, NBRENT, TABENT)
+ * subroutine ledevi(ndim   , nfml  , nprfml, iperio, iperot)
  * *****************
  *
- * INTEGER          NDIM        : <-- : Spacial dimension (3)
- * INTEGER          NFML        : <-- : Number of families (group classes)
- * INTEGER          NPRFML      : <-- : Number of properties per family
- * INTEGER          IPERIO      : <-- : Periodicity indicator
- * INTEGER          IPEROT      : <-- : Number of rotation periodicities
+ * integer          ndim        : <-- : Spacial dimension (3)
+ * integer          nfml        : <-- : Number of families
+ * integer          nprfml      : <-- : Number of properties per family
+ * integer          iperio      : <-- : Periodicity indicator
+ * integer          iperot      : <-- : Number of rotation periodicities
  *----------------------------------------------------------------------------*/
 
-void CS_PROCF(ledevi, LEDEVI)
-(
- cs_int_t   *ndim,
- cs_int_t   *nfml,
- cs_int_t   *nprfml,
- cs_int_t   *iperio,
- cs_int_t   *iperot
-);
+void
+CS_PROCF(ledevi, LEDEVI)(cs_int_t   *ndim,
+                         cs_int_t   *nfml,
+                         cs_int_t   *nprfml,
+                         cs_int_t   *iperio,
+                         cs_int_t   *iperot);
 
 /*============================================================================
  *  Public functions definition
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
+ * Query or modification of the option for domain partitioning when no
+ * partitioning file is present.
+ *
+ *  0 : query
+ *  1 : partition based on initial numbering
+ *  2 : partition based on space-filling curve (default)
+ *
+ * choice <-- of partitioning algorithm.
+ *
+ * returns:
+ *   1 or 2 according to the selected algorithm.
+ *----------------------------------------------------------------------------*/
+
+int
+cs_preprocessor_data_part_choice(int choice);
+
+/*----------------------------------------------------------------------------
  * Read pre-processor mesh data and finalize input.
  *
  * parameters:
diff --git a/include/base/cs_proxy_comm.h b/include/base/cs_proxy_comm.h
index 7c6e582..2c8a079 100644
--- a/include/base/cs_proxy_comm.h
+++ b/include/base/cs_proxy_comm.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -60,7 +60,7 @@ typedef enum {
   CS_PROXY_TYPE_string,
   CS_PROXY_TYPE_int,
   CS_PROXY_TYPE_float,
-  CS_PROXY_TYPE_double,
+  CS_PROXY_TYPE_double
 } cs_proxy_type_t;
 
 typedef enum {
diff --git a/include/base/cs_renumber.h b/include/base/cs_renumber.h
index 1935443..68dfbe2 100644
--- a/include/base/cs_renumber.h
+++ b/include/base/cs_renumber.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_sat_coupling.h b/include/base/cs_sat_coupling.h
index e9efbb8..b9c68e0 100644
--- a/include/base/cs_sat_coupling.h
+++ b/include/base/cs_sat_coupling.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -57,6 +57,46 @@ typedef struct _cs_sat_coupling_t cs_sat_coupling_t;
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
+ * Define new Code_Saturne coupling.
+ *
+ * Fortran Interface:
+ *
+ * SUBROUTINE DEFSA1
+ * *****************
+ *
+ * INTEGER        saturne_app_num   : <-- : application number of coupled
+ *                                  :     : Code_Saturne instance, or -1
+ * CHARACTER*     saturne_name      : <-- : name of coupled Code_Saturne instance
+ * CHARACTER      projection_axis   : <-- : ' ' for 3D, 'x', 'y', or 'z'
+ *                                  :     : for 2D projection
+ * CHARACTER*     boundary_criteria : <-- : boundary face selection criteria,
+ *                                  :     : empty if no boundary coupling
+ * CHARACTER*     volume_criteria   : <-- : volume cell selection criteria,
+ *                                  :     : empty if no volume coupling
+ * INTEGER        verbosity         : <-- : verbosity level
+ * INTEGER        saturne_n_len     : <-- : length of saturne_name
+ * INTEGER        boundary_c_len    : <-- : length of boundary_criteria
+ * INTEGER        volume_c_len      : <-- : length of volume_criteria
+ *----------------------------------------------------------------------------*/
+
+void CS_PROCF(defsa1, DEFSA1)
+(
+ cs_int_t    *saturne_app_num,
+ const char  *saturne_name,
+ const char  *boundary_cpl_criteria,
+ const char  *volume_cpl_criteria,
+ const char  *boundary_sup_criteria,
+ const char  *volume_sup_criteria,
+ cs_int_t    *verbosity,
+ cs_int_t    *saturne_n_len,
+ cs_int_t    *boundary_cpl_c_len,
+ cs_int_t    *volume_cpl_c_len,
+ cs_int_t    *boundary_sup_c_len,
+ cs_int_t    *volume_sup_c_len
+ CS_ARGF_SUPP_CHAINE
+);
+
+/*----------------------------------------------------------------------------
  * Get number of code coupling
  *
  * Fortran interface:
@@ -95,27 +135,11 @@ void CS_PROCF (nbccpl, NBCCPL)
  * *****************
  *
  * INTEGER          NUMCPL         : --> : coupling number
- * INTEGER          NCESUP         : --> : number of "support" cells
- * INTEGER          NFBSUP         : --> : number of "support" boundary faces
- * INTEGER          NCECPL         : --> : number of coupled cells
- * INTEGER          NFBCPL         : --> : number of coupled boundary faces
- * INTEGER          LCESUP(NCESUP) : <-> : list of "support" cells
- * INTEGER          LFBSUP(NFBSUP) : <-> : list of "support" boundary faces
- * INTEGER          LCECPL(NCECPL) : --> : list of coupled cells
- * INTEGER          LFBCPL(NFBCPL) : --> : list of coupled boundary faces
  *----------------------------------------------------------------------------*/
 
-void CS_PROCF (defcpl, DEFCPL)
+void CS_PROCF (defloc, DEFLOC)
 (
- const cs_int_t  *numcpl,
- const cs_int_t  *ncesup,
- const cs_int_t  *nfbsup,
- const cs_int_t  *ncecpl,
- const cs_int_t  *nfbcpl,
-       cs_int_t         lcesup[],
-       cs_int_t         lfbsup[],
- const cs_int_t         lcecpl[],
- const cs_int_t         lfbcpl[]
+ const cs_int_t  *numcpl
 );
 
 /*----------------------------------------------------------------------------
@@ -401,18 +425,78 @@ void CS_PROCF (mxicpl, MXICPL)
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
- * Add a coupling.
+ * Define new Code_Saturne coupling.
+ *
+ * arguments:
+ *   saturne_app_num   <-- number of Code_Saturne application, or -1
+ *   saturne_name      <-- name of Code_Saturne instance, or NULL
+ *   boundary_criteria <-- boundary face selection criteria, or NULL
+ *   volume_criteria   <-- volume cell selection criteria, or NULL
+ *   verbosity         <-- verbosity level
+ *----------------------------------------------------------------------------*/
+
+void
+cs_sat_coupling_define(int          saturne_app_num,
+                       const char  *saturne_name,
+                       const char  *boundary_cpl_criteria,
+                       const char  *volume_cpl_criteria,
+                       const char  *boundary_sup_criteria,
+                       const char  *volume_sup_criteria,
+                       int          verbosity);
+
+/*----------------------------------------------------------------------------
+ * Get number of Code_Saturne couplings.
  *
- * Couplings are allowed either with process totally distinct from the
- * application communicator (cs_glob_mpi_comm), or within this same
- * communicator.
+ * returns:
+ *   number of Code_Saturne couplings
+ *----------------------------------------------------------------------------*/
+
+fvm_lnum_t
+cs_sat_coupling_n_couplings(void);
+
+/*----------------------------------------------------------------------------
+ * Get pointer to Code_Saturne coupling.
+ *
+ * parameters:
+ *   coupling_id <-- Id (0 to n-1) of Code_Saturne coupling
+ *
+ * returns:
+ *   pointer to Code_Saturne coupling structure
+ *----------------------------------------------------------------------------*/
+
+cs_sat_coupling_t *
+cs_sat_coupling_by_id(fvm_lnum_t coupling_id);
+
+/*----------------------------------------------------------------------------
+ * Create a sat_coupling_t structure.
  *
  * parameters:
- *   rang_deb <-- root rank of distant process leader in MPI_COMM_WORLD
+ *   ref_axis           <-- reference axis
+ *   face_sel_criterion <-- criterion for selection of boundary faces
+ *   cell_sel_criterion <-- criterion for selection of cells
+ *   syr_num            <-- SYRTHES application number, or -1
+ *   sat_name           <-- SYRTHES application name, or NULL
+ *   verbosity          <-- verbosity level
+ *----------------------------------------------------------------------------*/
+
+void
+cs_sat_coupling_add(const char  *face_cpl_sel_c,
+                    const char  *cell_cpl_sel_c,
+                    const char  *face_sup_sel_c,
+                    const char  *cell_sup_sel_c,
+                    int          sat_num,
+                    const char  *sat_name,
+                    int          verbosity);
+
+/*----------------------------------------------------------------------------
+ * Initialize Code_Saturne couplings.
+ *
+ * This function may be called once all couplings have been defined,
+ * and it will match defined couplings with available applications.
  *----------------------------------------------------------------------------*/
 
 void
-cs_sat_coupling_add(const int  root_rank);
+cs_sat_coupling_all_init(void);
 
 /*----------------------------------------------------------------------------
  * Destroy all couplings
diff --git a/include/base/cs_selector.h b/include/base/cs_selector.h
index cf804fe..84901fd 100644
--- a/include/base/cs_selector.h
+++ b/include/base/cs_selector.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_sles.h b/include/base/cs_sles.h
index c60e2c0..6fcea11 100644
--- a/include/base/cs_sles.h
+++ b/include/base/cs_sles.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -61,7 +61,7 @@ typedef enum {
   CS_SLES_PCG,       /* Preconditionned conjugate gradient */
   CS_SLES_JACOBI,    /* Jacobi */
   CS_SLES_BICGSTAB,  /* Bi-conjugate gradient stabilized */
-  CS_SLES_N_TYPES    /* Number of implemented resolution algorithms */
+  CS_SLES_N_TYPES    /* Number of resolution algorithms */
 
 } cs_sles_type_t;
 
diff --git a/include/base/cs_syr3_comm.h b/include/base/cs_syr3_comm.h
index 40fde00..d795ba0 100644
--- a/include/base/cs_syr3_comm.h
+++ b/include/base/cs_syr3_comm.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_syr3_coupling.h b/include/base/cs_syr3_coupling.h
index e7abb6b..f65f991 100644
--- a/include/base/cs_syr3_coupling.h
+++ b/include/base/cs_syr3_coupling.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_syr3_messages.h b/include/base/cs_syr3_messages.h
index 7963495..dbe8ab9 100644
--- a/include/base/cs_syr3_messages.h
+++ b/include/base/cs_syr3_messages.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_syr4_coupling.h b/include/base/cs_syr4_coupling.h
index 15c26ac..1f643dc 100644
--- a/include/base/cs_syr4_coupling.h
+++ b/include/base/cs_syr4_coupling.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_syr_coupling.h b/include/base/cs_syr_coupling.h
index d0fb533..7fe370d 100644
--- a/include/base/cs_syr_coupling.h
+++ b/include/base/cs_syr_coupling.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_tpar1d.h b/include/base/cs_tpar1d.h
index 87b41ca..2e0fc80 100644
--- a/include/base/cs_tpar1d.h
+++ b/include/base/cs_tpar1d.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cs_ventil.h b/include/base/cs_ventil.h
index 6b7b827..d1217bd 100644
--- a/include/base/cs_ventil.h
+++ b/include/base/cs_ventil.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/cstnum.h b/include/base/cstnum.h
index 35841fc..b113213 100644
--- a/include/base/cstnum.h
+++ b/include/base/cstnum.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/cstphy.h b/include/base/cstphy.h
index dcfe258..8d7a04b 100644
--- a/include/base/cstphy.h
+++ b/include/base/cstphy.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,7 +59,9 @@ integer            icorio
 common / irotat /  icorio
 
 double precision   omegax, omegay, omegaz
-common / rrotat /  omegax, omegay, omegaz
+double precision   irot(3,3), prot(3,3), qrot(3,3), rrot(3,3)
+common / rrotat /  omegax, omegay, omegaz, &
+                   irot, prot  , qrot  , rrot
 
 ! CONSTANTES PHYSIQUES DU FLUIDE
 !   IXYZP0 : INDICATEUR DE REMPLISSAGE DE XYZP0
@@ -156,7 +158,8 @@ common / rturbu / xkappa , cstlog , ypluli ,                      &
                   xlomlg          ,                               &
                   xlesfl          , ales            , bles      , &
                   csmago          , cdries          ,             &
-                  xlesfd          , smagmx
+                  xlesfd          , smagmx          ,             &
+                  cwale
 
 ! CONSTANTES POUR LES SCALAIRES
 
diff --git a/include/base/dimens.h b/include/base/dimens.h
index 9a7e99a..d4a2f13 100644
--- a/include/base/dimens.h
+++ b/include/base/dimens.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/dimfbr.h b/include/base/dimfbr.h
index 1250e4f..d953a93 100644
--- a/include/base/dimfbr.h
+++ b/include/base/dimfbr.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/entsor.h b/include/base/entsor.h
index 46c6a17..3c25e53 100644
--- a/include/base/entsor.h
+++ b/include/base/entsor.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/ihmpre.h b/include/base/ihmpre.h
index 601b241..c33aa8a 100644
--- a/include/base/ihmpre.h
+++ b/include/base/ihmpre.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/mltgrd.h b/include/base/mltgrd.h
index 640e669..754cbd1 100644
--- a/include/base/mltgrd.h
+++ b/include/base/mltgrd.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,7 +40,7 @@
 
 integer           ncegrm, ngrmax,                                 &
                   nagmx0(nvarmx), iagmx0(nvarmx), ncpmgr(nvarmx)
-common / imultg / ncegrm, ngrmax,                                 &
+common / ioptmg / ncegrm, ngrmax,                                 &
                   nagmx0, iagmx0, ncpmgr
 
 ! FIN
diff --git a/include/base/numvar.h b/include/base/numvar.h
index 6284c06..8d3d6b2 100644
--- a/include/base/numvar.h
+++ b/include/base/numvar.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/optcal.h b/include/base/optcal.h
index 263930f..bb881b1 100644
--- a/include/base/optcal.h
+++ b/include/base/optcal.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/paramx.h b/include/base/paramx.h
index 2440779..ce3aa23 100644
--- a/include/base/paramx.h
+++ b/include/base/paramx.h
@@ -169,12 +169,12 @@ parameter(ibfixe=1, igliss=2, ivimpo=3 )
 ! NOMBRE DE STRUCTURES MAX EN ALE
 
 integer nstrmx
-parameter (nstrmx=20)
+parameter (nstrmx=200)
 
 ! NOMBRE DE STRUCTURES MAX EN ALE ET COUPLAGE CODE_ASTER
 
 integer nastmx
-parameter (nastmx=20)
+parameter (nastmx=200)
 
 ! DIMENSIONS MAXIMALES DES TABLEAUX CONTENANT LES BORNES PAR THREAD
 
diff --git a/include/base/period.h b/include/base/period.h
index a65b407..a23fae4 100644
--- a/include/base/period.h
+++ b/include/base/period.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/pointe.h b/include/base/pointe.h
index c1a137a..751e62d 100644
--- a/include/base/pointe.h
+++ b/include/base/pointe.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/tcpumx.h b/include/base/tcpumx.h
index 4bec0a1..30ba6b3 100644
--- a/include/base/tcpumx.h
+++ b/include/base/tcpumx.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/tremai.h b/include/base/tremai.h
index 111e06a..09fd2d0 100644
--- a/include/base/tremai.h
+++ b/include/base/tremai.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/base/vector.h b/include/base/vector.h
index 6d2cbd2..fce6395 100644
--- a/include/base/vector.h
+++ b/include/base/vector.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/base/vortex.h b/include/base/vortex.h
index 48bd550..dd81b42 100644
--- a/include/base/vortex.h
+++ b/include/base/vortex.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/cfbl/cfpoin.h b/include/cfbl/cfpoin.h
index 6131d9d..d490c91 100644
--- a/include/cfbl/cfpoin.h
+++ b/include/cfbl/cfpoin.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/cogz/coincl.h b/include/cogz/coincl.h
index 0316ac4..ce9dee8 100644
--- a/include/cogz/coincl.h
+++ b/include/cogz/coincl.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/cplv/cpincl.h b/include/cplv/cpincl.h
index 4860bae..468d26b 100644
--- a/include/cplv/cpincl.h
+++ b/include/cplv/cpincl.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/ctwr/cs_ctwr.h b/include/ctwr/cs_ctwr.h
index a43c782..9f4201e 100644
--- a/include/ctwr/cs_ctwr.h
+++ b/include/ctwr/cs_ctwr.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/ctwr/cs_ctwr_air_props.h b/include/ctwr/cs_ctwr_air_props.h
index 7bd3e53..2684a45 100644
--- a/include/ctwr/cs_ctwr_air_props.h
+++ b/include/ctwr/cs_ctwr_air_props.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/ctwr/cs_ctwr_halo.h b/include/ctwr/cs_ctwr_halo.h
index 47f4071..384161d 100644
--- a/include/ctwr/cs_ctwr_halo.h
+++ b/include/ctwr/cs_ctwr_halo.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/ctwr/cs_ctwr_mesh.h b/include/ctwr/cs_ctwr_mesh.h
index 997edc8..5500f53 100644
--- a/include/ctwr/cs_ctwr_mesh.h
+++ b/include/ctwr/cs_ctwr_mesh.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/ctwr/ctincl.h b/include/ctwr/ctincl.h
index 148a7ed..3e7e0bb 100644
--- a/include/ctwr/ctincl.h
+++ b/include/ctwr/ctincl.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/elec/elincl.h b/include/elec/elincl.h
index 72b62ef..fd262fb 100644
--- a/include/elec/elincl.h
+++ b/include/elec/elincl.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -149,8 +149,8 @@ common / rclaqu / xclaq , yclaq , zclaq
 integer           ielcor
 common / iecorr / ielcor
 
-double precision  couimp , dpot , puisim , coejou
-common / recorr / couimp , dpot , puisim , coejou
+double precision  couimp , dpot , puisim , coejou, elcou
+common / recorr / couimp , dpot , puisim , coejou, elcou
 
 !--> DONNEES POUR LES ESPECES AYANT UN IMPACT
 !    SUR LE PROBLEME ELECTRIQUE
diff --git a/include/fuel/fuincl.h b/include/fuel/fuincl.h
index fcd9442..a0cd724 100644
--- a/include/fuel/fuincl.h
+++ b/include/fuel/fuincl.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/lagr/cs_lagr.h b/include/lagr/cs_lagr.h
index d8a6157..7635324 100644
--- a/include/lagr/cs_lagr.h
+++ b/include/lagr/cs_lagr.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/lagr/cs_lagr_perio.h b/include/lagr/cs_lagr_perio.h
index 184f16b..2da50e2 100644
--- a/include/lagr/cs_lagr_perio.h
+++ b/include/lagr/cs_lagr_perio.h
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/include/lagr/lagdim.h b/include/lagr/lagdim.h
index fbcb7f3..f9eb6e2 100644
--- a/include/lagr/lagdim.h
+++ b/include/lagr/lagdim.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/lagr/lagpar.h b/include/lagr/lagpar.h
index 99aa95b..74f6e6b 100644
--- a/include/lagr/lagpar.h
+++ b/include/lagr/lagpar.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/lagr/lagran.h b/include/lagr/lagran.h
index ded5b55..09ab100 100644
--- a/include/lagr/lagran.h
+++ b/include/lagr/lagran.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -392,7 +392,7 @@ common / rlasta /  tstat , seuil
 !     Taille limitee par le fait qu on utilise NOMBRD dans
 !       l ecriture des fichiers suites (lagout)
 
-character*50      nomlag(nvplmx) , nomlav(nvplmx)
+character*32      nomlag(nvplmx) , nomlav(nvplmx)
 common / alasts / nomlag         , nomlav
 
 !     OPTION POUR LES HISTORIQUES SUR LES STATS
diff --git a/include/mati/matiss.h b/include/mati/matiss.h
index a837706..bc4b5d5 100644
--- a/include/mati/matiss.h
+++ b/include/mati/matiss.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/pprt/ppcpfu.h b/include/pprt/ppcpfu.h
index dc287b2..09138a6 100644
--- a/include/pprt/ppcpfu.h
+++ b/include/pprt/ppcpfu.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/pprt/ppincl.h b/include/pprt/ppincl.h
index 3f915de..a048f8e 100644
--- a/include/pprt/ppincl.h
+++ b/include/pprt/ppincl.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/pprt/ppppar.h b/include/pprt/ppppar.h
index a873a2e..43b51f4 100644
--- a/include/pprt/ppppar.h
+++ b/include/pprt/ppppar.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/pprt/ppthch.h b/include/pprt/ppthch.h
index 87afe54..2f2aa81 100644
--- a/include/pprt/ppthch.h
+++ b/include/pprt/ppthch.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/include/rayt/radiat.h b/include/rayt/radiat.h
index 8db7efb..2a90416 100644
--- a/include/rayt/radiat.h
+++ b/include/rayt/radiat.h
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
diff --git a/libsyrcs/Makefile.in b/libsyrcs/Makefile.in
index ba39eae..fb4960e 100644
--- a/libsyrcs/Makefile.in
+++ b/libsyrcs/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -40,8 +41,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -63,6 +65,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -78,14 +81,29 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(libdir)"
-libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libsyrcs_la_DEPENDENCIES =
 am_libsyrcs_la_OBJECTS = syr_comm.lo syr_coupling.lo syr_cs.lo \
@@ -97,6 +115,7 @@ libsyrcs_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
@@ -153,6 +172,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -189,11 +210,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -208,15 +227,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -261,7 +283,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -278,8 +301,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -324,14 +350,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  libsyrcs/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  libsyrcs/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libsyrcs/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu libsyrcs/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -349,23 +375,28 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
 	  if test -f $$p; then \
-	    f=$(am__strip_dir) \
-	    echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
-	    $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+	    list2="$$list2 $$p"; \
 	  else :; fi; \
-	done
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+	}
 
 uninstall-libLTLIBRARIES:
 	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  p=$(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
 	done
 
 clean-libLTLIBRARIES:
@@ -392,21 +423,21 @@ distclean-compile:
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
@@ -422,14 +453,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -437,29 +468,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -480,13 +516,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -517,6 +557,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -538,6 +579,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -546,18 +589,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am: install-libLTLIBRARIES
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -596,6 +649,7 @@ uninstall-am: uninstall-libLTLIBRARIES
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags uninstall uninstall-am uninstall-libLTLIBRARIES
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/libsyrcs/syr_comm.c b/libsyrcs/syr_comm.c
index b367735..4b03a34 100644
--- a/libsyrcs/syr_comm.c
+++ b/libsyrcs/syr_comm.c
@@ -844,7 +844,7 @@ _comm_mpi_open(syr_comm_t  *comm,
 static void
 _comm_sock_connect(syr_comm_t  *comm,
                    int          proc_id,
-                   const char  *host_name,
+                   char        *host_name,
                    int          port_num)
 {
 
diff --git a/libsyrcs/syr_cs.c b/libsyrcs/syr_cs.c
index 2bb14ba..43395d7 100644
--- a/libsyrcs/syr_cs.c
+++ b/libsyrcs/syr_cs.c
@@ -279,6 +279,7 @@ main(int argc,
   printf("\n*** Interpretation de la ligne de commande ***\n");
   for (numarg = 0; numarg < argc; numarg++)
     printf("%s ",argv[numarg]);
+  printf("\n");
   fflush(stdout);
 
   numarg = 0;
diff --git a/po/fr.po b/po/fr.po
index 2ced461..50120ef 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,10 +7,10 @@
 # Saturne <saturne-support at edf.fr>, 2008.
 msgid ""
 msgstr ""
-"Project-Id-Version: ncs 1.3\n"
+"Project-Id-Version: ncs 2.0\n"
 "Report-Msgid-Bugs-To: saturne-support at edf.fr\n"
-"POT-Creation-Date: 2009-07-22 19:03+0200\n"
-"PO-Revision-Date: 2009-03-25 16:40+0100\n"
+"POT-Creation-Date: 2010-02-12 19:18+0100\n"
+"PO-Revision-Date: 2010-01-11 12:50+0100\n"
 "Last-Translator: Code_Saturne <saturne-support at edf.fr>\n"
 "Language-Team: French <traduc at traduc.org>\n"
 "MIME-Version: 1.0\n"
@@ -18,7 +18,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: src/apps/cs_solver.c:295
+#: src/apps/cs_solver.c:292
 #, c-format
 msgid ""
 "\n"
@@ -27,7 +27,7 @@ msgstr ""
 "\n"
 " Découpage des faces gauches (%.3g s)\n"
 
-#: src/apps/cs_solver.c:301
+#: src/apps/cs_solver.c:298
 msgid ""
 "\n"
 " Renumbering mesh:\n"
@@ -35,11 +35,11 @@ msgstr ""
 "\n"
 " Renumérotation du maillage:\n"
 
-#: src/apps/cs_solver.c:357
+#: src/apps/cs_solver.c:354
 msgid "Mesh"
 msgstr "Maillage"
 
-#: src/apps/cs_solver.c:371
+#: src/apps/cs_solver.c:368
 #, c-format
 msgid ""
 "\n"
@@ -48,7 +48,7 @@ msgstr ""
 "\n"
 " Calcul des grandeurs géométriques (%.3g s)\n"
 
-#: src/apps/cs_solver.c:387
+#: src/apps/cs_solver.c:384
 msgid ""
 "\n"
 " Computing quality criteria\n"
@@ -56,50 +56,50 @@ msgstr ""
 "\n"
 " Calcul des critères de qualité\n"
 
-#: src/apps/cs_solver.c:404
+#: src/apps/cs_solver.c:406
 #, c-format
 msgid ""
 "\n"
 " --- Main Fortran work arrays:\n"
-"       LONGIA =   %10d (Number of integers)\n"
-"       LONGRA =   %10d (Number of reals)\n"
+"       longia =   %10d (Number of integers)\n"
+"       longra =   %10d (Number of reals)\n"
 "       (%d bytes/integer, %d bytes/real)\n"
 msgstr ""
 "\n"
 " --- Tableaux de travail Fortran principaux :\n"
-"       LONGIA =   %10d (Nombre d'entiers)\n"
-"       LONGRA =   %10d (Nombre de réels)\n"
+"       longia =   %10d (Nombre d'entiers)\n"
+"       longra =   %10d (Nombre de réels)\n"
 "       (%d octets/entier, %d octets/réel)\n"
 
-#: src/apps/cs_solver.c:414
+#: src/apps/cs_solver.c:416
 #, c-format
 msgid ""
 "\n"
 " --- Developer Fortran work arrays:\n"
-"       NIDEVE =   %10d (Number of integer)\n"
-"       NRDEVE =   %10d (Number of reals)\n"
+"       nideve =   %10d (Number of integer)\n"
+"       nrdeve =   %10d (Number of reals)\n"
 msgstr ""
 "\n"
 " --- Tableaux de travail Fortran développeur :\n"
-"       NIDEVE =   %10d (Nombre d'entiers)\n"
-"       NRDEVE =   %10d (Nombre de réels)\n"
+"       nideve =   %10d (Nombre d'entiers)\n"
+"       nrdeve =   %10d (Nombre de réels)\n"
 
-#: src/apps/cs_solver.c:420
+#: src/apps/cs_solver.c:422
 #, c-format
 msgid ""
 "\n"
 " --- User Fortran work arrays:\n"
-"       NITUSE =   %10d (Number of integers)\n"
-"       NRTUSE =   %10d (Number of reals)\n"
+"       nituse =   %10d (Number of integers)\n"
+"       nrtuse =   %10d (Number of reals)\n"
 "\n"
 msgstr ""
 "\n"
 " --- Tableaux de travail Fortran utilisateur :\n"
-"       NITUSE =   %10d (Nombre d'entiers)\n"
-"       NRTUSE =   %10d (Nombre de réels)\n"
+"       nituse =   %10d (Nombre d'entiers)\n"
+"       nrtuse =   %10d (Nombre de réels)\n"
 "\n"
 
-#: src/apps/cs_solver.c:482
+#: src/apps/cs_solver.c:484
 msgid ""
 "\n"
 " Destroying structures and ending computation\n"
@@ -107,7 +107,7 @@ msgstr ""
 "\n"
 " Destruction des structures et clôture du calcul\n"
 
-#: src/base/cs_base.c:239
+#: src/base/cs_base.c:222
 #, c-format
 msgid ""
 "Fatal error: bft_printf() called on a message of size %d\n"
@@ -116,7 +116,7 @@ msgstr ""
 "Erreur fatale: bft_printf() appellé sur message de taille %d\n"
 "alors que le tampon d'impression est de taille %d."
 
-#: src/base/cs_base.c:403
+#: src/base/cs_base.c:398
 #, c-format
 msgid ""
 "\n"
@@ -125,7 +125,7 @@ msgstr ""
 "\n"
 "Erreur système : %s\n"
 
-#: src/base/cs_base.c:405
+#: src/base/cs_base.c:400
 #, c-format
 msgid ""
 "\n"
@@ -136,7 +136,7 @@ msgstr ""
 "%s:%d: Erreur fatale.\n"
 "\n"
 
-#: src/base/cs_base.c:425
+#: src/base/cs_base.c:420
 msgid ""
 "\n"
 "\n"
@@ -150,27 +150,27 @@ msgstr ""
 "------------------------------\n"
 "\n"
 
-#: src/base/cs_base.c:432
+#: src/base/cs_base.c:427
 #, c-format
 msgid "Theoretical current allocated memory:   %lu kB\n"
 msgstr "Mémoire dynamique instrumentée théorique : %lu ko\n"
 
-#: src/base/cs_base.c:436
+#: src/base/cs_base.c:431
 #, c-format
 msgid "Theoretical maximum allocated memory:   %lu kB\n"
 msgstr "Mémoire dynamique instrumentée théorique : %lu ko\n"
 
-#: src/base/cs_base.c:446
+#: src/base/cs_base.c:441
 #, c-format
 msgid "Maximum program memory measure:         %lu kB\n"
 msgstr "Mémoire programme mesurée maximale:        %lu ko\n"
 
-#: src/base/cs_base.c:454
+#: src/base/cs_base.c:449
 #, c-format
 msgid "Current program memory measure:         %lu kB\n"
 msgstr "Mémoire programme mesurée courante:        %lu ko\n"
 
-#: src/base/cs_base.c:516
+#: src/base/cs_base.c:511
 msgid ""
 "\n"
 "Call stack:\n"
@@ -178,7 +178,7 @@ msgstr ""
 "\n"
 "Pile d'appels :\n"
 
-#: src/base/cs_base.c:544
+#: src/base/cs_base.c:539
 msgid ""
 "End of stack\n"
 "\n"
@@ -186,7 +186,7 @@ msgstr ""
 "Fin de la pile\n"
 "\n"
 
-#: src/base/cs_base.c:562
+#: src/base/cs_base.c:557
 msgid ""
 "SIGHUP signal (hang-up) intercepted.\n"
 "--> computation interrupted.\n"
@@ -194,7 +194,7 @@ msgstr ""
 "Signal SIGHUP (déconnexion) intercepté.\n"
 "--> calcul interrompu.\n"
 
-#: src/base/cs_base.c:568
+#: src/base/cs_base.c:563
 msgid ""
 "SIGINT signal (Control+C or equivalent) received.\n"
 "--> computation interrupted by user.\n"
@@ -202,7 +202,7 @@ msgstr ""
 "Signal SIGINT (Control+C ou équivalent) reçu.\n"
 "--> calcul interrompu par l'utilisateur.\n"
 
-#: src/base/cs_base.c:573
+#: src/base/cs_base.c:568
 msgid ""
 "SIGTERM signal (termination) received.\n"
 "--> computation interrupted by environment.\n"
@@ -210,24 +210,24 @@ msgstr ""
 "Signal SIGTERM (terminaison) reçu.\n"
 "--> calcul interrompu par l'environnement.\n"
 
-#: src/base/cs_base.c:578
+#: src/base/cs_base.c:573
 msgid "SIGFPE signal (floating point exception) intercepted!\n"
 msgstr "Signal SIGFPE (exception en virgule flottante) intercepté !\n"
 
-#: src/base/cs_base.c:583
+#: src/base/cs_base.c:578
 msgid "SIGSEGV signal (forbidden memory area access) intercepted!\n"
 msgstr "Signal SIGSEGV (accès à une zone mémoire interdite) intercepté !\n"
 
-#: src/base/cs_base.c:589
+#: src/base/cs_base.c:584
 msgid "SIGXCPU signal (CPU time limit reached) intercepted.\n"
 msgstr "Signal SIGXCPU (temps CPU limite atteint) intercepté.\n"
 
-#: src/base/cs_base.c:595
+#: src/base/cs_base.c:590
 #, c-format
 msgid "Signal %d intercepted!\n"
 msgstr "Signal %d intercepté !\n"
 
-#: src/base/cs_base.c:658
+#: src/base/cs_base.c:648
 #, c-format
 msgid ""
 "\n"
@@ -238,7 +238,7 @@ msgstr ""
 "Erreur MPI (communicateur %s):\n"
 "%s\n"
 
-#: src/base/cs_base.c:661
+#: src/base/cs_base.c:651
 #, c-format
 msgid ""
 "\n"
@@ -249,45 +249,45 @@ msgstr ""
 "Erreur MPI :\n"
 "%s\n"
 
-#: src/base/cs_base.c:863
+#: src/base/cs_base.c:766
 #, c-format
 msgid ""
-" Sub-routine calling IASIZE:                %s\n"
-" Memory needed in IA (number of integers):  %d\n"
+" Sub-routine calling iasize:                %s\n"
+" Memory needed in ia (number of integers):  %d\n"
 "         available:                         %d\n"
 "\n"
-" ----> Define IASIZE to a value at least equal to %d integers)."
+" ----> Define iasize to a value at least equal to %d integers)."
 msgstr ""
-" Sous-programme appelant IASIZE :                   %s\n"
-" Mémoire nécessaire dans IA (en nombre d'entiers) : %d\n"
+" Sous-programme appelant iasize :                   %s\n"
+" Mémoire nécessaire dans ia (en nombre d'entiers) : %d\n"
 "         disponible :                               %d\n"
 "\n"
-" ----> Définir IASIZE au moins égale à %d entiers)."
+" ----> Définir iasize au moins égale à %d entiers)."
 
-#: src/base/cs_base.c:907
+#: src/base/cs_base.c:810
 #, c-format
 msgid ""
-" Sub-routine calling RASIZE:             %s\n"
-" Memory needed in RA (number of reals):  %d\n"
+" Sub-routine calling rasize:             %s\n"
+" Memory needed in ra (number of reals):  %d\n"
 "         available:                      %d\n"
 "\n"
-" ----> Define RASIZE to a value at least equal to %d reals)."
+" ----> Define rasize to a value at least equal to %d reals)."
 msgstr ""
-" Sous-programme appelant RASIZE :                   %s\n"
-" Mémoire nécessaire dans RA (en nombre de réels) :  %d\n"
+" Sous-programme appelant rasize :                   %s\n"
+" Mémoire nécessaire dans ra (en nombre de réels) :  %d\n"
 "         disponible :                               %d\n"
 "\n"
-" ----> Définir RASIZE au moins égale à %d réels)."
+" ----> Définir rasize au moins égale à %d réels)."
 
-#: src/base/cs_base.c:1193
+#: src/base/cs_base.c:1091
 msgid "Total memory used:                       "
 msgstr "Consommation mémoire totale mesurée :     "
 
-#: src/base/cs_base.c:1194
+#: src/base/cs_base.c:1092
 msgid "Theoretical instrumented dynamic memory: "
 msgstr "Mémoire dynamique instrumentée théorique :"
 
-#: src/base/cs_base.c:1198
+#: src/base/cs_base.c:1096
 msgid ""
 "\n"
 "Memory use summary:\n"
@@ -297,22 +297,22 @@ msgstr ""
 "Bilan de l'occupation mémoire :\n"
 "\n"
 
-#: src/base/cs_base.c:1261
+#: src/base/cs_base.c:1159
 #, c-format
 msgid "  %s %12.3f %cb\n"
 msgstr "  %s %12.3f %co\n"
 
-#: src/base/cs_base.c:1266
+#: src/base/cs_base.c:1164
 #, c-format
 msgid "                             local minimum: %12.3f %cb  (rank %d)\n"
 msgstr "                             minimum local : %12.3f %co  (rang %d)\n"
 
-#: src/base/cs_base.c:1269
+#: src/base/cs_base.c:1167
 #, c-format
 msgid "                             local maximum: %12.3f %cb  (rank %d)\n"
 msgstr "                             maximum local : %12.3f %co  (rang %d)\n"
 
-#: src/base/cs_base.c:1309
+#: src/base/cs_base.c:1207
 #, c-format
 msgid ""
 "\n"
@@ -331,7 +331,7 @@ msgstr ""
 "   Mémoire de travail maximale locale demandée %12.3f %co\n"
 "                                      utilisée %12.3f %co\n"
 
-#: src/base/cs_base.c:1346
+#: src/base/cs_base.c:1244
 msgid ""
 "\n"
 "Calculation time summary:\n"
@@ -339,7 +339,7 @@ msgstr ""
 "\n"
 "Bilan des temps de calcul :\n"
 
-#: src/base/cs_base.c:1360
+#: src/base/cs_base.c:1258
 #, c-format
 msgid ""
 "\n"
@@ -348,12 +348,12 @@ msgstr ""
 "\n"
 "  Temps CPU utilisateur : %12.3f s\n"
 
-#: src/base/cs_base.c:1362
+#: src/base/cs_base.c:1260
 #, c-format
 msgid "  System CPU time:     %12.3f s\n"
 msgstr "  Temps CPU système :     %12.3f s\n"
 
-#: src/base/cs_base.c:1367
+#: src/base/cs_base.c:1265
 #, c-format
 msgid ""
 "\n"
@@ -362,12 +362,12 @@ msgstr ""
 "\n"
 "  Temps CPU :             %12.3f s\n"
 
-#: src/base/cs_base.c:1376
+#: src/base/cs_base.c:1274
 #, c-format
 msgid "  Total CPU time:      %12.3f s\n"
 msgstr "  Temps CPU cumulé :      %12.3f s\n"
 
-#: src/base/cs_base.c:1387
+#: src/base/cs_base.c:1285
 #, c-format
 msgid ""
 "\n"
@@ -376,52 +376,52 @@ msgstr ""
 "\n"
 "  Temps écoulé :          %12.3f s\n"
 
-#: src/base/cs_base.c:1390
+#: src/base/cs_base.c:1288
 #, c-format
 msgid "  CPU / elapsed time   %12.3f\n"
 msgstr "  Temps CPU / écoulé      %12.3f\n"
 
-#: src/base/cs_base.c:1482
+#: src/base/cs_base.c:1380
 msgid "Local case configuration:\n"
 msgstr "Configuration locale du cas :\n"
 
-#: src/base/cs_base.c:1484
+#: src/base/cs_base.c:1382
 msgid "Date:              "
 msgstr "Date :             "
 
-#: src/base/cs_base.c:1492
+#: src/base/cs_base.c:1390
 msgid "System:            "
 msgstr "Système :          "
 
-#: src/base/cs_base.c:1494
+#: src/base/cs_base.c:1392
 msgid "Machine:           "
 msgstr "Machine :          "
 
-#: src/base/cs_base.c:1498
+#: src/base/cs_base.c:1396
 msgid "Processor:         "
 msgstr "Processeur :       "
 
-#: src/base/cs_base.c:1501
+#: src/base/cs_base.c:1399
 msgid "Memory:            "
 msgstr "Mémoire :          "
 
-#: src/base/cs_base.c:1504
+#: src/base/cs_base.c:1402
 msgid "User:              "
 msgstr "Utilisateur :      "
 
-#: src/base/cs_base.c:1508
+#: src/base/cs_base.c:1406
 msgid "Directory:         "
 msgstr "Répertoire :       "
 
-#: src/base/cs_base.c:1511
+#: src/base/cs_base.c:1409
 msgid "MPI ranks:         "
 msgstr "Rangs MPI :        "
 
-#: src/base/cs_base.c:1514
+#: src/base/cs_base.c:1412
 msgid "OpenMP threads:    "
 msgstr "Threads OpenMP:    "
 
-#: src/base/cs_base.c:1546
+#: src/base/cs_base.c:1442
 #, c-format
 msgid ""
 "\n"
@@ -522,8 +522,8 @@ msgstr ""
 #: src/base/cs_benchmark.c:544 src/base/cs_benchmark.c:568
 #: src/base/cs_benchmark.c:998 src/base/cs_benchmark.c:1024
 #: src/base/cs_benchmark.c:1054 src/base/cs_benchmark.c:1084
-#: src/base/cs_benchmark.c:1136 src/base/cs_benchmark.c:1349
-#: src/base/cs_benchmark.c:1374 src/base/cs_benchmark.c:1402
+#: src/base/cs_benchmark.c:1136 src/base/cs_benchmark.c:1351
+#: src/base/cs_benchmark.c:1376 src/base/cs_benchmark.c:1404
 #, c-format
 msgid "  (calls: %d;  test sum: %12.5f)\n"
 msgstr "  (appels : %d;  somme test : %12.5f)\n"
@@ -722,7 +722,7 @@ msgstr ""
 "Produit (matrice sans diagonale).vecteur (%s)\n"
 "----------------------------------------\n"
 
-#: src/base/cs_benchmark.c:1345
+#: src/base/cs_benchmark.c:1347
 msgid ""
 "\n"
 "Matrix.vector product, extradiagonal part, variant 0\n"
@@ -732,7 +732,7 @@ msgstr ""
 "Produit matrice.vecteur, partie extradiagonale, variante 0\n"
 "-----------------------\n"
 
-#: src/base/cs_benchmark.c:1370
+#: src/base/cs_benchmark.c:1372
 msgid ""
 "\n"
 "Matrix.vector product, extradiagonal part, variant 1\n"
@@ -742,7 +742,7 @@ msgstr ""
 "Produit matrice.vecteur, partie extradiagonale, variante 1\n"
 "-----------------------\n"
 
-#: src/base/cs_benchmark.c:1398
+#: src/base/cs_benchmark.c:1400
 msgid ""
 "\n"
 "Matrix.vector product, face values only\n"
@@ -752,7 +752,7 @@ msgstr ""
 "Produit matrice.vecteur, valeurs aux faces uniquement\n"
 "-----------------------\n"
 
-#: src/base/cs_benchmark.c:1481
+#: src/base/cs_benchmark.c:1483
 msgid ""
 "\n"
 "Benchmark mode activated\n"
@@ -762,29 +762,29 @@ msgstr ""
 "Activation du mode Benchmark\n"
 "============================\n"
 
-#: src/base/cs_benchmark.c:1523 src/base/cs_benchmark.c:1553
-#: src/base/cs_benchmark.c:1596 src/base/cs_matrix.c:312
+#: src/base/cs_benchmark.c:1525 src/base/cs_benchmark.c:1555
+#: src/base/cs_benchmark.c:1598 src/base/cs_matrix.c:316
 msgid "native"
 msgstr "native"
 
-#: src/base/cs_benchmark.c:1533 src/base/cs_benchmark.c:1569
-#: src/base/cs_benchmark.c:1610 src/base/cs_matrix.c:313
+#: src/base/cs_benchmark.c:1535 src/base/cs_benchmark.c:1571
+#: src/base/cs_benchmark.c:1612 src/base/cs_matrix.c:317
 msgid "CSR"
 msgstr "CSR"
 
-#: src/base/cs_benchmark.c:1541
+#: src/base/cs_benchmark.c:1543
 msgid "CSR sym"
 msgstr "CSR sym"
 
-#: src/base/cs_benchmark.c:1560 src/base/cs_benchmark.c:1603
+#: src/base/cs_benchmark.c:1562 src/base/cs_benchmark.c:1605
 msgid "native, sym coeffs"
 msgstr "native, sym coeffs"
 
-#: src/base/cs_benchmark.c:1576
+#: src/base/cs_benchmark.c:1578
 msgid "CSR, sym coeffs"
 msgstr "CSR, sym coeffs"
 
-#: src/base/cs_benchmark.c:1583 src/base/cs_benchmark.c:1617
+#: src/base/cs_benchmark.c:1585 src/base/cs_benchmark.c:1619
 msgid "CSR_sym"
 msgstr "CSR_sym"
 
@@ -904,7 +904,8 @@ msgstr ""
 "Écriture de %d valeurs de type %s, dep_temps %s\n"
 "        (temps %f, itération %d) ..."
 
-#: src/base/cs_calcium.c:475 src/base/cs_syr4_coupling.c:210
+#: src/base/cs_calcium.c:475 src/base/cs_sat_coupling.c:276
+#: src/base/cs_syr4_coupling.c:210
 msgid "[ok]\n"
 msgstr "[ok]\n"
 
@@ -951,7 +952,7 @@ msgstr ""
 "     rang racine : %d ; nb_rangs : %d\n"
 "\n"
 
-#: src/base/cs_ext_neighborhood.c:977
+#: src/base/cs_ext_neighborhood.c:1005
 msgid ""
 "\n"
 "WARNING\n"
@@ -969,7 +970,7 @@ msgstr ""
 "(maillage 1D). Vérifiez que c'est bien votre cas, sinon\n"
 "contactez le support.\n"
 
-#: src/base/cs_ext_neighborhood.c:1116
+#: src/base/cs_ext_neighborhood.c:1162
 #, c-format
 msgid ""
 "\n"
@@ -1006,26 +1007,26 @@ msgstr ""
 "Erreur de connectivité :\n"
 "La face %d voit la cellule %d des deux cotés."
 
-#: src/base/cs_gui_boundary_conditions.c:467
+#: src/base/cs_gui_boundary_conditions.c:472
 #, c-format
 msgid "Invalid number of coal-> dp_FCP: %i xml: %i\n"
 msgstr ""
 
-#: src/base/cs_gui_boundary_conditions.c:568 src/base/cs_gui.c:4488
-#: src/base/cs_gui.c:4536 src/base/cs_gui.c:4584 src/base/cs_gui.c:4632
-#: src/base/cs_gui.c:4706 src/base/cs_gui_mobile_mesh.c:281
+#: src/base/cs_gui_boundary_conditions.c:577 src/base/cs_gui.c:4809
+#: src/base/cs_gui.c:4857 src/base/cs_gui.c:4905 src/base/cs_gui.c:4953
+#: src/base/cs_gui.c:5027 src/base/cs_gui_mobile_mesh.c:281
 #, c-format
 msgid "Error: can not interprete expression: %s\n"
 msgstr ""
 
-#: src/base/cs_gui_boundary_conditions.c:574 src/base/cs_gui.c:4492
-#: src/base/cs_gui.c:4540 src/base/cs_gui.c:4588 src/base/cs_gui.c:4636
-#: src/base/cs_gui.c:4710 src/base/cs_gui_mobile_mesh.c:291
+#: src/base/cs_gui_boundary_conditions.c:583 src/base/cs_gui.c:4813
+#: src/base/cs_gui.c:4861 src/base/cs_gui.c:4909 src/base/cs_gui.c:4957
+#: src/base/cs_gui.c:5031 src/base/cs_gui_mobile_mesh.c:291
 #, c-format
 msgid "Error: can not find the required symbol: %s\n"
 msgstr ""
 
-#: src/base/cs_gui_boundary_conditions.c:892
+#: src/base/cs_gui_boundary_conditions.c:901
 #, c-format
 msgid ""
 "@                                                            \n"
@@ -1048,12 +1049,12 @@ msgid ""
 "@                                                            \n"
 msgstr ""
 
-#: src/base/cs_gui_boundary_conditions.c:1063
+#: src/base/cs_gui_boundary_conditions.c:1073
 #, c-format
 msgid "zone's label number %i is greater than %i, the maximum allowed \n"
 msgstr ""
 
-#: src/base/cs_gui_boundary_conditions.c:1081 src/base/cs_selector.c:243
+#: src/base/cs_gui_boundary_conditions.c:1091 src/base/cs_selector.c:243
 #, c-format
 msgid ""
 "The group or attribute \"%s\" in the selection\n"
@@ -1066,13 +1067,13 @@ msgstr ""
 "\"%s\"\n"
 " ne correspond à aucune face de bord.\n"
 
-#: src/base/cs_gui_boundary_conditions.c:1649
-#: src/base/cs_gui_boundary_conditions.c:1812
+#: src/base/cs_gui_boundary_conditions.c:1680
+#: src/base/cs_gui_boundary_conditions.c:1843
 #, c-format
 msgid "boundary nature %s is unknown \n"
 msgstr ""
 
-#: src/base/cs_gui_boundary_conditions.c:1825
+#: src/base/cs_gui_boundary_conditions.c:1856
 #, c-format
 msgid ""
 "@                                                            \n"
@@ -1096,7 +1097,7 @@ msgid ""
 "@                                                            \n"
 msgstr ""
 
-#: src/base/cs_gui_boundary_conditions.c:1864
+#: src/base/cs_gui_boundary_conditions.c:1895
 #, c-format
 msgid ""
 "@                                                            \n"
@@ -1125,9 +1126,9 @@ msgstr ""
 msgid "Variable index %d out of bounds (1 to %d)"
 msgstr ""
 
-#: src/base/cs_gui.c:207 src/base/cs_gui.c:366 src/base/cs_gui.c:1379
-#: src/base/cs_gui.c:1514 src/base/cs_gui.c:1640 src/base/cs_gui.c:1770
-#: src/base/cs_gui.c:1963 src/base/cs_gui.c:2137 src/base/cs_gui.c:2538
+#: src/base/cs_gui.c:207 src/base/cs_gui.c:366 src/base/cs_gui.c:1356
+#: src/base/cs_gui.c:1491 src/base/cs_gui.c:1617 src/base/cs_gui.c:1747
+#: src/base/cs_gui.c:1940 src/base/cs_gui.c:2114 src/base/cs_gui.c:2508
 #: src/base/cs_gui_matisse.c:116 src/base/cs_gui_matisse.c:139
 #: src/base/cs_gui_matisse.c:159 src/base/cs_gui_matisse.c:189
 #: src/base/cs_gui_mobile_mesh.c:158 src/base/cs_gui_mobile_mesh.c:220
@@ -1143,53 +1144,53 @@ msgstr ""
 msgid "Invalid thermal model: %s\n"
 msgstr ""
 
-#: src/base/cs_gui.c:1316
+#: src/base/cs_gui.c:1294
 #, c-format
 msgid ""
 "Coordinate %s of the monitoring probe number %i not found.\n"
 "Xpath: %s\n"
 msgstr ""
 
-#: src/base/cs_gui.c:2459
+#: src/base/cs_gui.c:2432
 #, c-format
 msgid ""
 "Invalid xpath: %s\n"
 " name not found"
 msgstr ""
 
-#: src/base/cs_gui.c:2509
+#: src/base/cs_gui.c:2479
 #, c-format
 msgid ""
 "Invalid markup name: %s\n"
 " label not found"
 msgstr ""
 
-#: src/base/cs_gui.c:2660
+#: src/base/cs_gui.c:2630
 #, c-format
 msgid "Invalid turbulence model: %s.\n"
 msgstr ""
 
-#: src/base/cs_gui.c:2770
+#: src/base/cs_gui.c:2740
 #, c-format
 msgid "Scalar: %i and its variance: %i are the same.\n"
 msgstr ""
 
-#: src/base/cs_gui.c:3130
+#: src/base/cs_gui.c:3102
 #, c-format
 msgid ""
 "The kernel variables number %i and the calculated one by the GUI %i are not "
 "the same.\n"
 msgstr ""
 
-#: src/base/cs_gui.c:3561
+#: src/base/cs_gui.c:3550
 msgid "Specific heat value is zero or not found in the xml file.\n"
 msgstr ""
 
-#: src/base/cs_gui.c:3582
+#: src/base/cs_gui.c:3571
 msgid "mass molar value is zero or not found in the xml file.\n"
 msgstr ""
 
-#: src/base/cs_gui.c:3590
+#: src/base/cs_gui.c:3579
 msgid "Density value is zero or not found in the xml file.\n"
 msgstr ""
 
@@ -1199,14 +1200,14 @@ msgstr ""
 msgid "number of properties is not correct: %i instead of: %i\n"
 msgstr ""
 
-#: src/base/cs_gui.c:4215 src/base/cs_gui_particles.c:778
-#: src/base/cs_gui_particles.c:784 src/base/cs_gui_particles.c:790
+#: src/base/cs_gui.c:4212 src/base/cs_gui_particles.c:782
+#: src/base/cs_gui_particles.c:788 src/base/cs_gui_particles.c:794
 #: src/base/cs_gui_radiative_transfer.c:845
 #, c-format
 msgid "Name of variable %i was never set.\n"
 msgstr ""
 
-#: src/base/cs_gui.c:4321 src/base/cs_selector.c:315
+#: src/base/cs_gui.c:4293 src/base/cs_selector.c:315
 #, c-format
 msgid ""
 "The group or attribute \"%s\" in the selection\n"
@@ -1219,7 +1220,7 @@ msgstr ""
 "\"%s\"\n"
 " ne correspond à aucune cellule.\n"
 
-#: src/base/cs_gui.c:4898 src/base/cs_gui_util.c:159
+#: src/base/cs_gui.c:5211 src/base/cs_gui_util.c:159
 #, c-format
 msgid "Unable to open the file: %s\n"
 msgstr ""
@@ -1239,32 +1240,32 @@ msgstr ""
 msgid "Missing 'value' markup for xpath : %s\n"
 msgstr ""
 
-#: src/base/cs_gui_mobile_mesh.c:321
+#: src/base/cs_gui_mobile_mesh.c:323
 #, c-format
 msgid "Unknow ale property choice %s.\n"
 msgstr ""
 
-#: src/base/cs_gui_mobile_mesh.c:424 src/base/cs_gui_mobile_mesh.c:494
+#: src/base/cs_gui_mobile_mesh.c:436 src/base/cs_gui_mobile_mesh.c:506
 #, c-format
 msgid "Boundary nature formula is null for %s.\n"
 msgstr ""
 
-#: src/base/cs_gui_mobile_mesh.c:628
+#: src/base/cs_gui_mobile_mesh.c:643
 #, c-format
 msgid "cannot get value for %s %s %s"
 msgstr ""
 
-#: src/base/cs_gui_mobile_mesh.c:760
+#: src/base/cs_gui_mobile_mesh.c:777
 #, c-format
 msgid "Formula is null for %s %s"
 msgstr ""
 
-#: src/base/cs_gui_mobile_mesh.c:949
+#: src/base/cs_gui_mobile_mesh.c:985
 msgid "Formula is null for ale.\n"
 msgstr ""
 
-#: src/base/cs_gui_particles.c:478 src/base/cs_gui_particles.c:508
-#: src/base/cs_gui_particles.c:538
+#: src/base/cs_gui_particles.c:482 src/base/cs_gui_particles.c:512
+#: src/base/cs_gui_particles.c:542
 #, c-format
 msgid "Variable index %i out of bounds (1 to %i)"
 msgstr ""
@@ -1284,7 +1285,7 @@ msgstr ""
 msgid "--output boundary faces: %s value %i \n"
 msgstr ""
 
-#: src/base/cs_gui_radiative_transfer.c:1009
+#: src/base/cs_gui_radiative_transfer.c:1012
 msgid ""
 "One tries to define radiative boundary conditions on boundary which is not a "
 "wall.\n"
@@ -1398,7 +1399,7 @@ msgid ""
 "Xpath: %s\n"
 msgstr ""
 
-#: src/base/cs_io.c:283 src/base/cs_io.c:324
+#: src/base/cs_io.c:284 src/base/cs_io.c:325
 #, c-format
 msgid ""
 "Compilation configuration / porting error:\n"
@@ -1406,7 +1407,7 @@ msgid ""
 "size_t is %d bits, unsigned long long %d bits"
 msgstr ""
 
-#: src/base/cs_io.c:629
+#: src/base/cs_io.c:631
 #, c-format
 msgid ""
 "Error reading file: \"%s\".\n"
@@ -1423,7 +1424,7 @@ msgstr ""
 "Les 64 premiers octets lus contiennent :\n"
 "\"%s\"\n"
 
-#: src/base/cs_io.c:649
+#: src/base/cs_io.c:651
 #, c-format
 msgid ""
 "Error reading file: \"%s\".\n"
@@ -1436,12 +1437,12 @@ msgstr ""
 "On attendait \"%s\"\n"
 "On a lu \"%s\"."
 
-#: src/base/cs_io.c:696
+#: src/base/cs_io.c:698
 #, c-format
 msgid "Error writing the header of file: \"%s\".\n"
 msgstr "Erreur à l'écriture de l'entête du fichier : \"%s\".\n"
 
-#: src/base/cs_io.c:845
+#: src/base/cs_io.c:847
 #, c-format
 msgid ""
 "Restart file \"%s\"\n"
@@ -1450,7 +1451,7 @@ msgstr ""
 "Le fichier suite \"%s\"\n"
 "au format 1.1 n'est pas conforme."
 
-#: src/base/cs_io.c:894
+#: src/base/cs_io.c:896
 #, c-format
 msgid ""
 "Restart file \"%s\" does not correspond\n"
@@ -1459,7 +1460,7 @@ msgstr ""
 "Le fichier suite \"%s\" ne correspond pas\n"
 "à la partie %d du fichier suite d'origine."
 
-#: src/base/cs_io.c:1123
+#: src/base/cs_io.c:1125
 #, c-format
 msgid ""
 "\n"
@@ -1468,7 +1469,7 @@ msgstr ""
 "\n"
 "  Section lue sur \"%s\" :\n"
 
-#: src/base/cs_io.c:1128
+#: src/base/cs_io.c:1130
 #, c-format
 msgid ""
 "\n"
@@ -1477,7 +1478,7 @@ msgstr ""
 "\n"
 "  Section écrite sur \"%s\" :\n"
 
-#: src/base/cs_io.c:1157
+#: src/base/cs_io.c:1159
 #, c-format
 msgid ""
 "    section name:           \"%s\"\n"
@@ -1486,32 +1487,32 @@ msgstr ""
 "    nom de la rubrique :    \"%s\"\n"
 "    nombre d'éléments :     %lu\n"
 
-#: src/base/cs_io.c:1191 src/base/cs_syr3_comm.c:849
+#: src/base/cs_io.c:1194 src/base/cs_syr3_comm.c:849
 #, c-format
 msgid "    element type name:      \"%s\"\n"
 msgstr "    nom du type d'élément : \"%s\"\n"
 
-#: src/base/cs_io.c:1235
+#: src/base/cs_io.c:1238
 msgid " (local)"
 msgstr " (locaux)"
 
-#: src/base/cs_io.c:1256
+#: src/base/cs_io.c:1259
 #, c-format
 msgid "    %d first and last elements%s:\n"
 msgstr "    %d premiers et derniers éléments%s :\n"
 
-#: src/base/cs_io.c:1261
+#: src/base/cs_io.c:1264
 #, c-format
 msgid "    elements%s:\n"
 msgstr "    éléments%s :\n"
 
-#: src/base/cs_io.c:1809 src/base/cs_io.c:1986 src/base/cs_io.c:3023
-#: src/base/cs_io.c:3110
+#: src/base/cs_io.c:1812 src/base/cs_io.c:1989 src/base/cs_io.c:3001
+#: src/base/cs_io.c:3088
 #, c-format
 msgid "Error writing %lu bytes to file \"%s\"."
 msgstr "Erreur à l'écriture de %lu octets dans le fichier \"%s\"."
 
-#: src/base/cs_io.c:2009
+#: src/base/cs_io.c:2012
 #, c-format
 msgid ""
 " %lu indexed records:\n"
@@ -1524,12 +1525,12 @@ msgstr ""
 "position)\n"
 "\n"
 
-#: src/base/cs_io.c:2022
+#: src/base/cs_io.c:2025
 #, c-format
 msgid " %40s %10lu %2u %2u %2u %6s %c %2u %ld\n"
 msgstr ""
 
-#: src/base/cs_io.c:2031
+#: src/base/cs_io.c:2034
 #, c-format
 msgid ""
 "\n"
@@ -1538,12 +1539,12 @@ msgstr ""
 "\n"
 " %u fichier(s) associé(s):\n"
 
-#: src/base/cs_io.c:2034
+#: src/base/cs_io.c:2037
 #, c-format
 msgid "  \"%s\"\n"
 msgstr "  \"%s\"\n"
 
-#: src/base/cs_io.c:2109 src/base/cs_io.c:2165
+#: src/base/cs_io.c:2087 src/base/cs_io.c:2143
 #, c-format
 msgid ""
 "\n"
@@ -1552,7 +1553,7 @@ msgstr ""
 "\n"
 " Lecture du fichier :  %s\n"
 
-#: src/base/cs_io.c:2111
+#: src/base/cs_io.c:2089
 #, c-format
 msgid ""
 "\n"
@@ -1561,17 +1562,17 @@ msgstr ""
 "\n"
 " Écriture du fichier : %s\n"
 
-#: src/base/cs_io.c:2222
+#: src/base/cs_io.c:2200
 #, c-format
 msgid " Finished reading:    %s\n"
 msgstr " Fin de la lecture :  %s\n"
 
-#: src/base/cs_io.c:2225
+#: src/base/cs_io.c:2203
 #, c-format
 msgid " Finished writing:    %s\n"
 msgstr " Fin de l'écriture :  %s\n"
 
-#: src/base/cs_io.c:2491
+#: src/base/cs_io.c:2469
 #, c-format
 msgid ""
 "Type \"%s\" is not known\n"
@@ -1580,7 +1581,7 @@ msgstr ""
 "Type \"%s\" inconnu\n"
 "Types connus : \"c \", \"i4\", \"i8\", \"u4\", \"u8\", \"r4\", \"r8\"."
 
-#: src/base/cs_io.c:2547
+#: src/base/cs_io.c:2525
 #, c-format
 msgid ""
 "Error reading file: \"%s\".\n"
@@ -1589,7 +1590,7 @@ msgstr ""
 "Erreur à la lecture du fichier : \"%s\".\n"
 "Le type de données \"%s\" n'est pas reconnu."
 
-#: src/base/cs_io.c:2656
+#: src/base/cs_io.c:2634
 #, c-format
 msgid ""
 "Error reading file: \"%s\".\n"
@@ -1601,7 +1602,7 @@ msgstr ""
 "\"%s\" est un entier signé\n"
 "et n'est pas convertible à partir du type lu : \"%s\"."
 
-#: src/base/cs_io.c:2691
+#: src/base/cs_io.c:2669
 #, c-format
 msgid ""
 "Error reading file: \"%s\".\n"
@@ -1613,7 +1614,7 @@ msgstr ""
 "\"%s\" est un entier non signé\n"
 "et n'est pas convertible à partir du type lu : \"%s\"."
 
-#: src/base/cs_io.c:2722
+#: src/base/cs_io.c:2700
 #, c-format
 msgid ""
 "Error reading file: \"%s\".\n"
@@ -1624,7 +1625,7 @@ msgstr ""
 "Le type attendu pour la section : \"%s\"\n"
 "est \"r4\" ou \"r8\" (réel), et non \"%s\"."
 
-#: src/base/cs_io.c:2958
+#: src/base/cs_io.c:2936
 #, c-format
 msgid ""
 "    first element for next rank:\n"
@@ -1633,7 +1634,28 @@ msgstr ""
 "    premier élement rang suivant :\n"
 "    %10lu : %12d\n"
 
-#: src/base/cs_io.c:3132
+#: src/base/cs_io.c:3106
+#, c-format
+msgid "  I/O mode:          %s\n"
+msgstr "  mode E/S :          %s\n"
+
+#: src/base/cs_io.c:3112
+msgid "MPI-IO, explicit offsets"
+msgstr "MPI-IO, positions explicites"
+
+#: src/base/cs_io.c:3116
+msgid "MPI-IO, individual file pointers"
+msgstr "MPI-IO, pointeurs de fichiers individuels"
+
+#: src/base/cs_io.c:3120
+msgid ""
+"serial IO\n"
+"\n"
+msgstr ""
+"ES série\n"
+"\n"
+
+#: src/base/cs_io.c:3169
 msgid ""
 "\n"
 "\n"
@@ -1645,25 +1667,25 @@ msgstr ""
 " contenu du fichier :\n"
 "\n"
 
-#: src/base/cs_io.c:3135
+#: src/base/cs_io.c:3172
 #, c-format
 msgid "  file: %s\n"
 msgstr "  fichier : %s\n"
 
-#: src/base/cs_io.c:3137
+#: src/base/cs_io.c:3174
 #, c-format
 msgid "  contents: \"%s\"\n"
 msgstr "  contenu : \"%s\"\n"
 
-#: src/base/cs_io.c:3139
+#: src/base/cs_io.c:3176
 msgid "  mode: CS_IO_MODE_READ\n"
 msgstr "  mode : CS_IO_MODE_READ\n"
 
-#: src/base/cs_io.c:3141
+#: src/base/cs_io.c:3178
 msgid "  mode: CS_IO_MODE_WRITE\n"
 msgstr "  mode : CS_IO_MODE_WRITE\n"
 
-#: src/base/cs_io.c:3143
+#: src/base/cs_io.c:3180
 #, c-format
 msgid ""
 "  default header size: %lu\n"
@@ -1678,7 +1700,12 @@ msgstr ""
 "  niveau d'impression :         %ld\n"
 "\n"
 
-#: src/base/cs_join.c:411
+#: src/base/cs_join.c:440
+#, c-format
+msgid "  Tolerance computation mode (%d) is not defined\n"
+msgstr ""
+
+#: src/base/cs_join.c:646
 #, c-format
 msgid ""
 "Incompatible value for the \"fraction\" parameter.\n"
@@ -1686,7 +1713,7 @@ msgid ""
 "The current value is : %f\n"
 msgstr ""
 
-#: src/base/cs_join.c:496
+#: src/base/cs_join.c:731
 #, c-format
 msgid ""
 "Incompatible value for the \"vertex tolerance\" parameter\n"
@@ -1694,16 +1721,16 @@ msgid ""
 "numbering : %u)\n"
 msgstr ""
 
-#: src/base/cs_join.c:523
+#: src/base/cs_join.c:758
 #, c-format
 msgid ""
-"  Global number of selected vertices: %11d\n"
+"  Global number of selected vertices: %11lu\n"
 "\n"
 msgstr ""
-"  Nombre global de sommets sélectionnés : %11d\n"
+"  Nombre global de sommets sélectionnés : %11lu\n"
 "\n"
 
-#: src/base/cs_join.c:555
+#: src/base/cs_join.c:793
 #, c-format
 msgid ""
 "\n"
@@ -1716,7 +1743,7 @@ msgstr ""
 "        temps écoulé :              %10.3g\n"
 "        temps CPU :                 %10.3g\n"
 
-#: src/base/cs_join.c:641
+#: src/base/cs_join.c:879
 #, c-format
 msgid ""
 "\n"
@@ -1729,7 +1756,7 @@ msgstr ""
 "      temps écoulé :              %10.3g\n"
 "      temps CPU :                 %10.3g\n"
 
-#: src/base/cs_join.c:794
+#: src/base/cs_join.c:1030
 #, c-format
 msgid ""
 "\n"
@@ -1742,13 +1769,15 @@ msgstr ""
 "      temps écoulé :              %10.3g\n"
 "      temps CPU :                 %10.3g\n"
 
-#: src/base/cs_join.c:900
+#: src/base/cs_join.c:1138
 msgid ""
 "\n"
 "  Joining operation is conforming.\n"
 msgstr ""
+"\n"
+"  L'opération de recollement est conforme.\n"
 
-#: src/base/cs_join.c:902
+#: src/base/cs_join.c:1148
 msgid ""
 "\n"
 "  Joining operation is non-conforming.\n"
@@ -1756,7 +1785,7 @@ msgstr ""
 "\n"
 "  L'opération de recollement est non-conforme.\n"
 
-#: src/base/cs_join.c:972
+#: src/base/cs_join.c:1220
 #, c-format
 msgid ""
 "\n"
@@ -1769,7 +1798,7 @@ msgstr ""
 "    temps écoulé :              %10.3g\n"
 "    temps CPU :                 %10.3g\n"
 
-#: src/base/cs_join.c:1111
+#: src/base/cs_join.c:1356
 #, c-format
 msgid ""
 "\n"
@@ -1782,7 +1811,7 @@ msgstr ""
 "    temps écoulé :              %10.3g\n"
 "    temps CPU :                 %10.3g\n"
 
-#: src/base/cs_join.c:1185
+#: src/base/cs_join.c:1431
 #, c-format
 msgid ""
 "\n"
@@ -1795,42 +1824,82 @@ msgstr ""
 "    temps écoulé :              %10.3g\n"
 "    temps CPU :                 %10.3g\n"
 
-#: src/base/cs_join.c:1354
+#: src/base/cs_join.c:1594
+#, c-format
+msgid "  Join number %d is not defined.\n"
+msgstr "  Le recollement numéro %d n'est pas défini.\n"
+
+#: src/base/cs_join.c:1641
 #, c-format
 msgid ""
 "Mesh joining:  Forbidden value for the fraction parameter.\n"
 "  It must be between [0.0, 1.0[ and is here: %f\n"
 msgstr ""
 
-#: src/base/cs_join.c:1361
+#: src/base/cs_join.c:1648
+#, c-format
+msgid ""
+"Mesh joining:  Forbidden value for the plane parameter.\n"
+"  It must be between [0, 90] and is here: %f\n"
+msgstr ""
+
+#: src/base/cs_join.c:1707
 #, c-format
 msgid ""
-"Mesh joining:  Forbidden value for the tolerance reduction factor.\n"
-"  It must be between [0.0, 1.0[ and not: %f\n"
+"Mesh joining:  Forbidden value for the tml parameter.\n"
+"  It must be between > 0 and is here: %d\n"
 msgstr ""
 
-#: src/base/cs_join.c:1368
+#: src/base/cs_join.c:1718
+#, c-format
+msgid ""
+"Mesh joining:  Forbidden value for the tmb parameter.\n"
+"  It must be between > 0 and is here: %d\n"
+msgstr ""
+
+#: src/base/cs_join.c:1729
+#, c-format
+msgid ""
+"Mesh joining:  Forbidden value for the tmr parameter.\n"
+"  It must be between > 0.0 and is here: %f\n"
+msgstr ""
+
+#: src/base/cs_join.c:1744
 #, c-format
 msgid ""
 "Mesh joining:  Forbidden value for the merge tolerance factor.\n"
 "  It must be positive or nul and not: %f\n"
 msgstr ""
 
-#: src/base/cs_join.c:1375
+#: src/base/cs_join.c:1754
 #, c-format
 msgid ""
-"Mesh joining:  Forbidden value for the equivalence tolerance factor.\n"
-"  It must be positive or zero and not: %f\n"
+"Mesh joining:  Forbidden value for the max. number of tolerance breaks.\n"
+"  It must be between >= 0 and not: %d\n"
 msgstr ""
 
-#: src/base/cs_join.c:1382
+#: src/base/cs_join.c:1771
 #, c-format
 msgid ""
-"Mesh joining:  Forbidden value for the plane parameter.\n"
-"  It must be between [0, 90] and is here: %f\n"
+"Mesh joining:  Forbidden value for the tcm parameter.\n"
+"  It must be between 1, 2 or 11, 12 and here is: %d\n"
 msgstr ""
 
-#: src/base/cs_join.c:1456
+#: src/base/cs_join.c:1781
+#, c-format
+msgid ""
+"Mesh joining:  Forbidden value for icm parameter.\n"
+"  It must be 1 or 2 and here is: %d\n"
+msgstr ""
+
+#: src/base/cs_join.c:1791
+#, c-format
+msgid ""
+"Mesh joining:  Forbidden value for the maxsf parameter.\n"
+"  It must be between > 0 and here is: %d\n"
+msgstr ""
+
+#: src/base/cs_join.c:1839
 #, c-format
 msgid ""
 "\n"
@@ -1843,44 +1912,60 @@ msgstr ""
 "  Recollement numéro %d :\n"
 "\n"
 
-#: src/base/cs_join.c:1458
+#: src/base/cs_join.c:1841
 #, c-format
 msgid "  Selection criteria: \"%s\"\n"
 msgstr "  Critère de sélection : \"%s\"\n"
 
-#: src/base/cs_join.c:1461
+#: src/base/cs_join.c:1844
 #, c-format
 msgid ""
 "\n"
 "  Parameters for the joining operation:\n"
 "    Shortest incident edge fraction:          %8.5f\n"
-"      Main tolerance reduction factor:        %8.5f\n"
-"      Vertex matching tolerance reduction:    %8.5f\n"
-"      Merge step tolerance multiplier:        %8.5f\n"
 "    Maximum angle between joined face planes: %8.5f\n"
 "\n"
 msgstr ""
 "\n"
 "  Paramètres de recollement :\n"
 "    Fraction de la plus petite arête incidente :        %8.5f\n"
-"      Facteur de réduction de tolérance principal :     %8.5f\n"
-"      Réduction de tolérance pour équivalence sommets : %8.5f\n"
-"      Multiplicateur de tolérance pour la fusion :      %8.5f\n"
 "    Angle maximum entre plans de faces recollées :      %8.5f\n"
 "\n"
 
-#: src/base/cs_join.c:1473
+#: src/base/cs_join.c:1851
+#, c-format
+msgid ""
+"  Advanced join parameters:\n"
+"    Deepest level reachable in tree building: %8d\n"
+"    Max boxes by leaf:                        %8d\n"
+"    Max ratio of linked boxes / init. boxes:  %8.5f\n"
+"    Merge step tolerance multiplier:          %8.5f\n"
+"    Pre-merge factor:                         %8.5f\n"
+"    Tolerance computation mode:               %8d\n"
+"    Intersection computation mode:            %8d\n"
+"    Max. number of equiv. breaks:             %8d\n"
+"    Max. number of subfaces by face:          %8d\n"
+"\n"
+msgstr ""
+
+#: src/base/cs_join.c:1870
 msgid " Before joining"
 msgstr " Avant recollement"
 
-#: src/base/cs_join.c:1562
+#: src/base/cs_join.c:1919
+msgid ""
+"\n"
+"  Element selection successfully done.\n"
+msgstr ""
+
+#: src/base/cs_join.c:1962
 #, c-format
 msgid ""
 "\n"
 "  Number of faces to treat locally: %10d\n"
 msgstr ""
 
-#: src/base/cs_join.c:1636
+#: src/base/cs_join.c:2036
 msgid ""
 "\n"
 "Stop joining algorithm: no face selected...\n"
@@ -1888,7 +1973,7 @@ msgstr ""
 "\n"
 "Arrêt du recollement: aucune face sélectionnée...\n"
 
-#: src/base/cs_join.c:1645
+#: src/base/cs_join.c:2045
 #, c-format
 msgid ""
 "\n"
@@ -1901,11 +1986,11 @@ msgstr ""
 "    temps écoulé :              %10.3g\n"
 "    temps CPU :                 %10.3g\n"
 
-#: src/base/cs_join.c:1682
+#: src/base/cs_join.c:2074
 msgid " After joining"
 msgstr " Après recollement"
 
-#: src/base/cs_join.c:1695
+#: src/base/cs_join.c:2092
 #, c-format
 msgid ""
 "\n"
@@ -1924,7 +2009,7 @@ msgstr ""
 "    temps CPU :                 %10.3g\n"
 "\n"
 
-#: src/base/cs_join_intersect.c:403
+#: src/base/cs_join_intersect.c:399
 #, c-format
 msgid ""
 "\n"
@@ -1934,19 +2019,19 @@ msgid ""
 "  Intersection found for curv. abs. %f (e1) - %f (e2) will be ignored.\n"
 msgstr ""
 
-#: src/base/cs_join_intersect.c:418
+#: src/base/cs_join_intersect.c:414
 #, c-format
 msgid ""
 " Failure for edge 1:  Distance [v_inter1, v_inter2]: %e > v_inter1.tol: %e\n"
 msgstr ""
 
-#: src/base/cs_join_intersect.c:422
+#: src/base/cs_join_intersect.c:418
 #, c-format
 msgid ""
 " Failure for edge 2:  Distance [v_inter1, v_inter2]: %e > v_inter2.tol: %e\n"
 msgstr ""
 
-#: src/base/cs_join_intersect.c:1318
+#: src/base/cs_join_intersect.c:2177
 #, c-format
 msgid ""
 "  Determination of possible face intersections:\n"
@@ -1957,7 +2042,7 @@ msgstr ""
 "\n"
 "    répartition de l'arbre de boîtes englobantes : %dD\n"
 
-#: src/base/cs_join_intersect.c:1325
+#: src/base/cs_join_intersect.c:2184
 #, c-format
 msgid ""
 "                                   rank mean      minimum      maximum\n"
@@ -1982,7 +2067,7 @@ msgstr ""
 "      structure intermédiaire :       %10lu | %10lu | %10lu\n"
 "\n"
 
-#: src/base/cs_join_intersect.c:1348
+#: src/base/cs_join_intersect.c:2207
 #, c-format
 msgid ""
 "    depth:                        %10d\n"
@@ -2005,7 +2090,7 @@ msgstr ""
 "      structure intermédiaire :       %10lu\n"
 "\n"
 
-#: src/base/cs_join_intersect.c:1360
+#: src/base/cs_join_intersect.c:2219
 #, c-format
 msgid ""
 "    Associated times:           construction        query\n"
@@ -2014,7 +2099,7 @@ msgstr ""
 "    Temsp associés:             construction        requête\n"
 "      wall clock time:            %10.3g   %10.3g\n"
 
-#: src/base/cs_join_intersect.c:1377
+#: src/base/cs_join_intersect.c:2236
 #, c-format
 msgid ""
 "      Min local CPU time:         %10.3g   %10.3g\n"
@@ -2023,12 +2108,12 @@ msgstr ""
 "      temps CPU local min :       %10.3g   %10.3g\n"
 "      temps CPU local max :       %10.3g   %10.3g\n"
 
-#: src/base/cs_join_intersect.c:1385
+#: src/base/cs_join_intersect.c:2244
 #, c-format
 msgid "      CPU time:                   %10.3g   %10.3g\n"
 msgstr "      temps CPU :                 %10.3g   %10.3g\n"
 
-#: src/base/cs_join_intersect.c:1656
+#: src/base/cs_join_intersect.c:2515
 #, c-format
 msgid ""
 "\n"
@@ -2037,7 +2122,7 @@ msgid ""
 "   Vertex %d (%u) of abscissa: %f is before vertex %d (%u) of abscissa: %f\n"
 msgstr ""
 
-#: src/base/cs_join_intersect.c:1667
+#: src/base/cs_join_intersect.c:2526
 #, c-format
 msgid ""
 "\n"
@@ -2048,47 +2133,67 @@ msgid ""
 "  Vertex %d appears twice.\n"
 msgstr ""
 
-#: src/base/cs_join_intersect.c:2453
+#: src/base/cs_join_intersect.c:2752
+#, c-format
+msgid ""
+"\n"
+"  Equivalences broken for %lu edges.\n"
+msgstr ""
+"\n"
+"  Equivalences cassées pour %lu éléments.\n"
+
+#: src/base/cs_join_intersect.c:2758
+#, c-format
+msgid ""
+"\n"
+"  Max. number of equiv. breaks: %lu\n"
+msgstr ""
+"\n"
+"  Nombre max d'équivalences cassées : %lu\n"
+
+#: src/base/cs_join_intersect.c:3377
 #, c-format
 msgid ""
 "  The received edge global number (%u) is unknown on the current rank.\n"
 msgstr ""
 
-#: src/base/cs_join_intersect.c:2565
+#: src/base/cs_join_intersect.c:3489
 #, c-format
 msgid ""
 "\n"
 "  Add %d new vertices in the %s mesh definition.\n"
 msgstr ""
 
-#: src/base/cs_join_intersect.c:2727
+#: src/base/cs_join_intersect.c:3670
 #, c-format
 msgid ""
 "\n"
-"  Number of intersections detected: %12lu\n"
+"  Number of local intersections detected: %12lu\n"
 "    Vertex-Vertex intersections:    %12lu\n"
 "    Other intersections:            %12lu\n"
 msgstr ""
 "\n"
-"  Nombre d'intersections détecté :  %12lu\n"
-"    Intersections sommet-sommet :   %12lu\n"
-"    Autres intersections :          %12lu\n"
+"  Nombre local d'intersections détectées :  %12lu\n"
+"    Intersections sommet-sommet :     %12lu\n"
+"    Autres intersections :            %12lu\n"
 
-#: src/base/cs_join_intersect.c:2734
+#: src/base/cs_join_intersect.c:3677
 #, c-format
 msgid ""
 "\n"
-"  Number of edge-edge intersection warnings: %8d\n"
+"  Local number of edge-edge intersection warnings:%9d\n"
 msgstr ""
 
-#: src/base/cs_join_intersect.c:2737
+#: src/base/cs_join_intersect.c:3679
 #, c-format
 msgid ""
 "\n"
-"  Number of equivalences between existing vertices: %9d\n"
+"  Local number of equivalences between vertices:%9d\n"
 msgstr ""
+"\n"
+"  Nombre local d'équivalences entre sommets : %9d\n"
 
-#: src/base/cs_join_intersect.c:2746
+#: src/base/cs_join_intersect.c:3689
 #, c-format
 msgid ""
 "\n"
@@ -2101,7 +2206,7 @@ msgstr ""
 "    temps écoulé :              %10.3g\n"
 "    temps CPU :                 %10.3g\n"
 
-#: src/base/cs_join_merge.c:355
+#: src/base/cs_join_merge.c:352
 #, c-format
 msgid ""
 "  The number of new vertices to create is not consistent.\n"
@@ -2110,7 +2215,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/base/cs_join_merge.c:585
+#: src/base/cs_join_merge.c:582
 #, c-format
 msgid ""
 "\n"
@@ -2120,7 +2225,7 @@ msgid ""
 "  Check the fraction parameter.\n"
 msgstr ""
 
-#: src/base/cs_join_merge.c:690
+#: src/base/cs_join_merge.c:687
 #, c-format
 msgid ""
 "\n"
@@ -2130,35 +2235,42 @@ msgid ""
 "  Check the fraction parameter.\n"
 msgstr ""
 
-#: src/base/cs_join_merge.c:983
+#: src/base/cs_join_merge.c:980
 #, c-format
 msgid ""
 "\n"
 "  Number of local iterations to converge on vertex equivalences: %3d\n"
 msgstr ""
 
-#: src/base/cs_join_merge.c:986
+#: src/base/cs_join_merge.c:983
 #, c-format
 msgid ""
 "  Number of global iterations to converge on vertex equivalences: %3d\n"
 "\n"
 msgstr ""
 
-#: src/base/cs_join_merge.c:1525
+#: src/base/cs_join_merge.c:1431
+#, c-format
 msgid ""
-"  Max number of tolerance reductions has been reached.\n"
-"  Check your joining parameters.\n"
+"\n"
+"  Pre-merge for %lu global couple of elements.\n"
 msgstr ""
 
-#: src/base/cs_join_merge.c:1682
+#: src/base/cs_join_merge.c:1435
+#, c-format
 msgid ""
 "\n"
-"  Merge: Local tolerance reduction for the following vertices (global "
-"numbering):\n"
-"        "
+"  Local number of pre-merge: %d\n"
 msgstr ""
+"\n"
+"  Nombre local de pre-fusion: %d\n"
+
+#: src/base/cs_join_merge.c:1938
+#, c-format
+msgid " Number of tolerance reductions:  %4d\n"
+msgstr " Nombre de réductions de tolérance : %4d\n"
 
-#: src/base/cs_join_merge.c:1894
+#: src/base/cs_join_merge.c:2041
 msgid ""
 "\n"
 "  No need to merge vertices.\n"
@@ -2166,46 +2278,53 @@ msgstr ""
 "\n"
 "  Pas besoin de fusionner des sommets.\n"
 
-#: src/base/cs_join_merge.c:1898
+#: src/base/cs_join_merge.c:2045
 #, c-format
 msgid ""
 "\n"
-"  Max size of a merge list: %lu\n"
+"  Max size of a merge set of vertices: %lu\n"
 msgstr ""
+"\n"
+"  Taille max d'un ensemble de fusion de sommets : %lu\n"
 
-#: src/base/cs_join_merge.c:1969
+#: src/base/cs_join_merge.c:2113
 #, c-format
 msgid ""
 "\n"
-"  Number of tolerance reductions: %4d\n"
+"  %3d loop(s) to get consistent subsets\n"
 msgstr ""
-"\n"
-"  Nombre de réductions de tolérance : %4d\n"
 
-#: src/base/cs_join_merge.c:2045
+#: src/base/cs_join_merge.c:2177
 #, c-format
 msgid ""
 "\n"
-"  Tolerance reduction for %lu elements.\n"
+"  Excessive transitivity for %lu set(s) of vertices.\n"
 msgstr ""
-"\n"
-"  Réduction de tolérance pour %lu éléments.\n"
 
-#: src/base/cs_join_merge.c:2051
+#: src/base/cs_join_merge.c:2183
 #, c-format
 msgid ""
 "\n"
-"  Max. number of tolerance reductions: %lu\n"
+"  Max. number of iterations to solve transitivity excess: %lu\n"
 msgstr ""
 "\n"
-"  Nombre max de réductions de tolérance : %lu\n"
+"  Nombre max d'itérations pour résoudre un excès de transitivité : %lu\n"
 
-#: src/base/cs_join_merge.c:2715
+#: src/base/cs_join_merge.c:2633
 #, c-format
-msgid "  Number of new vertices to create: %10lu\n"
-msgstr "  Nombre de nouveaux sommets à créer : %10lu\n"
+msgid "  Number of sub-elements to add to edge definition: %8d\n"
+msgstr ""
 
-#: src/base/cs_join_merge.c:2810
+#: src/base/cs_join_merge.c:3052
+#, c-format
+msgid ""
+"\n"
+"  Global number of new vertices to create: %10lu\n"
+msgstr ""
+"\n"
+"  Nombre global de nouveaux sommets à créer : %10lu\n"
+
+#: src/base/cs_join_merge.c:3161
 #, c-format
 msgid ""
 "  Inconsistent value found in cs_join_vertex_t struct.:\n"
@@ -2213,7 +2332,7 @@ msgid ""
 "      %u - [%7.4le, %7.4le, %7.4le] - %lg\n"
 msgstr ""
 
-#: src/base/cs_join_merge.c:2870
+#: src/base/cs_join_merge.c:3220
 #, c-format
 msgid ""
 "\n"
@@ -2221,7 +2340,7 @@ msgid ""
 "                                          global: %9lu\n"
 msgstr ""
 
-#: src/base/cs_join_merge.c:2958
+#: src/base/cs_join_merge.c:3308
 #, c-format
 msgid ""
 "\n"
@@ -2234,7 +2353,7 @@ msgstr ""
 "              temps écoulé :         %10.3g\n"
 "              temps CPU :            %10.3g\n"
 
-#: src/base/cs_join_mesh.c:352
+#: src/base/cs_join_mesh.c:351 src/base/cs_join_mesh.c:520
 #, c-format
 msgid ""
 "  The simplified face has less than 3 vertices.\n"
@@ -2245,7 +2364,7 @@ msgstr ""
 "  Vérifier les paramètres de recollement.\n"
 "  Face %d (%u)\n"
 
-#: src/base/cs_join_mesh.c:368
+#: src/base/cs_join_mesh.c:367
 #, c-format
 msgid ""
 "\n"
@@ -2254,7 +2373,7 @@ msgstr ""
 "\n"
 "  Nombre de faces simplifiées : %lu\n"
 
-#: src/base/cs_join_mesh.c:586
+#: src/base/cs_join_mesh.c:595
 #, c-format
 msgid ""
 "\n"
@@ -2263,14 +2382,30 @@ msgid ""
 " Edge number: %d (%u) - (%d, %d) in old numbering.\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2256
+#: src/base/cs_join_mesh.c:1388
+msgid ""
+"\n"
+"  Local min/max. tolerance:\n"
+"\n"
+"Glob. Num.  |  Tolerance  |        Coordinates\n"
+msgstr ""
+
+#: src/base/cs_join_mesh.c:1412
+msgid ""
+"\n"
+"  Global min/max. tolerance:\n"
+"\n"
+"Glob. Num.  |  Tolerance  |        Coordinates\n"
+msgstr ""
+
+#: src/base/cs_join_mesh.c:2598
 #, c-format
 msgid ""
 " The given vertex number: %d is not defined in the edge structure (edges-"
 ">vtx_idx).\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2268
+#: src/base/cs_join_mesh.c:2610
 #, c-format
 msgid ""
 " The given couple of vertex numbers :\n"
@@ -2279,7 +2414,7 @@ msgid ""
 " is not defined in the edge structure.\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2362
+#: src/base/cs_join_mesh.c:2704
 #, c-format
 msgid ""
 " Problem in mesh connectivity. Face: %lu\n"
@@ -2289,7 +2424,7 @@ msgid ""
 " Modify joining parameters to reduce merging (fraction & merge).\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2818 src/base/cs_join_mesh.c:2931
+#: src/base/cs_join_mesh.c:3161 src/base/cs_join_mesh.c:3274
 #, c-format
 msgid ""
 "\n"
@@ -2297,7 +2432,7 @@ msgid ""
 "  -- Dump a cs_join_mesh_t structure: (%p) --\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2823 src/base/cs_join_mesh.c:2936
+#: src/base/cs_join_mesh.c:3166 src/base/cs_join_mesh.c:3279
 #, c-format
 msgid ""
 "\n"
@@ -2305,29 +2440,29 @@ msgid ""
 "  -- Dump a cs_join_mesh_t structure: %s (%p) --\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2825
+#: src/base/cs_join_mesh.c:3168
 #, c-format
 msgid ""
 "\n"
 " mesh->n_faces:       %9d\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2826 src/base/cs_join_mesh.c:2939
+#: src/base/cs_join_mesh.c:3169 src/base/cs_join_mesh.c:3282
 #, c-format
 msgid ""
 " mesh->n_g_faces:   %11u\n"
 "\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2835
+#: src/base/cs_join_mesh.c:3178
 #, c-format
 msgid ""
 "\n"
 " face_id: %5d gnum: %9u - n_vertices: %4d\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2858 src/base/cs_join_mesh.c:2876
-#: src/base/cs_join_mesh.c:2971 src/base/cs_join_mesh.c:2990
+#: src/base/cs_join_mesh.c:3201 src/base/cs_join_mesh.c:3219
+#: src/base/cs_join_mesh.c:3314 src/base/cs_join_mesh.c:3333
 #, c-format
 msgid ""
 "  Incoherency found in the current mesh definition\n"
@@ -2335,7 +2470,7 @@ msgid ""
 "  Vertices: local (%d, %d), global (%u, %u) are defined twice\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2892 src/base/cs_join_mesh.c:3006
+#: src/base/cs_join_mesh.c:3235 src/base/cs_join_mesh.c:3349
 #, c-format
 msgid ""
 "\n"
@@ -2346,56 +2481,56 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2900 src/base/cs_join_mesh.c:3014
+#: src/base/cs_join_mesh.c:3243 src/base/cs_join_mesh.c:3357
 #, c-format
 msgid ""
 " Local Num | Global Num |  Tolerance  |        Coordinates\n"
 "\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2938
+#: src/base/cs_join_mesh.c:3281
 #, c-format
 msgid ""
 "\n"
 " mesh->n_faces:     %11d\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:2948
+#: src/base/cs_join_mesh.c:3291
 #, c-format
 msgid ""
 "\n"
 " face_id: %9d gnum: %10u - n_vertices : %4d\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:3044
+#: src/base/cs_join_mesh.c:3387
 msgid ""
 "\n"
 "  Edge connectivity used in the joining operation:\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:3045
+#: src/base/cs_join_mesh.c:3388
 #, c-format
 msgid "  Number of edges:      %8d\n"
 msgstr "  Nombre d'arêtes :     %8d\n"
 
-#: src/base/cs_join_mesh.c:3046
+#: src/base/cs_join_mesh.c:3389
 #, c-format
 msgid "  Number of vertices:   %8d\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:3055
+#: src/base/cs_join_mesh.c:3398
 #, c-format
 msgid "  Edge %6d  (%7u) <Vertex> [%7u %7u]\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:3082
+#: src/base/cs_join_mesh.c:3425
 msgid ""
 "\n"
 "  Vertex -> Vertex connectivity :\n"
 "\n"
 msgstr ""
 
-#: src/base/cs_join_mesh.c:3089
+#: src/base/cs_join_mesh.c:3432
 #, c-format
 msgid "  Vertex %6d (%7u) - %3d - "
 msgstr ""
@@ -2421,17 +2556,17 @@ msgid ""
 "  Cannot find %u in element list.\n"
 msgstr ""
 
-#: src/base/cs_join_set.c:1820
+#: src/base/cs_join_set.c:1832
 #, c-format
 msgid " Unexpected type (%s) to display in the current dump.\n"
 msgstr ""
 
-#: src/base/cs_join_split.c:866
+#: src/base/cs_join_split.c:872
 msgid ""
 "  face splitting with face -> face connectivity is not yet implemented\n"
 msgstr ""
 
-#: src/base/cs_join_split.c:1026
+#: src/base/cs_join_split.c:1032
 #, c-format
 msgid ""
 " Joining operation : split face %d\n"
@@ -2439,7 +2574,7 @@ msgid ""
 "d\n"
 msgstr ""
 
-#: src/base/cs_join_split.c:1417
+#: src/base/cs_join_split.c:1422
 #, c-format
 msgid ""
 "\n"
@@ -2448,29 +2583,40 @@ msgstr ""
 "\n"
 "  Nombre global de faces après subdivision : %10u\n"
 
-#: src/base/cs_join_split.c:1782
+#: src/base/cs_join_split.c:1474
+#, c-format
+msgid ""
+" Inconsistent values between:\n"
+"    block_info.local_size  %8d\n"
+"    builder->n_faces:      %8d\n"
+" These values should be equal.\n"
+msgstr ""
+
+#: src/base/cs_join_split.c:1781
 #, c-format
 msgid "  Split face: %d with returned code: %d\n"
 msgstr ""
 
-#: src/base/cs_join_split.c:1954
+#: src/base/cs_join_split.c:1953
 #, c-format
 msgid ""
-"  Warning: (%lu) problem(s) found during the face splitting\n"
+"\n"
+"  *** WARNING ***\n"
+"  Globally, %lu problem(s) found during the face splitting\n"
 "     %12lu  open cycles,\n"
 "     %12lu  edges traversed twice,\n"
 "     %12lu  faces split into more than max_subfaces (= %d)\n"
 "\n"
-"  => Eventually modify joining parameters\n"
+"    => Eventually modify joining parameters\n"
 "\n"
 msgstr ""
 
-#: src/base/cs_join_update.c:1185
+#: src/base/cs_join_update.c:827
 #, c-format
 msgid "  Add %d new vertices from the single elements sync.\n"
 msgstr ""
 
-#: src/base/cs_join_update.c:2033
+#: src/base/cs_join_update.c:1510
 #, c-format
 msgid ""
 "  Cannot find the first corresponding vertex between the face connectivity "
@@ -2478,7 +2624,7 @@ msgid ""
 "  Current global face number: %u\n"
 msgstr ""
 
-#: src/base/cs_join_update.c:2195
+#: src/base/cs_join_update.c:1672
 #, c-format
 msgid ""
 "  Face %d (%u): Edge with two different descriptions: (%d, %d) [%u, %u]\n"
@@ -2486,14 +2632,14 @@ msgid ""
 "  Impossible to continue the mesh update after the merge operation.\n"
 msgstr ""
 
-#: src/base/cs_join_update.c:4241
+#: src/base/cs_join_update.c:3576
 #, c-format
 msgid ""
-"  Incompatible new face type found.\n"
-"  n_matches is not to 1 or 2: n_matches = %d\n"
+"  Warning: Face %d (%u) has more than two ancestors.\n"
+"  Old faces implied:"
 msgstr ""
 
-#: src/base/cs_join_update.c:4248
+#: src/base/cs_join_update.c:3593
 #, c-format
 msgid ""
 "\n"
@@ -2502,7 +2648,7 @@ msgid ""
 "    Number of border faces to add  : %9d\n"
 msgstr ""
 
-#: src/base/cs_join_update.c:4265
+#: src/base/cs_join_update.c:3610
 #, c-format
 msgid ""
 "\n"
@@ -2510,103 +2656,86 @@ msgid ""
 "     Global number of border faces to add : %10u\n"
 msgstr ""
 
-#: src/base/cs_join_update.c:4442
+#: src/base/cs_join_update.c:3826
 #, c-format
 msgid "  Clean border face %d. New number of vertices: %d\n"
 msgstr ""
 
-#: src/base/cs_join_update.c:4463
+#: src/base/cs_join_update.c:3848
 #, c-format
 msgid ""
 "\n"
-"  Degenerate connectivity for %d final border faces.\n"
+"  Degenerate connectivity for %d final local boundary faces.\n"
 msgstr ""
 
-#: src/base/cs_join_update.c:4502
+#: src/base/cs_join_update.c:3887
 #, c-format
 msgid "  Clean interior face %d. New number of vertices: %d\n"
 msgstr ""
 
-#: src/base/cs_join_update.c:4523
+#: src/base/cs_join_update.c:3909
 #, c-format
-msgid ""
-"  Degenerate connectivity for %d final interior faces.\n"
-"  Mesh cleaning done.\n"
-msgstr ""
-
-#: src/base/cs_join_util.c:899
-msgid ""
-"\n"
-"  Single border faces for the joining operation:\n"
-msgstr ""
-
-#: src/base/cs_join_util.c:916
-msgid ""
-"\n"
-"  Single interior faces for the joining operation:\n"
+msgid "  Degenerate connectivity for %d final local interior faces.\n"
 msgstr ""
 
-#: src/base/cs_join_util.c:1154
-msgid ""
-"\n"
-"  Single vertices for the joining operation:\n"
-msgstr ""
-
-#: src/base/cs_join_util.c:1276
+#: src/base/cs_join_update.c:3959
+#, c-format
 msgid ""
 "\n"
-"  Coupled vertices for the joining operations:\n"
+"  Mesh cleaning done for degenerated faces.\n"
+"    Global number of cleaned interior faces: %8u\n"
+"    Global number of cleaned border faces:   %8u\n"
 msgstr ""
 
-#: src/base/cs_join_util.c:1756
+#: src/base/cs_join_util.c:2476
 #, c-format
 msgid "  Number of boundary faces selected for joining: %10u\n"
 msgstr ""
 
-#: src/base/cs_join_util.c:1858
+#: src/base/cs_join_util.c:2489
 msgid ""
 "\n"
 "  Selected faces for the joining operation:\n"
 msgstr ""
 
-#: src/base/cs_join_util.c:1865
+#: src/base/cs_join_util.c:2508
 msgid ""
 "\n"
 "  Select vertices for the joining operation:\n"
 msgstr ""
 
-#: src/base/cs_join_util.c:1873
+#: src/base/cs_join_util.c:2556
 msgid ""
 "\n"
 "  Contiguous border faces for the joining operation:\n"
 msgstr ""
 
-#: src/base/cs_join_util.c:1879
+#: src/base/cs_join_util.c:2573
 msgid ""
 "\n"
 "  Contiguous interior faces for the joining operation:\n"
 msgstr ""
 
-#: src/base/cs_join_util.c:1978 src/base/cs_join_util.c:1994
+#: src/base/cs_join_util.c:2708 src/base/cs_join_util.c:2724
 #, c-format
 msgid ""
 "  Inconsistent mesh definition. Cannot build edges.\n"
 "  Face %d has the same vertex %d twice.\n"
 msgstr ""
 
-#: src/base/cs_matrix.c:317
+#: src/base/cs_matrix.c:321
 msgid "diagonal + faces"
 msgstr "diagonale + faces"
 
-#: src/base/cs_matrix.c:318
+#: src/base/cs_matrix.c:322
 msgid "Compressed Sparse Row"
 msgstr ""
 
-#: src/base/cs_matrix.c:323
+#: src/base/cs_matrix.c:331
 msgid ""
 "Matrix product with CS_PERIO_IGNORE rotation mode not yet\n"
-"implemented in this case, use cs_matrix_vector_multiply_nosync\n"
-"with an external halo synchronization, prededed by a backup and\n"
+"implemented: in this case, use cs_matrix_vector_multiply_nosync\n"
+"with an external halo synchronization, preceded by a backup and\n"
 "followed by a restoration of the rotation halo."
 msgstr ""
 "Produit matriciel avec mode de rotation CS_PERIO_IGNORE non encore\n"
@@ -2614,7 +2743,7 @@ msgstr ""
 "avec une synchronisation de halo externe, précédée d'une sauvegarde\n"
 "et suivie d'une restoration du halo de rotation."
 
-#: src/base/cs_matrix.c:2001
+#: src/base/cs_matrix.c:2009
 msgid ""
 "Assigning non-symmetric matrix coefficients to a matrix\n"
 "in a symmetric CSR format."
@@ -2622,7 +2751,7 @@ msgstr ""
 "Affectation de coefficients matriciels non symétriques\n"
 "à une matrice en stockage CSR symmétrique."
 
-#: src/base/cs_matrix.c:2579
+#: src/base/cs_matrix.c:2614
 #, c-format
 msgid ""
 "Handling of matrixes in %s format\n"
@@ -2631,9 +2760,9 @@ msgstr ""
 "La gestion des matrices au format %s \n"
 "n'est pas encore opérationnelle."
 
-#: src/base/cs_matrix.c:2715 src/base/cs_matrix.c:2732
-#: src/base/cs_matrix.c:2758 src/base/cs_matrix.c:2778
-#: src/base/cs_matrix.c:2800
+#: src/base/cs_matrix.c:2750 src/base/cs_matrix.c:2767
+#: src/base/cs_matrix.c:2793 src/base/cs_matrix.c:2813
+#: src/base/cs_matrix.c:2835
 msgid "The matrix is not defined."
 msgstr "La matrice n'est pas définie."
 
@@ -2645,12 +2774,12 @@ msgstr " Synchronisation des familles des cellules\n"
 msgid "    no value\n"
 msgstr "    aucune valeur\n"
 
-#: src/base/cs_mesh.c:217
+#: src/base/cs_mesh.c:217 src/base/cs_mesh.c:375
 #, c-format
 msgid "    minimum value =         %10d\n"
 msgstr "    valeur minimale =       %10d\n"
 
-#: src/base/cs_mesh.c:218
+#: src/base/cs_mesh.c:218 src/base/cs_mesh.c:376
 #, c-format
 msgid ""
 "    maximum value =         %10d\n"
@@ -2659,7 +2788,7 @@ msgstr ""
 "    valeur maximale =       %10d\n"
 "\n"
 
-#: src/base/cs_mesh.c:291
+#: src/base/cs_mesh.c:289
 msgid ""
 "\n"
 " Halo creation times summary\n"
@@ -2669,26 +2798,26 @@ msgstr ""
 " Bilan des temps pour la création du halo\n"
 "\n"
 
-#: src/base/cs_mesh.c:294
+#: src/base/cs_mesh.c:292
 #, c-format
-msgid "     Creating interface:                       %.3g s\n"
+msgid "     Interface creation:                       %.3g s\n"
 msgstr "     Création de l'interface :                  %.3g s\n"
 
-#: src/base/cs_mesh.c:298
+#: src/base/cs_mesh.c:296
 #, c-format
-msgid "     Creating extended connectivity:            %.3g s\n"
+msgid "     Extended connectivity creation:            %.3g s\n"
 msgstr "     Création de la connectivité étendue :      %.3g s\n"
 
-#: src/base/cs_mesh.c:301
+#: src/base/cs_mesh.c:299
 #, c-format
 msgid ""
-"     Creating halo:                             %.3g s\n"
+"     Halo creation:                             %.3g s\n"
 "\n"
 msgstr ""
 "     Création du halo :                         %.3g s\n"
 "\n"
 
-#: src/base/cs_mesh.c:305
+#: src/base/cs_mesh.c:303
 #, c-format
 msgid ""
 "     Total time for halo creation:              %.3g s\n"
@@ -2697,22 +2826,43 @@ msgstr ""
 "     Temps total de création du halo :          %.3g s\n"
 "\n"
 
-#: src/base/cs_mesh.c:311
+#: src/base/cs_mesh.c:373
+msgid ""
+"\n"
+" Histogram of the number of interior faces per cell:\n"
+"\n"
+msgstr ""
+"\n"
+" Histogramme du nombre de faces internes par cellule :\n"
+"\n"
+
+#: src/base/cs_mesh.c:470
+msgid ""
+"\n"
+" Histogram of the number of cells per rank:\n"
+"\n"
+msgstr ""
+"\n"
+" Histogramme de la distribution du nombre de cellules sur les rangs :\n"
+"\n"
+
+#: src/base/cs_mesh.c:478
 #, c-format
-msgid " Number of standard cells:                             %d\n"
-msgstr " Nombre de cellules standard :                         %d\n"
+msgid " Number of cells:                                      %d\n"
+msgstr " Nombre de cellules :                                  %d\n"
 
-#: src/base/cs_mesh.c:323
+#: src/base/cs_mesh.c:491
 msgid ""
 "\n"
-"    Histogram of the number of cells per rank:\n"
+" Histogram of the number of standard + halo cells per rank:\n"
 "\n"
 msgstr ""
 "\n"
-"    Histogramme de la distribution du nombre de cellules sur les rangs :\n"
+" Histogramme de la distribution du nombre de cellules\n"
+" standard + halo sur les rangs :\n"
 "\n"
 
-#: src/base/cs_mesh.c:332
+#: src/base/cs_mesh.c:500
 #, c-format
 msgid ""
 " Number of cells + halo cells:                         %d\n"
@@ -2721,66 +2871,84 @@ msgstr ""
 " Nombre de cellules + cellules halo :                  %d\n"
 "\n"
 
-#: src/base/cs_mesh.c:342
+#: src/base/cs_mesh.c:520
 msgid ""
 "\n"
-"    Histogram of number of standard + halo cells (NCELET) per rank:\n"
+" Histogram of the number of ghost cells per rank:\n"
 "\n"
 msgstr ""
 "\n"
-"    Histogramme de la distribution du nombre de cellules\n"
-"    standard + halo (NCELET) sur les rangs :\n"
+" Histogramme de la distribution des cellules fantômes sur les rangs :\n"
 "\n"
 
-#: src/base/cs_mesh.c:356
-#, c-format
+#: src/base/cs_mesh.c:532
 msgid ""
 "\n"
-" Local number of ghost cells:                    %10d\n"
+" Histogram of the number of ghost cells\n"
+" in the standard neighborhood per rank:\n"
+"\n"
 msgstr ""
 "\n"
-" Nombre de cellules fantômes locales :          %10d\n"
+" Histogramme de la distribution des cellules fantômes\n"
+" dans le voisinage standard sur les rangs :\n"
+"\n"
 
-#: src/base/cs_mesh.c:358
+#: src/base/cs_mesh.c:542
 #, c-format
-msgid "     in the standard neighborhood:              %10d\n"
-msgstr "     dans le voisinage standard:                %10d\n"
+msgid ""
+"\n"
+" Number of ghost cells:                          %10d\n"
+msgstr ""
+"\n"
+" Nombre de cellules fantômes :                  %10d\n"
 
-#: src/base/cs_mesh.c:360
+#: src/base/cs_mesh.c:545
 #, c-format
-msgid "     in the extended neighborhood:              %10d\n"
-msgstr "     dans le voisinage etendu:                  %10d\n"
+msgid "   in the standard neighborhood:              %10d\n"
+msgstr "   dans le voisinage standard :               %10d\n"
 
-#: src/base/cs_mesh.c:373
+#: src/base/cs_mesh.c:564
 msgid ""
 "\n"
-"    Histogram of the number of ghost cells per rank:\n"
+" Histogram of the number of interior faces per rank:\n"
 "\n"
 msgstr ""
 "\n"
-"    Histogramme de la distribution des cellules fantômes sur les rangs :\n"
+" Histogramme de la distribution du nombre de faces interne sur les rangs :\n"
 "\n"
 
-#: src/base/cs_mesh.c:385
+#: src/base/cs_mesh.c:572
 #, c-format
+msgid " Number of interior faces:                             %d\n"
+msgstr " Nombre de faces internes :                            %d\n"
+
+#: src/base/cs_mesh.c:588
 msgid ""
 "\n"
-" Number of neighboring domains:       %d\n"
+" Histogram of the number of boundary faces per rank:\n"
+"\n"
 msgstr ""
 "\n"
-" Nombre de domaines voisins :         %d\n"
+" Histogramme de la distribution du nombre de faces de bord sur les rangs :\n"
+"\n"
 
-#: src/base/cs_mesh.c:397
+#: src/base/cs_mesh.c:596
+#, c-format
+msgid " Number of boundary faces:                             %d\n"
+msgstr " Nombre de faces de bord :                             %d\n"
+
+#: src/base/cs_mesh.c:617
 msgid ""
 "\n"
-"    Histogram of the number of neighboring domains per rank:\n"
+" Histogram of the number of neighboring domains per rank:\n"
 "\n"
 msgstr ""
 "\n"
-"    Histogramme de la distribution du nombre de voisins sur les rangs :\n"
+" Histogramme de la distribution du nombre de domaines voisins sur les "
+"rangs :\n"
 "\n"
 
-#: src/base/cs_mesh.c:832
+#: src/base/cs_mesh.c:1061
 #, c-format
 msgid ""
 "\n"
@@ -2795,7 +2963,7 @@ msgstr ""
 "                       Y : %14.7e %14.7e\n"
 "                       Z : %14.7e %14.7e\n"
 
-#: src/base/cs_mesh.c:864
+#: src/base/cs_mesh.c:1093
 msgid ""
 "\n"
 " Global definition of the number of elements (cells, vertices, faces...)\n"
@@ -2803,7 +2971,7 @@ msgstr ""
 "\n"
 " Définition globale du nombre d'éléments (cellules, sommets, faces...)\n"
 
-#: src/base/cs_mesh.c:950
+#: src/base/cs_mesh.c:1179
 msgid ""
 "\n"
 " Halo construction with extended neighborhood\n"
@@ -2815,11 +2983,11 @@ msgstr ""
 " ==========================================\n"
 "\n"
 
-#: src/base/cs_mesh.c:957
+#: src/base/cs_mesh.c:1186
 msgid " Periodicities combination\n"
 msgstr " Composition des périodicités\n"
 
-#: src/base/cs_mesh.c:966
+#: src/base/cs_mesh.c:1195
 msgid ""
 "\n"
 " Halo construction with standard neighborhood\n"
@@ -2831,27 +2999,27 @@ msgstr ""
 " ============================================\n"
 "\n"
 
-#: src/base/cs_mesh.c:994
+#: src/base/cs_mesh.c:1223
 msgid " Definition of periodic couples\n"
 msgstr " Définition des couples périodiques\n"
 
-#: src/base/cs_mesh.c:1016
+#: src/base/cs_mesh.c:1245
 msgid " Interface creation\n"
 msgstr " Création de l'interface\n"
 
-#: src/base/cs_mesh.c:1049
+#: src/base/cs_mesh.c:1278
 msgid " Halo creation\n"
 msgstr " Création des halos\n"
 
-#: src/base/cs_mesh.c:1054
+#: src/base/cs_mesh.c:1283
 msgid " Halo definition\n"
 msgstr " Définition des halos\n"
 
-#: src/base/cs_mesh.c:1078
+#: src/base/cs_mesh.c:1307
 msgid " Extended neighborhood structures definition\n"
 msgstr " Définition des structures pour le voisinage étendu\n"
 
-#: src/base/cs_mesh.c:1105
+#: src/base/cs_mesh.c:1334
 #, c-format
 msgid ""
 "\n"
@@ -2860,7 +3028,7 @@ msgstr ""
 "\n"
 " Création de la connectivité étendue (%.3g s)\n"
 
-#: src/base/cs_mesh.c:1254
+#: src/base/cs_mesh.c:1485
 #, c-format
 msgid ""
 " %s\n"
@@ -3016,28 +3184,28 @@ msgstr ""
 "de périodicités multiples par le Préprocesseur.\n"
 "Coordonnées du premier point impacté: [%12.5e, %12.5e %12.5e]."
 
-#: src/base/cs_mesh_halo.c:3478 src/ctwr/cs_ctwr_halo.c:1490
+#: src/base/cs_mesh_halo.c:3502 src/ctwr/cs_ctwr_halo.c:1492
 msgid "    Local halo definition\n"
 msgstr "    Définition du halo local\n"
 
-#: src/base/cs_mesh_halo.c:3490
+#: src/base/cs_mesh_halo.c:3514
 msgid "    Halo cleaning\n"
 msgstr "    Nettoyage des halos\n"
 
-#: src/base/cs_mesh_halo.c:3500
+#: src/base/cs_mesh_halo.c:3524
 msgid "    Distant halo creation\n"
 msgstr "    Création du halo distant\n"
 
-#: src/base/cs_mesh_halo.c:3534
+#: src/base/cs_mesh_halo.c:3558
 msgid "    Updating the faces -> cells connectivity\n"
 msgstr "    Mise à jour de la connectivité faces -> cellules\n"
 
-#: src/base/cs_mesh_quality.c:177
+#: src/base/cs_mesh_quality.c:178
 #, c-format
 msgid "    minimum value =         %10.5e\n"
 msgstr "    valeur minimale =       %10.5e\n"
 
-#: src/base/cs_mesh_quality.c:178
+#: src/base/cs_mesh_quality.c:179
 #, c-format
 msgid ""
 "    maximum value =         %10.5e\n"
@@ -3046,7 +3214,7 @@ msgstr ""
 "    valeur maximale =       %10.5e\n"
 "\n"
 
-#: src/base/cs_mesh_quality.c:921
+#: src/base/cs_mesh_quality.c:922
 msgid ""
 "\n"
 "  Histogram of the interior faces warping:\n"
@@ -3056,7 +3224,7 @@ msgstr ""
 "  Histogramme du gauchissement des faces internes :\n"
 "\n"
 
-#: src/base/cs_mesh_quality.c:926
+#: src/base/cs_mesh_quality.c:927
 msgid ""
 "\n"
 "  Histogram of the boundary faces warping:\n"
@@ -3066,7 +3234,7 @@ msgstr ""
 "  Histogramme du gauchissement des faces de bord:\n"
 "\n"
 
-#: src/base/cs_mesh_quality.c:1019
+#: src/base/cs_mesh_quality.c:1020
 msgid ""
 "\n"
 "  Histogram of the interior faces weighting coefficient:\n"
@@ -3076,7 +3244,7 @@ msgstr ""
 "  Histogramme des coefficients de pondération des faces internes :\n"
 "\n"
 
-#: src/base/cs_mesh_quality.c:1023
+#: src/base/cs_mesh_quality.c:1024
 msgid ""
 "\n"
 "  Histogram of the interior faces off-centering coefficient:\n"
@@ -3086,7 +3254,7 @@ msgstr ""
 "  Histogramme des coefficients de décentrement des faces internes :\n"
 "\n"
 
-#: src/base/cs_mesh_quality.c:1121
+#: src/base/cs_mesh_quality.c:1122
 msgid ""
 "\n"
 "  Histogram of the interior faces non-orthogonality coefficient (in "
@@ -3097,7 +3265,7 @@ msgstr ""
 "  Histogramme de la non-orthogonalité des faces internes (en degrés) :\n"
 "\n"
 
-#: src/base/cs_mesh_quality.c:1127
+#: src/base/cs_mesh_quality.c:1128
 msgid ""
 "\n"
 "  Histogram of the boundary faces non-orthogonality coefficient (in "
@@ -3108,7 +3276,7 @@ msgstr ""
 "  Histogramme de la non-orthogonalité des faces de bord (en degrés) :\n"
 "\n"
 
-#: src/base/cs_mesh_quality.c:1197
+#: src/base/cs_mesh_quality.c:1198
 msgid ""
 "\n"
 "  Histogram of cell volumes:\n"
@@ -3118,7 +3286,7 @@ msgstr ""
 "  Histogramme du volume des cellules :\n"
 "\n"
 
-#: src/base/cs_mesh_quantities.c:164 src/base/cs_mesh_quantities.c:329
+#: src/base/cs_mesh_quantities.c:169 src/base/cs_mesh_quantities.c:333
 msgid ""
 "Face geometric quantities computation is only\n"
 "implemented in 3D."
@@ -3126,13 +3294,13 @@ msgstr ""
 "Le calcul des grandeurs géométriques associées aux faces\n"
 "ne sont implantés qu'en 3D."
 
-#: src/base/cs_mesh_quantities.c:568 src/base/cs_mesh_quantities.c:703
+#: src/base/cs_mesh_quantities.c:572 src/base/cs_mesh_quantities.c:706
 msgid "Cell centre computation is only implemented in 3D."
 msgstr ""
 "Le calcul des centres des cellules\n"
 "ne sont implantés qu'en 3D."
 
-#: src/base/cs_mesh_quantities.c:924
+#: src/base/cs_mesh_quantities.c:927
 #, c-format
 msgid ""
 "The algorithm selection indicator for the cell centre of gravity "
@@ -3148,7 +3316,16 @@ msgstr ""
 "  1 : calcul basé sur les sommets\n"
 "et non %d."
 
-#: src/base/cs_mesh_solcom.c:382 src/base/cs_post.c:3379
+#: src/base/cs_mesh_quantities.c:1232
+#, c-format
+msgid ""
+"  %lu cells have a Negative volume.\n"
+" Run mesh quality check for post-processing output.\n"
+" In case of mesh joining, this may be due to overly  agressive joining "
+"parameters."
+msgstr ""
+
+#: src/base/cs_mesh_solcom.c:382 src/base/cs_post.c:3394
 msgid "Fluid volume"
 msgstr "Volume fluide"
 
@@ -3422,34 +3599,34 @@ msgstr ""
 msgid "  Multigrid cycle: descent\n"
 msgstr "  Cycle multigrille : descente\n"
 
-#: src/base/cs_multigrid.c:1116 src/base/cs_multigrid.c:1300
+#: src/base/cs_multigrid.c:1118 src/base/cs_multigrid.c:1302
 #, c-format
 msgid "    level %3d: smoother\n"
 msgstr "    niveau %3d : lisseur\n"
 
-#: src/base/cs_multigrid.c:1222
+#: src/base/cs_multigrid.c:1224
 msgid "  Resolution on coarsest level\n"
 msgstr "  Résolution sur le niveau le plus grossier\n"
 
-#: src/base/cs_multigrid.c:1269
+#: src/base/cs_multigrid.c:1271
 msgid "  Multigrid cycle: ascent\n"
 msgstr "  Cycle multigrille : remontée\n"
 
-#: src/base/cs_multigrid.c:1437
+#: src/base/cs_multigrid.c:1439
 msgid "Multigrid"
 msgstr "Multigrille"
 
-#: src/base/cs_multigrid.c:1469
+#: src/base/cs_multigrid.c:1471
 #, c-format
 msgid "Multigrid [%s]:\n"
 msgstr "Multigrille [%s]:\n"
 
-#: src/base/cs_multigrid.c:1476
+#: src/base/cs_multigrid.c:1478
 #, c-format
 msgid "Multigrid [%s]: cycle %4d\n"
 msgstr "Multigrille [%s] : cycle %4d\n"
 
-#: src/base/cs_multigrid.c:1629
+#: src/base/cs_multigrid.c:1631
 #, c-format
 msgid ""
 "\n"
@@ -3458,7 +3635,7 @@ msgstr ""
 "\n"
 " Construction de la hiérarchie de grilles pour \"%s\"\n"
 
-#: src/base/cs_multigrid.c:1673
+#: src/base/cs_multigrid.c:1675
 #, c-format
 msgid ""
 " CLMLGA: maximum number of coarse grids (%d)\n"
@@ -3467,7 +3644,7 @@ msgstr ""
 " CLMLGA : nombre de maillages grossiers maximal (%d)\n"
 "          atteint pour \"%s\".\n"
 
-#: src/base/cs_multigrid.c:1684
+#: src/base/cs_multigrid.c:1686
 #, c-format
 msgid ""
 "\n"
@@ -3476,7 +3653,7 @@ msgstr ""
 "\n"
 "   construction de la grille de niveau %2d\n"
 
-#: src/base/cs_multigrid.c:1720
+#: src/base/cs_multigrid.c:1722
 #, c-format
 msgid ""
 "                                  total       min        max\n"
@@ -3487,7 +3664,7 @@ msgstr ""
 "     nombre de cellules : %12lu %10d %10d\n"
 "     nombre de faces :                 %10d %10d\n"
 
-#: src/base/cs_multigrid.c:1729
+#: src/base/cs_multigrid.c:1731
 #, c-format
 msgid ""
 "     number of cells:     %10d\n"
@@ -3496,7 +3673,7 @@ msgstr ""
 "     nombre de cellules : %10d\n"
 "     nombre de faces :    %10d\n"
 
-#: src/base/cs_multigrid.c:1748
+#: src/base/cs_multigrid.c:1750
 #, c-format
 msgid ""
 "   number of coarse grids:           %d\n"
@@ -3551,12 +3728,22 @@ msgstr ""
 "                   [appnum] : numéro de cette application en cas de\n"
 "                              couplage de codes (défaut : 0)\n"
 
-#: src/base/cs_opts.c:128
+#: src/base/cs_opts.c:126
+#, c-format
+msgid ""
+" --mpi-io          <mode> set parallel I/O behavior\n"
+"                     off: do not use MPI-IO\n"
+"                     eo:  MPI-IO with explicit offsets\n"
+"                          (default if available)\n"
+"                     ip:  MPI-IO with individual file pointers\n"
+msgstr ""
+
+#: src/base/cs_opts.c:133
 #, c-format
 msgid " -q, --quality     mesh quality verification mode\n"
 msgstr " -q, --quality     vérification de la qualité du maillage\n"
 
-#: src/base/cs_opts.c:130
+#: src/base/cs_opts.c:135
 #, c-format
 msgid ""
 " --cwf             <criterion> cut warped faces\n"
@@ -3568,7 +3755,7 @@ msgstr ""
 "                    -post : active le post-traitement lié au \n"
 "                            découpage des faces\n"
 
-#: src/base/cs_opts.c:134
+#: src/base/cs_opts.c:139
 #, c-format
 msgid ""
 " --benchmark       elementary operations performance\n"
@@ -3579,7 +3766,7 @@ msgstr ""
 "                   [--mpitrace] opérations effectuées une seule\n"
 "                                fois pour traces MPI légères\n"
 
-#: src/base/cs_opts.c:138
+#: src/base/cs_opts.c:143
 #, c-format
 msgid ""
 " --log             output redirection for rank -1 or 0:\n"
@@ -3590,7 +3777,7 @@ msgstr ""
 "                     0 : sortie standard\n"
 "                     1 : sorties dans \"listing\" (défaut)\n"
 
-#: src/base/cs_opts.c:142
+#: src/base/cs_opts.c:147
 #, c-format
 msgid ""
 " --logp            output redirection for rank > 0:\n"
@@ -3605,24 +3792,24 @@ msgstr ""
 "                         indépendants, type deboggeur)\n"
 "                     1 : sorties dans \"listing_n<rang>\"\n"
 
-#: src/base/cs_opts.c:149
+#: src/base/cs_opts.c:154
 #, c-format
 msgid " -p, --param       <file_name> parameter file\n"
 msgstr " -p, --param       <nom_du_fichier> fichier de paramètres\n"
 
-#: src/base/cs_opts.c:154
+#: src/base/cs_opts.c:159
 #, c-format
 msgid ""
 " --syr-socket      enable sockets for SYRTHES 3 coupling\n"
 "                   <port_num> port number on rank 0\n"
 msgstr ""
 
-#: src/base/cs_opts.c:159
+#: src/base/cs_opts.c:164
 #, c-format
 msgid " --version         print version number\n"
 msgstr " --version         affiche le numéro de version\n"
 
-#: src/base/cs_opts.c:161
+#: src/base/cs_opts.c:166
 #, c-format
 msgid ""
 " -h, --help        this help message\n"
@@ -3631,21 +3818,21 @@ msgstr ""
 " -h, --help        appel de l'aide (cet affichage)\n"
 "\n"
 
-#: src/base/cs_opts.c:174
+#: src/base/cs_opts.c:179
 #, c-format
 msgid "%s version %s\n"
 msgstr "%s version %s\n"
 
-#: src/base/cs_opts.c:327
+#: src/base/cs_opts.c:332
 msgid "command: \n"
 msgstr "commande : \n"
 
-#: src/base/cs_opts.c:342
+#: src/base/cs_opts.c:347
 #, c-format
 msgid "  build %s\n"
 msgstr "  build %s\n"
 
-#: src/base/cs_opts.c:346
+#: src/base/cs_opts.c:351
 #, c-format
 msgid ""
 "  MPI version %d.%d (%s)\n"
@@ -3654,7 +3841,7 @@ msgstr ""
 "  Version MPI %d.%d (%s)\n"
 "\n"
 
-#: src/base/cs_opts.c:349
+#: src/base/cs_opts.c:354
 #, c-format
 msgid ""
 "  MPI version %d.%d\n"
@@ -3728,11 +3915,11 @@ msgstr ""
 msgid "parallel domain"
 msgstr ""
 
-#: src/base/cs_post.c:948
+#: src/base/cs_post.c:951
 msgid "displacement"
 msgstr ""
 
-#: src/base/cs_post.c:1882
+#: src/base/cs_post.c:1885
 #, c-format
 msgid ""
 "The PSTEVA sub-routine argument IVARPR must be\n"
@@ -3741,7 +3928,7 @@ msgstr ""
 "L'argument IVARPR du sous-programme PSTEVA doit être\n"
 "égal à 0 ou 1, et non %d.\n"
 
-#: src/base/cs_post.c:1891
+#: src/base/cs_post.c:1894
 #, c-format
 msgid ""
 "The PSTEVA sub-routine argument IENTLA must be\n"
@@ -3750,7 +3937,7 @@ msgstr ""
 "L'argument IENTLA du sous-programme PSTEVA doit être\n"
 "égal à 0 ou 1, et non %d.\n"
 
-#: src/base/cs_post.c:1958
+#: src/base/cs_post.c:1961
 msgid ""
 "The requested post-processing writer number\n"
 "must be < 0 (reserved) or > 0 (user).\n"
@@ -3758,7 +3945,7 @@ msgstr ""
 "Le numéro de gestionnaire de post traitement demandé\n"
 "doit être < 0 (réservé) ou > 0 (utilisateur).\n"
 
-#: src/base/cs_post.c:1964
+#: src/base/cs_post.c:1967
 #, c-format
 msgid ""
 "The requested post-processing writer number\n"
@@ -3767,7 +3954,11 @@ msgstr ""
 "Le numéro de gestionnaire de post traitement demandé\n"
 "(%d) a déjà été affecté.\n"
 
-#: src/base/cs_post.c:2267
+#: src/base/cs_post.c:2228 src/base/cs_post.c:2231
+msgid " edges"
+msgstr ""
+
+#: src/base/cs_post.c:2320
 #, c-format
 msgid ""
 "The mesh %d cannot be an alias of mesh %d,\n"
@@ -3776,11 +3967,7 @@ msgstr ""
 "Le maillage %d ne peut être un alias du maillage %d,\n"
 "qui est lui-même déjà un alias du maillage %d.\n"
 
-#: src/base/cs_post.c:2332 src/base/cs_post.c:2335
-msgid " edges"
-msgstr ""
-
-#: src/base/cs_post.c:3224
+#: src/base/cs_post.c:3239
 #, c-format
 msgid ""
 "\n"
@@ -3801,25 +3988,25 @@ msgstr ""
 "  Temps écoulé pour les maillages : %12.3f\n"
 "  Temps écoulé pour les champs :    %12.3f\n"
 
-#: src/base/cs_post.c:3396
+#: src/base/cs_post.c:3411
 msgid "Boundary"
 msgstr "Bord"
 
-#: src/base/cs_post.c:3520
+#: src/base/cs_post.c:3535
 msgid "Calculation domain"
 msgstr "Domaine de calcul"
 
-#: src/base/cs_preprocessor_data.c:252
+#: src/base/cs_preprocessor_data.c:250
 #, c-format
 msgid " Adding periodicity %d (translation [%10.4e, %10.4e, %10.4e]).\n"
 msgstr " Ajout de la périodicité %d (translation [%10.4e, %10.4e, %10.4e]).\n"
 
-#: src/base/cs_preprocessor_data.c:257
+#: src/base/cs_preprocessor_data.c:255
 #, c-format
 msgid " Adding periodicity %d (rotation).\n"
 msgstr " Ajout de la périodicité %d (rotation).\n"
 
-#: src/base/cs_preprocessor_data.c:335 src/base/cs_preprocessor_data.c:2129
+#: src/base/cs_preprocessor_data.c:338 src/base/cs_preprocessor_data.c:2149
 #, c-format
 msgid ""
 "Message of type <%s> on <%s>\n"
@@ -3828,16 +4015,20 @@ msgstr ""
 "Message de type <%s> sur <%s>\n"
 "inattendu ou de taille incorrecte"
 
-#: src/base/cs_preprocessor_data.c:352
+#: src/base/cs_preprocessor_data.c:355
 #, c-format
-msgid ""
-" No \"%s\" file available;\n"
-"   an unoptimized domain partitioning will be used.\n"
+msgid " No \"%s\" file available;\n"
 msgstr ""
-" Pas de fichier \"%s\" disponible ;\n"
-"   un découpage de domaines non optimisé sera utilisé.\n"
 
-#: src/base/cs_preprocessor_data.c:400
+#: src/base/cs_preprocessor_data.c:357
+msgid "   an unoptimized domain partitioning will be used.\n"
+msgstr "   un découpage de domaines non optimisé sera utilisé.\n"
+
+#: src/base/cs_preprocessor_data.c:359
+msgid "   domain partitioning will use a space-filling curve.\n"
+msgstr "   le partitionnement sera basé sur une courbe fractale.\n"
+
+#: src/base/cs_preprocessor_data.c:405
 #, c-format
 msgid ""
 "The number of cells reported by file\n"
@@ -3848,7 +4039,7 @@ msgstr ""
 "\"%s\" (%lu)\n"
 "ne correspond pas au maillage courant (%lu)."
 
-#: src/base/cs_preprocessor_data.c:421
+#: src/base/cs_preprocessor_data.c:426
 #, c-format
 msgid ""
 "Le number of ranks reported by file\n"
@@ -3859,7 +4050,7 @@ msgstr ""
 "\"%s\" (%d)\n"
 "ne correspond pas au nombre de rangs courant (%d)."
 
-#: src/base/cs_preprocessor_data.c:1516 src/base/cs_preprocessor_data.c:1776
+#: src/base/cs_preprocessor_data.c:1519 src/base/cs_preprocessor_data.c:1775
 #, c-format
 msgid ""
 "Number of cells on rank %d is zero.\n"
@@ -3868,7 +4059,22 @@ msgstr ""
 "Le nombre de cellules pour le rang %d est nul.\n"
 "(rapport nombre de cellules / nombre de processeurs trop faible)."
 
-#: src/base/cs_preprocessor_data.c:2429
+#: src/base/cs_preprocessor_data.c:2463
+#, c-format
+msgid ""
+"The algorithm selection indicator for domain partitioning\n"
+"can take the following values:\n"
+"  1: partition based on initial numbering\n"
+"  2: partition based on space-filling curve\n"
+"and not %d."
+msgstr ""
+"L'indicateur de choix d'algorithme de partitionement de domaine\n"
+"peut prendre les valeurs suivantes :\n"
+"  1: partition basée sur la numérotation initiale\n"
+"  2: partition basée sur une courbe fractale\n"
+"et non %d."
+
+#: src/base/cs_preprocessor_data.c:2508
 #, c-format
 msgid ""
 "Section of type <%s> on <%s>\n"
@@ -3980,7 +4186,7 @@ msgstr ""
 "Le fichier suite \"%s\" déclare un support numéro %d\n"
 "alors qu'aucun support numéro %d n'a été déclaré."
 
-#: src/base/cs_restart.c:603 src/base/cs_restart.c:935
+#: src/base/cs_restart.c:605 src/base/cs_restart.c:933
 #, c-format
 msgid ""
 "Restart file number <%d> can not be closed\n"
@@ -3989,7 +4195,7 @@ msgstr ""
 "Le fichier suite numéro <%d> ne peut être fermé\n"
 "(fichier déjà fermé ou numéro invalide)."
 
-#: src/base/cs_restart.c:639
+#: src/base/cs_restart.c:641
 #, c-format
 msgid ""
 "Location type <%d> given for a restart file section\n"
@@ -3998,7 +4204,7 @@ msgstr ""
 "Le type de support <%d> indiqué pour une rubrique de\n"
 "fichier suite est invalide pour l'interface Fortran."
 
-#: src/base/cs_restart.c:660
+#: src/base/cs_restart.c:662
 #, c-format
 msgid ""
 "Value type <%d> given for a restart file section\n"
@@ -4007,7 +4213,7 @@ msgstr ""
 "Le type de valeur <%d> indiqué pour une rubrique de\n"
 "fichier suite est invalide pour l'interface Fortran."
 
-#: src/base/cs_restart.c:874
+#: src/base/cs_restart.c:876
 #, c-format
 msgid ""
 "The access mode of the restart file <%s>\n"
@@ -4016,7 +4222,7 @@ msgstr ""
 "Le mode d'ouverture du fichier suite <%s>\n"
 "doit être égal à 1 (lecture) ou 2 (écriture) et non <%d>."
 
-#: src/base/cs_restart.c:989 src/base/cs_restart.c:1040
+#: src/base/cs_restart.c:987 src/base/cs_restart.c:1038
 #, c-format
 msgid ""
 "Information on the restart file number <%d> unavailable\n"
@@ -4025,7 +4231,7 @@ msgstr ""
 "Infomation sur le fichier suite numéro <%d> indisponible\n"
 "(fichier déjà fermé ou numéro invalide)."
 
-#: src/base/cs_restart.c:1374
+#: src/base/cs_restart.c:1372
 #, c-format
 msgid ""
 "The size of location \"%s\" associated with\n"
@@ -4036,7 +4242,7 @@ msgstr ""
 "\"%s\" vaut %lu et ne correspond pas\n"
 "à celle du maillage en cours (%lu).\n"
 
-#: src/base/cs_restart.c:1435
+#: src/base/cs_restart.c:1433
 #, c-format
 msgid ""
 "The restart file \"%s\" references no\n"
@@ -4045,7 +4251,7 @@ msgstr ""
 "\"Le fichier suite \\\"%s\\\" ne contient \\n\"\n"
 "\" aucun support de nom \\\"%s\\\".\""
 
-#: src/base/cs_restart.c:1495
+#: src/base/cs_restart.c:1493
 #, c-format
 msgid ""
 "  Location: %s\n"
@@ -4054,11 +4260,51 @@ msgstr ""
 "  Support : %s\n"
 "    (numéro : %03d, n_glob_ents : %lu)\n"
 
-#: src/base/cs_restart.c:1504
+#: src/base/cs_restart.c:1502
 msgid "  General information associated with the restart file:\n"
 msgstr "  Informations générales associées au fichier suite :\n"
 
-#: src/base/cs_restart.c:1809
+#: src/base/cs_restart.c:1561
+#, c-format
+msgid "  %s: location id %d for \"%s\" does not exist.\n"
+msgstr ""
+
+#: src/base/cs_restart.c:1567
+#, c-format
+msgid "  %s: location id %d for \"%s\" has size %lu, but %lu is expected.\n"
+msgstr ""
+
+#: src/base/cs_restart.c:1589
+#, c-format
+msgid "  %s: section \"%s\" not present.\n"
+msgstr ""
+
+#: src/base/cs_restart.c:1616
+#, c-format
+msgid "  %s: section \"%s\" at location id %d but not at %d.\n"
+msgstr ""
+
+#: src/base/cs_restart.c:1626
+#, c-format
+msgid "  %s: section \"%s\" has %d values per location and  not %d.\n"
+msgstr ""
+
+#: src/base/cs_restart.c:1633
+#, c-format
+msgid "  %s: section \"%s\" has %d values and not %d.\n"
+msgstr ""
+
+#: src/base/cs_restart.c:1643
+#, c-format
+msgid "  %s: section \"%s\" is not of integer type.\n"
+msgstr ""
+
+#: src/base/cs_restart.c:1656
+#, c-format
+msgid "  %s: section \"%s\" is not of floating-point type.\n"
+msgstr ""
+
+#: src/base/cs_restart.c:1840
 #, c-format
 msgid ""
 "\n"
@@ -4079,44 +4325,77 @@ msgstr ""
 "  Temps écoulé pour la lecture :    %12.3f\n"
 "  Temps écoulé pour l'écriture :    %12.3f\n"
 
-#: src/base/cs_sat_coupling.c:182
+#: src/base/cs_sat_coupling.c:231
 #, c-format
 msgid ""
-"Coupling definition is impossible: a distant root rank equal to\n"
-"%d is required, whereas the local group corresponds to\n"
-"rank %d to %d\n"
+" Code_Saturne coupling:\n"
+"   coupling id:              %d\n"
+"   local name:               \"%s\"\n"
+"   local number:             %d\n"
+"\n"
 msgstr ""
-"Définition du couplage impossible : on demande un rang de\n"
-"tête de groupe distant égal à %d, alors que le groupe\n"
-"local correspond aux rangs %d à %d\n"
+" Couplage Code_Saturne :\n"
+"   id de couplage :             %d\n"
+"   nom local :                  \"%s\"\n"
+"   numéro local :               %d\n"
+"\n"
 
-#: src/base/cs_sat_coupling.c:189
+#: src/base/cs_sat_coupling.c:266
+#, c-format
+msgid " Code_Saturne coupling %d: initializing MPI communication ... "
+msgstr " Couplage Code_Saturne %d : initialisation de la communication MPI ..."
+
+#: src/base/cs_sat_coupling.c:277 src/base/cs_syr4_coupling.c:211
 #, c-format
 msgid ""
-"Coupling definition is impossible: a distant root rank equal to\n"
-"%d is required, whereas the global ranks (MPI_COMM_WORLD)\n"
-"range from to 0 to %d\n"
-msgstr ""
-"Définition du couplage impossible : on demande un rang de\n"
-"tête de groupe distant égal à %d, alors que les rangs\n"
-"globaux (MPI_COMM_WORLD) s'étendent de 0 à %d\n"
+"  Local ranks = [%d..%d], distant ranks = [%d..%d].\n"
+"\n"
+msgstr "Rangs locaux = [%d..%d], rangs distants = [%d..%d].\n"
 
-#: src/base/cs_sat_coupling.c:217
+#: src/base/cs_sat_coupling.c:362
 #, c-format
-msgid "coupling: local_ranks = [%d..%d], distant ranks = [%d..%d]\n"
-msgstr "couplage : rangs locaux = [%d..%d], rangs distants = [%d..%d]\n"
+msgid ""
+" Code_Saturne coupling:\n"
+"   coupling id:              %d\n"
+"   local name:               \"%s\"\n"
+"   distant application name: \"%s\"\n"
+"   local number:             %d\n"
+"   MPI application number:   %d\n"
+"   MPI root rank:            %d\n"
+"   number of MPI ranks:      %d\n"
+"\n"
+msgstr ""
+" Couplage Code_Saturne :\n"
+"   id de couplage :             %d\n"
+"   nom local :                  \"%s\"\n"
+"   nom d'application distante : \"%s\"\n"
+"   numéro local :               %d\n"
+"   numéro d'application MPI :   %d\n"
+"   rang racine MPI :            %d\n"
+"   nombre de rangs MPI :        %d\n"
+"\n"
 
-#: src/base/cs_sat_coupling.c:662 src/base/cs_sat_coupling.c:807
-#: src/base/cs_sat_coupling.c:874 src/base/cs_sat_coupling.c:949
-#: src/base/cs_sat_coupling.c:1010 src/base/cs_sat_coupling.c:1080
-#: src/base/cs_sat_coupling.c:1178 src/base/cs_sat_coupling.c:1257
-#: src/base/cs_sat_coupling.c:1348 src/base/cs_sat_coupling.c:1424
-#: src/base/cs_sat_coupling.c:1492
+#: src/base/cs_sat_coupling.c:1015 src/base/cs_sat_coupling.c:1222
+#: src/base/cs_sat_coupling.c:1289 src/base/cs_sat_coupling.c:1364
+#: src/base/cs_sat_coupling.c:1425 src/base/cs_sat_coupling.c:1495
+#: src/base/cs_sat_coupling.c:1593 src/base/cs_sat_coupling.c:1672
+#: src/base/cs_sat_coupling.c:1763 src/base/cs_sat_coupling.c:1839
+#: src/base/cs_sat_coupling.c:1907
 #, c-format
 msgid "Impossible coupling number %d; there are %d couplings"
 msgstr "Numéro de couplage %d impossible ;  on a %d couplages"
 
-#: src/base/cs_sat_coupling.c:887
+#: src/base/cs_sat_coupling.c:1030
+#, c-format
+msgid "coupled_cells_%d"
+msgstr ""
+
+#: src/base/cs_sat_coupling.c:1049
+#, c-format
+msgid "coupled_faces_%d"
+msgstr ""
+
+#: src/base/cs_sat_coupling.c:1302
 #, c-format
 msgid ""
 "Coupling %d: inconsistent arguments for LELCPL()\n"
@@ -4127,7 +4406,7 @@ msgstr ""
 "On a indiqué NCECPL = %d et NFBCPL = %d.\n"
 "On devrait avoir les valeurs %d et %d pour ce couplage."
 
-#: src/base/cs_sat_coupling.c:962
+#: src/base/cs_sat_coupling.c:1377
 #, c-format
 msgid ""
 "Coupling %d: inconsistent arguments for LELNCP()\n"
@@ -4138,7 +4417,7 @@ msgstr ""
 "On a indiqué NCENCP = %d et NFBNCP = %d.\n"
 "On devrait avoir les valeurs %d et %d pour ce couplage."
 
-#: src/base/cs_sat_coupling.c:1104
+#: src/base/cs_sat_coupling.c:1519
 #, c-format
 msgid ""
 "Coupling %d: inconsistent arguments for COOCPL()\n"
@@ -4149,13 +4428,13 @@ msgstr ""
 "On a indiqué ITYDIS = %d et NBRPTS = %d.\n"
 "On devrait avoir la valeur %d pour NBRPTS."
 
-#: src/base/cs_sat_coupling.c:1185
+#: src/base/cs_sat_coupling.c:1600
 msgid ""
 "The centred interpolation scheme is not available\n"
 "when coupling cells"
 msgstr ""
 
-#: src/base/cs_sat_coupling.c:1196
+#: src/base/cs_sat_coupling.c:1611
 #, c-format
 msgid ""
 "Coupling %d: inconsistent arguments for PNDCPL().\n"
@@ -4166,7 +4445,7 @@ msgstr ""
 "On a indiqué ITYLOC = %d et NBRPTS = %d.\n"
 "On devrait avoir la valeur %d pour NBRPTS."
 
-#: src/base/cs_sat_coupling.c:1274
+#: src/base/cs_sat_coupling.c:1689
 #, c-format
 msgid ""
 "Coupling %d: inconsistent arguments for VARCPL()\n"
@@ -4177,7 +4456,7 @@ msgstr ""
 "On a indiqué ITYVAR = %d et NBRDIS = %d.\n"
 "On devrait avoir la valeur 0 ou %d pour NBRDIS."
 
-#: src/base/cs_sat_coupling.c:1281
+#: src/base/cs_sat_coupling.c:1696
 #, c-format
 msgid ""
 "Coupling %d: inconsistent arguments for VARCPL()\n"
@@ -4188,6 +4467,14 @@ msgstr ""
 "On a indiqué ITYVAR = %d et NBRLOC = %d.\n"
 "On devrait avoir la valeur 0 ou %d pour NBRLOC."
 
+#: src/base/cs_sat_coupling.c:2068
+msgid ""
+"At least 1 Code_Saturne coupling was defined for which\n"
+"no communication with a Code_Saturne instance is possible."
+msgstr ""
+"Au moins 1 couplage Code_Saturne a été défini pour lequel\n"
+"aucune communication avec une instance de Code_Saturne n'est possible."
+
 #: src/base/cs_selector.c:279
 #, c-format
 msgid ""
@@ -4254,7 +4541,7 @@ msgstr "  Temps CPU cumulé :                %12.3f\n"
 msgid "  n_iter     res_abs     res_nor\n"
 msgstr "  n_iter     res_abs     res_nor\n"
 
-#: src/base/cs_sles.c:424 src/base/cs_sles.c:1370
+#: src/base/cs_sles.c:424 src/base/cs_sles.c:1362
 #, c-format
 msgid "  n_iter : %5d, res_abs : %11.4e, res_nor : %11.4e\n"
 msgstr "  n_iter : %5d, res_abs : %11.4e, res_nor : %11.4e\n"
@@ -4276,7 +4563,7 @@ msgstr ""
 msgid " @@ Warning: non convergence\n"
 msgstr " @@ Attention : non convergence\n"
 
-#: src/base/cs_sles.c:1382
+#: src/base/cs_sles.c:1374
 #, c-format
 msgid ""
 "\n"
@@ -4297,7 +4584,7 @@ msgstr ""
 "\n"
 "    La matrice ne peut plus être considérée come  inversible."
 
-#: src/base/cs_sles.c:1448
+#: src/base/cs_sles.c:1439
 #, c-format
 msgid ""
 "\n"
@@ -4320,12 +4607,12 @@ msgstr ""
 "\n"
 "    La résolution ne progresse plus."
 
-#: src/base/cs_sles.c:1756
+#: src/base/cs_sles.c:1747
 #, c-format
 msgid "%s: error (divergence) solving for %s"
 msgstr ""
 
-#: src/base/cs_sles.c:1871
+#: src/base/cs_sles.c:1862
 #, c-format
 msgid ""
 "%s [%s]:\n"
@@ -4526,11 +4813,11 @@ msgstr ""
 "\n"
 " *** Renumerotation de la liste des faces de bord    ..."
 
-#: src/base/cs_syr3_coupling.c:827 src/base/cs_syr4_coupling.c:624
+#: src/base/cs_syr3_coupling.c:827 src/base/cs_syr4_coupling.c:623
 msgid "Wall T"
 msgstr "T Paroi"
 
-#: src/base/cs_syr3_coupling.c:837 src/base/cs_syr4_coupling.c:624
+#: src/base/cs_syr3_coupling.c:837 src/base/cs_syr4_coupling.c:623
 msgid "Flux"
 msgstr "Flux"
 
@@ -4550,7 +4837,7 @@ msgstr ""
 "\n"
 "Libération des structures associées au couplage avec SYRTHES 3.\n"
 
-#: src/base/cs_syr3_coupling.c:1253 src/base/cs_syr4_coupling.c:977
+#: src/base/cs_syr3_coupling.c:1253 src/base/cs_syr4_coupling.c:976
 #, c-format
 msgid ""
 "\n"
@@ -4614,7 +4901,7 @@ msgstr "\tInterpolation des sommets vers les éléments           ..."
 msgid "\tInterpolation from elements to vertices            ..."
 msgstr "\tInterpolation des éléments sur les sommets            ..."
 
-#: src/base/cs_syr3_messages.c:157 src/base/cs_syr4_coupling.c:934
+#: src/base/cs_syr3_messages.c:157 src/base/cs_syr4_coupling.c:933
 #, c-format
 msgid ""
 "========================================================\n"
@@ -4669,14 +4956,7 @@ msgstr ""
 msgid " SYRTHES coupling %d: initializing MPI communication ... "
 msgstr " Couplage SYRTHES %d : initialisation de la communication MPI ..."
 
-#: src/base/cs_syr4_coupling.c:211
-#, c-format
-msgid ""
-"  Local ranks = [%d..%d], distant ranks = [%d..%d].\n"
-"\n"
-msgstr "Rangs locaux = [%d..%d], rangs distants = [%d..%d].\n"
-
-#: src/base/cs_syr4_coupling.c:350
+#: src/base/cs_syr4_coupling.c:349
 msgid ""
 "\n"
 "Extracting coupled mesh             ..."
@@ -4684,17 +4964,17 @@ msgstr ""
 "\n"
 "Extraction du maillage couplé           ..."
 
-#: src/base/cs_syr4_coupling.c:358
+#: src/base/cs_syr4_coupling.c:357
 #, c-format
 msgid "SYRTHES_cells_%d"
 msgstr "Cellules_SYRTHES_%d"
 
-#: src/base/cs_syr4_coupling.c:379
+#: src/base/cs_syr4_coupling.c:378
 #, c-format
 msgid "SYRTHES_faces_%d"
 msgstr "Faces_SYRTHES_%d"
 
-#: src/base/cs_syr4_coupling.c:406
+#: src/base/cs_syr4_coupling.c:405
 #, c-format
 msgid ""
 " Selection criteria:\n"
@@ -4705,15 +4985,15 @@ msgstr ""
 " \"%s\"\n"
 " produit un maillage vide pour le couplage SYRTHES.\n"
 
-#: src/base/cs_syr4_coupling.c:421
+#: src/base/cs_syr4_coupling.c:420
 msgid "Projecting the extracted mesh to 2D ..."
 msgstr "Projection 2D du maillage extrait  ..."
 
-#: src/base/cs_syr4_coupling.c:429
+#: src/base/cs_syr4_coupling.c:428
 msgid "Error projecting the extracted mesh."
 msgstr "Erreur lors de la projection du maillage extrait."
 
-#: src/base/cs_syr4_coupling.c:456
+#: src/base/cs_syr4_coupling.c:455
 #, c-format
 msgid ""
 "\n"
@@ -4722,7 +5002,7 @@ msgstr ""
 "\n"
 "Maillage extrait composé de %lu éléments.\n"
 
-#: src/base/cs_syr4_coupling.c:507
+#: src/base/cs_syr4_coupling.c:506
 #, c-format
 msgid ""
 "Coupling with SYRTHES impossible:\n"
@@ -4733,7 +5013,7 @@ msgstr ""
 "%lu centres d'éléments du maillage \"%s\"\n"
 "non localisés sur le maillage SYRTHES."
 
-#: src/base/cs_syr4_coupling.c:763
+#: src/base/cs_syr4_coupling.c:762
 msgid ""
 "Coupling with SYRTHES impossible.\n"
 "No selection criteria for faces or cells to couple."
@@ -4741,7 +5021,7 @@ msgstr ""
 "Couplage avec SYRTHES impossible.\n"
 "Aucun critère de sélection pour les faces ou les cellules à coupler."
 
-#: src/base/cs_syr4_coupling.c:831
+#: src/base/cs_syr4_coupling.c:830
 msgid ""
 "\n"
 "Structures associated with SYRTHES 4 coupling freed.\n"
@@ -4749,7 +5029,7 @@ msgstr ""
 "\n"
 "Libération des structures associées au couplage avec SYRTHES 4.\n"
 
-#: src/base/cs_syr4_coupling.c:878
+#: src/base/cs_syr4_coupling.c:877
 #, c-format
 msgid ""
 "========================================================\n"
@@ -4766,7 +5046,7 @@ msgstr ""
 "      Options SYRTHES      : \"%s\"\n"
 "========================================================\n"
 
-#: src/base/cs_syr4_coupling.c:949
+#: src/base/cs_syr4_coupling.c:948
 #, c-format
 msgid ""
 "========================================================\n"
@@ -4783,7 +5063,7 @@ msgstr ""
 "      message attendu : cmd:iter:start\n"
 "========================================================\n"
 
-#: src/base/cs_syr4_coupling.c:1008
+#: src/base/cs_syr4_coupling.c:1007
 #, c-format
 msgid ""
 " Message received from SYRTHES: \"%s\"\n"
@@ -4792,7 +5072,7 @@ msgstr ""
 " Le message reçu de SYRTHES: \"%s\"\n"
 " indique une erreur ou est inattendu."
 
-#: src/base/cs_syr4_coupling.c:1013
+#: src/base/cs_syr4_coupling.c:1012
 #, c-format
 msgid ""
 "\n"
@@ -4851,7 +5131,7 @@ msgstr ""
 "Au moins 1 couplage SYRTHES a été défini pour lequel\n"
 "aucune communication avec une instance de SYRTHES n'est possible."
 
-#: src/base/cs_tpar1d.c:443
+#: src/base/cs_tpar1d.c:444
 #, c-format
 msgid ""
 "Abort while opening the 1D-wall thermal module restart file in read mode.\n"
@@ -4861,7 +5141,7 @@ msgstr ""
 "paroi.\n"
 "Vérifier l'existence et le nom du fichier suite: %s \n"
 
-#: src/base/cs_tpar1d.c:460
+#: src/base/cs_tpar1d.c:461 src/ctwr/cs_ctwr.c:672
 msgid ""
 "Abort while reading the 1D-wall thermal module restart file.\n"
 "The number of boundary faces has been modified\n"
@@ -4871,7 +5151,7 @@ msgstr ""
 "Le nombre de faces de bord a été modifié\n"
 "Vérifier que le fichier suite correspond bien au cas traité.\n"
 
-#: src/base/cs_tpar1d.c:485
+#: src/base/cs_tpar1d.c:486
 #, c-format
 msgid ""
 "WARNING: ABORT WHILE READING THE RESTART FILE\n"
@@ -4896,8 +5176,8 @@ msgstr ""
 "Verifier que le fichier suite utilise correspond bien\n"
 "a un fichier suite de module thermique 1D en paroi.\n"
 
-#: src/base/cs_tpar1d.c:524 src/base/cs_tpar1d.c:612 src/base/cs_tpar1d.c:666
-#: src/base/cs_tpar1d.c:702
+#: src/base/cs_tpar1d.c:525 src/base/cs_tpar1d.c:613 src/base/cs_tpar1d.c:667
+#: src/base/cs_tpar1d.c:703
 #, c-format
 msgid ""
 "Problem while reading section in the restart file\n"
@@ -4910,7 +5190,7 @@ msgstr ""
 "<%s>\n"
 "Le calcul ne sera pas executé.\n"
 
-#: src/base/cs_tpar1d.c:543
+#: src/base/cs_tpar1d.c:544
 #, c-format
 msgid ""
 "WARNING: ABORT WHILE READING THE RESTART FILE\n"
@@ -4943,7 +5223,7 @@ msgstr ""
 "au cas traité.\n"
 "Vérifier uspt1d.\n"
 
-#: src/base/cs_tpar1d.c:569
+#: src/base/cs_tpar1d.c:570
 msgid ""
 "WARNING: ABORT WHILE READING THE RESTART FILE\n"
 "********               1D-WALL THERMAL MODULE\n"
@@ -4977,7 +5257,7 @@ msgstr ""
 "(se reporter à la documentation utilisateur pour les\n"
 "spécificités du test sur IFPT1D)"
 
-#: src/base/cs_tpar1d.c:625
+#: src/base/cs_tpar1d.c:626
 msgid ""
 "WARNING: ABORT WHILE READING THE RESTART FILE\n"
 "********               1D-WALL THERMAL MODULE\n"
@@ -5007,7 +5287,7 @@ msgstr ""
 "au cas traité.\n"
 "Vérifier uspt1d.\n"
 
-#: src/base/cs_tpar1d.c:721
+#: src/base/cs_tpar1d.c:722
 msgid ""
 "WARNING: ABORT WHILE READING THE RESTART FILE\n"
 "********               1D-WALL THERMAL MODULE\n"
@@ -5037,7 +5317,7 @@ msgstr ""
 "au cas traité.\n"
 "Verifier uspt1d.\n"
 
-#: src/base/cs_tpar1d.c:767
+#: src/base/cs_tpar1d.c:768
 #, c-format
 msgid ""
 "Problem while reading the section in the restart file\n"
@@ -5048,7 +5328,7 @@ msgstr ""
 "thermique 1D en paroi:\n"
 "<%s>\n"
 
-#: src/base/cs_tpar1d.c:836
+#: src/base/cs_tpar1d.c:837
 #, c-format
 msgid ""
 "Abort while opening the 1D-wall thermal module restart file in write mode.\n"
@@ -5058,31 +5338,157 @@ msgstr ""
 "paroi.\n"
 "Vérifier l''existence et le nom du fichier suite: %s \n"
 
-#: src/ctwr/cs_ctwr.c:2097
+#: src/ctwr/cs_ctwr.c:477
+#, c-format
+msgid ""
+"Abort while opening the cooling tower module restart file in write mode.\n"
+"Verify the existence and the name of the restart file: %s\n"
+msgstr ""
+"Arret à l'ouverture en écriture du fichier suite aéroréfrigérants.\n"
+"Vérifier l''existence et le nom du fichier suite: %s \n"
+
+#: src/ctwr/cs_ctwr.c:655
+#, c-format
+msgid ""
+"Abort while opening the cooling tower AERO module restart file in read "
+"mode.\n"
+"Verify the existence and the name of the restart file: %s\n"
+msgstr ""
+"Arret à l'ouverture en lecture du fichier suite aéroréfrigérants.\n"
+"Vérifier l'existence et le nom du fichier suite: %s \n"
+
+#: src/ctwr/cs_ctwr.c:722 src/ctwr/cs_ctwr.c:793 src/ctwr/cs_ctwr.c:861
+#: src/ctwr/cs_ctwr.c:891 src/ctwr/cs_ctwr.c:921
+#, c-format
+msgid ""
+"Problem while reading section in the restart file\n"
+"for the cooling tower module:\n"
+"<%s>\n"
+"The calculation will not be run.\n"
+msgstr ""
+"Problème à la lecture de la rubrique dans le fichier suite du module "
+"aéroréfrigérants :\n"
+"<%s>\n"
+"Le calcul ne sera pas executé.\n"
+
+#: src/ctwr/cs_ctwr.c:730
+#, c-format
+msgid ""
+"WARNING: ABORT WHILE READING THE RESTART FILE\n"
+"********               cooling tower MODULE\n"
+"       CURRENT AND PREVIOUS DATA ARE DIFFERENT\n"
+"\n"
+"The model is different \n"
+"PREVIOUS: %d \n"
+"CURRENT:  %d \n"
+msgstr ""
+
+#: src/ctwr/cs_ctwr.c:740
+#, c-format
+msgid ""
+"WARNING: ABORT WHILE READING THE RESTART FILE\n"
+"********               cooling tower MODULE\n"
+"       CURRENT AND PREVIOUS DATA ARE DIFFERENT\n"
+"\n"
+"The type is different \n"
+"PREVIOUS: %d \n"
+"CURRENT:  %d \n"
+msgstr ""
+
+#: src/ctwr/cs_ctwr.c:750
+#, c-format
+msgid ""
+"WARNING: ABORT WHILE READING THE RESTART FILE\n"
+"********               cooling tower MODULE\n"
+"       CURRENT AND PREVIOUS DATA ARE DIFFERENT\n"
+"\n"
+"The number of nodes on each vertical mesh for \n"
+"the water mesh has been modified.\n"
+"PREVIOUS: %d nodes\n"
+"CURRENT:  %d nodes\n"
+"\n"
+"The calculation will not be run.\n"
+"\n"
+"Verify that the restart file corresponds to a\n"
+"restart file for the cooling tower  module.\n"
+"Verify usctdz.\n"
+msgstr ""
+"ATTENTION : LECTURE DU FICHIER SUITE\n"
+"*********   MODULE AEROREFRIGERANTS\n"
+"      DONNEES AMONT ET ACTUELLES DIFFERENTES\n"
+"\n"
+"Le nombre de noeuds sur les maillages verticaux\n"
+"pour le maillage eau a été modifié.\n"
+"AMONT  : %d noeuds\n"
+"ACTUEL : %d noeuds\n"
+"\n"
+"Le calcul ne peut être exécuté.\n"
+"\n"
+"Vérifier que le fichier suite utilisé correspond bien\n"
+"au cas traité.\n"
+"Vérifier usctdz.\n"
+
+#: src/ctwr/cs_ctwr.c:801
+#, c-format
+msgid ""
+"WARNING: ABORT WHILE READING THE RESTART FILE\n"
+"********               cooling tower MODULE\n"
+"       CURRENT AND PREVIOUS DATA ARE DIFFERENT\n"
+"\n"
+"The Water entry temperature  is different \n"
+"PREVIOUS: %f \n"
+"CURRENT:  %f \n"
+msgstr ""
+
+#: src/ctwr/cs_ctwr.c:810
+#, c-format
+msgid ""
+"WARNING: ABORT WHILE READING THE RESTART FILE\n"
+"********               cooling tower MODULE\n"
+"       CURRENT AND PREVIOUS DATA ARE DIFFERENT\n"
+"\n"
+"The Water entry flow is different \n"
+"PREVIOUS: %f \n"
+"CURRENT:  %f \n"
+msgstr ""
+
+#: src/ctwr/cs_ctwr.c:819 src/ctwr/cs_ctwr.c:828
+#, c-format
+msgid ""
+"WARNING: ABORT WHILE READING THE RESTART FILE\n"
+"********               cooling tower MODULE\n"
+"       CURRENT AND PREVIOUS DATA ARE DIFFERENT\n"
+"\n"
+"The value of Exchange law lambda coefficient is different \n"
+"PREVIOUS: %f \n"
+"CURRENT:  %f \n"
+msgstr ""
+
+#: src/ctwr/cs_ctwr.c:2627
 msgid "T water"
 msgstr ""
 
-#: src/ctwr/cs_ctwr.c:2109
+#: src/ctwr/cs_ctwr.c:2639
 msgid "Flux water"
 msgstr ""
 
-#: src/ctwr/cs_ctwr_halo.c:1521
+#: src/ctwr/cs_ctwr_halo.c:1523
 msgid "    Updating the vertex -> faces connectivity\n"
 msgstr "    Mise à jour de la connectivité faces -> cellules\n"
 
-#: src/ctwr/cs_ctwr_halo.c:1553
+#: src/ctwr/cs_ctwr_halo.c:1555
 msgid "    Distant halo definition\n"
 msgstr "    Création du halo distant\n"
 
-#: src/ctwr/cs_ctwr_mesh.c:1233
-msgid " Création des halos\n"
+#: src/ctwr/cs_ctwr_mesh.c:1198
+msgid " Creating halos\n"
 msgstr ""
 
-#: src/ctwr/cs_ctwr_mesh.c:1238
-msgid " Définition des halos\n"
+#: src/ctwr/cs_ctwr_mesh.c:1203
+msgid " Defining halos\n"
 msgstr ""
 
-#: src/lagr/cs_lagr.c:175
+#: src/lagr/cs_lagr.c:202
 #, c-format
 msgid ""
 "overflow |%g| > %g\n"
@@ -5091,7 +5497,7 @@ msgstr ""
 "Dépassement |%g| > %g\n"
 "Vérifiez la boite englobante pour vos données."
 
-#: src/lagr/cs_lagr.c:414
+#: src/lagr/cs_lagr.c:464
 msgid "IEEE 754 arithmetic is not supported by the current architecture."
 msgstr ""
 "L'arithmétique IEEE 754 n'est pas respectée par l'architecture courante."
diff --git a/sbin/backup b/sbin/backup
index 4f15060..96e2d62 100755
--- a/sbin/backup
+++ b/sbin/backup
@@ -38,7 +38,7 @@ fi
 
 PREFIX_BASE=`basename $PREFIX`
 
-tar cvf $ARCHNAME $PREFIX_BASE/ChangeLog $PREFIX/ABOUT-NLS $PREFIX_BASE/AUTHORS \
+tar cvf $ARCHNAME $PREFIX_BASE/ChangeLog $PREFIX_BASE/ABOUT-NLS $PREFIX_BASE/AUTHORS \
                   $PREFIX_BASE/COPYING $PREFIX_BASE/INSTALL $PREFIX_BASE/NEWS \
                   $PREFIX_BASE/COMPATIBILITY $PREFIX_BASE/QUALITY_ASSURANCE \
                   $PREFIX_BASE/README $PREFIX_BASE/TODO $PREFIX_BASE/cs_config.h.in \
diff --git a/sbin/rmb b/sbin/rmb
index cc02c2c..86e4292 100755
--- a/sbin/rmb
+++ b/sbin/rmb
@@ -3,11 +3,14 @@
 PREFIX=`dirname $0`
 PREFIX="$PREFIX/.."
 
-RMBDIR=tmp_rmb
+RMBDIR=/tmp/tmp_rmb
 
-mkdir $RMBDIR || exit 1
+mkdir -p $RMBDIR || exit 1
 
-for file in $PREFIX/src/*/*.c $PREFIX/src/*/*.f90 $PREFIX/users/*/*.f90 $PREFIX/include/*/*.h
+cd $PREFIX
+
+for file in src/*/*.c src/*/*.f90 users/*/*.f90 include/*/*.h \
+            gui/*/*.py bin/*.py bin/*.in bin/runcase*
 do
   tmpfile=`basename $file`
   sed -e 's/ *$//' -e 's/	/        /g' $file > $RMBDIR/$tmpfile
diff --git a/src/Makefile.in b/src/Makefile.in
index 1647933..26debbe 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -37,8 +38,9 @@
 #-------------------------------------------------------------------------------
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -60,6 +62,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -75,6 +78,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -86,10 +90,38 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	ps-recursive uninstall-recursive
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AR = @AR@
@@ -132,6 +164,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -168,11 +202,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -187,15 +219,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -240,7 +275,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -257,8 +293,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -289,14 +328,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -314,6 +353,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -328,7 +368,7 @@ clean-libtool:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -345,7 +385,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -353,7 +393,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -379,16 +419,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -396,14 +436,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -415,7 +455,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
@@ -424,29 +464,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -467,29 +512,44 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
 	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -519,6 +579,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -537,6 +598,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -545,18 +608,28 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -577,8 +650,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am check check-am clean clean-generic clean-libtool \
@@ -594,6 +667,7 @@ uninstall-am:
 	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
 	uninstall uninstall-am
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/apps/Makefile.am b/src/apps/Makefile.am
index 8323ca7..6db5317 100644
--- a/src/apps/Makefile.am
+++ b/src/apps/Makefile.am
@@ -26,7 +26,7 @@ AM_CPPFLAGS = \
 -I$(top_srcdir)/include/base \
 -I$(top_srcdir)/include/ctwr \
 -I$(top_srcdir)/include/lagr \
- at BFT_CPPFLAGS@ @FVM_CPPFLAGS@ @MEI_CPPFLAGS@ @MPI_CPPFLAGS@ @LIBXML2_CPPFLAGS@ @BLAS_CPPFLAGS@
+ at FVM_CPPFLAGS@ @MEI_CPPFLAGS@ @BFT_CPPFLAGS@ @MPI_CPPFLAGS@ @LIBXML2_CPPFLAGS@ @BLAS_CPPFLAGS@
 
 AM_CFLAGS = @CFLAGS_DBG@ @CFLAGS_OPT@
 
@@ -56,9 +56,9 @@ libsaturne_la_LDFLAGS = -no-undefined -version 0:0:0
 
 bin_PROGRAMS = cs_solver
 cs_solver_SOURCES =
-cs_solver_LDADD = libsaturne.la \
- at MEI_LDFLAGS@ @MEI_LIBS@ \
+cs_solver_LDADD = libsaturne.la $(LTLIBINTL) \
 @FVM_LDFLAGS@ @FVM_LIBS@ \
+ at MEI_LDFLAGS@ @MEI_LIBS@ \
 @BFT_LDFLAGS@ @BFT_LIBS@ \
 @MPI_LDFLAGS@ @MPI_LIBS@ \
 @LIBXML2_LDFLAGS@ @LIBXML2_LIBS@ \
diff --git a/src/apps/Makefile.in b/src/apps/Makefile.in
index ac8d522..df92c25 100644
--- a/src/apps/Makefile.in
+++ b/src/apps/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -41,8 +42,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -65,6 +67,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -80,14 +83,29 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"
-libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libsaturne_la_DEPENDENCIES = $(top_builddir)/src/base/libcshot.la \
 	$(top_builddir)/src/base/libcsbase.la \
@@ -107,14 +125,15 @@ libsaturne_la_OBJECTS = $(am_libsaturne_la_OBJECTS)
 libsaturne_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(libsaturne_la_LDFLAGS) $(LDFLAGS) -o $@
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
 am_cs_solver_OBJECTS =
 cs_solver_OBJECTS = $(am_cs_solver_OBJECTS)
-cs_solver_DEPENDENCIES = libsaturne.la
+am__DEPENDENCIES_1 =
+cs_solver_DEPENDENCIES = libsaturne.la $(am__DEPENDENCIES_1)
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
@@ -171,6 +190,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -207,11 +228,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -226,15 +245,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -279,7 +301,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -296,8 +319,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -324,7 +350,7 @@ AM_CPPFLAGS = \
 -I$(top_srcdir)/include/base \
 -I$(top_srcdir)/include/ctwr \
 -I$(top_srcdir)/include/lagr \
- at BFT_CPPFLAGS@ @FVM_CPPFLAGS@ @MEI_CPPFLAGS@ @MPI_CPPFLAGS@ @LIBXML2_CPPFLAGS@ @BLAS_CPPFLAGS@
+ at FVM_CPPFLAGS@ @MEI_CPPFLAGS@ @BFT_CPPFLAGS@ @MPI_CPPFLAGS@ @LIBXML2_CPPFLAGS@ @BLAS_CPPFLAGS@
 
 AM_CFLAGS = @CFLAGS_DBG@ @CFLAGS_OPT@
 AM_LDFLAGS = 
@@ -349,9 +375,9 @@ $(top_builddir)/src/rayt/libcsrayt.la
 
 libsaturne_la_LDFLAGS = -no-undefined -version 0:0:0
 cs_solver_SOURCES = 
-cs_solver_LDADD = libsaturne.la \
- at MEI_LDFLAGS@ @MEI_LIBS@ \
+cs_solver_LDADD = libsaturne.la $(LTLIBINTL) \
 @FVM_LDFLAGS@ @FVM_LIBS@ \
+ at MEI_LDFLAGS@ @MEI_LIBS@ \
 @BFT_LDFLAGS@ @BFT_LIBS@ \
 @MPI_LDFLAGS@ @MPI_LIBS@ \
 @LIBXML2_LDFLAGS@ @LIBXML2_LIBS@ \
@@ -366,14 +392,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/apps/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/apps/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/apps/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/apps/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -391,23 +417,28 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
 	  if test -f $$p; then \
-	    f=$(am__strip_dir) \
-	    echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
-	    $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+	    list2="$$list2 $$p"; \
 	  else :; fi; \
-	done
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+	}
 
 uninstall-libLTLIBRARIES:
 	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  p=$(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
 	done
 
 clean-libLTLIBRARIES:
@@ -423,31 +454,46 @@ libsaturne.la: $(libsaturne_la_OBJECTS) $(libsaturne_la_DEPENDENCIES)
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
 	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_PROGRAMS)'; for p in $$list; do \
-	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-	  if test -f $$p \
-	     || test -f $$p1 \
-	  ; then \
-	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
-	   echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-	   $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
-	  else :; fi; \
-	done
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p || test -f $$p1; \
+	  then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
 
 uninstall-binPROGRAMS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_PROGRAMS)'; for p in $$list; do \
-	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
-	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
-	done
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' `; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
 
 clean-binPROGRAMS:
-	@list='$(bin_PROGRAMS)'; for p in $$list; do \
-	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-	  echo " rm -f $$p $$f"; \
-	  rm -f $$p $$f ; \
-	done
+	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
 cs_solver$(EXEEXT): $(cs_solver_OBJECTS) $(cs_solver_DEPENDENCIES) 
 	@rm -f cs_solver$(EXEEXT)
 	$(LINK) $(cs_solver_OBJECTS) $(cs_solver_LDADD) $(LIBS)
@@ -462,21 +508,21 @@ distclean-compile:
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
@@ -492,14 +538,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -507,29 +553,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -550,13 +601,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -589,6 +644,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -610,6 +666,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -618,18 +676,28 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am: install-binPROGRAMS install-libLTLIBRARIES
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -669,6 +737,7 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES
 	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
 	uninstall-am uninstall-binPROGRAMS uninstall-libLTLIBRARIES
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/apps/cs_solver.c b/src/apps/cs_solver.c
index 0853348..361c92a 100644
--- a/src/apps/cs_solver.c
+++ b/src/apps/cs_solver.c
@@ -33,9 +33,19 @@
 #include "cs_config.h"
 #endif
 
+/* On glibc-based systems, define _GNU_SOURCE so as to enable floating-point
+   error exceptions; on Itanium, optimized code may raise such exceptions
+   due to speculative execution, so we only enable raising of such exceptions
+   for code compiled in debug mode, where reduced optimization should not lead
+   to such exceptions, and locating the "true" origin of floating-point
+   exceptions is helpful. */
+
 #if defined(__linux__) || defined(__linux) || defined(linux)
+#if    (!defined(__ia64__) && !defined(__blrts__) && !defined(__bgp__)) \
+    || defined(DEBUG)
 #define _GNU_SOURCE
 #endif
+#endif
 
 /*----------------------------------------------------------------------------
  * Standard C library headers
@@ -186,31 +196,14 @@ cs_run(void)
 
   cs_base_system_info();
 
+  cs_io_defaults_info();
+
   /* Initialize global structures for main mesh */
 
   cs_glob_mesh = cs_mesh_create();
   cs_glob_mesh_builder = cs_mesh_builder_create();
   cs_glob_mesh_quantities = cs_mesh_quantities_create();
 
-  /* Initialize reading of Preprocessor output */
-
-  if (opts.ifoenv != 0) {
-#if defined(FVM_HAVE_MPI)
-    cs_glob_pp_io = cs_io_initialize("preprocessor_output",
-                                     "Face-based mesh definition, R0",
-                                     CS_IO_MODE_READ,
-                                     cs_glob_io_hints,
-                                     CS_IO_ECHO_OPEN_CLOSE,
-                                     cs_glob_mpi_comm);
-#else
-    cs_glob_pp_io = cs_io_initialize("preprocessor_output",
-                                     "Face-based mesh definition, R0",
-                                     CS_IO_MODE_READ,
-                                     CS_IO_ECHO_OPEN_CLOSE,
-                                     -1);
-#endif
-  }
-
   /* Call main calculation initialization function or help */
 
   _verif = (opts.verif == true || opts.benchmark > 0) ? 1 : 0;
@@ -229,6 +222,10 @@ cs_run(void)
 
   cs_syr_coupling_all_init(opts.syr_socket);
 
+  /* Initialize Code_Saturne couplings and communication if necessary */
+
+  cs_sat_coupling_all_init();
+
   if (opts.ifoenv == 0) {
 
     /* Read file in obsolete "SolCom" format */
@@ -396,6 +393,11 @@ cs_run(void)
 
   if (opts.benchmark <= 0) {
 
+    /* Check that mesh seems valid */
+
+    cs_mesh_quantities_check_vol(cs_glob_mesh,
+                                 cs_glob_mesh_quantities);
+
     /* Allocate Fortran working arrays */
 
     CS_PROCF(memini, MEMINI)(&iasize, &rasize,
@@ -403,8 +405,8 @@ cs_run(void)
 
     bft_printf(_("\n"
                  " --- Main Fortran work arrays:\n"
-                 "       LONGIA =   %10d (Number of integers)\n"
-                 "       LONGRA =   %10d (Number of reals)\n"
+                 "       longia =   %10d (Number of integers)\n"
+                 "       longra =   %10d (Number of reals)\n"
                  "       (%d bytes/integer, %d bytes/real)\n"),
                iasize, rasize,
                sizeof(cs_int_t)/sizeof(char),
@@ -413,14 +415,14 @@ cs_run(void)
     if (nideve > 0 || nrdeve >0)
       bft_printf(_("\n"
                    " --- Developer Fortran work arrays:\n"
-                   "       NIDEVE =   %10d (Number of integer)\n"
-                   "       NRDEVE =   %10d (Number of reals)\n"),
+                   "       nideve =   %10d (Number of integer)\n"
+                   "       nrdeve =   %10d (Number of reals)\n"),
                  nideve, nrdeve);
 
     bft_printf(_("\n"
                  " --- User Fortran work arrays:\n"
-                 "       NITUSE =   %10d (Number of integers)\n"
-                 "       NRTUSE =   %10d (Number of reals)\n\n"),
+                 "       nituse =   %10d (Number of integers)\n"
+                 "       nrtuse =   %10d (Number of reals)\n\n"),
                nituse, nrtuse);
 
     cs_base_mem_init_work(iasize, rasize, &ia, &ra);
@@ -606,6 +608,10 @@ main(int    argc,
 
   cs_opts_logfile_head(argc, argv);
 
+  /* MPI-IO options */
+
+  cs_io_set_defaults(opts.mpi_io_mode);
+
   /* In case of use with SALOME, optional connection with CFD_Proxy
      launcher or load and start of YACS module */
 
diff --git a/src/atmo/Makefile.in b/src/atmo/Makefile.in
index bebcadc..ca19260 100644
--- a/src/atmo/Makefile.in
+++ b/src/atmo/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -42,8 +43,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -66,6 +68,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -81,23 +84,24 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcsatmo_la_LIBADD =
 am_libcsatmo_la_OBJECTS = atini1.lo atiniv.lo atlecm.lo atmcls.lo \
 	atphyv.lo atprke.lo atprop.lo attycl.lo atvarp.lo intprf.lo \
 	mematm.lo usatcl.lo usati1.lo usativ.lo
 libcsatmo_la_OBJECTS = $(am_libcsatmo_la_OBJECTS)
-libcsatmo_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+libcsatmo_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(libcsatmo_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcsatmo_la_SOURCES)
 DIST_SOURCES = $(libcsatmo_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -105,12 +109,25 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(atmodir)" \
 	"$(DESTDIR)$(saturneincludedir)"
-atmoDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(atmo_DATA)
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -157,6 +174,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -193,11 +212,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -212,15 +229,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -265,7 +285,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -282,8 +303,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -342,14 +366,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/atmo/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/atmo/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/atmo/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/atmo/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -367,6 +391,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -395,13 +420,13 @@ distclean-compile:
 	$(LTFCCOMPILE) -c -o $@ $<
 
 usatcl.lo: $(top_srcdir)/users/atmo/usatcl.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usatcl.lo `test -f '$(top_srcdir)/users/atmo/usatcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/atmo/usatcl.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usatcl.lo `test -f '$(top_srcdir)/users/atmo/usatcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/atmo/usatcl.f90
 
 usati1.lo: $(top_srcdir)/users/atmo/usati1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usati1.lo `test -f '$(top_srcdir)/users/atmo/usati1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/atmo/usati1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usati1.lo `test -f '$(top_srcdir)/users/atmo/usati1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/atmo/usati1.f90
 
 usativ.lo: $(top_srcdir)/users/atmo/usativ.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usativ.lo `test -f '$(top_srcdir)/users/atmo/usativ.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/atmo/usativ.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usativ.lo `test -f '$(top_srcdir)/users/atmo/usativ.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/atmo/usativ.f90
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -411,51 +436,57 @@ clean-libtool:
 install-atmoDATA: $(atmo_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(atmodir)" || $(MKDIR_P) "$(DESTDIR)$(atmodir)"
-	@list='$(atmo_DATA)'; for p in $$list; do \
+	@list='$(atmo_DATA)'; test -n "$(atmodir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(atmoDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(atmodir)/$$f'"; \
-	  $(atmoDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(atmodir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(atmodir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(atmodir)" || exit $$?; \
 	done
 
 uninstall-atmoDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(atmo_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(atmodir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(atmodir)/$$f"; \
-	done
+	@list='$(atmo_DATA)'; test -n "$(atmodir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(atmodir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(atmodir)" && rm -f $$files
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -463,29 +494,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -506,13 +542,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -543,6 +583,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -563,6 +604,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -571,18 +614,28 @@ install-data-am: install-atmoDATA install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -621,6 +674,7 @@ uninstall-am: uninstall-atmoDATA uninstall-saturneincludeHEADERS
 	pdf pdf-am ps ps-am tags uninstall uninstall-am \
 	uninstall-atmoDATA uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/atmo/atini1.f90 b/src/atmo/atini1.f90
index 2ce784b..76cdfc5 100644
--- a/src/atmo/atini1.f90
+++ b/src/atmo/atini1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,7 +39,7 @@ subroutine atini1
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@ subroutine atini1
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -70,7 +70,7 @@ include "atincl.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iphas, ii, isc, jj, ipp
 
@@ -124,7 +124,7 @@ if ( ippmod(iatmos).eq.1 ) then
 
   iscsth(itempp) = 1
   iscalt(iphas) = itempp
-  scamin(itempp)   = -grand
+  scamin(itempp)   = 0.d0
   scamax(itempp)   = +grand
 
 !  for the dry atmosphere case, non constant density
@@ -194,7 +194,7 @@ endif
 ! 3.1  Dry or humid atmosphere
 ! =============================
 
-if ( ippmod(iatmos).eq.1.or. ippmod(iatmos).eq.2) then
+if (ippmod(iatmos).eq.1 .or. ippmod(iatmos).eq.2) then
 
   ipp = ipppro(ipproc(itempc))
   nomvar(IPP)   = 'TempC'
@@ -206,7 +206,33 @@ endif
 
 
 !===============================================================================
-! 4. ON DONNE LA MAIN A L'UTLISATEUR
+! 4. One scale turbulent model for k-eps closure for IPPMOD(IATMOS) = 1 or 2
+!===============================================================================
+
+if (ippmod(iatmos).eq.1 .or. ippmod(iatmos).eq.2) then
+
+  do iphas = 1, nphas
+    if (itytur(iphas).eq.2) then
+      ideuch(iphas) = 0
+    endif
+  enddo
+
+endif
+
+!===============================================================================
+! 5. Turbulent Schmidt number for atmospheric flows
+!===============================================================================
+
+if (nscal.gt.0) then
+  do ii = 1, nscal
+    do iphas = 1, nphas
+        sigmas(ii) = 0.7d0
+    enddo
+  enddo
+endif
+
+!===============================================================================
+! 6. ON DONNE LA MAIN A L'UTLISATEUR
 !===============================================================================
 
 !   - Interface Code_Saturne
@@ -269,4 +295,4 @@ call usati1
 '@                                                            ',/)
 
 return
-end
+end subroutine
diff --git a/src/atmo/atiniv.f90 b/src/atmo/atiniv.f90
index aba21a7..1473aec 100644
--- a/src/atmo/atiniv.f90
+++ b/src/atmo/atiniv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -82,78 +82,65 @@ subroutine atiniv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -165,7 +152,7 @@ subroutine atiniv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -176,6 +163,7 @@ include "cstnum.h"
 include "entsor.h"
 include "ppppar.h"
 include "ppthch.h"
+include "ppincl.h"
 include "atincl.h"
 
 
@@ -204,9 +192,9 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
-integer          idebia, idebra, imode
+integer          idebia, idebra, imode, iphas, iel
 
 !===============================================================================
 !===============================================================================
@@ -236,8 +224,21 @@ if (imeteo.gt.0) then
 
 endif
 
+
+!===============================================================================
+! 3. Dry atmosphere: default initialization of potential temperature
+!===============================================================================
+
+if (ippmod(iatmos).eq.1) then
+  ! The thermal scalar is potential temperature
+  iphas = 1
+  do iel = 1, ncel
+    rtp(iel,isca(iscalt(iphas))) = t0(iphas)
+  enddo
+endif
+
 !===============================================================================
-! 3. USER  OPTIONS
+! 4. USER  OPTIONS
 !===============================================================================
 
 call usativ                                                       &
@@ -271,4 +272,4 @@ call usativ                                                       &
 
 return
 
-end
+end subroutine
diff --git a/src/atmo/atlecm.f90 b/src/atmo/atlecm.f90
index fe05f2b..4f01de4 100644
--- a/src/atmo/atlecm.f90
+++ b/src/atmo/atlecm.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -35,14 +35,13 @@ subroutine atlecm &
    rprom  , tpprom , phprom   )
 
 !===============================================================================
-!  FONCTION  :
-!  ---------
+!  Purpose:
+!  -------
 
 
-!             READING THE METEO PROFILE DATA
-
-!             SPECIFIC PHYSICS ATMOSPHERIC MODULE
-
+!             Reads the meteo profile data
+!             for the atmospheric module
+!
 !             IMODE = 0 : READING OF DIMENSIONS ONLY
 !             IMODE = 1 : READING OF DATA
 
@@ -51,7 +50,7 @@ subroutine atlecm &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -64,7 +63,7 @@ subroutine atlecm &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -79,7 +78,9 @@ include "atincl.h"
 !===============================================================================
 
 ! Arguments
+
 integer           imode
+
 double precision  tmprom(nbmetm)
 double precision  ztprom(nbmett) , zdprom(nbmetd)
 double precision  xmet(nbmetm)   , ymet(nbmetm)  , pmer(nbmetm)
@@ -89,29 +90,34 @@ double precision  ekprom(nbmetd,nbmetm) , epprom(nbmetd,nbmetm)
 double precision  rprom(nbmett,nbmetm)  , tpprom(nbmett,nbmetm)
 double precision  phprom(nbmett,nbmetm)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer itp, ii, ios, k, iphas
-double precision annee,quant,heure,minute,second
+integer syear, squant, shour, smin
+integer year, quant,hour,minute
+
+double precision ssec, second
+double precision sjday, jday
 double precision psol,rap,rscp,tmoy
+
 character*80     ccomnt
 character*1      csaute
 
 !===============================================================================
 
 if (imode.eq.0) then
-  WRITE(NFECRA,*) 'reading of dimensions for meteo profiles'
+  write(NFECRA,*) 'reading of dimensions for meteo profiles'
 else
-  WRITE(NFECRA,*) 'reading of meteo profiles data'
+  write(NFECRA,*) 'reading of meteo profiles data'
  endif
 
 !===============================================================================
-! 0. INITIALISATION
+! 0. INITIALIZATION
 !===============================================================================
 
 CSAUTE = '/'
 
-! --> Ouverture du fichier
+! --> Opens the meteo file
 open ( unit=impmet, file=ficmet,                                  &
        STATUS='OLD', FORM='FORMATTED', ACCESS='SEQUENTIAL',       &
                                           iostat=ios, err=99 )
@@ -119,6 +125,12 @@ rewind(unit=impmet,err=99)
 
 itp=0
 
+syear=-999
+squant=-999
+shour=-999
+smin=-999
+ssec=-999.
+
 !===============================================================================
 ! 1. LOOP ON TIME
 !===============================================================================
@@ -138,20 +150,43 @@ backspace(impmet)
 ! 2. READING THE TIME OF THE PROFILE
 !===============================================================================
 
-! --> annee, quantieme, heure, minute, seconde  du profil (TU)
+! --> year, quant-day, hour, minute, second  of the profile (TU)
 
 if (imode.eq.0) then
   read(impmet,*,err=999,end=906)
 else
-  read(impmet,*,err=999,end=906) annee, quant,heure,minute,second
+  read(impmet,*,err=999,end=906) year, quant,hour,minute,second
+
+! --> the date and time of the first meteo profile are taken as the
+!     starting time of the simulation
+  if (syear.lt.0) then
+    syear=year
+    squant=quant
+    shour=hour
+    smin=minute
+    ssec=second
+  endif
+
+!--> Compute the relative time to the starting time of the simulation
+
 
-! --> calcul du temps relatif au debut de la simulation
-!     TTPROM(NBMETM) = instants correspondant aux profils
-! TD!!!! calcul par rapport ANNDEB, QUADEB, HEUDEB, MINDEB, SCDDEB
-! + tests d'incoh�rence
+! --> Compute the julian day for the starting day of the simulation
+!     (julian day at 12h)
+  sjday= squant + ((1461 * (syear + 4800 + (1 - 14) / 12)) / 4 +  &
+             (367 * (1 - 2 - 12 * ((1 - 14) / 12))) / 12 -            &
+             (3 * ((syear + 4900 + (1 - 14) / 12) / 100)) / 4         &
+              + 1 - 32075) - 1
 
-  tmprom(itp)= second
+! --> Compute the julian day for the date of the current profile
+!     (julian day at 12h)
+  jday = quant + ((1461 * (year + 4800 + (1 - 14) / 12)) / 4 +   &
+             (367 * (1 - 2 - 12 * ((1 - 14) / 12))) / 12 -           &
+            (3 * ((year + 4900 + (1 - 14) / 12) / 100)) / 4          &
+              + 1 - 32075) - 1
 
+!
+  tmprom(itp) = (jday - sjday)*86400 + (hour - shour)*3600 + (minute - smin)*60 &
+              + (second - ssec)
 
 ! --> verification de l'ordre chronologique des profils
 
@@ -330,16 +365,15 @@ if (imode.eq.1) then
     write(nfecra,*) 'printing meteo profiles'
   endif
   write(nfecra,*) 'year, quant-day , hour, minute, second'
-  write(nfecra,7995) annee, quant,heure,minute,second
- 7995   format(1x, 5f8.2)
+  write(nfecra,7995) year, quant,hour,minute,second
+ 7995   format(1x, i4, i5, 2i4, f8.2)
   write(nfecra,*) 'tmprom(itp)'
   write(nfecra,7996) tmprom(itp)
  7996   format(1x, f8.2)
   write(nfecra,*) 'zdprom,uprom,vprom,ekprom,epprom'
   do ii=1,nbmetd
     write(nfecra,7997)                                            &
-         zdprom(ii), uprom(ii,itp), vprom(ii,itp),                &
-         ekprom(ii,itp), epprom(ii,itp)
+      zdprom(ii), uprom(ii,itp), vprom(ii,itp), ekprom(ii,itp), epprom(ii,itp)
  7997     format(1x, 3f8.2,2e10.3)
   enddo
   write(nfecra,*) 'ztprom,ttprom,tpprom,rprom,phprom,qvprom'
@@ -392,7 +426,7 @@ call csexit (1)
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES (ATDIMM)      ',/,&
+'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES (atlecm)      ',/,&
 '@    =========                                               ',/,&
 '@      PHYSIQUE PARTICULIERE ATMOSPHERIQUE               ',/,    &
 '@                                                            ',/,&
@@ -407,7 +441,7 @@ call csexit (1)
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES (ATDIMM)      ',/,&
+'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES (atlecm)      ',/,&
 '@    =========                                               ',/,&
 '@      PHYSIQUE PARTICULIERE ATMOSPHERIQUE                   ',/,&
 '@                                                            ',/,&
@@ -423,7 +457,7 @@ call csexit (1)
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES (ATDIMM)      ',/,&
+'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES (atlecm)      ',/,&
 '@    =========                                               ',/,&
 '@      PHYSIQUE PARTICULIERE ATMOSPHERIQUE                   ',/,&
 '@                                                            ',/,&
@@ -439,11 +473,12 @@ call csexit (1)
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES (ATDIMM)      ',/,&
+'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES (atlecm)      ',/,&
 '@    =========                                               ',/,&
 '@      PHYSIQUE PARTICULIERE ATMOSPHERIQUE                   ',/,&
 '@                                                            ',/,&
 '@  Erreur a l''ouverture du fichier meteo                    ',/,&
+'@  Vérifier le nom du fichier meteo                          ',/,&
 '@                                                            ',/,&
 '@  Le calcul ne sera pas execute.                            ',/,&
 '@                                                            ',/,&
@@ -453,7 +488,7 @@ call csexit (1)
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES (ATDIMM)      ',/,&
+'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES (atlecm)      ',/,&
 '@    =========                                               ',/,&
 '@      PHYSIQUE PARTICULIERE ATMOSPHERIQUE                   ',/,&
 '@                                                            ',/,&
@@ -461,6 +496,18 @@ call csexit (1)
 '@    Le fichier a ete ouvert mais est peut etre incomplet    ',/,&
 '@    ou son format inadapte.                                 ',/,&
 '@                                                            ',/,&
+'@    year (integer), quantile (integer), hour (integer),     ',/,&
+'@          minute (integer), second (dble prec) of the profile',/,&
+'@    location of the meteo profile (x,y) (dble prec)         ',/,&
+'@    sea level pressure (double precision)                   ',/,&
+'@ temperature profile:                                       ',/,&
+'@   number of altitudes (integer)                            ',/,&
+'@   alt.,temperature  in celcius,humidity in kg/kg (dble prec)',/,&
+'@ wind profile:                                              ',/,&
+'@   number of altitudes (integer)                            ',/,&
+'@   alt.,u,v,k,eps (double precision)                        ',/,&
+'@ NO LINE AT THE END OF THE FILE                             ',/,&
+'@                                                            ',/,&
 '@  Le calcul ne sera pas execute.                            ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
@@ -472,12 +519,13 @@ call csexit (1)
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@  WARNING:   STOP WHILE READING INPUT DATA (ATDIMM)      ',/,&
+'@ @@  WARNING:   STOP WHILE READING INPUT DATA (atlecm)      ',/,&
 '@     =======                                                ',/,&
 '@      ATMOSPHERIC SPECIFIC PHYSICS                          ',/,&
 '@                                                            ',/,&
 '@              Error in the meteo profile file:              ',/,&
-'@      non chronological meteo profiles                      ',/,&
+'@      check that the chronogical order of the profiles      ',/,&
+'@      are respected                                         ',/,&
 '@                                                            ',/,&
 '@  The computation will not be run                           ',/,&
 '@                                                            ',/,&
@@ -487,7 +535,7 @@ call csexit (1)
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@  WARNING:   STOP WHILE READING INPUT DATA (ATDIMM)      ',/,&
+'@ @@  WARNING:   STOP WHILE READING INPUT DATA (atlecm)      ',/,&
 '@     =======                                                ',/,&
 '@      ATMOSPHERIC SPECIFIC PHYSICS                          ',/,&
 '@                                                            ',/,&
@@ -503,7 +551,7 @@ call csexit (1)
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@  WARNING:   STOP WHILE READING INPUT DATA (ATDIMM)      ',/,&
+'@ @@  WARNING:   STOP WHILE READING INPUT DATA (atlecm)      ',/,&
 '@     =======                                                ',/,&
 '@      ATMOSPHERIC SPECIFIC PHYSICS                          ',/,&
 '@                                                            ',/,&
@@ -519,11 +567,12 @@ call csexit (1)
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@  WARNING:   STOP WHILE READING INPUT DATA (ATDIMM)      ',/,&
+'@ @@  WARNING:   STOP WHILE READING INPUT DATA (atlecm)      ',/,&
 '@     =======                                                ',/,&
 '@      ATMOSPHERIC SPECIFIC PHYSICS                          ',/,&
 '@                                                            ',/,&
 '@  Error opening the meteo profile file                      ',/,&
+'@  check the name of the meteo file                          ',/,&
 '@                                                            ',/,&
 '@  The computation will not be run                           ',/,&
 '@                                                            ',/,&
@@ -533,13 +582,26 @@ call csexit (1)
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@  WARNING:   STOP WHILE READING INPUT DATA (ATDIMM)      ',/,&
+'@ @@  WARNING:   STOP WHILE READING INPUT DATA (atlecm)      ',/,&
 '@     =======                                                ',/,&
 '@      ATMOSPHERIC SPECIFIC PHYSICS                          ',/,&
 '@                                                            ',/,&
 '@  Error opening the meteo profile file                      ',/,&
 '@    The meteo profile file has been opened but its content  ',/,&
 '@    is incomplete or under a wrong format                   ',/,&
+'@    check the format of the file (see the user guide):      ',/,&
+'@                                                            ',/,&
+'@    year (integer), quantile (integer), hour (integer),     ',/,&
+'@          minute (integer), second (dble prec) of the profile',/,&
+'@    location of the meteo profile (x,y) (dble prec)         ',/,&
+'@    sea level pressure (double precision)                   ',/,&
+'@ temperature profile:                                       ',/,&
+'@   number of altitudes (integer)                            ',/,&
+'@   alt.,temperature  in celcius,humidity in kg/kg (dble prec)',/,&
+'@ wind profile:                                              ',/,&
+'@   number of altitudes (integer)                            ',/,&
+'@   alt.,u,v,k,eps (double precision)                        ',/,&
+'@ NO LINE AT THE END OF THE FILE                             ',/,&
 '@                                                            ',/,&
 '@  The computation will not be run                           ',/,&
 '@                                                            ',/,&
@@ -548,6 +610,4 @@ call csexit (1)
 
 #endif
 
-end
-
-
+end subroutine
diff --git a/src/atmo/atmcls.f90 b/src/atmo/atmcls.f90
index 0b7b049..fddc3e4 100644
--- a/src/atmo/atmcls.f90
+++ b/src/atmo/atmcls.f90
@@ -55,28 +55,27 @@ subroutine atmcls &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
 ! ifac             ! e  ! <-- ! face de bord traitee                           !
 ! iel              ! e  ! <-- ! cellule de bord en regard de la face           !
 !                  !    !     !  traitee                                       !
@@ -90,24 +89,16 @@ subroutine atmcls &
 ! rib, lmo         ! r  ! <-- ! Richardson number and Monin-Obukhov length     !
 ! coeffu,s,k,e     ! r  ! <-- ! non neutral correction coefficients for        !
 !                  !    !     !   profiles of momentum scalar turbulence       !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -117,32 +108,28 @@ subroutine atmcls &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -155,11 +142,11 @@ subroutine atmcls &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -171,7 +158,7 @@ subroutine atmcls &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -223,7 +210,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -254,7 +241,7 @@ e0 = 0.d0
 
 rugd = rcodcl(ifac,iu(iphas),3)
 distbf = yplus*rugd
-rugt = rcodcl(ifac,isca(iscalt(iphas)),3)
+rugt = rcodcl(ifac,iv(iphas),3)
 actu = xkappa/log((distbf+rugd)/rugd)
 actt = xkappa/log((distbf+rugt)/rugt)
 
@@ -285,8 +272,10 @@ actt = xkappa/log((distbf+rugt)/rugt)
 !     3.3 - compute layer average Richardson number
 !     .........    .....................................
 
-if (abs(utau).le.epzero) then
+! NB: rib =0 if thermal flux conditions are imposed and tpot1 not defined
+if (abs(utau).le.epzero.or.icodcl(ifac,isca(iscalt(iphas))).eq.3) then
  rib = 0.d0
+ if (abs(utau).le.epzero) utau = epzero
 else
  rib = 2.d0*gredu*distbf*(tpotv2-tpotv1)/(tpotv1+tpotv2)/utau/utau
 endif
@@ -296,7 +285,7 @@ endif
 !         Louis (1982)
 !     ...............................................................
 
-  if (rib.ge.0.d0) then
+  if (rib.ge.epzero) then
      fm = 1./(1.+2.*b*rib/sqrt(1.+d*rib))
      fh = 1/(1.+3.*b*rib*sqrt(1.+d*rib))
   else
@@ -307,10 +296,18 @@ endif
      fh = 1.d0-(3.d0*b*rib)/(1.d0+fhden*sqrt(abs(rib)))
   endif
 
+  if (fm.le.epzero) fm = epzero
+  if (abs(fh).le.epzero) fh = epzero
+
   cfnnu = 1.d0/sqrt(fm)
   cfnns = sqrt(fm)/fh
-  cfnnk = sqrt(1.d0-rib)  ! +correction with turbulent Prandtl
-  cfnne = (1.d0-rib)/sqrt(fm)
+  if ((1.d0-rib).gt.epzero)then
+    cfnnk = sqrt(1.d0-rib)  ! +correction with turbulent Prandtl
+    cfnne = (1.d0-rib)/sqrt(fm)
+  else
+    cfnnk = 1.d0
+    cfnne = 1.d0
+  endif
 
 !     ------------------------------------
 !     4 - compute friction velocity  uet
diff --git a/src/atmo/atphyv.f90 b/src/atmo/atphyv.f90
index 443489e..71816f4 100644
--- a/src/atmo/atphyv.f90
+++ b/src/atmo/atphyv.f90
@@ -106,81 +106,68 @@ subroutine atphyv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -192,7 +179,7 @@ subroutine atphyv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -237,7 +224,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ivart, iclvar, iel, iphas
diff --git a/src/atmo/atprke.f90 b/src/atmo/atprke.f90
index d7cdd44..b22d1e3 100644
--- a/src/atmo/atprke.f90
+++ b/src/atmo/atprke.f90
@@ -54,72 +54,61 @@ subroutine atprke &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (nfabor+1)     !    !               !  (optionnel)
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
 ! irespr(ncelet    ! te ! --- ! tab entier multigrille                         !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
 ! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
 !  (nfabor,*)      !    !               !    faces de bord
 ! coefa, coefb     ! tr !  <- ! conditions aux limites aux                     !
@@ -127,9 +116,9 @@ subroutine atprke &
 ! w1...6(ncelet    ! tr ! --- ! tableaux de travail                            !
 !tinstk(ncelet)    ! tr ! <-- ! prod et terme de gravite pour eq k             !
 !tinste(ncelet)    ! tr ! <-- ! prod et terme de gravite pour eq eps           !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -142,7 +131,7 @@ subroutine atprke &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -192,7 +181,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision tinstk(ncelet), tinste(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 integer         idebra, idebia
 integer         iel
 integer         itpp , icltpp
@@ -273,14 +262,14 @@ if (ippmod(iatmos).eq.1) then
 !     Dans les autres cas, la multiplication est faite plus tard.
   if (iturb(iphas).eq.21) then
     do iel = 1, ncel
-      gravke =   -(w4(iel)*gx + w5(iel)*gy + w6(iel)*gz) &
+      gravke =   (w4(iel)*gx + w5(iel)*gy + w6(iel)*gz) &
                / (rtp(iel,itpp)*prdtur)
       tinste(iel) = tinstk(iel) + propce(iel,ipcvto)*max(gravke,zero)
       tinstk(iel) = tinstk(iel) + propce(iel,ipcvto)*gravke
     enddo
   else
     do iel = 1, ncel
-      gravke =   -(w4(iel)*gx + w5(iel)*gy + w6(iel)*gz) &
+      gravke =   (w4(iel)*gx + w5(iel)*gy + w6(iel)*gz) &
                / (rtp(iel,itpp)*prdtur)
       tinste(iel) = tinstk(iel) + max(gravke,zero)
       tinstk(iel) = tinstk(iel) + gravke
diff --git a/src/atmo/atprop.f90 b/src/atmo/atprop.f90
index c109256..69d6142 100644
--- a/src/atmo/atprop.f90
+++ b/src/atmo/atprop.f90
@@ -41,7 +41,7 @@ subroutine atprop &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ipropp           ! e  ! <-- ! numero de la derniere propriete                !
 !                  !    !     !  (les proprietes sont dans propce,             !
@@ -61,7 +61,7 @@ subroutine atprop &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -83,7 +83,7 @@ include "ihmpre.h"
 
 integer       ipropp, ipppst
 
-! VARIABLES LOCALES
+! Local variables
 
 integer       iprop, ipropc
 
diff --git a/src/atmo/attycl.f90 b/src/atmo/attycl.f90
index fa54695..064cac0 100644
--- a/src/atmo/attycl.f90
+++ b/src/atmo/attycl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,45 +59,36 @@ subroutine attycl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -107,40 +98,36 @@ subroutine attycl &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -153,13 +140,13 @@ subroutine attycl &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -171,7 +158,7 @@ subroutine attycl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 ! Arguments
@@ -231,7 +218,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, izone, iphas
@@ -393,4 +380,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/atmo/atvarp.f90 b/src/atmo/atvarp.f90
index 00ab2c7..8ba37ca 100644
--- a/src/atmo/atvarp.f90
+++ b/src/atmo/atvarp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,7 +39,7 @@ subroutine atvarp
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@ subroutine atvarp
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -70,7 +70,7 @@ include "ihmpre.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer        isc, iphas
 
@@ -140,5 +140,5 @@ iphas      = iphsca(iscapp(1))
 icp(iphas) = 0
 
 return
-end
+end subroutine
 
diff --git a/src/atmo/intprf.f90 b/src/atmo/intprf.f90
index ef96df2..7c5ecd1 100644
--- a/src/atmo/intprf.f90
+++ b/src/atmo/intprf.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2007 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,7 +40,7 @@ subroutine intprf &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! vi               ! r  ! --> ! resultat de l'interpolation                    !
 ! zi               ! r  ! <-- ! altitude a laquelle on interpole               !
@@ -62,7 +62,7 @@ subroutine intprf &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -74,7 +74,7 @@ double precision profz(nprofz), proft(nproft)
 double precision profv(nprofz,nproft)
 double precision xz, temps, var
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          it, it1, it2
 integer          iz, iz1, iz2
@@ -143,7 +143,7 @@ var2 = alphaz*profv(iz1,it2) + (1.d0-alphaz)*profv(iz2,it2)
 
 var = alphat*var1 + (1.d0-alphat)*var2
 
-end
+end subroutine
 
 
 
diff --git a/src/atmo/mematm.f90 b/src/atmo/mematm.f90
index 41bddb7..4bbe493 100644
--- a/src/atmo/mematm.f90
+++ b/src/atmo/mematm.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -38,14 +38,12 @@ subroutine mematm &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._______________.________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -72,10 +70,10 @@ include "atincl.h"
 integer          idbia0, idbra0, ifinia, ifinra
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, imode
-double precision w1
+double precision rvoid(1)
 
 !===============================================================================
 !  1. INITIALISATION
@@ -96,15 +94,15 @@ if (imeteo.gt.0) then
   imode = 0
 
 !     Nb les arguments ne sont pas utilises quand IMODE=0
-  call atlecm                                                     &
+  call atlecm &
   !==========
- ( imode      ,                                                   &
-   w1 , w1 , w1 ,                                                 &
-   w1 , w1 , w1 ,                                                 &
-   w1 , w1 ,                                                      &
-   w1 , w1 ,                                                      &
-   w1 , w1 ,                                                      &
-   w1 , w1 , w1 )
+ ( imode      ,             &
+   rvoid , rvoid , rvoid ,  &
+   rvoid , rvoid , rvoid ,  &
+   rvoid , rvoid ,          &
+   rvoid , rvoid ,          &
+   rvoid , rvoid ,          &
+   rvoid , rvoid , rvoid )
 
   endif
 
@@ -148,6 +146,6 @@ CALL RASIZE('MEMATM',IFINRA)
 !----
 
 return
-end
+end subroutine
 
 
diff --git a/src/base/Makefile.am b/src/base/Makefile.am
index a5f055f..35d15e0 100644
--- a/src/base/Makefile.am
+++ b/src/base/Makefile.am
@@ -26,7 +26,7 @@ AM_CPPFLAGS = \
 -I$(top_srcdir)/include/base \
 -I$(top_srcdir)/include/ctwr \
 -I$(top_srcdir)/include/lagr \
- at BFT_CPPFLAGS@ @FVM_CPPFLAGS@ @MEI_CPPFLAGS@ @MPI_CPPFLAGS@ @LIBXML2_CPPFLAGS@ @BLAS_CPPFLAGS@
+ at FVM_CPPFLAGS@ @MEI_CPPFLAGS@ @BFT_CPPFLAGS@ @MPI_CPPFLAGS@ @LIBXML2_CPPFLAGS@ @BLAS_CPPFLAGS@
 
 AM_CFLAGS = @CFLAGS_DBG@ @CFLAGS_OPT@
 
@@ -68,6 +68,7 @@ $(top_srcdir)/include/base/cs_gradient.h \
 $(top_srcdir)/include/base/cs_grid.h \
 $(top_srcdir)/include/base/cs_gui.h \
 $(top_srcdir)/include/base/cs_gui_boundary_conditions.h \
+$(top_srcdir)/include/base/cs_gui_conjugate_heat_transfer.h \
 $(top_srcdir)/include/base/cs_gui_matisse.h \
 $(top_srcdir)/include/base/cs_gui_mobile_mesh.h \
 $(top_srcdir)/include/base/cs_gui_particles.h \
@@ -226,6 +227,7 @@ cs_gradient.c \
 cs_grid.c \
 cs_gui.c \
 cs_gui_boundary_conditions.c \
+cs_gui_conjugate_heat_transfer.c \
 cs_gui_matisse.c \
 cs_gui_mobile_mesh.c \
 cs_gui_particles.c \
@@ -265,6 +267,7 @@ cs_proxy_comm.c \
 cs_renumber.c \
 cs_restart.c \
 cs_sat_coupling.c \
+cs_sat_f2c.f90 \
 cs_search.c \
 cs_selector.c \
 cs_selector_f2c.f90 \
@@ -337,6 +340,7 @@ memv2f.f90 \
 memvor.f90 \
 modini.f90 \
 modpar.f90 \
+mmtycl.f90 \
 navsto.f90 \
 newmrk.f90 \
 numvec.f90 \
diff --git a/src/base/Makefile.in b/src/base/Makefile.in
index 7c9be7c..ebf5c6a 100644
--- a/src/base/Makefile.in
+++ b/src/base/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -42,8 +43,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -66,6 +68,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -81,6 +84,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcsbase_la_LIBADD =
 am_libcsbase_la_OBJECTS = alelap.lo alemaj.lo altycl.lo armtps.lo \
@@ -94,7 +98,8 @@ am_libcsbase_la_OBJECTS = alelap.lo alemaj.lo altycl.lo armtps.lo \
 	cscini.lo csclli.lo cscloc.lo cscpce.lo cscpfb.lo \
 	cs_coupling.lo cs_ext_neighborhood.lo csflsh.lo cs_gradient.lo \
 	cs_grid.lo cs_gui.lo cs_gui_boundary_conditions.lo \
-	cs_gui_matisse.lo cs_gui_mobile_mesh.lo cs_gui_particles.lo \
+	cs_gui_conjugate_heat_transfer.lo cs_gui_matisse.lo \
+	cs_gui_mobile_mesh.lo cs_gui_particles.lo \
 	cs_gui_radiative_transfer.lo cs_gui_specific_physics.lo \
 	cs_gui_util.lo cs_halo.lo csinit.lo cs_io.lo cs_join.lo \
 	cs_join_f2c.lo cs_join_intersect.lo cs_join_merge.lo \
@@ -105,8 +110,8 @@ am_libcsbase_la_OBJECTS = alelap.lo alemaj.lo altycl.lo armtps.lo \
 	cs_mesh_warping.lo cs_multigrid.lo cs_numbering.lo cs_opts.lo \
 	cs_parall.lo cs_perio.lo cs_post.lo cs_post_f2c.lo \
 	cs_preprocessor_data.lo cs_proxy_comm.lo cs_renumber.lo \
-	cs_restart.lo cs_sat_coupling.lo cs_search.lo cs_selector.lo \
-	cs_selector_f2c.lo cs_sort.lo cs_syr3_comm.lo \
+	cs_restart.lo cs_sat_coupling.lo cs_sat_f2c.lo cs_search.lo \
+	cs_selector.lo cs_selector_f2c.lo cs_sort.lo cs_syr3_comm.lo \
 	cs_syr3_coupling.lo cs_syr3_messages.lo cs_syr4_coupling.lo \
 	cs_syr_coupling.lo cs_syr_f2c.lo cs_tpar1d.lo cs_ventil.lo \
 	csprnt.lo distpr.lo distyp.lo divmas.lo divrij.lo dttvar.lo \
@@ -119,23 +124,23 @@ am_libcsbase_la_OBJECTS = alelap.lo alemaj.lo altycl.lo armtps.lo \
 	memdis.lo memdtv.lo memdyp.lo memini.lo memkep.lo memkom.lo \
 	memnav.lo mempdc.lo memphy.lo memrij.lo memsca.lo memt1d.lo \
 	memtri.lo memtsm.lo memv2f.lo memvor.lo modini.lo modpar.lo \
-	navsto.lo newmrk.lo numvec.lo ordita.lo pergra.lo perinr.lo \
-	perinu.lo phyvar.lo precli.lo preduv.lo prmoy0.lo projts.lo \
-	proxav.lo recvmc.lo reseps.lo resolp.lo resrij.lo resssg.lo \
-	resv2f.lo rijech.lo rijthe.lo scalai.lo schtmp.lo stdtcl.lo \
-	strdep.lo strhis.lo strini.lo strpre.lo tcpumx.lo tdesi1.lo \
-	testel.lo tremai.lo tridim.lo tsepdc.lo tstvec.lo turbke.lo \
-	turbkw.lo turent.lo turrij.lo typecl.lo undscr.lo vandri.lo \
-	varpos.lo vectds.lo vericl.lo verini.lo verlon.lo vert1d.lo \
-	viscfa.lo visdyn.lo vislmg.lo visort.lo vissec.lo vissma.lo \
-	vissst.lo viswal.lo vor2cl.lo vordep.lo vorimp.lo vorin0.lo \
-	vorini.lo vorlgv.lo vorpre.lo vortex.lo vorver.lo vorvit.lo \
-	zufall.lo usalcl.lo usalin.lo usaste.lo usclim.lo usdpst.lo \
-	ushist.lo usini1.lo usiniv.lo usjoin.lo uskpdc.lo usmodg.lo \
-	usmpst.lo usnpst.lo usphyv.lo usproj.lo uspt1d.lo ussatc.lo \
-	ussmag.lo usstru.lo ussyrc.lo usthht.lo ustmgr.lo ustske.lo \
-	ustskw.lo ustsma.lo ustsns.lo ustsri.lo ustssc.lo ustsv2.lo \
-	usvima.lo usvist.lo usvort.lo usvpst.lo
+	mmtycl.lo navsto.lo newmrk.lo numvec.lo ordita.lo pergra.lo \
+	perinr.lo perinu.lo phyvar.lo precli.lo preduv.lo prmoy0.lo \
+	projts.lo proxav.lo recvmc.lo reseps.lo resolp.lo resrij.lo \
+	resssg.lo resv2f.lo rijech.lo rijthe.lo scalai.lo schtmp.lo \
+	stdtcl.lo strdep.lo strhis.lo strini.lo strpre.lo tcpumx.lo \
+	tdesi1.lo testel.lo tremai.lo tridim.lo tsepdc.lo tstvec.lo \
+	turbke.lo turbkw.lo turent.lo turrij.lo typecl.lo undscr.lo \
+	vandri.lo varpos.lo vectds.lo vericl.lo verini.lo verlon.lo \
+	vert1d.lo viscfa.lo visdyn.lo vislmg.lo visort.lo vissec.lo \
+	vissma.lo vissst.lo viswal.lo vor2cl.lo vordep.lo vorimp.lo \
+	vorin0.lo vorini.lo vorlgv.lo vorpre.lo vortex.lo vorver.lo \
+	vorvit.lo zufall.lo usalcl.lo usalin.lo usaste.lo usclim.lo \
+	usdpst.lo ushist.lo usini1.lo usiniv.lo usjoin.lo uskpdc.lo \
+	usmodg.lo usmpst.lo usnpst.lo usphyv.lo usproj.lo uspt1d.lo \
+	ussatc.lo ussmag.lo usstru.lo ussyrc.lo usthht.lo ustmgr.lo \
+	ustske.lo ustskw.lo ustsma.lo ustsns.lo ustsri.lo ustssc.lo \
+	ustsv2.lo usvima.lo usvist.lo usvort.lo usvpst.lo
 libcsbase_la_OBJECTS = $(am_libcsbase_la_OBJECTS)
 libcshot_la_LIBADD =
 am_libcshot_la_OBJECTS = libcshot_la-cs_benchmark.lo \
@@ -145,12 +150,13 @@ am_libcshot_la_OBJECTS = libcshot_la-cs_benchmark.lo \
 	libcshot_la-prods3.lo libcshot_la-prodsc.lo \
 	libcshot_la-promav.lo
 libcshot_la_OBJECTS = $(am_libcshot_la_OBJECTS)
-libcshot_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(libcshot_la_FCFLAGS) $(FCFLAGS) \
-	$(libcshot_la_LDFLAGS) $(LDFLAGS) -o $@
+libcshot_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(libcshot_la_FCFLAGS) \
+	$(FCFLAGS) $(libcshot_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
@@ -161,12 +167,12 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcsbase_la_SOURCES) $(libcshot_la_SOURCES)
 DIST_SOURCES = $(libcsbase_la_SOURCES) $(libcshot_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -174,12 +180,25 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(basedir)" \
 	"$(DESTDIR)$(saturneincludedir)"
-baseDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(base_DATA)
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -226,6 +245,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -262,11 +283,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -281,15 +300,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -334,7 +356,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -351,8 +374,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -379,7 +405,7 @@ AM_CPPFLAGS = \
 -I$(top_srcdir)/include/base \
 -I$(top_srcdir)/include/ctwr \
 -I$(top_srcdir)/include/lagr \
- at BFT_CPPFLAGS@ @FVM_CPPFLAGS@ @MEI_CPPFLAGS@ @MPI_CPPFLAGS@ @LIBXML2_CPPFLAGS@ @BLAS_CPPFLAGS@
+ at FVM_CPPFLAGS@ @MEI_CPPFLAGS@ @BFT_CPPFLAGS@ @MPI_CPPFLAGS@ @LIBXML2_CPPFLAGS@ @BLAS_CPPFLAGS@
 
 AM_CFLAGS = @CFLAGS_DBG@ @CFLAGS_OPT@
 AM_FCFLAGS = \
@@ -419,6 +445,7 @@ $(top_srcdir)/include/base/cs_gradient.h \
 $(top_srcdir)/include/base/cs_grid.h \
 $(top_srcdir)/include/base/cs_gui.h \
 $(top_srcdir)/include/base/cs_gui_boundary_conditions.h \
+$(top_srcdir)/include/base/cs_gui_conjugate_heat_transfer.h \
 $(top_srcdir)/include/base/cs_gui_matisse.h \
 $(top_srcdir)/include/base/cs_gui_mobile_mesh.h \
 $(top_srcdir)/include/base/cs_gui_particles.h \
@@ -535,7 +562,8 @@ libcsbase_la_SOURCES = alelap.f90 alemaj.f90 altycl.f90 armtps.f90 \
 	cscini.f90 csclli.f90 cscloc.f90 cscpce.f90 cscpfb.f90 \
 	cs_coupling.c cs_ext_neighborhood.c csflsh.f90 cs_gradient.c \
 	cs_grid.c cs_gui.c cs_gui_boundary_conditions.c \
-	cs_gui_matisse.c cs_gui_mobile_mesh.c cs_gui_particles.c \
+	cs_gui_conjugate_heat_transfer.c cs_gui_matisse.c \
+	cs_gui_mobile_mesh.c cs_gui_particles.c \
 	cs_gui_radiative_transfer.c cs_gui_specific_physics.c \
 	cs_gui_util.c cs_halo.c csinit.f90 cs_io.c cs_join.c \
 	cs_join_f2c.f90 cs_join_intersect.c cs_join_merge.c \
@@ -546,8 +574,8 @@ libcsbase_la_SOURCES = alelap.f90 alemaj.f90 altycl.f90 armtps.f90 \
 	cs_multigrid.c cs_numbering.c cs_opts.c cs_parall.c cs_perio.c \
 	cs_post.c cs_post_f2c.f90 cs_preprocessor_data.c \
 	cs_proxy_comm.c cs_renumber.c cs_restart.c cs_sat_coupling.c \
-	cs_search.c cs_selector.c cs_selector_f2c.f90 cs_sort.c \
-	cs_syr3_comm.c cs_syr3_coupling.c cs_syr3_messages.c \
+	cs_sat_f2c.f90 cs_search.c cs_selector.c cs_selector_f2c.f90 \
+	cs_sort.c cs_syr3_comm.c cs_syr3_coupling.c cs_syr3_messages.c \
 	cs_syr4_coupling.c cs_syr_coupling.c cs_syr_f2c.f90 \
 	cs_tpar1d.c cs_ventil.c csprnt.f90 distpr.f90 distyp.f90 \
 	divmas.f90 divrij.f90 dttvar.f90 dvvpst.f90 ecrava.f90 \
@@ -561,20 +589,20 @@ libcsbase_la_SOURCES = alelap.f90 alemaj.f90 altycl.f90 armtps.f90 \
 	memdtv.f90 memdyp.f90 memini.f90 memkep.f90 memkom.f90 \
 	memnav.f90 mempdc.f90 memphy.f90 memrij.f90 memsca.f90 \
 	memt1d.f90 memtri.f90 memtsm.f90 memv2f.f90 memvor.f90 \
-	modini.f90 modpar.f90 navsto.f90 newmrk.f90 numvec.f90 \
-	ordita.f90 pergra.f90 perinr.f90 perinu.f90 phyvar.f90 \
-	precli.f90 preduv.f90 prmoy0.f90 projts.f90 proxav.f90 \
-	recvmc.f90 reseps.f90 resolp.f90 resrij.f90 resssg.f90 \
-	resv2f.f90 rijech.f90 rijthe.f90 scalai.f90 schtmp.f90 \
-	stdtcl.f90 strdep.f90 strhis.f90 strini.f90 strpre.f90 \
-	tcpumx.c tdesi1.f90 testel.f90 tremai.c tridim.f90 tsepdc.f90 \
-	tstvec.f90 turbke.f90 turbkw.f90 turent.f90 turrij.f90 \
-	typecl.f90 undscr.f90 vandri.f90 varpos.f90 vectds.f90 \
-	vericl.f90 verini.f90 verlon.f90 vert1d.f90 viscfa.f90 \
-	visdyn.f90 vislmg.f90 visort.f90 vissec.f90 vissma.f90 \
-	vissst.f90 viswal.f90 vor2cl.f90 vordep.f90 vorimp.f90 \
-	vorin0.f90 vorini.f90 vorlgv.f90 vorpre.f90 vortex.f90 \
-	vorver.f90 vorvit.f90 zufall.f90 \
+	modini.f90 modpar.f90 mmtycl.f90 navsto.f90 newmrk.f90 \
+	numvec.f90 ordita.f90 pergra.f90 perinr.f90 perinu.f90 \
+	phyvar.f90 precli.f90 preduv.f90 prmoy0.f90 projts.f90 \
+	proxav.f90 recvmc.f90 reseps.f90 resolp.f90 resrij.f90 \
+	resssg.f90 resv2f.f90 rijech.f90 rijthe.f90 scalai.f90 \
+	schtmp.f90 stdtcl.f90 strdep.f90 strhis.f90 strini.f90 \
+	strpre.f90 tcpumx.c tdesi1.f90 testel.f90 tremai.c tridim.f90 \
+	tsepdc.f90 tstvec.f90 turbke.f90 turbkw.f90 turent.f90 \
+	turrij.f90 typecl.f90 undscr.f90 vandri.f90 varpos.f90 \
+	vectds.f90 vericl.f90 verini.f90 verlon.f90 vert1d.f90 \
+	viscfa.f90 visdyn.f90 vislmg.f90 visort.f90 vissec.f90 \
+	vissma.f90 vissst.f90 viswal.f90 vor2cl.f90 vordep.f90 \
+	vorimp.f90 vorin0.f90 vorini.f90 vorlgv.f90 vorpre.f90 \
+	vortex.f90 vorver.f90 vorvit.f90 zufall.f90 \
 	$(top_srcdir)/users/base/usalcl.f90 \
 	$(top_srcdir)/users/base/usalin.f90 \
 	$(top_srcdir)/users/base/usaste.f90 \
@@ -652,14 +680,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/base/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/base/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/base/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/base/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -677,6 +705,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -708,6 +737,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cs_grid.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cs_gui.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cs_gui_boundary_conditions.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cs_gui_conjugate_heat_transfer.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cs_gui_matisse.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cs_gui_mobile_mesh.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cs_gui_particles.Plo at am__quote@
@@ -763,52 +793,52 @@ distclean-compile:
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
 libcshot_la-cs_benchmark.lo: cs_benchmark.c
- at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -MT libcshot_la-cs_benchmark.lo -MD -MP -MF $(DEPDIR)/libcshot_la-cs_benchmark.Tpo -c -o libcshot_la-cs_benchmark.lo `test -f 'cs_benchmark.c' || echo '$(srcdir)/'`cs_benchmark.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libcshot_la-cs_benchmark.Tpo $(DEPDIR)/libcshot_la-cs_benchmark.Plo
+ at am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -MT libcshot_la-cs_benchmark.lo -MD -MP -MF $(DEPDIR)/libcshot_la-cs_benchmark.Tpo -c -o libcshot_la-cs_benchmark.lo `test -f 'cs_benchmark.c' || echo '$(srcdir)/'`cs_benchmark.c
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcshot_la-cs_benchmark.Tpo $(DEPDIR)/libcshot_la-cs_benchmark.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cs_benchmark.c' object='libcshot_la-cs_benchmark.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -c -o libcshot_la-cs_benchmark.lo `test -f 'cs_benchmark.c' || echo '$(srcdir)/'`cs_benchmark.c
+ at am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -c -o libcshot_la-cs_benchmark.lo `test -f 'cs_benchmark.c' || echo '$(srcdir)/'`cs_benchmark.c
 
 libcshot_la-cs_blas.lo: cs_blas.c
- at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -MT libcshot_la-cs_blas.lo -MD -MP -MF $(DEPDIR)/libcshot_la-cs_blas.Tpo -c -o libcshot_la-cs_blas.lo `test -f 'cs_blas.c' || echo '$(srcdir)/'`cs_blas.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libcshot_la-cs_blas.Tpo $(DEPDIR)/libcshot_la-cs_blas.Plo
+ at am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -MT libcshot_la-cs_blas.lo -MD -MP -MF $(DEPDIR)/libcshot_la-cs_blas.Tpo -c -o libcshot_la-cs_blas.lo `test -f 'cs_blas.c' || echo '$(srcdir)/'`cs_blas.c
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcshot_la-cs_blas.Tpo $(DEPDIR)/libcshot_la-cs_blas.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cs_blas.c' object='libcshot_la-cs_blas.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -c -o libcshot_la-cs_blas.lo `test -f 'cs_blas.c' || echo '$(srcdir)/'`cs_blas.c
+ at am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -c -o libcshot_la-cs_blas.lo `test -f 'cs_blas.c' || echo '$(srcdir)/'`cs_blas.c
 
 libcshot_la-cs_matrix.lo: cs_matrix.c
- at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -MT libcshot_la-cs_matrix.lo -MD -MP -MF $(DEPDIR)/libcshot_la-cs_matrix.Tpo -c -o libcshot_la-cs_matrix.lo `test -f 'cs_matrix.c' || echo '$(srcdir)/'`cs_matrix.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libcshot_la-cs_matrix.Tpo $(DEPDIR)/libcshot_la-cs_matrix.Plo
+ at am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -MT libcshot_la-cs_matrix.lo -MD -MP -MF $(DEPDIR)/libcshot_la-cs_matrix.Tpo -c -o libcshot_la-cs_matrix.lo `test -f 'cs_matrix.c' || echo '$(srcdir)/'`cs_matrix.c
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcshot_la-cs_matrix.Tpo $(DEPDIR)/libcshot_la-cs_matrix.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cs_matrix.c' object='libcshot_la-cs_matrix.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -c -o libcshot_la-cs_matrix.lo `test -f 'cs_matrix.c' || echo '$(srcdir)/'`cs_matrix.c
+ at am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -c -o libcshot_la-cs_matrix.lo `test -f 'cs_matrix.c' || echo '$(srcdir)/'`cs_matrix.c
 
 libcshot_la-cs_sles.lo: cs_sles.c
- at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -MT libcshot_la-cs_sles.lo -MD -MP -MF $(DEPDIR)/libcshot_la-cs_sles.Tpo -c -o libcshot_la-cs_sles.lo `test -f 'cs_sles.c' || echo '$(srcdir)/'`cs_sles.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libcshot_la-cs_sles.Tpo $(DEPDIR)/libcshot_la-cs_sles.Plo
+ at am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -MT libcshot_la-cs_sles.lo -MD -MP -MF $(DEPDIR)/libcshot_la-cs_sles.Tpo -c -o libcshot_la-cs_sles.lo `test -f 'cs_sles.c' || echo '$(srcdir)/'`cs_sles.c
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcshot_la-cs_sles.Tpo $(DEPDIR)/libcshot_la-cs_sles.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cs_sles.c' object='libcshot_la-cs_sles.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -c -o libcshot_la-cs_sles.lo `test -f 'cs_sles.c' || echo '$(srcdir)/'`cs_sles.c
+ at am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcshot_la_CFLAGS) $(CFLAGS) -c -o libcshot_la-cs_sles.lo `test -f 'cs_sles.c' || echo '$(srcdir)/'`cs_sles.c
 
 .f90.o:
 	$(FCCOMPILE) -c -o $@ $<
@@ -820,121 +850,121 @@ libcshot_la-cs_sles.lo: cs_sles.c
 	$(LTFCCOMPILE) -c -o $@ $<
 
 usalcl.lo: $(top_srcdir)/users/base/usalcl.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usalcl.lo `test -f '$(top_srcdir)/users/base/usalcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usalcl.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usalcl.lo `test -f '$(top_srcdir)/users/base/usalcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usalcl.f90
 
 usalin.lo: $(top_srcdir)/users/base/usalin.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usalin.lo `test -f '$(top_srcdir)/users/base/usalin.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usalin.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usalin.lo `test -f '$(top_srcdir)/users/base/usalin.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usalin.f90
 
 usaste.lo: $(top_srcdir)/users/base/usaste.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usaste.lo `test -f '$(top_srcdir)/users/base/usaste.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usaste.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usaste.lo `test -f '$(top_srcdir)/users/base/usaste.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usaste.f90
 
 usclim.lo: $(top_srcdir)/users/base/usclim.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usclim.lo `test -f '$(top_srcdir)/users/base/usclim.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usclim.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usclim.lo `test -f '$(top_srcdir)/users/base/usclim.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usclim.f90
 
 usdpst.lo: $(top_srcdir)/users/base/usdpst.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usdpst.lo `test -f '$(top_srcdir)/users/base/usdpst.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usdpst.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usdpst.lo `test -f '$(top_srcdir)/users/base/usdpst.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usdpst.f90
 
 ushist.lo: $(top_srcdir)/users/base/ushist.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ushist.lo `test -f '$(top_srcdir)/users/base/ushist.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ushist.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ushist.lo `test -f '$(top_srcdir)/users/base/ushist.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ushist.f90
 
 usini1.lo: $(top_srcdir)/users/base/usini1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usini1.lo `test -f '$(top_srcdir)/users/base/usini1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usini1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usini1.lo `test -f '$(top_srcdir)/users/base/usini1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usini1.f90
 
 usiniv.lo: $(top_srcdir)/users/base/usiniv.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usiniv.lo `test -f '$(top_srcdir)/users/base/usiniv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usiniv.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usiniv.lo `test -f '$(top_srcdir)/users/base/usiniv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usiniv.f90
 
 usjoin.lo: $(top_srcdir)/users/base/usjoin.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usjoin.lo `test -f '$(top_srcdir)/users/base/usjoin.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usjoin.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usjoin.lo `test -f '$(top_srcdir)/users/base/usjoin.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usjoin.f90
 
 uskpdc.lo: $(top_srcdir)/users/base/uskpdc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uskpdc.lo `test -f '$(top_srcdir)/users/base/uskpdc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/uskpdc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uskpdc.lo `test -f '$(top_srcdir)/users/base/uskpdc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/uskpdc.f90
 
 usmodg.lo: $(top_srcdir)/users/base/usmodg.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usmodg.lo `test -f '$(top_srcdir)/users/base/usmodg.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usmodg.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usmodg.lo `test -f '$(top_srcdir)/users/base/usmodg.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usmodg.f90
 
 usmpst.lo: $(top_srcdir)/users/base/usmpst.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usmpst.lo `test -f '$(top_srcdir)/users/base/usmpst.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usmpst.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usmpst.lo `test -f '$(top_srcdir)/users/base/usmpst.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usmpst.f90
 
 usnpst.lo: $(top_srcdir)/users/base/usnpst.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usnpst.lo `test -f '$(top_srcdir)/users/base/usnpst.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usnpst.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usnpst.lo `test -f '$(top_srcdir)/users/base/usnpst.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usnpst.f90
 
 usphyv.lo: $(top_srcdir)/users/base/usphyv.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usphyv.lo `test -f '$(top_srcdir)/users/base/usphyv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usphyv.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usphyv.lo `test -f '$(top_srcdir)/users/base/usphyv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usphyv.f90
 
 usproj.lo: $(top_srcdir)/users/base/usproj.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usproj.lo `test -f '$(top_srcdir)/users/base/usproj.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usproj.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usproj.lo `test -f '$(top_srcdir)/users/base/usproj.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usproj.f90
 
 uspt1d.lo: $(top_srcdir)/users/base/uspt1d.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uspt1d.lo `test -f '$(top_srcdir)/users/base/uspt1d.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/uspt1d.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uspt1d.lo `test -f '$(top_srcdir)/users/base/uspt1d.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/uspt1d.f90
 
 ussatc.lo: $(top_srcdir)/users/base/ussatc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ussatc.lo `test -f '$(top_srcdir)/users/base/ussatc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ussatc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ussatc.lo `test -f '$(top_srcdir)/users/base/ussatc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ussatc.f90
 
 ussmag.lo: $(top_srcdir)/users/base/ussmag.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ussmag.lo `test -f '$(top_srcdir)/users/base/ussmag.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ussmag.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ussmag.lo `test -f '$(top_srcdir)/users/base/ussmag.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ussmag.f90
 
 usstru.lo: $(top_srcdir)/users/base/usstru.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usstru.lo `test -f '$(top_srcdir)/users/base/usstru.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usstru.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usstru.lo `test -f '$(top_srcdir)/users/base/usstru.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usstru.f90
 
 ussyrc.lo: $(top_srcdir)/users/base/ussyrc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ussyrc.lo `test -f '$(top_srcdir)/users/base/ussyrc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ussyrc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ussyrc.lo `test -f '$(top_srcdir)/users/base/ussyrc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ussyrc.f90
 
 usthht.lo: $(top_srcdir)/users/base/usthht.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usthht.lo `test -f '$(top_srcdir)/users/base/usthht.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usthht.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usthht.lo `test -f '$(top_srcdir)/users/base/usthht.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usthht.f90
 
 ustmgr.lo: $(top_srcdir)/users/base/ustmgr.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustmgr.lo `test -f '$(top_srcdir)/users/base/ustmgr.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustmgr.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustmgr.lo `test -f '$(top_srcdir)/users/base/ustmgr.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustmgr.f90
 
 ustske.lo: $(top_srcdir)/users/base/ustske.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustske.lo `test -f '$(top_srcdir)/users/base/ustske.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustske.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustske.lo `test -f '$(top_srcdir)/users/base/ustske.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustske.f90
 
 ustskw.lo: $(top_srcdir)/users/base/ustskw.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustskw.lo `test -f '$(top_srcdir)/users/base/ustskw.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustskw.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustskw.lo `test -f '$(top_srcdir)/users/base/ustskw.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustskw.f90
 
 ustsma.lo: $(top_srcdir)/users/base/ustsma.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustsma.lo `test -f '$(top_srcdir)/users/base/ustsma.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustsma.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustsma.lo `test -f '$(top_srcdir)/users/base/ustsma.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustsma.f90
 
 ustsns.lo: $(top_srcdir)/users/base/ustsns.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustsns.lo `test -f '$(top_srcdir)/users/base/ustsns.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustsns.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustsns.lo `test -f '$(top_srcdir)/users/base/ustsns.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustsns.f90
 
 ustsri.lo: $(top_srcdir)/users/base/ustsri.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustsri.lo `test -f '$(top_srcdir)/users/base/ustsri.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustsri.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustsri.lo `test -f '$(top_srcdir)/users/base/ustsri.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustsri.f90
 
 ustssc.lo: $(top_srcdir)/users/base/ustssc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustssc.lo `test -f '$(top_srcdir)/users/base/ustssc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustssc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustssc.lo `test -f '$(top_srcdir)/users/base/ustssc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustssc.f90
 
 ustsv2.lo: $(top_srcdir)/users/base/ustsv2.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustsv2.lo `test -f '$(top_srcdir)/users/base/ustsv2.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustsv2.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o ustsv2.lo `test -f '$(top_srcdir)/users/base/ustsv2.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/ustsv2.f90
 
 usvima.lo: $(top_srcdir)/users/base/usvima.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usvima.lo `test -f '$(top_srcdir)/users/base/usvima.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usvima.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usvima.lo `test -f '$(top_srcdir)/users/base/usvima.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usvima.f90
 
 usvist.lo: $(top_srcdir)/users/base/usvist.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usvist.lo `test -f '$(top_srcdir)/users/base/usvist.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usvist.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usvist.lo `test -f '$(top_srcdir)/users/base/usvist.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usvist.f90
 
 usvort.lo: $(top_srcdir)/users/base/usvort.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usvort.lo `test -f '$(top_srcdir)/users/base/usvort.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usvort.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usvort.lo `test -f '$(top_srcdir)/users/base/usvort.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usvort.f90
 
 usvpst.lo: $(top_srcdir)/users/base/usvpst.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usvpst.lo `test -f '$(top_srcdir)/users/base/usvpst.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usvpst.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usvpst.lo `test -f '$(top_srcdir)/users/base/usvpst.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/base/usvpst.f90
 
 libcshot_la-gradmc.lo: gradmc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-gradmc.lo `test -f 'gradmc.f90' || echo '$(srcdir)/'`gradmc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-gradmc.lo `test -f 'gradmc.f90' || echo '$(srcdir)/'`gradmc.f90
 
 libcshot_la-gradrc.lo: gradrc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-gradrc.lo `test -f 'gradrc.f90' || echo '$(srcdir)/'`gradrc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-gradrc.lo `test -f 'gradrc.f90' || echo '$(srcdir)/'`gradrc.f90
 
 libcshot_la-prods2.lo: prods2.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-prods2.lo `test -f 'prods2.f90' || echo '$(srcdir)/'`prods2.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-prods2.lo `test -f 'prods2.f90' || echo '$(srcdir)/'`prods2.f90
 
 libcshot_la-prods3.lo: prods3.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-prods3.lo `test -f 'prods3.f90' || echo '$(srcdir)/'`prods3.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-prods3.lo `test -f 'prods3.f90' || echo '$(srcdir)/'`prods3.f90
 
 libcshot_la-prodsc.lo: prodsc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-prodsc.lo `test -f 'prodsc.f90' || echo '$(srcdir)/'`prodsc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-prodsc.lo `test -f 'prodsc.f90' || echo '$(srcdir)/'`prodsc.f90
 
 libcshot_la-promav.lo: promav.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-promav.lo `test -f 'promav.f90' || echo '$(srcdir)/'`promav.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libcshot_la_FCFLAGS) $(FCFLAGS) -c -o libcshot_la-promav.lo `test -f 'promav.f90' || echo '$(srcdir)/'`promav.f90
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -944,51 +974,57 @@ clean-libtool:
 install-baseDATA: $(base_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(basedir)" || $(MKDIR_P) "$(DESTDIR)$(basedir)"
-	@list='$(base_DATA)'; for p in $$list; do \
+	@list='$(base_DATA)'; test -n "$(basedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(baseDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(basedir)/$$f'"; \
-	  $(baseDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(basedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(basedir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(basedir)" || exit $$?; \
 	done
 
 uninstall-baseDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(base_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(basedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(basedir)/$$f"; \
-	done
+	@list='$(base_DATA)'; test -n "$(basedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(basedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(basedir)" && rm -f $$files
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -996,29 +1032,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -1039,13 +1080,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -1076,6 +1121,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -1097,6 +1143,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -1105,18 +1153,28 @@ install-data-am: install-baseDATA install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -1156,6 +1214,7 @@ uninstall-am: uninstall-baseDATA uninstall-saturneincludeHEADERS
 	pdf pdf-am ps ps-am tags uninstall uninstall-am \
 	uninstall-baseDATA uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/base/alelap.f90 b/src/base/alelap.f90
index 3ee7867..584b06f 100644
--- a/src/base/alelap.f90
+++ b/src/base/alelap.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -54,73 +54,60 @@ subroutine alelap &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! viscf(nfac)      ! tr ! --- ! visc*surface/dist aux faces internes           !
 ! viscb(nfabor     ! tr ! --- ! visc*surface/dist aux faces de bord            !
 ! dam(ncelet       ! tr ! --- ! tableau de travail pour matrice                !
@@ -129,9 +116,9 @@ subroutine alelap &
 ! smbr(ncelet      ! tr ! --- ! tableau de travail pour sec mem                !
 ! rovsdt(ncelet    ! tr ! --- ! tableau de travail pour terme instat           !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -144,7 +131,7 @@ subroutine alelap &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -193,7 +180,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel
@@ -362,4 +349,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/alemaj.f90 b/src/base/alemaj.f90
index 286c76e..40002ad 100644
--- a/src/base/alemaj.f90
+++ b/src/base/alemaj.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -51,38 +51,33 @@ subroutine alemaj &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! itrale           ! e  ! <-- ! numero d'iteration pour l'ale                  !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -92,39 +87,35 @@ subroutine alemaj &
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (lndfbr)       !    !     !  (optionnel)                                   !
 ! impale(nnod)     ! te ! <-- ! indicateur de delacement impose                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! depale(nnod,3    ! tr ! <-- ! deplacement aux noeuds                         !
 ! xyzno0(3,nnod    ! tr ! <-- ! coordonnees noeuds maillage initial            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -137,7 +128,7 @@ subroutine alemaj &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -181,7 +172,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision depale(nnod,3), xyzno0(3,nnod)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifinra
@@ -288,4 +279,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/base/altycl.f90 b/src/base/altycl.f90
index c476375..1c0d89b 100644
--- a/src/base/altycl.f90
+++ b/src/base/altycl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,79 +52,67 @@ subroutine altycl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
 !   (nfac+1)       !    !     !                                                !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas)          !    !     !                                                !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! ialtyb(nfabor    ! te ! <-- ! type des faces de bord pour l'ale              !
 ! icodcl           ! te ! <-- ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
 !                  !    !     ! = 3   -> densite de flux                       !
 ! impale(nnod)     ! te ! <-- ! indicateur de delacement impose                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! rcodcl           ! tr ! <-- ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -138,11 +126,11 @@ subroutine altycl &
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
 ! depale(nnod,3    ! tr ! <-- ! deplacement aux noeuds                         !
 ! xyzno0(3,nnod    ! tr ! <-- ! coordonnees noeuds maillage initial            !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -154,7 +142,7 @@ subroutine altycl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -202,7 +190,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, iel, iphas, iuiph, iviph, iwiph
@@ -530,4 +518,4 @@ enddo
 
 
 return
-end
+end subroutine
diff --git a/src/base/armtps.f90 b/src/base/armtps.f90
index 63738bf..eaa3a03 100644
--- a/src/base/armtps.f90
+++ b/src/base/armtps.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine armtps &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ntcabs           ! e  ! <-- ! numero absolu du pas de temps courant          !
 ! ntmabs           ! e  ! <-- ! numero absolu du pas de temps final            !
@@ -56,7 +56,7 @@ subroutine armtps &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,7 +69,7 @@ include "parall.h"
 
 integer          ntcabs , ntmabs
 
-! VARIABLES LOCALES
+! Local variables
 
 integer irangs, lng, itmp(1), itlim
 integer imetho
@@ -306,4 +306,4 @@ endif
 
 #endif
 
-end
+end subroutine
diff --git a/src/base/autmgr.f90 b/src/base/autmgr.f90
index 073c334..dcca4ac 100644
--- a/src/base/autmgr.f90
+++ b/src/base/autmgr.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,7 +46,7 @@ subroutine autmgr &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nfecra           ! e  ! <-- ! numero du fichier d'impressions                !
 ! isym             ! e  ! <-- ! indicateur = 1 matrice sym                     !
@@ -55,7 +55,7 @@ subroutine autmgr &
 ! ncelf            ! e  ! <-- ! nombre d'elements maillage fin                 !
 ! ncelfe           ! e  ! <-- ! nombre d'elements etendus fin                  !
 ! nfacf            ! e  ! <-- ! nombre de faces internes maill. fin            !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! nfecra           ! e  ! <-- ! unite du fichier sortie std                    !
 ! ifacef           ! te ! <-- ! elements voisins d'une face interne            !
 ! (2, nfacf)       !    !     !  du maillage fin                               !
@@ -92,7 +92,7 @@ subroutine autmgr &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -372,5 +372,5 @@ endif
 !==============================================================================
 
 return
-end
+end subroutine
 
diff --git a/src/base/bilsc2.f90 b/src/base/bilsc2.f90
index 6a34c9b..d8ccb5e 100644
--- a/src/base/bilsc2.f90
+++ b/src/base/bilsc2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine bilsc2                               &
+subroutine bilsc2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -69,27 +69,26 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! idtvar           ! e  ! <-- ! indicateur du schema temporel                  !
 ! ivar             ! e  ! <-- ! numero de la variable                          !
 ! iconvp           ! e  ! <-- ! indicateur = 1 convection, 0 sinon             !
@@ -111,7 +110,7 @@
 ! iccocg           ! e  ! <-- ! indicateur = 1 pour recalcul de cocg           !
 !                  !    !     !              0 sinon                           !
 ! ipp              ! e  ! <-- ! numero de variable pour post                   !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! blencp           ! r  ! <-- ! 1 - proportion d'upwind                        !
 ! epsrgp           ! r  ! <-- ! precision relative pour la                     !
 !                  !    !     !  reconstruction des gradients 97               !
@@ -125,41 +124,32 @@
 !                  !    !     !   totalement centre en temps (mixage           !
 !                  !    !     !   entre crank-nicolson et adams-               !
 !                  !    !     !   bashforth)                                   !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
 ! ia(*)            ! te ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! pvar (ncelet     ! tr ! <-- ! variable resolue (instant courant)             !
 ! pvar (ncelet     ! tr ! <-- ! variable resolue (instant precedent)           !
 ! coefap, b        ! tr ! <-- ! tableaux des cond lim pour p                   !
@@ -177,9 +167,9 @@
 !    (ncelet)      !    !     !                                                !
 ! dpdxa,ya,za      ! tr ! --- ! tableau de travail pour le grad de p           !
 !    (ncelet)      !    !     !  avec decentrement amont                       !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -191,7 +181,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -200,6 +190,7 @@ include "vector.h"
 include "entsor.h"
 include "period.h"
 include "parall.h"
+include "cplsat.h"
 
 !===============================================================================
 
@@ -240,7 +231,7 @@ double precision dpdx (ncelet),dpdy (ncelet),dpdz (ncelet)
 double precision dpdxa(ncelet),dpdya(ncelet),dpdza(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 character*8      cnom
@@ -1258,8 +1249,14 @@ if (idtvar.lt.0) then
     diipby = ra(iii+2)
     diipbz = ra(iii+3)
 
-    flui = 0.5d0*( flumab(ifac) +abs(flumab(ifac)) )
-    fluj = 0.5d0*( flumab(ifac) -abs(flumab(ifac)) )
+    ! On enleve le decentrement pour les faces couplees (test sur iphas=1)
+    if (ifaccp.eq.1.and.ia(iitypf-1+ifac).eq.icscpl) then
+      flui = 0.0d0
+      fluj = flumab(ifac)
+    else
+      flui = 0.5d0*( flumab(ifac) +abs(flumab(ifac)) )
+      fluj = 0.5d0*( flumab(ifac) -abs(flumab(ifac)) )
+    endif
 
     pir  = pvar(ii)/relaxp - (1.d0-relaxp)/relaxp*pvara(ii)
     pipr = pir                                                    &
@@ -1286,8 +1283,14 @@ else
     diipby = ra(iii+2)
     diipbz = ra(iii+3)
 
-    flui = 0.5d0*( flumab(ifac) +abs(flumab(ifac)) )
-    fluj = 0.5d0*( flumab(ifac) -abs(flumab(ifac)) )
+    ! On enleve le decentrement pour les faces couplees (test sur iphas=1)
+    if (ifaccp.eq.1.and.ia(iitypf-1+ifac).eq.icscpl) then
+      flui = 0.0d0
+      fluj = flumab(ifac)
+    else
+      flui = 0.5d0*( flumab(ifac) +abs(flumab(ifac)) )
+      fluj = 0.5d0*( flumab(ifac) -abs(flumab(ifac)) )
+    endif
 
     pip = pvar(ii)                                                &
        +ircflp*(dpdx(ii)*diipbx+dpdy(ii)*diipby+dpdz(ii)*diipbz)
@@ -1357,4 +1360,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/calgeo.f90 b/src/base/calgeo.f90
index 576eabb..4553381 100644
--- a/src/base/calgeo.f90
+++ b/src/base/calgeo.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -49,63 +49,55 @@ subroutine calgeo &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
 ! volume           ! tr ! --> ! volume d'un des ncelet elements                !
 ! (ncelet          !    !     !                                                !
 ! volmin           ! r  ! --> ! volume de controle minimal                     !
 ! volmax           ! r  ! --> ! volume de controle maximal                     !
 ! voltot           ! r  ! --> ! volume total du domaine                        !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -117,7 +109,7 @@ subroutine calgeo &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -148,7 +140,7 @@ double precision xyznod(ndim,nnod), volume(ncelet)
 double precision volmin, volmax, voltot
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer idebia, idebra
 
@@ -236,4 +228,4 @@ endif
 
 
 return
-end
+end subroutine
diff --git a/src/base/calhyd.f90 b/src/base/calhyd.f90
index ab0471e..8fa2176 100644
--- a/src/base/calhyd.f90
+++ b/src/base/calhyd.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,72 +59,59 @@ subroutine calhyd &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
 ! indhyd           ! e  ! --> ! indicateur de mise a jour de phydr             !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! phydr(ncelet)    ! tr ! <-- ! increment de pression hydrostatique            !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor)        !    !     !    faces de bord                               !
 ! fextx,fexty      ! tr ! <-- ! force exterieure generant la pression          !
@@ -138,9 +125,9 @@ subroutine calhyd &
 ! drtp(ncelet      ! tr ! --- ! tableau de travail pour increment              !
 ! smbr  (ncelet    ! tr ! --- ! tableau de travail pour sec mem                !
 ! w1..10(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -153,7 +140,7 @@ subroutine calhyd &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -205,7 +192,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          lchain
@@ -603,4 +590,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/calmom.f90 b/src/base/calmom.f90
index d08860d..95d725a 100644
--- a/src/base/calmom.f90
+++ b/src/base/calmom.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -43,25 +43,24 @@ subroutine calmom &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
 ! ncel             ! e  ! <-- ! nombre de cellules                             !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! rtp              ! tr ! <-- ! tableaux des variables au pdt courant          !
 ! (ncelet,*   )    !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -73,7 +72,7 @@ subroutine calmom &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -91,7 +90,7 @@ integer          ia(*)
 double precision rtp(ncelet,*) , dt(ncelet), propce(ncelet,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, iel, imom, icmom, idtcm, itravm, ifinra
 integer          jmom, icumut
@@ -177,4 +176,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/caltri.f90 b/src/base/caltri.f90
index 55f6929..268f5a6 100644
--- a/src/base/caltri.f90
+++ b/src/base/caltri.f90
@@ -46,19 +46,15 @@ subroutine caltri &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! iverif           ! e  ! <-- ! indicateur des tests elementaires              !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 ! (nfml,nprfml)    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -69,22 +65,21 @@ subroutine caltri &
 !   (nfabor+1)     !    !     !  face de bord dans nodfbr (optionnel)          !
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (lndfbr)       !    !     !  (optionnel)                                   !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! (ndim,nnod)      !    !     !                                                !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -96,7 +91,7 @@ subroutine caltri &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -143,7 +138,7 @@ double precision xyznod(ndim,nnod), volume(ncelet)
 
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ipropc , ipropf , ipropb
 integer          icoefa , icoefb
@@ -725,6 +720,13 @@ do iphas = 1, nphas
 
   else
 
+    if (iihmpr.eq.1) then
+      call uikpdc &
+      !==========
+    ( iappel, iphas, ncelet, ncepdc,     &
+      ia(idbia1), ra(idbra1) , ra(irtpa) )
+    endif
+
     ils    = idbia1
     idbia2 = ils + maxelt
     call iasize('caltri',idbia2)
@@ -791,6 +793,13 @@ do iphas = 1, nphas
 
     else
 
+      if (iihmpr.eq.1) then
+        call uikpdc &
+        !==========
+      ( iappel, iphas, ncelet, ncepdc,                  &
+        ia(iicepd(iphas)), ra(ickupd(iphas)), ra(irtpa) )
+      endif
+
       ils    = ifinia
       ifnia2 = ils + maxelt
       call iasize('caltri',ifnia2)
@@ -1330,11 +1339,10 @@ if(ntcabs.lt.ntmabs) then
     endif
   endif
   if (itrale.eq.0) iisuit = 0
+  if (iwarn0.gt.0 .and. iisuit.eq.1) write(nfecra,3020)ntcabs,ttcabs
 else if(ntcabs.eq.ntmabs) then
   iisuit = 1
-  if(iwarn0.gt.0) then
-    write(nfecra,4000)
-  endif
+  if(iwarn0.gt.0) write(nfecra,3021)ntcabs,ttcabs
 endif
 
 if (iisuit.eq.1) then
@@ -1414,9 +1422,7 @@ if (iisuit.eq.1) then
   call dmtmps(tecrf2)
   !==========
 
-  if(iwarn0.gt.0) then
-    write(nfecra,3020)ntcabs,ttcabs, tecrf2-tecrf1
-  endif
+  if(iwarn0.gt.0) write(nfecra,3022) tecrf2-tecrf1
 
 endif ! iisuit = 1
 
@@ -1629,6 +1635,10 @@ ifinra = iditra
 ! 25. FINALISATION HISTORIQUES
 !===============================================================================
 
+if(iwarn0.gt.0) then
+  write(nfecra,4000)
+endif
+
 call dmtmps(tecrf1)
 !==========
 
@@ -1752,8 +1762,12 @@ write(nfecra,7000)
  /)
  3020 format(/,/,                                                 &
  ' Sortie intermediaire de fichiers suite',/,                     &
- '   Sauvegarde a l''iteration ', I10, ', Temps physique ',E14.5,/,&
- '   Temps CPU pour les fichiers suite : ',E14.5,/,/)
+ '   Sauvegarde a l''iteration ', I10, ', Temps physique ',E14.5,/,/)
+ 3021 format(/,/,                                                 &
+ ' Sortie finale de fichiers suite',/,                     &
+ '   Sauvegarde a l''iteration ', I10, ', Temps physique ',E14.5,/,/)
+ 3022 format(/,/,                                                 &
+ ' Temps CPU pour les fichiers suite : ',E14.5,/,/)
 
  4000 format(/,/,                                                 &
 '===============================================================',&
@@ -1822,8 +1836,12 @@ write(nfecra,7000)
  /)
  3020 format(/,/,                                                 &
  ' Write intermediate restart files',/,                           &
- '   checkpoint at iteration ',    I10,  ', Physical time ',E14.5,/, &
- '   CPU time for restart files: ',E14.5,/,/)
+ '   checkpoint at iteration ',    I10,  ', Physical time ',E14.5,/,/)
+ 3021 format(/,/,                                                 &
+ ' Write final restart files',/,                           &
+ '   checkpoint at iteration ',    I10,  ', Physical time ',E14.5,/,/)
+ 3022 format(/,/,                                                 &
+ ' CPU time for restart files: ',E14.5,/,/)
 
  4000 format(/,/,                                                 &
 '===============================================================',&
@@ -1859,4 +1877,4 @@ write(nfecra,7000)
 
 
 return
-end
+end subroutine
diff --git a/src/base/catsma.f90 b/src/base/catsma.f90
index 3d5829f..6cfe082 100644
--- a/src/base/catsma.f90
+++ b/src/base/catsma.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,11 +44,11 @@ subroutine catsma &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
 ! ncel             ! e  ! <-- ! nombre de cellules                             !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
 ! iterns           ! e  ! <-- ! numero d'iteration sur navsto                  !
 ! isnexp           ! e  ! <-- ! indicateur pour extrapolation des              !
 !                  !    !     !  termes sources de la phase traitee            !
@@ -82,7 +82,7 @@ subroutine catsma &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 integer          ncelet, ncel  , ncesmp, iterns, isnexp
@@ -93,7 +93,7 @@ double precision pvara (ncelet)
 double precision smcelp(ncesmp), gamma (ncesmp)
 double precision tsexp (ncelet), tsimp (ncelet), gapinj(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer ii, iel
 
@@ -144,4 +144,4 @@ else
 endif
 
 return
-end
+end subroutine
diff --git a/src/base/causta.f90 b/src/base/causta.f90
index f5868f7..60c7aaf 100644
--- a/src/base/causta.f90
+++ b/src/base/causta.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -43,7 +43,7 @@ subroutine causta &
 !-------------------------------------------------------------------------------
 !ARGU                         ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! iface            ! e  ! <-- ! numero d'entite traitee                        !
 ! imp              ! e  ! <-- ! niveau d'impression                            !
@@ -72,7 +72,7 @@ subroutine causta &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -86,7 +86,7 @@ integer          iface, imp
 double precision xkappa, cstlog, ypluli, apow, bpow, dpow
 double precision uu, dp, xnu, uet
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ipos, nitm, nit
 double precision eps, rr, yp, uetwer, uetmin, ueta, ysurnu
@@ -206,4 +206,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/clca66.f90 b/src/base/clca66.f90
index 6ce02b8..0eb0162 100644
--- a/src/base/clca66.f90
+++ b/src/base/clca66.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine clca66                               &
+subroutine clca66 &
 !================
 
  ( clsyme , eloglo , alpha )
@@ -39,7 +39,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! clsyme           !  r ! <-- ! indicateur symetrie = 1., paroi = 0.           !
 ! eloglo           ! tr ! <-- ! matrice de changement de base                  !
@@ -56,7 +56,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 ! Arguments
@@ -64,7 +64,7 @@ implicit none
 double precision clsyme
 double precision eloglo(3,3),alpha(6,6)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer ii,jj,kk,pp,jj1,jj2
 
diff --git a/src/base/cldijp.f90 b/src/base/cldijp.f90
index 58bd6fd..c5cecf2 100644
--- a/src/base/cldijp.f90
+++ b/src/base/cldijp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -66,14 +66,14 @@ subroutine cldijp &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idbia0/idbra0    ! e  ! <-- ! pointeur de la premiere cas libre des          !
 !                  !    !     !  tableaux ia/ra                                !
 ! nfac             ! e  ! <-- ! nombre total de faces internes                 !
 ! nfabor           ! e  ! <-- ! nombre total de faces         de bord          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! ifacel           ! te ! <-- ! ifacel(iel,ifac) num glob de l'elemnt          !
 ! (2,nfac)         !    !     !  vois iel (1 ou 2) de la fac int ifac          !
 ! ifabor           ! te ! <-- ! ifabor(ifac    ) num glob de l'elt             !
@@ -120,7 +120,7 @@ subroutine cldijp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -236,4 +236,4 @@ enddo
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/base/cldipo.f90 b/src/base/cldipo.f90
index c4c913f..36e28e2 100644
--- a/src/base/cldipo.f90
+++ b/src/base/cldipo.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,13 +46,13 @@ subroutine cldipo &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idbia0/idbra0    ! e  ! <-- ! pointeur de la premiere cas libre des          !
 !                  !    !     !  tableaux ia/ra                                !
 ! nfac  /nfabor    ! e  ! <-- ! nombre total de faces internes/de bor          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! ifacel           ! te ! <-- ! ifacel(iel,ifac) num glob de l'elemnt          !
 ! (2,nfac)         !    !     !  vois iel (1 ou 2) de la fac int ifac          !
 ! ifabor           ! te ! <-- ! ifabor(ifac) num glob de l'element             !
@@ -199,4 +199,4 @@ endif
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/clipke.f90 b/src/base/clipke.f90
index 4eda937..2fc3adb 100644
--- a/src/base/clipke.f90
+++ b/src/base/clipke.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -42,13 +42,13 @@ subroutine clipke &
 ! Arguments
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nvar             ! e  ! <-- ! nombre de variables                            !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! iphas            ! e  ! <-- ! numero de la phase a traiter                   !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nphas            ! i  ! <-- ! number of phases                               !
+! iphas            ! i  ! <-- ! phase number                                   !
 ! iclip            ! e  ! <-- ! indicateur = 0 on utilise viscl0               !
 !                  !    !     !            sinon on utilise viscl              !
 ! iwarnk           ! e  ! <-- ! niveau d'impression                            !
@@ -69,7 +69,7 @@ subroutine clipke &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -89,7 +89,7 @@ integer          iphas, iclip, iwarnk
 double precision propce(ncelet,*)
 double precision rtp(ncelet,nvar)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iclpke,iel,iclpk2,iclpe2
 integer          ivar,ipp,ii,iikiph,iieiph,iivisc,iiromc
@@ -301,4 +301,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/clprij.f90 b/src/base/clprij.f90
index 4a9e518..65c5bbf 100644
--- a/src/base/clprij.f90
+++ b/src/base/clprij.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -42,13 +42,13 @@ subroutine clprij &
 ! Arguments
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
 ! ncel             ! e  ! <-- ! nombre de cellules                             !
 ! nvar             ! e  ! <-- ! nombre de variables                            !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! iphas            ! e  ! <-- ! numero de la phase a traiter                   !
+! nphas            ! i  ! <-- ! number of phases                               !
+! iphas            ! i  ! <-- ! phase number                                   !
 ! iclip            ! e  ! <-- ! indicateur = 1 on n'utilise pas rtpa           !
 !                  !    !     !  (inivar)                                      !
 !                  !    !     !            sinon on peut (turrij)              !
@@ -71,7 +71,7 @@ subroutine clprij &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -90,7 +90,7 @@ double precision propce(ncelet,*)
 double precision rtpa(ncelet,nvar)
 double precision rtp(ncelet,nvar)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          icleps, iel, ivar, ivar1, ivar2, isou, ipp
 integer          ir11ip, ir22ip, ir33ip, ir12ip, ir13ip, ir23ip
@@ -287,4 +287,4 @@ iclpmn(ipprtp(iepip )) = icleps
 
 return
 
-end
+end subroutine
diff --git a/src/base/clpsca.f90 b/src/base/clpsca.f90
index 3023a8d..c7cd7bf 100644
--- a/src/base/clpsca.f90
+++ b/src/base/clpsca.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,17 +41,16 @@ subroutine clpsca &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! iscal            ! i  ! <-- ! scalar number                                  !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant        )          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! scandd           ! tr ! <-- ! scalaire auquel est associe la                 !
 ! (ncelet)         !    !     !    variance traitee (si c'en est une)          !
 !__________________!____!_____!________________________________________________!
@@ -66,7 +65,7 @@ subroutine clpsca &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -89,7 +88,7 @@ double precision rtp(ncelet,*)
 double precision propce(ncelet,*)
 double precision scandd(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ivar, iel
 integer          iclmax, iclmin, iiscav
@@ -239,4 +238,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/clptrg.f90 b/src/base/clptrg.f90
index fd9d135..571924c 100644
--- a/src/base/clptrg.f90
+++ b/src/base/clptrg.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -58,49 +58,40 @@ subroutine clptrg &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
 ! isvhb            ! e  ! <-- ! indicateur de sauvegarde des                   !
 !                  !    !     !  coefficients d'echange aux bords              !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -110,32 +101,28 @@ subroutine clptrg &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -152,8 +139,8 @@ subroutine clptrg &
 ! (nfabor,3   )    !    !     !  des comp de la vitesse au bord                !
 ! rijipb           ! tr ! <-- ! tab de trav pour valeurs en iprime             !
 ! (nfabor,6   )    !    !     !  des rij au bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! uetbor           ! tr ! --> ! vitesse de frottement au bord                  !
 ! (nfabor,nphas    !    !     !  pour van driest en les                        !
 ! visvdr(nphas)    ! tr ! <-- ! viscosite dynamique ds les cellules            !
@@ -162,11 +149,11 @@ subroutine clptrg &
 ! (nfabor)         !    !     !                                                !
 ! thbord           ! tr ! <-- ! temperature aux bords en i'                    !
 ! (nfabor)         !    !     !    (plus exactmt : var. energetique)           !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -178,7 +165,7 @@ subroutine clptrg &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -231,7 +218,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, iel, ivar, isou, ii, jj, kk, ll, isvhbl
@@ -975,7 +962,7 @@ do ifac = 1, nfabor
           if(iturb(iphas).ne.0.and.icodcl(ifac,ivar).eq.6)then
 
 ! Loi rugueuse, on recalcule le coefficient d'echange fluide - paroi
-            rugt=rcodcl(ifac,ivar,3)
+            rugt=rcodcl(ifac,iviph,3)
             act = xkappa/log((distbf+rugt)/rugt)
             hflui = romc*cpp*uet*act*cfnns
           else
@@ -1207,4 +1194,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/clptur.f90 b/src/base/clptur.f90
index 2adc141..12e40f9 100644
--- a/src/base/clptur.f90
+++ b/src/base/clptur.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -58,49 +58,40 @@ subroutine clptur &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
 ! isvhb            ! e  ! <-- ! indicateur de sauvegarde des                   !
 !                  !    !     !  coefficients d'echange aux bords              !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -110,32 +101,28 @@ subroutine clptur &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -152,8 +139,8 @@ subroutine clptur &
 ! (nfabor,3   )    !    !     !  des comp de la vitesse au bord                !
 ! rijipb           ! tr ! <-- ! tab de trav pour valeurs en iprime             !
 ! (nfabor,6   )    !    !     !  des rij au bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! uetbor           ! tr ! --> ! vitesse de frottement au bord                  !
 ! (nfabor,nphas    !    !     !  pour van driest en les                        !
 ! visvdr(nphas)    ! tr ! <-- ! viscosite dynamique ds les cellules            !
@@ -162,11 +149,11 @@ subroutine clptur &
 ! (nfabor)         !    !     !                                                !
 ! thbord           ! tr ! <-- ! temperature aux bords en i'                    !
 ! (nfabor)         !    !     !    (plus exactmt : var. energetique)           !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -178,7 +165,7 @@ subroutine clptur &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -194,6 +181,7 @@ include "ppppar.h"
 include "ppthch.h"
 include "ppincl.h"
 include "radiat.h"
+include "cplsat.h"
 
 !===============================================================================
 
@@ -231,7 +219,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, iel, ivar, isou, ii, jj, kk, ll, isvhbl
@@ -428,7 +416,7 @@ do ifac = 1, nfabor
 !     Si on n'est pas en ALE, on force la vitesse de deplacement
 !       de la face a etre tangentielle (et on met a jour rcodcl
 !       pour une utilisation eventuelle)
-    if (iale.eq.0) then
+    if (iale.eq.0.or.imobil.eq.0) then
       rcodsn = rcodcx*rnx+rcodcy*rny+rcodcz*rnz
       rcodcx = rcodcx -rcodsn*rnx
       rcodcy = rcodcy -rcodsn*rny
@@ -1536,4 +1524,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/clpv2f.f90 b/src/base/clpv2f.f90
index 68fad03..a7895a0 100644
--- a/src/base/clpv2f.f90
+++ b/src/base/clpv2f.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine clpv2f                               &
+subroutine clpv2f &
 !================
 
  ( ncelet , ncel   , nvar   , nphas  ,                            &
@@ -42,13 +42,13 @@
 ! Arguments
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
 ! ncel             ! e  ! <-- ! nombre de cellules                             !
 ! nvar             ! e  ! <-- ! nombre de variables                            !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! iphas            ! e  ! <-- ! numero de la phase a traiter                   !
+! nphas            ! i  ! <-- ! number of phases                               !
+! iphas            ! i  ! <-- ! phase number                                   !
 ! iwaphi           ! e  ! <-- ! niveau d'impression                            !
 ! propce           ! tr ! <-- ! tableaux des variables au pdt courant          !
 !(ncelet,*         !    !     !                                                !
@@ -67,7 +67,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -85,7 +85,7 @@ integer          iphas, iwaphi
 double precision propce(ncelet,*)
 double precision rtp(ncelet,nvar)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel, ipp
 integer          iphiph
@@ -169,4 +169,4 @@ iclpmn(ipp) = nclpmn
 
 return
 
-end
+end subroutine
diff --git a/src/base/clsurn.f90 b/src/base/clsurn.f90
index 6f60cda..f0aa9b1 100644
--- a/src/base/clsurn.f90
+++ b/src/base/clsurn.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,7 +44,7 @@ subroutine clsurn &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idbia0/idbra0    ! e  ! <-- ! pointeur de la premiere cas libre des          !
 !                  !    !     !  tableaux ia/ra                                !
@@ -73,7 +73,7 @@ subroutine clsurn &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -121,4 +121,4 @@ enddo
 !-------------------------------------------------------------------------------
 
 return
-end
+end subroutine
diff --git a/src/base/clsyvt.f90 b/src/base/clsyvt.f90
index 16be9c0..e3f5da5 100644
--- a/src/base/clsyvt.f90
+++ b/src/base/clsyvt.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -56,47 +56,38 @@ subroutine clsyvt &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -108,32 +99,28 @@ subroutine clsyvt &
 ! isympa           ! te ! <-- ! zero pour annuler le flux de masse             !
 ! (nfabor     )    !    !     !(symetries et parois avec cl couplees)          !
 !                  !    !     ! un sinon                                       !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -150,13 +137,13 @@ subroutine clsyvt &
 ! (nfabor,3   )    !    !     !  des comp de la vitesse au bord                !
 ! rijipb           ! tr ! <-- ! tab de trav pour valeurs en iprime             !
 ! (nfabor,6   )    !    !     !  des rij au bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -168,7 +155,7 @@ subroutine clsyvt &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -214,7 +201,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, ii, isou
@@ -527,4 +514,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/clvolc.f90 b/src/base/clvolc.f90
index f0bdac1..2731e5d 100644
--- a/src/base/clvolc.f90
+++ b/src/base/clvolc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -42,10 +42,10 @@ subroutine clvolc &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! volmin           ! r  ! --> ! volume de controle minimal                     !
 ! volmax           ! r  ! --> ! volume de controle maximal                     !
 ! voltot           ! r  ! --> ! volume total du domaine                        !
@@ -62,7 +62,7 @@ subroutine clvolc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -187,4 +187,4 @@ endif
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/codits.f90 b/src/base/codits.f90
index 0b083aa..9e2d9ab 100644
--- a/src/base/codits.f90
+++ b/src/base/codits.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -105,27 +105,26 @@ subroutine codits &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! idtvar           ! e  ! <-- ! indicateur du schema temporel                  !
 ! ivar             ! e  ! <-- ! variable traitee                               !
 ! iconvp           ! e  ! <-- ! indicateur = 1 convection, 0 sinon             !
@@ -153,7 +152,7 @@ subroutine codits &
 !                  !    !     !            = 1 sinon                           !
 ! nitmap           ! e  ! <-- ! nombre max d'iter pour resol iterativ          !
 ! ipp              ! e  ! <-- ! numero de variable pour post                   !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! nfecrl           ! e  ! <-- ! unite du fichier sortie std                    !
 ! blencp           ! r  ! <-- ! 1 - proportion d'upwind                        !
 ! epsilp           ! r  ! <-- ! precision pour resol iter                      !
@@ -169,41 +168,32 @@ subroutine codits &
 !                  !    !     !   totalement centre en temps (mixage           !
 !                  !    !     !   entre crank-nicolson et adams-               !
 !                  !    !     !   bashforth)                                   !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! pvara(ncelet     ! tr ! <-- ! variable resolue (instant precedent)           !
 ! pvark(ncelet     ! tr ! <-- ! variable de la sous-iteration                  !
 !                  !    !     !  precedente. pour un point fixe sur            !
@@ -230,9 +220,9 @@ subroutine codits &
 ! xam(nfac,*)      ! tr ! --- ! tableau de travail pour matrice                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
 ! smbini(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -244,7 +234,7 @@ subroutine codits &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -301,7 +291,7 @@ double precision w5(ncelet), w6(ncelet), w7(ncelet), w8(ncelet)
 double precision smbini(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 character*8      cnom
@@ -419,7 +409,7 @@ if (imgrp.gt.0) then
 
 ! --- Creation de la hierarchie de maillages
 
-  chaine = nomvar(ivar)
+  chaine = nomvar(ipp)
   iwarnp = iwarni(ivar)
   iagmax = iagmx0(ivar)
   nagmax = nagmx0(ivar)
@@ -754,4 +744,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/base/condli.f90 b/src/base/condli.f90
index 45e0670..faf228f 100644
--- a/src/base/condli.f90
+++ b/src/base/condli.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -74,49 +74,40 @@ subroutine condli &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! isvhb            ! e  ! <-- ! indicateur de sauvegarde des                   !
 !                  !    !     !  coefficients d'echange aux bords              !
 ! isvtb            ! e  ! <-- ! indicateur de sauvegarde des                   !
 !                  !    !     !  temperatures aux bords                        !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -128,32 +119,28 @@ subroutine condli &
 !                  !    !     !  entrante eventuelle     bloquee               !
 ! isostd           ! te ! --> ! indicateur de sortie standard                  !
 !    (nfabor+1)    !    !     !  +numero de la face de reference               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -166,8 +153,8 @@ subroutine condli &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! uetbor           ! tr ! --> ! vitesse de frottement au bord                  !
 ! (nfabor,nphas    !    !     !  pour van driest en les                        !
 ! visvdr(nphas)    ! tr ! --> ! viscosite dynamique ds les cellules            !
@@ -178,15 +165,15 @@ subroutine condli &
 ! (nfabor)         !    !     !    (plus exactmt : var. energetique)           !
 ! frcxt(ncelet,    ! tr ! <-- ! force exterieure generant la pression          !
 !   3,nphas)       !    !     !  hydrostatique                                 !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
 ! coefu            ! tr ! --- ! tab de trav pour valeurs en iprime             !
 ! (nfabor,3   )    !    !     !  des comp de la vitesse au bord                !
 ! rijipb           ! tr ! --- ! tab de trav pour valeurs en iprime             !
 ! (nfabor,6   )    !    !     !  des rij au bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -198,7 +185,7 @@ subroutine condli &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -216,6 +203,7 @@ include "ppincl.h"
 include "parall.h"
 include "matiss.h"
 include "radiat.h"
+include "cplsat.h"
 
 !===============================================================================
 
@@ -256,7 +244,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim), rijipb(nfabor,6)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac  , iel   , ivar  , iphas
@@ -265,7 +253,7 @@ integer          ihcp  , iscal , iscat
 integer          inc   , iccocg, iphydp
 integer          iok   , iok1
 integer          icodcu
-integer          isoent, isorti
+integer          isoent, isorti, ncpt,   isocpt(2)
 integer          iclsym, ipatur, ipatrg, isvhbl
 integer          iuiph , iviph , iwiph , ipriph
 integer          ikiph , iepiph, iphiph, ifbiph, iomgip
@@ -378,6 +366,27 @@ if (iale.eq.1) then
    rdevel , rtuser , ra     )
 endif
 
+if (imobil.eq.1) then
+
+  call mmtycl &
+  !==========
+ ( idebia , idebra ,                                              &
+   ndim   , ncelet , ncel   , nfac   , nfabor , nfml   , nprfml , &
+   nnod   , lndfac , lndfbr , ncelbr ,                            &
+   nvar   , nscal  , nphas  ,                                     &
+   nideve , nrdeve , nituse , nrtuse ,                            &
+   ifacel , ifabor , ifmfbr , ifmcel , iprfml ,                   &
+   ipnfac , nodfac , ipnfbr , nodfbr ,                            &
+   ia(iitypf)      , icodcl ,                                     &
+   idevel , ituser , ia     ,                                     &
+   xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod , volume , &
+   dt     , rtp    , rtpa   , propce , propfa , propfb ,          &
+   rcodcl ,                                                       &
+   w1     , w2     , w3     , w4     , w5     , w6     ,          &
+   rdevel , rtuser , ra     )
+
+endif
+
 call typecl                                                       &
 !==========
  ( idebia , idebra ,                                              &
@@ -1019,9 +1028,15 @@ do iphas = 1, nphas
 
   enddo
 
-  if ( mod(ntcabs,ntlist).eq.0 .or. iwarni(iu(1)).ge. 0 ) then
-    if(isorti.gt.0.and.(iwarni(iuiph).ge.2.or.isoent.gt.0)) then
-      write(nfecra,3010)iphas, isoent,isorti
+  if (mod(ntcabs,ntlist).eq.0 .or. iwarni(iu(1)).ge. 0) then
+    isocpt(1) = isoent
+    isocpt(2) = isorti
+    if (irangp.ge.0) then
+      ncpt = 2
+      call parism(ncpt, isocpt)
+    endif
+    if (isocpt(2).gt.0 .and. (iwarni(iuiph).ge.2.or.isocpt(1).gt.0)) then
+      write(nfecra,3010)iphas, isocpt(1), isocpt(2)
     endif
   endif
 
@@ -1593,7 +1608,7 @@ do iphas = 1, nphas
 !                On recupere le flux h(Ti'-Tp) (sortant ou
 !                             negatif si gain pour le fluide) en W/m2
 
-             propfb(1,ipprob(ifconv)-1+ifac) =                    &
+              propfb(ifac,ipprob(ifconv)) =                       &
                    hint*( (1.d0-coefb(ifac,iclvaf))*thbord(ifac)  &
                          - coefa(ifac,iclvaf))
 
@@ -1870,4 +1885,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/cou1di.f90 b/src/base/cou1di.f90
index 20fc57a..70df40d 100644
--- a/src/base/cou1di.f90
+++ b/src/base/cou1di.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cou1di                               &
+subroutine cou1di &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -45,16 +45,16 @@
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! isvtb            ! e  ! <-- ! numero du scalaire couple                      !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
@@ -65,9 +65,9 @@
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -80,9 +80,9 @@
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -97,7 +97,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -123,7 +123,7 @@ double precision rcodcl(nfabor,nvar,3)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 
 integer          ii , ivar
@@ -154,23 +154,27 @@ do ii = 1, nfpt1d
    rcodcl(ifac,ivar,1) = ra(itppt1+ii-1)
    rcodcl(ifac,ivar,2) = rinfin
    rcodcl(ifac,ivar,3) = 0.d0
+
 enddo
 
+! Conversion eventuelle temperature -> enthalpie
+
+if (iscsth(isvtb).eq.2) then
+
+  do ii = 1, nfpt1d
 
-if(iscsth(ii).eq.2) then
-   do ii = 1, nfpt1d
-      ifac = ia(iifpt1+ii-1)
+    ifac = ia(iifpt1+ii-1)
 
-      temper = rcodcl(ifac,ivar,1)
-      mode   = -1
-      call usthht(mode,enthal,temper)
-      !==========
-      rcodcl(ifac,ivar,1) = enthal
+    temper = rcodcl(ifac,ivar,1)
+    mode   = -1
+    call usthht(mode,enthal,temper)
+    !==========
+    rcodcl(ifac,ivar,1) = enthal
 
-   enddo
+  enddo
 
 endif
 
-end
+end subroutine
 
 
diff --git a/src/base/cou1do.f90 b/src/base/cou1do.f90
index eff34cf..1a46b33 100644
--- a/src/base/cou1do.f90
+++ b/src/base/cou1do.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cou1do                               &
+subroutine cou1do &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -55,29 +55,28 @@
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
 ! ncp              ! e  ! <-- ! dimension de cp (ncelet ou 1)                  !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nfpt1d           ! e  ! <-- ! nombre de faces avec module therm 1d           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! ientha           ! e  ! <-- ! 1 si tparoi est une enthalpie                  !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! ifpt1d           ! te ! <-- ! numero de la face en traitement                !
 !                  !    !     ! thermique en paroi                             !
 ! iclt1d           ! te ! <-- ! type de condition limite                       !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! cpcst            ! r  ! <-- ! chaleur specifique si constante                !
 ! cp(ncp)          ! tr ! <-- ! chaleur specifique si variable                 !
 ! hbord            ! tr ! <-- ! coefficients d'echange aux bords               !
@@ -91,9 +90,9 @@
 ! xlmbt1           ! tr ! <-- ! diffusivite thermique                          !
 ! rcpt1d           ! tr ! <-- ! rocp                                           !
 ! dtpt1d           ! tr ! <-- ! pas de temps                                   !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -105,7 +104,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -297,4 +296,4 @@ enddo
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/coupbi.f90 b/src/base/coupbi.f90
index 16ac8f7..0ade54b 100644
--- a/src/base/coupbi.f90
+++ b/src/base/coupbi.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,16 +46,16 @@ subroutine coupbi &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -65,9 +65,9 @@ subroutine coupbi &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -80,9 +80,9 @@ subroutine coupbi &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -94,7 +94,7 @@ subroutine coupbi &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -120,7 +120,7 @@ integer          idevel(nideve), ituser(nituse), ia(*)
 double precision rcodcl(nfabor,nvar,3)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ll, nbccou, inbcou, inbcoo, nbfcou
 integer          ifac, iloc, iscal , iphas
@@ -222,11 +222,12 @@ do inbcou = 1, nbccou
 
       enddo
 
-!           Conversion eventuelle temperature -> enthalpie
+      ! Conversion eventuelle temperature -> enthalpie
 
-      if(iscsth(ll).eq.2) then
+      if(iscsth(iscal).eq.2) then
 
         do iloc = 1, nbfcou
+
           ifac = ia(ipfcou+iloc-1)
 
           temper = rcodcl(ifac,ll,1)
@@ -291,4 +292,4 @@ return
 
 #endif
 
-end
+end subroutine
diff --git a/src/base/coupbo.f90 b/src/base/coupbo.f90
index 8f4da4f..31940f6 100644
--- a/src/base/coupbo.f90
+++ b/src/base/coupbo.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,28 +52,27 @@ subroutine coupbo &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
 ! ncp              ! e  ! <-- ! dimension de cp (ncelet ou 1)                  !
 ! ncv              ! e  ! <-- ! dimension de cv (ncelet ou 1)                  !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! ientha           ! e  ! <-- ! 1 si tparoi est une enthalpie                  !
 !                  ! e  ! <-- ! 2 si tparoi est une energie                    !
 !                  !    !     !    (compressible)                              !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! cpcst            ! r  ! <-- ! chaleur specifique si constante                !
 ! cvcst            ! r  ! <-- ! chaleur specifique si constante                !
 ! cp(ncp)          ! tr ! <-- ! chaleur specifique si variable                 !
@@ -82,9 +81,9 @@ subroutine coupbo &
 ! (nfabor)         !    !     !                                                !
 ! tbord            ! tr ! <-- ! temperatures aux bords                         !
 ! (nfabor)         !    !     !                                                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -96,7 +95,7 @@ subroutine coupbo &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -137,7 +136,7 @@ double precision cp(ncp), cv(ncv)
 double precision hbord(nfabor),tbord(nfabor)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          nbccou, inbcou, inbcoo, nbfcou, ifac, iloc, iel
 integer          itflui, ihparo
@@ -336,4 +335,4 @@ return
 
 #endif
 
-end
+end subroutine
diff --git a/src/base/covofi.f90 b/src/base/covofi.f90
index 775f70e..0d4fd76 100644
--- a/src/base/covofi.f90
+++ b/src/base/covofi.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -58,84 +58,71 @@ subroutine covofi &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
 ! itspdv           ! e  ! <-- ! calcul termes sources prod et dissip           !
 !                  !    !     !  (0 : non , 1 : oui)                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
 !(ncelet,*)        !    !     !     lagrangien                                 !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -149,9 +136,9 @@ subroutine covofi &
 ! smbrs(ncelet     ! tr ! --- ! tableau de travail pour sec mem                !
 ! rovsdt(ncelet    ! tr ! --- ! tableau de travail pour terme instat           !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -164,7 +151,7 @@ subroutine covofi &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -228,7 +215,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -492,7 +479,7 @@ if ( iirayo.ge.1 .and. iphas.eq.irapha) then
       call furays                  &
       !==========
     ( ivar  ,ncelet, ncel  ,       &
-      volume,propce,smbrs,rovsdt)
+      volume,rtpa  , propce,smbrs,rovsdt)
 
     endif
   endif
@@ -906,4 +893,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/cregeo.f90 b/src/base/cregeo.f90
index f3bfa7b..6d3638e 100644
--- a/src/base/cregeo.f90
+++ b/src/base/cregeo.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,32 +47,28 @@ subroutine cregeo &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -81,26 +77,26 @@ subroutine cregeo &
 !   (nfabor+1)     !    !     !  face de bord dans nodfbr (optionnel)          !
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (lndfbr)       !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
 ! volume           ! tr ! --> ! volume d'un des ncelet elements                !
 ! (ncelet          !    !     !                                                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -112,7 +108,7 @@ subroutine cregeo &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 
 !===============================================================================
 
@@ -148,7 +144,7 @@ double precision cdgfac(ndim,nfac), cdgfbo(ndim,nfabor)
 double precision xyznod(ndim,nnod), volume(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          ilcel  , ilfaci , ilfacb
@@ -282,4 +278,4 @@ call calgeo                                                       &
    rdevel , rtuser , ra     )
 
 return
-end
+end subroutine
diff --git a/src/base/crstgr.f90 b/src/base/crstgr.f90
index 67bc0a8..2cf35b2 100644
--- a/src/base/crstgr.f90
+++ b/src/base/crstgr.f90
@@ -60,7 +60,7 @@ subroutine crstgr &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! iappel           ! e  ! <-- ! numero d'appel                                 !
 ! isym             ! e  ! <-- ! indicateur = 1 matrice sym                     !
@@ -72,7 +72,7 @@ subroutine crstgr &
 ! ncelge           ! e  ! <-- ! nombre d'elements etendus grossier             !
 ! nfacf            ! e  ! <-- ! nombre de faces internes maill. fin            !
 ! nfacg            ! e  ! <-- ! nombre de faces internes maill. gro.           !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! ifacef           ! te ! <-- ! elements voisins d'une face interne            !
 !  (2, nfacf)      !    !     ! sur maillage fin                               !
 ! ifaceg           ! te ! <-- ! elements voisins d'une face interne            !
@@ -123,7 +123,7 @@ subroutine crstgr &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -259,7 +259,6 @@ enddo
 
 ! Initialization
 
-interp = 0
 interp = 1
 
 ! Initialize non differential fine mesh term saved in w1
diff --git a/src/base/cs_ale.c b/src/base/cs_ale.c
index b3dfa4f..164d1ef 100644
--- a/src/base/cs_ale.c
+++ b/src/base/cs_ale.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/cs_ast_coupling.c b/src/base/cs_ast_coupling.c
index 60d41ec..ea6e202 100644
--- a/src/base/cs_ast_coupling.c
+++ b/src/base/cs_ast_coupling.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -97,7 +97,7 @@ struct _cs_ast_coupling_t {
   fvm_gnum_t   n_g_faces;
   fvm_gnum_t   n_g_nodes;
 
-//#if defined(HAVE_MPI)
+  /* #if defined(HAVE_MPI) */
 
   cs_int_t    *n_faces_by_domain;
   cs_int_t    *n_nodes_by_domain;
@@ -107,7 +107,7 @@ struct _cs_ast_coupling_t {
 
   fvm_gnum_t  *NUM_GLOB_PTS;
 
-//#endif
+  /* #endif */
 
 };
 
@@ -286,7 +286,7 @@ void CS_PROCF(astfor, ASTFOR)
   const int  n_faces = *nbfast;
   const int  n_g_faces = ast_coupling->n_g_faces;
 
-  cs_real_t  *_forast;
+  cs_real_t  *_forast = NULL;
 
 
   if (cs_glob_rank_id <= 0)
@@ -353,9 +353,9 @@ void CS_PROCF(astcin, ASTCIN)
   const int  n_g_nodes = ast_coupling->n_g_nodes;
   const int  n_faces = *nbfast;
 
-  fvm_nodal_t *mesh_ifs;
+  fvm_nodal_t *mesh_ifs = NULL;
 
-  cs_real_t  *_xast, *xast;
+  cs_real_t  *_xast = NULL, *xast = NULL;
 
   n_nodes = ast_coupling->n_nodes_by_domain[local_rank];
 
diff --git a/src/base/cs_base.c b/src/base/cs_base.c
index 5f62748..69a9fdf 100644
--- a/src/base/cs_base.c
+++ b/src/base/cs_base.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -180,23 +180,6 @@ static cs_int_t  _cs_glob_mem_ra_peak = 0;
 static cs_int_t  _cs_glob_mem_ia_size = 0;
 static cs_int_t  _cs_glob_mem_ra_size = 0;
 
-/* Global variables for instrumentation */
-
-#if defined(HAVE_MPI) && defined(HAVE_MPE)
-int  cs_glob_mpe_broadcast_a = 0;
-int  cs_glob_mpe_broadcast_b = 0;
-int  cs_glob_mpe_synchro_a = 0;
-int  cs_glob_mpe_synchro_b = 0;
-int  cs_glob_mpe_send_a = 0;
-int  cs_glob_mpe_send_b = 0;
-int  cs_glob_mpe_rcv_a = 0;
-int  cs_glob_mpe_rcv_b = 0;
-int  cs_glob_mpe_reduce_a = 0;
-int  cs_glob_mpe_reduce_b = 0;
-int  cs_glob_mpe_compute_a = 0;
-int  cs_glob_mpe_compute_b = 0;
-#endif
-
 /*============================================================================
  * Private function definitions
  *============================================================================*/
@@ -309,18 +292,30 @@ _cs_base_err_vprintf(const char  *format,
 
     else {
 #if defined(HAVE_SLEEP)
+      /* Wait a few seconds, so that if rank 0 also has encountered an error,
+         it may kill other ranks through MPI_Abort, so that only rank 0 will
+         generate an error file. If rank 0 has not encountered the error,
+         proceed normally after the wait.
+         As sleep() may be interrupted by a signal, repeat as long as the wait
+         time is not elapsed; */
       int wait_time = (cs_glob_n_ranks < 64) ? 1: 10;
-      sleep(wait_time); /* Wait a few seconds, so that if rank 0 also
-                           has encountered an error, it may kill
-                           other ranks through MPI_Abort, so that
-                           only rank 0 will generate an error file.
-                           If rank 0 has not encountered the error,
-                           proceed normally after the wait. */
+      double stime = bft_timer_wtime();
+      double etime = 0.0;
+      do {
+        sleep(wait_time);
+        etime = bft_timer_wtime();
+      }
+      while (etime > -0.5 && etime - stime < wait_time); /* etime = -1 only if
+                                                            bft_timer_wtime()
+                                                            is unusable. */
 #endif
-      sprintf(nom_fic_err, "error_n%04d", cs_glob_rank_id + 1);
+      if (cs_glob_n_ranks > 9999)
+        sprintf(nom_fic_err, "error_n%07d", cs_glob_rank_id + 1);
+      else
+        sprintf(nom_fic_err, "error_n%04d", cs_glob_rank_id + 1);
     }
 
-    freopen(nom_fic_err, "w", stderr);
+    stderr = freopen(nom_fic_err, "w", stderr);
 
     initialized = true;
   }
@@ -609,11 +604,6 @@ _cs_base_sig_fatal(int  signum)
 static void
 _cs_base_mpi_fin(void)
 {
-#if defined(HAVE_MPE)
-  if (cs_glob_n_ranks > 1)
-    _cs_base_prof_mpe_fin();
-#endif
-
 #if defined(FVM_HAVE_MPI)
   fvm_parall_set_mpi_comm(MPI_COMM_NULL);
 #endif
@@ -673,93 +663,6 @@ _cs_base_erreur_mpi(MPI_Comm  *comm,
 #endif /* HAVE_MPI */
 
 
-#if defined(HAVE_MPI) && defined(HAVE_MPE)
-
-/*----------------------------------------------------------------------------
- * Initialize MPE instrumentation
- *----------------------------------------------------------------------------*/
-
-static void
-_cs_base_prof_mpe_init(int  rank)
-{
-  int flag;
-
-  MPI_Initialized(&flag);
-
-  /* MPE_Init_log() and MPE_finish_log() are NOT required if the liblmpe.a
-     library is linked with  Code_Saturne. In this case, MPI_Init()
-     handles the call toe MPE_Init_log() */
-
-  if (flag) {
-
-    MPE_Init_log();
-
-    MPE_Log_get_state_eventIDs(&cs_glob_mpe_broadcast_a,
-                               &cs_glob_mpe_broadcast_b);
-    MPE_Log_get_state_eventIDs(&cs_glob_mpe_synchro_a,
-                               &cs_glob_mpe_synchro_b);
-    MPE_Log_get_state_eventIDs(&cs_glob_mpe_send_a,
-                               &cs_glob_mpe_send_b);
-    MPE_Log_get_state_eventIDs(&cs_glob_mpe_rcv_a,
-                               &cs_glob_mpe_rcv_b);
-    MPE_Log_get_state_eventIDs(&cs_glob_mpe_reduce_a,
-                               &cs_glob_mpe_reduce_b);
-    MPE_Log_get_state_eventIDs(&cs_glob_mpe_compute_a,
-                               &cs_glob_mpe_compute_b);
-
-    if (rank == 0) {
-
-      MPE_Describe_state(cs_glob_mpe_broadcast_a,
-                         cs_glob_mpe_broadcast_b,
-                         "Broadcast", "orange");
-      MPE_Describe_state(cs_glob_mpe_synchro_a,
-                         cs_glob_mpe_synchro_b,
-                         "MPI Barrier", "blue");
-      MPE_Describe_state(cs_glob_mpe_send_a,
-                         cs_glob_mpe_send_b,
-                         "Send", "yellow");
-      MPE_Describe_state(cs_glob_mpe_rcv_a,
-                         cs_glob_mpe_rcv_b,
-                         "Receive", "red");
-      MPE_Describe_state(cs_glob_mpe_reduce_a,
-                         cs_glob_mpe_reduce_b,
-                         "Reduce", "white");
-      MPE_Describe_state(cs_glob_mpe_compute_a,
-                         cs_glob_mpe_compute_b,
-                         "Compute", "green");
-
-      MPE_Start_log();
-      MPE_Log_event(cs_glob_mpe_compute_a, 0, NULL);
-
-    }
-
-  }
-
-}
-
-/*----------------------------------------------------------------------------
- * Finalize MPE instrumentation
- *----------------------------------------------------------------------------*/
-
-static void
-_cs_base_prof_mpe_fin(void)
-{
-  int flag, rank;
-
-  MPI_Initialized(&flag);
-
-  if (flag)
-    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
-  MPE_Log_event(cs_glob_mpe_compute_b, 0, NULL);
-  MPE_Log_sync_clocks();
-
-  if (rank == 0)
-    MPE_Finish_log("Code_Saturne");
-}
-
-#endif /* defined(HAVE_MPI) && defined(HAVE_MPE) */
-
 /*----------------------------------------------------------------------------
  * Maximum value of a counter and associated 6 character string
  * (used for Fortan maximum memory count in IA/RA).
@@ -860,10 +763,10 @@ void CS_PROCF (iasize, IASIZE)
     _caller[6] = '\0';
     bft_error
       (__FILE__, __LINE__, 0,
-       _(" Sub-routine calling IASIZE:                %s\n"
-         " Memory needed in IA (number of integers):  %d\n"
+       _(" Sub-routine calling iasize:                %s\n"
+         " Memory needed in ia (number of integers):  %d\n"
          "         available:                         %d\n\n"
-         " ----> Define IASIZE to a value at least equal to %d integers)."),
+         " ----> Define iasize to a value at least equal to %d integers)."),
        _caller, *memint, _cs_glob_mem_ia_size, *memint);
   }
 
@@ -904,10 +807,10 @@ void CS_PROCF (rasize, RASIZE)
     _caller[6] = '\0';
     bft_error
       (__FILE__, __LINE__, 0,
-       _(" Sub-routine calling RASIZE:             %s\n"
-         " Memory needed in RA (number of reals):  %d\n"
+       _(" Sub-routine calling rasize:             %s\n"
+         " Memory needed in ra (number of reals):  %d\n"
          "         available:                      %d\n\n"
-         " ----> Define RASIZE to a value at least equal to %d reals)."),
+         " ----> Define rasize to a value at least equal to %d reals)."),
        _caller, *memrdp, _cs_glob_mem_ra_size, *memrdp);
   }
 
@@ -1005,11 +908,6 @@ cs_base_mpi_init(int  app_num)
     MPI_Errhandler_free(&errhandler);
   }
 #endif
-
-#if defined(HAVE_MPE)
-  if (cs_glob_n_ranks > 1)
-    _cs_base_prof_mpe_init(rank);
-#endif
 }
 
 #endif /* HAVE_MPI */
@@ -1181,7 +1079,7 @@ cs_base_mem_fin(void)
   double valreal[2];
 
 #if defined(HAVE_MPI)
-  int  imax, imin;
+  int  imax = 0, imin = 0;
   double val_somme[2];
   int  ind_min[2];
   _cs_base_mpi_double_int_t  val_in[2], val_min[2], val_max[2];
@@ -1239,18 +1137,18 @@ cs_base_mem_fin(void)
 
     if (ind_val[ind_bil] == 1) {
 
-      for (itot = 0 ;
-           valreal[ind_bil] > 1024. && unite[itot] != 'p' ;
+      for (itot = 0;
+           valreal[ind_bil] > 1024. && unite[itot] != 'p';
            itot++)
         valreal[ind_bil] /= 1024.;
 #if defined(HAVE_MPI)
       if (cs_glob_n_ranks > 1 && cs_glob_rank_id == 0) {
-        for (imin = 0 ;
-             val_min[ind_bil].val > 1024. && unite[imin] != 'p' ;
+        for (imin = 0;
+             val_min[ind_bil].val > 1024. && unite[imin] != 'p';
              imin++)
           val_min[ind_bil].val /= 1024.;
-        for (imax = 0 ;
-             val_max[ind_bil].val > 1024. && unite[imax] != 'p' ;
+        for (imax = 0;
+             val_max[ind_bil].val > 1024. && unite[imax] != 'p';
              imax++)
           val_max[ind_bil].val /= 1024.;
       }
@@ -1258,17 +1156,17 @@ cs_base_mem_fin(void)
 
       /* Print to log file */
 
-      bft_printf (_("  %s %12.3f %cb\n"),
-                  _(type_bil[ind_bil]), valreal[ind_bil], unite[itot]);
+      bft_printf(_("  %s %12.3f %cb\n"),
+                 _(type_bil[ind_bil]), valreal[ind_bil], unite[itot]);
 
 #if defined(HAVE_MPI)
       if (cs_glob_n_ranks > 1 && cs_glob_rank_id == 0) {
-        bft_printf (_("                             "
-                      "local minimum: %12.3f %cb  (rank %d)\n"),
-                    val_min[ind_bil].val, unite[imin], val_min[ind_bil].rank);
-        bft_printf (_("                             "
-                      "local maximum: %12.3f %cb  (rank %d)\n"),
-                    val_max[ind_bil].val, unite[imax], val_max[ind_bil].rank);
+        bft_printf(_("                             "
+                     "local minimum: %12.3f %cb  (rank %d)\n"),
+                   val_min[ind_bil].val, unite[imin], val_min[ind_bil].rank);
+        bft_printf(_("                             "
+                     "local maximum: %12.3f %cb  (rank %d)\n"),
+                   val_max[ind_bil].val, unite[imax], val_max[ind_bil].rank);
       }
 #endif
     }
@@ -1513,8 +1411,6 @@ cs_base_system_info(void)
 #if defined(HAVE_OPENMP)
   bft_printf("  %s%d\n", _("OpenMP threads:    "), cs_glob_n_threads);
 #endif
-
-  bft_printf("\n");
 }
 
 /*----------------------------------------------------------------------------
diff --git a/src/base/cs_benchmark.c b/src/base/cs_benchmark.c
index e60bfdd..65fdc88 100644
--- a/src/base/cs_benchmark.c
+++ b/src/base/cs_benchmark.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -937,7 +937,7 @@ _matrix_vector_test(int                    n_runs,
                     cs_real_t             *restrict x,
                     cs_real_t             *restrict y)
 {
-  cs_int_t ii;
+  cs_int_t ii, jj;
   double wt, cpu;
   int    run_id;
   long   n_ops, n_ops_glob;
@@ -984,7 +984,7 @@ _matrix_vector_test(int                    n_runs,
                               y);
     test_sum += y[n_cells-1];
 #if 0
-    for (int jj = 0; jj < n_cells; jj++)
+    for (jj = 0; jj < n_cells; jj++)
       bft_printf("y[%d] = %12.4f\n", jj, y[jj]);
 #endif
   }
@@ -1311,6 +1311,7 @@ _sub_matrix_vector_test(int                  n_runs,
                         cs_real_t           *restrict x,
                         cs_real_t           *restrict y)
 {
+  cs_int_t  jj;
   double wt, cpu;
   int    run_id;
   long   n_ops, n_ops_glob;
@@ -1329,7 +1330,7 @@ _sub_matrix_vector_test(int                  n_runs,
     n_ops_glob = (  cs_glob_mesh->n_g_cells
                   + cs_glob_mesh->n_g_i_faces*2);
 
-  for (int jj = 0; jj < n_cells_ext; jj++)
+  for (jj = 0; jj < n_cells_ext; jj++)
     y[jj] = 0.0;
 
   /* Matrix.vector product, variant 0 */
@@ -1352,7 +1353,7 @@ _sub_matrix_vector_test(int                  n_runs,
 
   _print_stats(n_ops, n_ops_glob, wt, cpu);
 
-  for (int jj = 0; jj < n_cells_ext; jj++)
+  for (jj = 0; jj < n_cells_ext; jj++)
     y[jj] = 0.0;
 
   test_sum = 0.0;
@@ -1380,7 +1381,7 @@ _sub_matrix_vector_test(int                  n_runs,
   /* Matrix.vector product, contribute to faces only */
 
   BFT_MALLOC(ya, n_faces, cs_real_t);
-  for (int jj = 0; jj < n_faces; jj++)
+  for (jj = 0; jj < n_faces; jj++)
     ya[jj] = 0.0;
 
   test_sum = 0.0;
diff --git a/src/base/cs_blas.c b/src/base/cs_blas.c
index c39699d..be7d7f7 100644
--- a/src/base/cs_blas.c
+++ b/src/base/cs_blas.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/cs_coupling.c b/src/base/cs_coupling.c
index b75d8f8..86153e0 100644
--- a/src/base/cs_coupling.c
+++ b/src/base/cs_coupling.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -112,13 +112,13 @@ cs_coupling_discover_mpi_apps(int          app_num,
 
     int i, n_apps, app_id;
 
-    _cs_glob_coupling_mpi_app_num = app_num;
-
     /* App_type contains a string such as
        "Code_Saturne 1.4.0" or "NEPTUNE_CFD 1.2.1" */
 
     const char app_type[] = CS_APP_NAME " " CS_APP_VERSION;
 
+    _cs_glob_coupling_mpi_app_num = app_num;
+
     if (cs_glob_rank_id < 1) {
       bft_printf(_("\n"
                    "Applications accessible through MPI:\n"
diff --git a/src/base/cs_ext_neighborhood.c b/src/base/cs_ext_neighborhood.c
index 0eb658a..b3aa0ee 100644
--- a/src/base/cs_ext_neighborhood.c
+++ b/src/base/cs_ext_neighborhood.c
@@ -1141,8 +1141,11 @@ CS_PROCF (redvse, REDVSE) (const cs_real_t  *anomax)
       if (cs_glob_n_ranks > 1) {
 
         unsigned long count_g[2];
-        unsigned long count_l[2] = {init_cell_cells_connect_size,
-                                    n_deleted_cells};
+        unsigned long count_l[2];
+
+        count_l[0] = init_cell_cells_connect_size;
+        count_l[1] = n_deleted_cells;
+
         MPI_Allreduce(count_l, count_g, 2, MPI_UNSIGNED_LONG,
                       MPI_SUM, cs_glob_mpi_comm);
 
diff --git a/src/base/cs_gradient.c b/src/base/cs_gradient.c
index 44e8e0f..04054d8 100644
--- a/src/base/cs_gradient.c
+++ b/src/base/cs_gradient.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/cs_gui.c b/src/base/cs_gui.c
index d7fdd50..2d8b46b 100644
--- a/src/base/cs_gui.c
+++ b/src/base/cs_gui.c
@@ -503,18 +503,25 @@ cs_gui_time_parameters(const char   *const param,
  *----------------------------------------------------------------------------*/
 
 static void
-cs_gui_restart_parameters_status(const char *const param,
-                                       int *const keyword)
+cs_gui_restart_parameters_status(const char *param, int *const keyword)
 {
   int   result;
   char *path = NULL;
 
   path = cs_xpath_init_path();
   cs_xpath_add_elements(&path, 3, "calcul_management", "start_restart", param);
-  cs_xpath_add_attribute(&path, "status");
 
-  if(cs_gui_get_status(path, &result))
-    *keyword = result;
+  if (cs_gui_strcmp(param, "restart_rescue")) {
+    cs_xpath_add_function_text(&path);
+    if (cs_gui_get_int(path, &result))
+      *keyword = result;
+
+  } else {
+    cs_xpath_add_attribute(&path, "status");
+
+    if (cs_gui_get_status(path, &result))
+      *keyword = result;
+  }
 
   BFT_FREE(path);
 }
@@ -1156,31 +1163,24 @@ static void cs_gui_surfacic_variable_post(const char *const name,
  *=================================*/
 
 /*----------------------------------------------------------------------------
- * Get list of variables or properties or scalar's names for calculation mean
+ * Return the number of variables and properties inside a given time average.
  *
  * parameters:
- *   id           -->  number of mean (imom)
- *   list         <--  output control parameter
+ *   id           -->  time average number (imom)
  *----------------------------------------------------------------------------*/
 
-static int cs_gui_get_mean_names_number( int   const id)
+static int
+_get_time_average_n_variables(const int id)
 {
   char *path = NULL;
-  char *str_id = NULL;
   int   number = 0;
 
-  BFT_MALLOC(str_id,
-             cs_gui_characters_number(id)+1,
-             char);
-  sprintf(str_id, "%i", id);
-
   path = cs_xpath_init_path();
-  cs_xpath_add_elements(&path, 3, "analysis_control", "time_averages", "time_average");
-  cs_xpath_add_test_attribute(&path, "id", str_id);
+  cs_xpath_add_elements(&path, 2, "analysis_control", "time_averages");
+  cs_xpath_add_element_num(&path, "time_average", id);
   cs_xpath_add_element(&path, "var_prop");
   number = cs_gui_get_nb_element(path);
 
-  BFT_FREE(str_id);
   BFT_FREE(path);
 
   return number;
@@ -1188,91 +1188,76 @@ static int cs_gui_get_mean_names_number( int   const id)
 }
 
 /*----------------------------------------------------------------------------
- * Get mean value parameters.
+ * Get value of a parameter for a given time avegare.
  *
  * parameters:
- *   id              -->  number of mean (imom)
+ *   id              -->  time average number (imom)
  *   param           -->  name of the parameter
- *   keyword         <--   output control parameter
+ *   data           <--   value of the parameter
  *----------------------------------------------------------------------------*/
 
-static void cs_gui_get_mean_value(      int   const id,
-                                  const char *const param,
-                                        int  *const keyword)
+static void _get_time_average_data(const int         id,
+                                   const char *const param,
+                                         int  *const data)
 {
   char *path = NULL;
-  char *str_id = NULL;
   int   result = 0;
 
-  BFT_MALLOC(str_id,
-             cs_gui_characters_number(id)+1,
-             char);
-  sprintf(str_id, "%i", id);
-
   path = cs_xpath_init_path();
-  cs_xpath_add_elements(&path, 3, "analysis_control", "time_averages", "time_average");
-  cs_xpath_add_test_attribute(&path,"id",str_id);
+  cs_xpath_add_elements(&path, 2, "analysis_control", "time_averages");
+  cs_xpath_add_element_num(&path, "time_average", id);
   cs_xpath_add_element(&path, param);
 
   cs_xpath_add_function_text(&path);
-  if (cs_gui_get_int(path, &result)) *keyword = result;
+  if (cs_gui_get_int(path, &result))
+    *data = result;
 
   BFT_FREE(path);
-  BFT_FREE(str_id);
 }
 
 /*----------------------------------------------------------------------------
- * Get variable or properties or scalar's name for one mean
+ * Return the name of a variable or a property for a given time average.
  *
  * parameters:
- *   id           -->  number of mean (imom)
- *   nb           -->  number of order in list of var_prop of the mean
+ *   id           -->  time average number (imom)
+ *   nb           -->  variable or property number
  *----------------------------------------------------------------------------*/
 
-static char *cs_gui_get_mean_prop(const int id, const int nb)
+static char *_get_time_average_variable_name(const int id, const int nb)
 {
   char *path = NULL;
   char *name = NULL;
-  char *str_id = NULL;
-
-  BFT_MALLOC(str_id,
-             cs_gui_characters_number(id)+1,
-             char);
-  sprintf(str_id, "%i", id);
 
   path = cs_xpath_init_path();
-  cs_xpath_add_elements(&path, 3, "analysis_control", "time_averages", "time_average");
-  cs_xpath_add_test_attribute(&path,"id",str_id);
+  cs_xpath_add_elements(&path, 2, "analysis_control", "time_averages");
+  cs_xpath_add_element_num(&path, "time_average", id);
   cs_xpath_add_element_num(&path, "var_prop", nb);
   cs_xpath_add_attribute(&path, "name");
 
   name = cs_gui_get_attribute_value(path);
-
   BFT_FREE(path);
-  BFT_FREE(str_id);
 
   return name;
 }
 
 /*----------------------------------------------------------------------------
- * Get label of mean
+ * Return the label of a time average.
  *
  * parameters:
- *   nb           -->  number of order in list of mean
+ *   id              -->  time average number (imom)
  *----------------------------------------------------------------------------*/
 
-static char *cs_gui_get_mean_label(const int nb)
+static char *_get_time_average_label(const int id)
 {
   char *path = NULL;
   char *label = NULL;
 
   path = cs_xpath_init_path();
   cs_xpath_add_elements(&path, 2, "analysis_control", "time_averages");
-  cs_xpath_add_element_num(&path, "time_average", nb);
+  cs_xpath_add_element_num(&path, "time_average", id);
   cs_xpath_add_attribute(&path,"label");
 
   label = cs_gui_get_attribute_value(path);
-
   BFT_FREE(path);
 
   return label;
@@ -1294,20 +1279,13 @@ static double cs_gui_probe_coordinate(const int         num_probe,
                                       const char *const probe_coord)
 {
   char  *path = NULL;
-  char  *str_num_probe = NULL;
   double result = 0.0;
 
   assert(num_probe>0);
 
-  BFT_MALLOC(str_num_probe,
-             cs_gui_characters_number(num_probe)+1,
-             char);
-  sprintf(str_num_probe, "%i", num_probe);
-
-
   path = cs_xpath_init_path();
-  cs_xpath_add_elements(&path, 3, "analysis_control", "output", "probe");
-  cs_xpath_add_test_attribute(&path, "name", str_num_probe);
+  cs_xpath_add_elements(&path, 2, "analysis_control", "output");
+  cs_xpath_add_element_num(&path, "probe", num_probe);
   cs_xpath_add_element(&path, probe_coord);
   cs_xpath_add_function_text(&path);
 
@@ -1316,7 +1294,6 @@ static double cs_gui_probe_coordinate(const int         num_probe,
               _("Coordinate %s of the monitoring probe number %i "
                 "not found.\nXpath: %s\n"), probe_coord, num_probe, path);
 
-  BFT_FREE(str_num_probe);
   BFT_FREE(path);
 
   return result;
@@ -2222,29 +2199,28 @@ static void cs_gui_time_average_post (const char *const property_name,
 }
 
 /*-----------------------------------------------------------------------------
- * Return the label attribute of scalars.
+ * Return the label or the name from a scalar.
  *
  * parameters:
- *   markup               -->  parent markup of the scalar
+ *   kw                   -->  keyword: 'label' or 'name'
  *   scalar_num          <--   number of the searching scalar
  *----------------------------------------------------------------------------*/
 
-static char *cs_gui_scalar_label(const char *const markup,
-                                 const int         scalar_num)
+static char *_scalar_name_label(const char *kw, const int scalar_num)
 {
   char *path = NULL;
-  char *strvalue = NULL;
+  char *str  = NULL;
 
   path = cs_xpath_short_path();
-  cs_xpath_add_element(&path, markup);
+  cs_xpath_add_element(&path, "additional_scalars");
   cs_xpath_add_element_num(&path, "scalar", scalar_num);
-  cs_xpath_add_attribute(&path, "label");
+  cs_xpath_add_attribute(&path, kw);
 
-  strvalue = cs_gui_get_attribute_value(path);
+  str = cs_gui_get_attribute_value(path);
 
   BFT_FREE(path);
 
-  return strvalue;
+  return str;
 }
 
 /*==========================
@@ -2258,7 +2234,7 @@ static char *cs_gui_scalar_label(const char *const markup,
  *   ith_zone        -->  id of volumic zone
  *----------------------------------------------------------------------------*/
 
-static char *cs_gui_volumic_zone_name(const int ith_zone)
+static char *cs_gui_volumic_zone_label(const int ith_zone)
 {
   char *path = NULL;
   char *name = NULL;
@@ -2267,7 +2243,7 @@ static char *cs_gui_volumic_zone_name(const int ith_zone)
   path = cs_xpath_init_path();
   cs_xpath_add_elements(&path, 2, "solution_domain", "volumic_conditions");
   cs_xpath_add_element_num(&path, "zone", ith_zone);
-  cs_xpath_add_attribute(&path, "name");
+  cs_xpath_add_attribute(&path, "label");
 
   name = cs_gui_get_attribute_value(path);
 
@@ -2277,23 +2253,22 @@ static char *cs_gui_volumic_zone_name(const int ith_zone)
 }
 
 /*-----------------------------------------------------------------------------
- * Return the localisation for the volumic zone named name
+ * Return the localisation for the volumic zone named label
  *
  * parameters:
- *   name        -->  name of volumic zone
+ *   label        -->  label of volumic zone
  *----------------------------------------------------------------------------*/
 
-static char *cs_gui_volumic_zone_localization(const char *const name)
+static char *cs_gui_volumic_zone_localization(const char *const label)
 {
   char *path = NULL;
   char *description = NULL;
 
-  /* 2) get the description (color and groups) of the ith initialization zone */
   path = cs_xpath_init_path();
   cs_xpath_add_elements(&path, 3, "solution_domain",
                                   "volumic_conditions",
                                   "zone");
-  cs_xpath_add_test_attribute(&path, "name", name);
+  cs_xpath_add_test_attribute(&path, "label", label);
   cs_xpath_add_function_text(&path);
 
   description = cs_gui_get_text_value(path);
@@ -2308,12 +2283,12 @@ static char *cs_gui_volumic_zone_localization(const char *const name)
  *
  * parameters:
  *   variable_name    -->  name of variable
- *   zone_name        -->  name of volumic zone
+ *   zone_label       -->  label of volumic zone
  *   initial_value    <--  initial value
  *----------------------------------------------------------------------------*/
 
 static void cs_gui_variable_initial_value(const char   *const variable_name,
-                                          const char   *const zone_name,
+                                          const char   *const zone_label,
                                                 double *const initial_value)
 {
   char *path = NULL;
@@ -2323,7 +2298,7 @@ static void cs_gui_variable_initial_value(const char   *const variable_name,
   cs_xpath_add_element(&path, "variable");
   cs_xpath_add_test_attribute(&path, "name", variable_name);
   cs_xpath_add_element(&path, "initial_value");
-  cs_xpath_add_test_attribute(&path, "zone", zone_name);
+  cs_xpath_add_test_attribute(&path, "label", zone_label);
   cs_xpath_add_function_text(&path);
 
   if (cs_gui_get_double(path, &result))
@@ -2340,24 +2315,23 @@ static void cs_gui_variable_initial_value(const char   *const variable_name,
  * parameters:
  *   parent           -->  name of balise parent for the scalar
  *   label            -->  label of scalar
- *   zone_name        -->  name of volumic zone
+ *   zone_label       -->  label of volumic zone
  *   initial_value    <--  initial value
  *----------------------------------------------------------------------------*/
 
 static void cs_gui_scalar_initial_value(const char   *const parent,
-                                 const char   *const label,
-                                 const char   *const zone_name,
-                                       double *const initial_value)
+                                        const char   *const label,
+                                        const char   *const zone_label,
+                                              double *const initial_value)
 {
   char *path = NULL;
-  char *scalar_name = NULL;
   double result;
 
   path = cs_xpath_short_path();
   cs_xpath_add_elements(&path, 2, parent, "scalar");
   cs_xpath_add_test_attribute(&path, "label", label);
   cs_xpath_add_element(&path, "initial_value");
-  cs_xpath_add_test_attribute(&path, "zone", zone_name);
+  cs_xpath_add_test_attribute(&path, "label", zone_label);
   cs_xpath_add_function_text(&path);
 
   if (cs_gui_get_double(path, &result))
@@ -2365,7 +2339,6 @@ static void cs_gui_scalar_initial_value(const char   *const parent,
   else
     *initial_value = 0.0;
 
-  BFT_FREE(scalar_name);
   BFT_FREE(path);
 }
 
@@ -2394,7 +2367,7 @@ static int _user_array(const char *const keyword1,
  *   id           -->  number of order in list of 1D profile
  *----------------------------------------------------------------------------*/
 
-static char *_get_profile_label(const int id)
+static char *_get_profile(const char *kw, const int id)
 {
   char *path = NULL;
   char *label = NULL;
@@ -2402,7 +2375,7 @@ static char *_get_profile_label(const int id)
   path = cs_xpath_init_path();
   cs_xpath_add_elements(&path, 2, "analysis_control", "profiles");
   cs_xpath_add_element_num(&path, "profile", id+1);
-  cs_xpath_add_attribute(&path, "label");
+  cs_xpath_add_attribute(&path, kw);
 
   label = cs_gui_get_attribute_value(path);
 
@@ -2475,24 +2448,21 @@ static char *_get_profile_label_name(const int id, const int nm)
   char *path = NULL;
   char *name = NULL;
   char *label = NULL;
-  int j, ll;
+  int j, shift;
 
   cs_var_t  *vars = cs_glob_var;
-
   name = _get_profile_name(id, nm);
+  shift = vars->nvar - vars->nscapp - vars->nscaus;
 
-  for (j=0 ; j < (vars->nvar - vars->nscapp - vars->nscaus) ; j++) {
+  for (j=0 ; j < shift ; j++) {
     if (cs_gui_strcmp(name,  vars->name[j]))
       label = cs_gui_variable_label(name);
   }
 
-  if (vars->nscaus > 0 || vars->nscapp > 0) {
-    for (j=0 ; j < vars->nscaus + vars->nscapp; j++) {
-      if (cs_gui_strcmp(name,  vars->label[j])) {
-        ll = strlen(vars->label[j])+1;
-        BFT_REALLOC(label, ll, char);
-        strcpy(label, vars->label[j]);
-      }
+  for (j=0 ; j < vars->nscaus + vars->nscapp; j++) {
+    if (cs_gui_strcmp(name, vars->name[j+shift])) {
+      BFT_MALLOC(label, strlen(vars->label[j])+1, char);
+      strcpy(label, vars->label[j]);
     }
   }
 
@@ -2709,7 +2679,7 @@ void CS_PROCF (cscpva, CSCPVA) (int *const icp)
 
 void CS_PROCF (csnsca, CSNSCA) (int *const nscaus)
 {
-  int   i   = 0;
+  int   i     = 0;
   char *label = NULL;
 
   cs_var_t *vars = cs_glob_var;
@@ -2720,8 +2690,8 @@ void CS_PROCF (csnsca, CSNSCA) (int *const nscaus)
 
   BFT_MALLOC(vars->label, *nscaus, char*);
 
-  for (i=0; i<vars->nscaus; i++) {
-    label = cs_gui_scalar_label("additional_scalars", i+1);
+  for (i=0; i < vars->nscaus; i++) {
+    label = _scalar_name_label("label", i+1);
     BFT_MALLOC(cs_glob_var->label[i], strlen(label)+1, char);
     strcpy(cs_glob_var->label[i], label);
     BFT_FREE(label);
@@ -2946,15 +2916,15 @@ void CS_PROCF (csvnum, CSVNUM) (const int *const nvar,
   int iphas = 0;
   int n = 0;
   int i, j, k;
+  char *name = NULL;
 
   BFT_MALLOC(cs_glob_var->rtp,  *nvar, int);
   BFT_MALLOC(cs_glob_var->head, *nvar, char*);
   BFT_MALLOC(cs_glob_var->type, *nvar, char*);
   BFT_MALLOC(cs_glob_var->name, *nvar, char*);
 
-  /* Warning!!  vars->nscaus is already fill in CSNSCA */
-  /*            vars->label  is already fill in CSNSCA */
-  /*            vars->nscapp is already fill in UIPPMO */
+  /* Warning!!  for scalars: vars->nscaus is already fill in CSNSCA */
+  /*                         vars->nscapp is already fill in UIPPMO */
 
   cs_glob_var->nvar   = *nvar;
 
@@ -3096,8 +3066,10 @@ void CS_PROCF (csvnum, CSVNUM) (const int *const nvar,
   for (i=0; i < cs_glob_var->nscaus; i++) {
     cs_glob_var->rtp[n++] = isca[i] -1;
 
-    BFT_MALLOC(cs_glob_var->name[k+i], strlen(cs_glob_var->label[i]) +1, char);
-    strcpy(cs_glob_var->name[k+i], cs_glob_var->label[i]);
+    name = _scalar_name_label("name", i+1);
+    BFT_MALLOC(cs_glob_var->name[k+i], strlen(name) +1, char);
+    strcpy(cs_glob_var->name[k+i], name);
+    BFT_FREE(name);
 
     BFT_MALLOC(cs_glob_var->type[k+i], strlen("scalar")+1, char);
     strcpy(cs_glob_var->type[k+i], "scalar");
@@ -3108,7 +3080,7 @@ void CS_PROCF (csvnum, CSVNUM) (const int *const nvar,
 
   /* 6) model scalars */
 
-  k = cs_glob_var->nvar - cs_glob_var->nscapp;
+  k = cs_glob_var->nvar -cs_glob_var->nscaus - cs_glob_var->nscapp;
   for (i=0; i < cs_glob_var->nscapp; i++) {
     j = iscapp[i] -1;
     cs_glob_var->rtp[n++] = isca[j] -1;
@@ -3133,7 +3105,7 @@ void CS_PROCF (csvnum, CSVNUM) (const int *const nvar,
 
 #if _XML_DEBUG_
   bft_printf("==>CSVNUM\n");
-  bft_printf("--variables and scalars name: \n");
+  bft_printf("--variables and scalars name: %i\n", cs_glob_var->nvar);
   for (i=0; i < cs_glob_var->nvar; i++)
     bft_printf("---name: %s\n", cs_glob_var->name[i]);
   /* for (i=0; i < vars->nscapp+vars->nscaus; i++)
@@ -3151,21 +3123,25 @@ void CS_PROCF (csvnum, CSVNUM) (const int *const nvar,
  * *****************
  *
  * INTEGER          ISUITE  <--   restart
+ * INTEGER          NTSUIT  <--   checkpoint frequency
  * INTEGER          ILEAUX  <--   restart with auxiliary
  * INTEGER          ICCFVG  <--   restart with frozen field
  *----------------------------------------------------------------------------*/
 
 void CS_PROCF (csisui, CSISUI) (int *const isuite,
+                                int *const ntsuit,
                                 int *const ileaux,
                                 int *const iccvfg)
 {
   cs_gui_restart_parameters_status("restart",                isuite);
+  cs_gui_restart_parameters_status("restart_rescue",         ntsuit);
   cs_gui_restart_parameters_status("restart_with_auxiliary", ileaux);
   cs_gui_restart_parameters_status("frozen_field",           iccvfg);
 
 #if _XML_DEBUG_
   bft_printf("==>CSISUI\n");
   bft_printf("--isuite = %i\n", *isuite);
+  bft_printf("--ntsuit = %i\n", *ntsuit);
   bft_printf("--ileaux = %i\n", *ileaux);
   bft_printf("--iccvfg = %i\n", *iccvfg);
 #endif
@@ -3205,6 +3181,8 @@ void CS_PROCF (cstime, CSTIME) (int    *const inpdt0,
                                 double *const relxst)
 {
   double value;
+  /* Default values for time step factor */
+  double cdtmin = 0.1, cdtmax = 1000.;
 
   if (*idtvar == -1){
     cs_gui_steady_parameters("relaxation_coefficient", relxst);
@@ -3219,12 +3197,19 @@ void CS_PROCF (cstime, CSTIME) (int    *const inpdt0,
   }
   else{
     cs_gui_time_parameters("time_step_ref", dtref);
-    cs_gui_time_parameters("time_step_min", dtmin);
-    cs_gui_time_parameters("time_step_max", dtmax);
+    cs_gui_time_parameters("time_step_min_factor", &cdtmin);
+    cs_gui_time_parameters("time_step_max_factor", &cdtmax);
     cs_gui_time_parameters("max_courant_num", coumax);
     cs_gui_time_parameters("max_fourier_num", foumax);
     cs_gui_time_parameters("time_step_var", varrdt);
 
+    *dtmin = cdtmin*(*dtref);
+    *dtmax = cdtmax*(*dtref);
+
+    /* We keep these two lines in case we read an old XML file... */
+    cs_gui_time_parameters("time_step_min", dtmin);
+    cs_gui_time_parameters("time_step_max", dtmax);
+
     value =(double) *ntmabs;
     cs_gui_time_parameters("iterations", &value);
     *ntmabs = (int) value;
@@ -3577,7 +3562,7 @@ void CS_PROCF (cssca3, CSSCA3) (const    int *const iscalt,
     for (i=0 ; i < vars->nscaus; i++) {
       if (iscavr[i] <= 0 && i != iscalt[iphas]-1) {
 
-        if (vars->model != NULL) {
+        if (cs_gui_strcmp(vars->model, "pulverized_coal")) {
           /* Air molar mass */
           result = 0.028966;
           cs_gui_reference_mass_molar(vars->model, &result);
@@ -3664,6 +3649,8 @@ void CS_PROCF (uiprop, UIPROP) (const int *const irom,
                                 const int *const ipptz,
                                 const int *const ippdt,
                                 const int *const ivisma,
+                                const int *const idtvar,
+                                const int *const ipucou,
                                 const int *const iappel)
 {
   int iphas = 0;
@@ -3799,35 +3786,44 @@ void CS_PROCF (uiprop, UIPROP) (const int *const irom,
 
     /* Second step : before the fourth call of VARPOS in INIUSI */
 
-    cs_glob_var->nprop = cs_glob_var->nprop + 4 + cs_glob_var->ntimaver;
+    if (*idtvar == 1 || *idtvar == 2)
+        cs_glob_var->nprop += 1;
+    if (*ipucou == 1)
+        cs_glob_var->nprop += 3;
+    cs_glob_var->nprop += cs_glob_var->ntimaver;
+
     BFT_REALLOC(cs_glob_var->properties_ipp,  cs_glob_var->nprop, int);
     BFT_REALLOC(cs_glob_var->propce,  cs_glob_var->nprop, int);
     BFT_REALLOC(cs_glob_var->properties_name, cs_glob_var->nprop, char*);
 
-    cs_glob_var->properties_ipp[n] = *ippdt;
-    cs_glob_var->propce[n] = -1;
-    BFT_MALLOC(cs_glob_var->properties_name[n], strlen("local_time_step")+1, char);
-    strcpy(cs_glob_var->properties_name[n++], "local_time_step");
-
-    cs_glob_var->properties_ipp[n] = *ipptx;
-    cs_glob_var->propce[n] = -1;
-    BFT_MALLOC(cs_glob_var->properties_name[n], strlen("weight_matrix_X")+1, char);
-    strcpy(cs_glob_var->properties_name[n++], "weight_matrix_X");
-
-    cs_glob_var->properties_ipp[n] = *ippty;
-    cs_glob_var->propce[n] = -1;
-    BFT_MALLOC(cs_glob_var->properties_name[n], strlen("weight_matrix_Y")+1, char);
-    strcpy(cs_glob_var->properties_name[n++], "weight_matrix_Y");
+    if (*idtvar == 1 || *idtvar == 2) {
+        cs_glob_var->properties_ipp[n] = *ippdt;
+        cs_glob_var->propce[n] = -1;
+        BFT_MALLOC(cs_glob_var->properties_name[n], strlen("local_time_step")+1, char);
+        strcpy(cs_glob_var->properties_name[n++], "local_time_step");
+    }
 
-    cs_glob_var->properties_ipp[n] = *ipptz;
-    cs_glob_var->propce[n] = -1;
-    BFT_MALLOC(cs_glob_var->properties_name[n], strlen("weight_matrix_Z")+1, char);
-    strcpy(cs_glob_var->properties_name[n++], "weight_matrix_Z");
+    if (*ipucou == 1) {
+        cs_glob_var->properties_ipp[n] = *ipptx;
+        cs_glob_var->propce[n] = -1;
+        BFT_MALLOC(cs_glob_var->properties_name[n], strlen("weight_matrix_X")+1, char);
+        strcpy(cs_glob_var->properties_name[n++], "weight_matrix_X");
+
+        cs_glob_var->properties_ipp[n] = *ippty;
+        cs_glob_var->propce[n] = -1;
+        BFT_MALLOC(cs_glob_var->properties_name[n], strlen("weight_matrix_Y")+1, char);
+        strcpy(cs_glob_var->properties_name[n++], "weight_matrix_Y");
+
+        cs_glob_var->properties_ipp[n] = *ipptz;
+        cs_glob_var->propce[n] = -1;
+        BFT_MALLOC(cs_glob_var->properties_name[n], strlen("weight_matrix_Z")+1, char);
+        strcpy(cs_glob_var->properties_name[n++], "weight_matrix_Z");
+    }
 
     for (i=0; i < cs_glob_var->ntimaver; i++) {
       cs_glob_var->properties_ipp[n] = ipppro[ ipproc[ icmome[i]-1 ]-1 ];
       cs_glob_var->propce[n] = icmome[i];
-      name = cs_gui_get_mean_label(i+1);
+      name = _get_time_average_label(i+1);
       BFT_MALLOC(cs_glob_var->properties_name[n], strlen(name)+1, char);
       strcpy(cs_glob_var->properties_name[n++], name);
       BFT_FREE(name);
@@ -3861,10 +3857,9 @@ void CS_PROCF (uimoyt, UIMOYT) (const int *const ndgmox,
                                       int *const imoold,
                                       int *const idfmom)
 {
-  int nmean = 0;
   int imom = 0;
   int isuite = 0;
-  int i, j, n, nb;
+  int i, j, n;
   char *name = NULL;
 
   cs_glob_var->ntimaver
@@ -3874,28 +3869,27 @@ void CS_PROCF (uimoyt, UIMOYT) (const int *const ndgmox,
   for (i=0; i < cs_glob_var->ntimaver; i++) {
 
     imom = i + 1;
-    cs_gui_get_mean_value(imom, "time_step_start", &ntdmom[i]);
+
+    _get_time_average_data(imom, "time_step_start", &ntdmom[i]);
 
     /* test on isuite */
     cs_gui_restart_parameters_status("restart", &isuite);
 
     if (isuite != 0) {
-      cs_gui_get_mean_value(imom, "restart_from_time_average", &imoold[i]);
+      _get_time_average_data(imom, "restart_from_time_average", &imoold[i]);
       if (imoold[i] == imom) imoold[i] = -2;
     }
 
-    nmean = cs_gui_get_mean_names_number(imom);
-
-    for (n=0; n<nmean; n++) {
+    for (n=0; n < _get_time_average_n_variables(imom); n++) {
 
-      nb = n + 1;
-      name = cs_gui_get_mean_prop(imom, nb);
+      name = _get_time_average_variable_name(imom, n + 1);
 
-      for (j=0; j < cs_glob_var->nvar; j++){
+      for (j=0; j < cs_glob_var->nvar; j++) {
         if (cs_gui_strcmp(name,  cs_glob_var->name[j])) {
           idfmom[(imom-1)*(*ndgmox) + n] = cs_glob_var->rtp[j] +1;
         }
       }
+
       for (j=0 ; j < cs_glob_var->nprop; j++) {
         if (cs_gui_strcmp(name, cs_glob_var->properties_name[j]))
           idfmom[(imom-1)*(*ndgmox) + n] = -(cs_glob_var->propce[j]);
@@ -3903,7 +3897,6 @@ void CS_PROCF (uimoyt, UIMOYT) (const int *const ndgmox,
 
       BFT_FREE(name);
     }
-
   }
 #if _XML_DEBUG_
   bft_printf("==>UIMOYT\n");
@@ -4264,33 +4257,81 @@ void CS_PROCF(nvamem, NVAMEM) (void)
     cs_glob_label->_cs_gui_last_var = 0;
 }
 
+/*-----------------------------------------------------------------------------
+ * Return the list of cells describing a given zone.
+ *
+ * parameters:
+ *   label     -->  volume label
+ *   ncelet    -->  number of cells with halo
+ *   faces     <--  number of selected cells
+ *----------------------------------------------------------------------------*/
+
+static int*
+cs_gui_get_cells_list(const char *label,
+                      const int   ncelet,
+                            int  *cells )
+{
+    int  c_id         = 0;
+    int  *cells_list  = NULL;
+    char *description = NULL;
+
+    description = cs_gui_volumic_zone_localization(label);
+
+    /* build list of cells */
+    BFT_MALLOC(cells_list, ncelet, int);
+
+    c_id = fvm_selector_get_list(cs_glob_mesh->select_cells,
+                                 description,
+                                 cells,
+                                 cells_list);
+
+    if (fvm_selector_n_missing(cs_glob_mesh->select_cells, c_id) > 0)
+    {
+        const char *missing
+            = fvm_selector_get_missing(cs_glob_mesh->select_cells, c_id, 0);
+        cs_base_warn(__FILE__, __LINE__);
+        bft_printf(_("The group or attribute \"%s\" in the selection\n"
+                     "criteria:\n"
+                     "\"%s\"\n"
+                     " does not correspond to any cell.\n"),
+                   missing, description);
+    }
+    BFT_FREE(description);
+    return cells_list;
+}
+
 /*----------------------------------------------------------------------------
- * Variables and user scalars initialization
+ * Variables and user scalars initialization.
  *
  * Fortran Interface:
  *
- * SUBROUTINE UIINIV (NCELET, ISCA, RTP)
+ * subroutine uiiniv (ncelet, isuite, isca, iscold, rtp)
  * *****************
  *
- * INTEGER          NCELET   -->  number of cells with halo
- * INTEGER          ISCA     -->  indirection array for scalar number
- * DOUBLE PRECISION RTP     <--   variables and scalars array
+ * integer          ncelet   -->  number of cells with halo
+ * integer          isuite   -->  restart indicator
+ * integer          isca     -->  indirection array for scalar number
+ * integer          iscold   -->  scalar number for restart
+ * double precision rtp     <--   variables and scalars array
  *----------------------------------------------------------------------------*/
 
-void CS_PROCF(uiiniv, UIINIV)(const int    *const ncelet,
-                              const int    *const isca,
-                                    double *const rtp)
+void CS_PROCF(uiiniv, UIINIV)(const int    *ncelet,
+                              const int    *isuite,
+                              const int    *isca,
+                              const int    *iscold,
+                                    double  rtp[])
 {
   /* Coal combustion: the initialization of the model scalar are not given */
 
-  int i, j, icel, iel, c_id;
+  int i, j, icel, iel;
   int zones = 0;
   int cells = 0;
   int *cells_list = NULL;
   double initial_value = 0;
   char *choice = NULL;
-  char *name = NULL;
-  char *description = NULL;
+  char *path = NULL;
+  char *status = NULL;
+  char *label = NULL;
 
   cs_var_t  *vars = cs_glob_var;
 
@@ -4301,98 +4342,374 @@ void CS_PROCF(uiiniv, UIINIV)(const int    *const ncelet,
 
 #if _XML_DEBUG_
   bft_printf("==>UIINIV\n");
-  bft_printf("--initialization zones number: %i\n", zones);
 #endif
 
   for (i=1; i < zones+1; i++) {
 
-    /* name and description (color or group) of the ith initialization zone */
-    name = cs_gui_volumic_zone_name(i);
-    description = cs_gui_volumic_zone_localization(name);
+    path = cs_xpath_init_path();
+    cs_xpath_add_elements(&path, 2, "solution_domain", "volumic_conditions");
+    cs_xpath_add_element_num(&path, "zone", i);
+    cs_xpath_add_attribute(&path, "initialization");
+    status = cs_gui_get_attribute_value(path);
+    BFT_FREE(path);
 
-    /* build list of cells */
-    BFT_MALLOC(cells_list, *ncelet, int);
+    if (cs_gui_strcmp(status, "on"))  {
 
-    c_id = fvm_selector_get_list(cs_glob_mesh->select_cells,
-                                 description,
-                                 &cells,
-                                 cells_list);
+      label = cs_gui_volumic_zone_label(i);
+      cells_list = cs_gui_get_cells_list(label, *ncelet, &cells);
 
-    if (fvm_selector_n_missing(cs_glob_mesh->select_cells, c_id) > 0) {
-      const char *missing
-        = fvm_selector_get_missing(cs_glob_mesh->select_cells, c_id, 0);
-      cs_base_warn(__FILE__, __LINE__);
-      bft_printf(_("The group or attribute \"%s\" in the selection\n"
-                   "criteria:\n"
-                   "\"%s\"\n"
-                   " does not correspond to any cell.\n"),
-                 missing, description);
-    }
+      if (*isuite == 0) {
+
+        /* Velocity variables initialization */
+        for (j=1; j < 4; j++) {
+
+          cs_gui_variable_initial_value(vars->name[j], label, &initial_value);
+
+          for (icel = 0; icel < cells; icel++) {
+            iel = cells_list[icel]-1;
+            rtp[vars->rtp[j]*(*ncelet) + iel] = initial_value;
+          }
+        }
+
+        /* Turbulence variables initialization */
+        choice = cs_gui_turbulence_initialization_choice();
 
+        if (cs_gui_strcmp(choice, "values")) {
+          for (j=4; j < vars->nvar - vars->nscaus - vars->nscapp; j++) {
 
-    /* Velocity variables initialization */
-    for (j=1; j < 4; j++) {
+            cs_gui_variable_initial_value(vars->name[j], label, &initial_value);
 
-      cs_gui_variable_initial_value(vars->name[j], name, &initial_value);
+            for (icel = 0; icel < cells; icel++) {
+              iel = cells_list[icel]-1;
+              rtp[vars->rtp[j]*(*ncelet) + iel] = initial_value;
+            }
+          }
+        }
 
-      for (icel = 0; icel < cells; icel++) {
-        iel = cells_list[icel]-1;
-        rtp[vars->rtp[j]*(*ncelet) + iel] = initial_value;
+        BFT_FREE(choice);
       }
-    }
 
-    /* Turbulence variables initialization */
-    choice = cs_gui_turbulence_initialization_choice();
+      /* User Scalars initialization */
+      for (j=0; j < vars->nscaus; j++) {
+
+        cs_gui_scalar_initial_value("additional_scalars",
+                                    vars->label[j],
+                                    label,
+                                    &initial_value);
+
+        if (*isuite == 0 || (*isuite !=0 && iscold[j] == 0)) {
+          for (icel = 0; icel < cells; icel++) {
+            iel = cells_list[icel]-1;
+            rtp[(isca[j]-1)*(*ncelet) + iel] = initial_value;
+          }
+        }
+      }
 
-    if (cs_gui_strcmp(choice, "values")) {
-      for (j=4; j < vars->nvar - vars->nscaus - vars->nscapp; j++) {
+      BFT_FREE(cells_list);
 
-        cs_gui_variable_initial_value(vars->name[j], name, &initial_value);
+#if _XML_DEBUG_
+      bft_printf("--zone label: %s\n", label);
+      bft_printf("--zone's element number: %i\n", cells);
+
+      if (*isuite == 0) {
+        for (j=1; j < vars->nvar - vars->nscaus - vars->nscapp; j++) {
+          cs_gui_variable_initial_value(vars->name[j], label, &initial_value);
+          bft_printf("--initial value for %s: %f\n",
+            vars->name[j], initial_value);
+        }
+      }
 
-        for (icel = 0; icel < cells; icel++) {
-          iel = cells_list[icel]-1;
-          rtp[vars->rtp[j]*(*ncelet) + iel] = initial_value;
+      for (j=0; j < vars->nscaus; j++) {
+        cs_gui_scalar_initial_value("additional_scalars",
+                                    vars->label[j],
+                                    label,
+                                    &initial_value);
+        if (*isuite == 0 || (*isuite !=0 && iscold[j] == 0)) {
+          bft_printf("--initial value for %s: %f\n", vars->label[j], initial_value);
         }
       }
+#endif
+      BFT_FREE(cells_list);
+      BFT_FREE(label);
     }
-    BFT_FREE(choice);
+    BFT_FREE(status);
+  } /* zones+1 */
+}
 
-    /* User Scalars initialization */
-    for (j=0; j < vars->nscaus; j++) {
+/*-----------------------------------------------------------------------------
+ * Change the head losses matrix from the local frame to the global frame.
+ *
+ * parameters:
+ *   a_ij     -->  change matrix from the local frame to the global frame
+ *   in_ij    -->  head losses matrix in the local frame
+ *   out_ij   -->  head losses matrix in the global frame
+ *----------------------------------------------------------------------------*/
 
-      cs_gui_scalar_initial_value("additional_scalars",
-                                  vars->label[j],
-                                  name,
-                                  &initial_value);
+static void
+_matrix_base_conversion(double  a11,   double  a12,   double  a13,
+                        double  a21,   double  a22,   double  a23,
+                        double  a31,   double  a32,   double  a33,
+                        double  in11,  double  in12,  double  in13,
+                        double  in21,  double  in22,  double  in23,
+                        double  in31,  double  in32,  double  in33,
+                        double *out11, double *out12, double *out13,
+                        double *out21, double *out22, double *out23,
+                        double *out31, double *out32, double *out33)
+{
+    int     i, j, k;
+    double  tensorP[3][3], tensorA[3][3], tensorB[3][3], tensorC[3][3], tensorD[3][3];
+
+    tensorA[0][0] = in11;
+    tensorA[0][1] = in12;
+    tensorA[0][2] = in13;
+    tensorA[1][0] = in21;
+    tensorA[1][1] = in22;
+    tensorA[1][2] = in23;
+    tensorA[2][0] = in31;
+    tensorA[2][1] = in32;
+    tensorA[2][2] = in33;
+
+    tensorP[0][0] = a11;
+    tensorP[0][1] = a12;
+    tensorP[0][2] = a13;
+    tensorP[1][0] = a21;
+    tensorP[1][1] = a22;
+    tensorP[1][2] = a23;
+    tensorP[2][0] = a31;
+    tensorP[2][1] = a32;
+    tensorP[2][2] = a33;
+
+    for (i = 0; i < 3; i++)
+    {
+        for (j = 0; j < 3; j++)
+        {
+            tensorB[i][j] = 0.;
+            for (k = 0; k < 3; k++)
+                tensorB[i][j] += tensorP[i][k] * tensorA[k][j];
+        }
+    }
 
-      for (icel = 0; icel < cells; icel++) {
-        iel = cells_list[icel]-1;
-        rtp[(isca[j]-1)*(*ncelet) + iel] = initial_value;
-      }
+    /* Inversion of a 3x3 matrix */
+
+    tensorC[0][0] = a11;
+    tensorC[0][1] = a21;
+    tensorC[0][2] = a31;
+    tensorC[1][0] = a12;
+    tensorC[1][1] = a22;
+    tensorC[1][2] = a32;
+    tensorC[2][0] = a13;
+    tensorC[2][1] = a23;
+    tensorC[2][2] = a33;
+
+    for (i = 0; i < 3; i++)
+    {
+        for (j = 0; j < 3; j++)
+        {
+            tensorD[i][j] = 0.;
+            for (k = 0; k < 3; k++)
+                tensorD[i][j] += tensorB[i][k] * tensorC[k][j];
+        }
     }
-    BFT_FREE(cells_list);
 
-#if _XML_DEBUG_
-    bft_printf("--zone name and description: %s, %s\n", name, description);
-    bft_printf("--zone's element number: %i\n", cells);
+    *out11 = tensorD[0][0];
+    *out22 = tensorD[1][1];
+    *out33 = tensorD[2][2];
+    *out12 = tensorD[0][1];
+    *out13 = tensorD[0][2];
+    *out21 = tensorD[1][0];
+    *out23 = tensorD[1][2];
+    *out31 = tensorD[2][0];
+    *out32 = tensorD[2][1];
+}
 
-    for (j=1; j < vars->nvar - vars->nscaus - vars->nscapp; j++){
-      cs_gui_variable_initial_value(vars->name[j], name, &initial_value);
-      bft_printf("--initial value for %s: %f\n",
-        vars->name[j], initial_value);
+/*-----------------------------------------------------------------------------
+ * Return value of coefficient associated to the head losses definition.
+ *
+ * parameters:
+ *   label     -->  label of the volume zone
+ *   c         -->  name of the coefficient
+ *----------------------------------------------------------------------------*/
+
+static double
+_c_heads_losses(const char* label, const char* c)
+{
+    char* path;
+    double result = 0.0;
+    double value  = 0.0;
+
+    path = cs_xpath_init_path();
+    cs_xpath_add_elements(&path, 3, "thermophysical_models", "heads_losses", "head_loss");
+    cs_xpath_add_test_attribute(&path, "label", label);
+    cs_xpath_add_element(&path, c);
+    cs_xpath_add_function_text(&path);
+    if (cs_gui_get_double(path, &result))
+        value = result;
+    else
+        value= 0.0;
+    BFT_FREE(path);
+    return value;
+}
+
+/*----------------------------------------------------------------------------
+ * Head losses definition
+ *
+ * Fortran Interface:
+ *
+ * subroutine uikpdc
+ * *****************
+ *
+ * integer          iappel   -->  number of calls during a time step
+ * integer          iphas    -->  number of phase (only 1 allowed)
+ * integer          ncelet   -->  number of cells with halo
+ * integer          ncepdp  <--   number of cells with head losses
+ * integer          icepdc  <--   ncepdp cells number with head losses
+ * double precision ckupdc  <--   head losses matrix
+ * double precision rtpa     -->  variables array at previous time step
+ *----------------------------------------------------------------------------*/
+
+void CS_PROCF(uikpdc, UIKPDC)(const int*   iappel,
+                              const int*   iphas,
+                              const int*   ncelet,
+                                    int    ncepdp[],
+                                    int    icepdc[],
+                                    double ckupdc[],
+                              const double rtpa[] )
+{
+  int i, j, iel, ielpdc, ikpdc;
+  int zones = 0;
+  int cells = 0;
+  int *cells_list = NULL;
+  double vit;
+  double a11, a12, a13, a21, a22, a23, a31, a32, a33;
+  double c11, c12, c13, c21, c22, c23, c31, c32, c33;
+  double k11, k22, k33;
+  char *label = NULL;
+  char *status = NULL;
+  char *path = NULL;
+
+  assert(*iphas == 1);
+
+  cs_var_t  *vars = cs_glob_var;
+
+  /* number of volumic zone */
+
+  zones
+    = cs_gui_get_tag_number("/solution_domain/volumic_conditions/zone", 1);
+
+
+    if (*iappel == 1 || *iappel == 2)
+    {
+        ielpdc = 0;
+
+        for (i=1; i < zones+1; i++)
+        {
+            path = cs_xpath_init_path();
+            cs_xpath_add_elements(&path, 2, "solution_domain", "volumic_conditions");
+            cs_xpath_add_element_num(&path, "zone", i);
+            cs_xpath_add_attribute(&path, "head_losses");
+            status = cs_gui_get_attribute_value(path);
+            BFT_FREE(path);
+
+            if (cs_gui_strcmp(status, "on"))
+            {
+                label = cs_gui_volumic_zone_label(i);
+                cells_list = cs_gui_get_cells_list(label, *ncelet, &cells);
+
+                for (j=0; j < cells; j++)
+                {
+                    if (*iappel == 2)
+                        icepdc[ielpdc] = cells_list[j];
+                    ielpdc++;
+                }
+                BFT_FREE(cells_list);
+                BFT_FREE(label);
+            }
+            BFT_FREE(status);
+        } /* zones+1 */
+        if (*iappel == 1)
+            ncepdp[*iphas-1] = ielpdc;
     }
 
-    for (j=0; j < vars->nscaus; j++) {
-      cs_gui_scalar_initial_value("additional_scalars",
-                                  vars->label[j],
-                                  name,
-                                  &initial_value);
-      bft_printf("--initial value for %s: %f\n", vars->label[j], initial_value);
+    if (*iappel == 3)
+    {
+        for (ikpdc = 0; ikpdc < 6; ikpdc++)
+            for (ielpdc = 0; ielpdc < ncepdp[*iphas-1]; ielpdc++)
+                ckupdc[ikpdc * ncepdp[*iphas-1] + ielpdc] = 0.0;
+
+        ielpdc = 0;
+
+        for (i=1; i < zones+1; i++)
+        {
+            path = cs_xpath_init_path();
+            cs_xpath_add_elements(&path, 2, "solution_domain", "volumic_conditions");
+            cs_xpath_add_element_num(&path, "zone", i);
+            cs_xpath_add_attribute(&path, "head_losses");
+            status = cs_gui_get_attribute_value(path);
+            BFT_FREE(path);
+
+            if (cs_gui_strcmp(status, "on"))
+            {
+                label = cs_gui_volumic_zone_label(i);
+                cells_list = cs_gui_get_cells_list(label, *ncelet, &cells);
+
+                k11 = _c_heads_losses(label, "kxx");
+                k22 = _c_heads_losses(label, "kyy");
+                k33 = _c_heads_losses(label, "kzz");
+
+                a11 = _c_heads_losses(label, "a11");
+                a12 = _c_heads_losses(label, "a12");
+                a13 = _c_heads_losses(label, "a13");
+                a21 = _c_heads_losses(label, "a21");
+                a22 = _c_heads_losses(label, "a22");
+                a23 = _c_heads_losses(label, "a23");
+                a31 = _c_heads_losses(label, "a31");
+                a32 = _c_heads_losses(label, "a32");
+                a33 = _c_heads_losses(label, "a33");
+
+                if (a12 == 0.0 && a13 == 0.0 && a23 == 0.0)
+                {
+                    c11 = k11;
+                    c22 = k22;
+                    c33 = k33;
+                    c12 = 0.0;
+                    c13 = 0.0;
+                    c23 = 0.0;
+                }
+                else
+                {
+                    _matrix_base_conversion(a11, a12, a13, a21, a22, a23, a31, a32, a33,
+                                            k11, 0.0, 0.0, 0.0, k22, 0.0, 0.0, 0.0, k33,
+                                            &c11, &c12, &c13, &c21, &c22, &c23, &c31, &c32, &c33);
+                }
+
+                for (j = 0; j < cells; j++)
+                {
+                    iel = cells_list[j];
+                    vit = rtpa[vars->rtp[1]*(*ncelet) + iel] * rtpa[vars->rtp[1]*(*ncelet) + iel] \
+                        + rtpa[vars->rtp[2]*(*ncelet) + iel] * rtpa[vars->rtp[2]*(*ncelet) + iel] \
+                        + rtpa[vars->rtp[3]*(*ncelet) + iel] * rtpa[vars->rtp[3]*(*ncelet) + iel] ;
+                    vit = sqrt(vit);
+                    ckupdc[0 * ncepdp[*iphas-1] + ielpdc] = 0.5 * c11 * vit;
+                    ckupdc[1 * ncepdp[*iphas-1] + ielpdc] = 0.5 * c22 * vit;
+                    ckupdc[2 * ncepdp[*iphas-1] + ielpdc] = 0.5 * c33 * vit;
+                    ckupdc[3 * ncepdp[*iphas-1] + ielpdc] = 0.5 * c12 * vit;
+                    ckupdc[4 * ncepdp[*iphas-1] + ielpdc] = 0.5 * c13 * vit;
+                    ckupdc[5 * ncepdp[*iphas-1] + ielpdc] = 0.5 * c23 * vit;
+                    ielpdc++;
+                }
+                BFT_FREE(cells_list);
+                BFT_FREE(label);
+            }
+            BFT_FREE(status);
+        } /* zones+1 */
     }
+#if _XML_DEBUG_
+    bft_printf("==>uikpdc\n");
+    if (*iappel == 1)
+        bft_printf("--%i number of head losses cells: %i\n", *iappel, ncepdp[*iphas-1]);
+    if (*iappel == 3)
+        bft_printf("--%i number of head losses cells: %i\n", *iappel, ielpdc);
 #endif
-    BFT_FREE(name);
-    BFT_FREE(description);
-  } /* zones+1 */
 }
 
 /*----------------------------------------------------------------------------
@@ -4822,10 +5139,8 @@ void CS_PROCF (uiprof, UIPROF) (const int    *const ncelet,
 {
   FILE *file = NULL;
   char *filename = NULL;
-  char *buffer = NULL;
+  char *title = NULL;
   char *name = NULL;
-  char *buf1 = NULL;
-  char *buf2 = NULL;
 
   int fic_nbr = 0;
   int i, ii, iii, j;
@@ -4868,33 +5183,27 @@ void CS_PROCF (uiprof, UIPROF) (const int    *const ncelet,
 
       if (cs_glob_rank_id <= 0) {
 
-        filename = _get_profile_label(i);
+        filename = _get_profile("label", i);
+        title    = _get_profile("title", i);
 
         if (output_frequency > 0) {
 
-          /* Extension creation : format stored in 'buffer' */
-          j = cs_gui_characters_number(*ntmabs);
+          char buf1[5];
+          const char buffer[5] = "%.4i";
 
-          BFT_MALLOC(buffer, 3, char);
-          BFT_MALLOC(buf2, j+1, char);
-          strcpy(buffer, "%.");
-          sprintf(buf2, "%i", j);
-          BFT_REALLOC(buffer, j+1, char);
-          strcat(buffer, buf2);
-          strcat(buffer, "i");
+          /* Extension creation : format stored in 'buffer' */
 
-          BFT_MALLOC(buf1, j+1, char);
           sprintf(buf1, buffer, *ntcabs);
 
-          BFT_REALLOC(filename, j, char);
+          BFT_REALLOC(filename, strlen(filename) + 1 + 4 + 1, char);
+
           strcat(filename, "_");
           strcat(filename, buf1);
 
-          BFT_FREE(buf1);
-          BFT_FREE(buf2);
-          BFT_FREE(buffer);
         }
 
+        BFT_REALLOC(filename, strlen(filename) + 4 + 1, char);
+        strcat(filename, ".dat");
         file = fopen(filename, "w");
 
         if (file ==  NULL) {
@@ -4910,15 +5219,16 @@ void CS_PROCF (uiprof, UIPROF) (const int    *const ncelet,
                 x1, y1, z1);
         fprintf(file, "# End point:   x = %12.5e y = %12.5e z = %12.5e\n#\n",
                 x2, y2, z2);
-        fprintf(file, "#TITLE: %s\n", filename);
+        fprintf(file, "#TITLE: %s\n", title);
         fprintf(file, "#COLUMN_TITLES: Distance | X | Y | Z");
         for (ii = 0 ; ii < nvar_prop ; ii++) {
-          buffer = _get_profile_label_name(i, ii);
+          char *buffer = _get_profile_label_name(i, ii);
           fprintf(file, " | %s", buffer);
           BFT_FREE(buffer);
         }
         fprintf(file, "\n");
         BFT_FREE(filename);
+        BFT_FREE(title);
       }
 
       npoint = 200;
diff --git a/src/base/cs_gui_boundary_conditions.c b/src/base/cs_gui_boundary_conditions.c
index 23c046b..7a83ec9 100644
--- a/src/base/cs_gui_boundary_conditions.c
+++ b/src/base/cs_gui_boundary_conditions.c
@@ -436,9 +436,10 @@ _inlet_coal(const int         izone,
             const int  *const nclpch)
 {
     int    icoal;
-    int    iratio;
+    int    iclass;
     int    size = 0;
     double value;
+    char  *path0 = NULL;
     char  *path1 = NULL;
     char  *path2 = NULL;
     char  *path3 = NULL;
@@ -447,12 +448,16 @@ _inlet_coal(const int         izone,
     char  **list_of_coals = NULL;
     char  **list_of_classes = NULL;
 
-    path1 = cs_xpath_init_path();
-    cs_xpath_add_elements(&path1, 2, "boundary_conditions", "inlet");
-    cs_xpath_add_test_attribute(&path1, "label", boundaries->label[izone]);
-    cs_xpath_add_elements(&path1, 2, "velocity_pressure", "coal");
+    path0 = cs_xpath_init_path();
+    cs_xpath_add_elements(&path0, 2, "boundary_conditions", "inlet");
+    cs_xpath_add_test_attribute(&path0, "label", boundaries->label[izone]);
+    cs_xpath_add_elements(&path0, 2, "velocity_pressure", "coal");
 
+    BFT_MALLOC(path1, strlen(path0) + 1, char);
+    strcpy(path1, path0);
+    cs_xpath_add_attribute(&path1, "name");
     list_of_coals = cs_gui_get_attribute_values(path1, &size);
+    BFT_FREE(path1);
 
     /* if there is no coal, it is an inlet only for oxydant */
     if (size == 0)
@@ -473,9 +478,9 @@ _inlet_coal(const int         izone,
 
         for (icoal = 0; icoal < *ncharb; icoal++)
         {
-            BFT_MALLOC(path2, strlen(path1) + 1, char);
-            strcpy(path2, path1);
-            //sprintf(coalname, "%.4s%2.2i", "coal", icharb+1);
+            BFT_MALLOC(path2, strlen(path0) + 1, char);
+            strcpy(path2, path0);
+            /* sprintf(coalname, "%.4s%2.2i", "coal", icoal+1); */
             cs_xpath_add_test_attribute(&path2, "name", list_of_coals[icoal]);
 
             BFT_MALLOC(path3, strlen(path2) + 1, char);
@@ -498,27 +503,31 @@ _inlet_coal(const int         izone,
             if (cs_gui_get_double(path4, &value))
                 boundaries->timpcp[izone][icoal] = value;
 
-            /* loop on number of class by coal for ratio */
+            /* loop on number of class by coal for ratio (%) stored in distch */
 
             cs_xpath_add_element(&path2, "ratio");
-            list_of_classes = cs_gui_get_attribute_values(path2, &size);
+            BFT_MALLOC(path1, strlen(path2) + 1, char);
+            strcpy(path1, path2);
+            cs_xpath_add_attribute(&path1, "name");
+            list_of_classes = cs_gui_get_attribute_values(path1, &size);
+            BFT_FREE(path1);
 
-            for (iratio=0; iratio < nclpch[icoal]; iratio++)
+            for (iclass=0; iclass < nclpch[icoal]; iclass++)
             {
                 BFT_MALLOC(path5, strlen(path2) + 1, char);
                 strcpy(path5, path2);
 
-                //sprintf(classname, "%.5s%2.2i", "class", iratio+1);
-                cs_xpath_add_test_attribute(&path5, "name", list_of_classes[iratio]);
+                /* sprintf(classname, "%.5s%2.2i", "class", iclass+1); */
+                cs_xpath_add_test_attribute(&path5, "name", list_of_classes[iclass]);
                 cs_xpath_add_function_text(&path5);
 
                 if (cs_gui_get_double(path5, &value))
-                    boundaries->distch[izone][icoal][icoal] = value;
+                    boundaries->distch[izone][icoal][iclass] = value;
 
                 BFT_FREE(path5);
             }
 
-            for (iratio=0; iratio < nclpch[icoal]; iratio++)
+            for (iclass=0; iclass < nclpch[icoal]; iclass++)
                 BFT_FREE(list_of_classes[icoal]);
             BFT_FREE(list_of_classes);
 
@@ -531,7 +540,7 @@ _inlet_coal(const int         izone,
             BFT_FREE(list_of_coals[icoal]);
         BFT_FREE(list_of_coals);
 
-        BFT_FREE(path1);
+        BFT_FREE(path0);
     }
 }
 
@@ -568,14 +577,14 @@ static mei_tree_t *_boundary_init_mei_tree(const char *formula,
                   _("Error: can not interprete expression: %s\n"), tree->string);
 
     /* check for symbols */
-    for( i = 0; i < symbol_size; ++i )
+    for (i = 0; i < symbol_size; ++i)
         if (mei_tree_find_symbol(tree, symbols[i]))
             bft_error(__FILE__, __LINE__, 0,
                       _("Error: can not find the required symbol: %s\n"), symbols[i]);
 
     return tree;
 }
-#endif // HAVE_MEI
+#endif /* HAVE_MEI */
 
 /*----------------------------------------------------------------------------
  * Boundary conditions treatment: global structure initialization
@@ -599,7 +608,7 @@ _init_boundaries(const int *const nfabor,
     int zones = 0;
     int ifac, izone, ith_zone, zone_nbr;
     int ifbr, i;
-    int ivar, isca, icharb;
+    int ivar, isca, icharb, iclass;
     char *choice = NULL;
     char *choice_v = NULL;
     char *choice_d = NULL;
@@ -707,8 +716,8 @@ _init_boundaries(const int *const nfabor,
                 boundaries->qimpcp[izone][icharb] = 0;
                 boundaries->timpcp[izone][icharb] = 0;
 
-                for (ivar = 0; ivar < nclpch[icharb]; ivar++)
-                    boundaries->distch[izone][icharb][ivar] = 0;
+                for (iclass = 0; iclass < nclpch[icharb]; iclass++)
+                    boundaries->distch[izone][icharb][iclass] = 0;
             }
         }
         else if (cs_gui_strcmp(vars->model, "atmospheric_flows"))
@@ -1055,6 +1064,7 @@ cs_gui_get_faces_list(const int   izone,
 {
     int  c_id        = 0;
     int  *faces_list = NULL;
+    char *description = NULL;
 
     int  boundary_zones = cs_gui_boundary_zone_number(izone + 1);
 
@@ -1063,7 +1073,7 @@ cs_gui_get_faces_list(const int   izone,
                 _("zone's label number %i is greater than %i,"
                 " the maximum allowed \n"), boundary_zones , nozppm);
 
-    char *description = cs_gui_boundary_zone_localization(label);
+    description = cs_gui_boundary_zone_localization(label);
 
     /* list of faces building */
     BFT_MALLOC(faces_list, nfabor, int);
@@ -1177,7 +1187,7 @@ void CS_PROCF (uiclim, UICLIM)(const    int *const ntcabs,
     int zones = 0;
     int izone, ith_zone, zone_nbr;
     int ifac, ifbr;
-    int i, k, ivar, icharb, iwall;
+    int i, k, ivar, icharb, iclass, iwall;
     double norm = 0.;
     double X[3];
     int *faces_list = NULL;
@@ -1236,9 +1246,9 @@ void CS_PROCF (uiclim, UICLIM)(const    int *const ntcabs,
                     qimpcp[icharb *(*nozppm)+zone_nbr-1] = boundaries->qimpcp[izone][icharb];
                     timpcp[icharb *(*nozppm)+zone_nbr-1] = boundaries->timpcp[izone][icharb];
 
-                    for (k = 0; k < nclpch[icharb]; k++)
-                        distch[k * (*nozppm) * (*ncharm) +icharb * (*nozppm) +zone_nbr-1]
-                            = boundaries->distch[izone][icharb][k];
+                    for (iclass = 0; iclass < nclpch[icharb]; iclass++)
+                        distch[iclass * (*nozppm) * (*ncharm) +icharb * (*nozppm) +zone_nbr-1]
+                            = boundaries->distch[izone][icharb][iclass];
                 }
             }
             else
@@ -1284,6 +1294,11 @@ void CS_PROCF (uiclim, UICLIM)(const    int *const ntcabs,
             if (cs_gui_strcmp(vars->model, "atmospheric_flows"))
             {
                 iprofm[zone_nbr-1] = boundaries->meteo[izone].read_data;
+                if (iprofm[zone_nbr-1] == 1)
+                {
+                  BFT_FREE(choice_v);
+                  BFT_FREE(choice_d);
+                }
                 if (boundaries->meteo[izone].automatic)
                 {
                    for (ifac = 0; ifac < faces; ifac++)
@@ -1376,9 +1391,12 @@ void CS_PROCF (uiclim, UICLIM)(const    int *const ntcabs,
                     for (ifac = 0; ifac < faces; ifac++)
                     {
                         ifbr = faces_list[ifac] -1;
-                        rcodcl[vars->rtp[1] * (*nfabor) + ifbr] = -surfbo[3 * ifbr + vars->rtp[1] -1];
-                        rcodcl[vars->rtp[2] * (*nfabor) + ifbr] = -surfbo[3 * ifbr + vars->rtp[2] -1];
-                        rcodcl[vars->rtp[3] * (*nfabor) + ifbr] = -surfbo[3 * ifbr + vars->rtp[3] -1];
+                        norm = sqrt(  surfbo[3 * ifbr + 0] * surfbo[3 * ifbr + 0]
+                                    + surfbo[3 * ifbr + 1] * surfbo[3 * ifbr + 1]
+                                    + surfbo[3 * ifbr + 2] * surfbo[3 * ifbr + 2]);
+                        rcodcl[vars->rtp[1] * (*nfabor) + ifbr] = -surfbo[3 * ifbr + vars->rtp[1] -1]/norm;
+                        rcodcl[vars->rtp[2] * (*nfabor) + ifbr] = -surfbo[3 * ifbr + vars->rtp[2] -1]/norm;
+                        rcodcl[vars->rtp[3] * (*nfabor) + ifbr] = -surfbo[3 * ifbr + vars->rtp[3] -1]/norm;
                     }
                 }
 #ifdef HAVE_MEI
@@ -1505,14 +1523,27 @@ void CS_PROCF (uiclim, UICLIM)(const    int *const ntcabs,
         {
             if (boundaries->rough[izone] >= 0.0)
             {
-                /* roughness value is only stored in Velocity_U */
-                /* Remember: rcodcl(ifac, ivar, 1) -> rcodcl[k][j][i] = rcodcl[ k*dim1*dim2 + j*dim1 + i] */
+                /* roughness value is only stored in Velocity_U (z0) */
+                /* Remember: rcodcl(ifac, ivar, 1) -> rcodcl[k][j][i]
+                               = rcodcl[ k*dim1*dim2 + j*dim1 + i] */
                 iwall = *iparug;
                 for (ifac = 0; ifac < faces; ifac++)
                 {
                     ifbr = faces_list[ifac] -1;
                     rcodcl[2 * (*nfabor * (vars->nvar)) + vars->rtp[1] * (*nfabor) + ifbr]
                         = boundaries->rough[izone];
+
+                    /* if atmospheric flows and "dry" or "humid atmosphere" mode,
+                       roughness value also stored in Velocity_V (z0t)*/
+                    if (cs_gui_strcmp(vars->model, "atmospheric_flows"))
+                    {
+                        if (   cs_gui_strcmp(vars->model_value, "dry")
+                            || cs_gui_strcmp(vars->model_value, "humid"))
+                        {
+                            rcodcl[3 * (*nfabor * (vars->nvar)) + vars->rtp[2] * (*nfabor) + ifbr]
+                            = boundaries->rough[izone];
+                        }
+                     }
                 }
             }
             else
@@ -1700,13 +1731,13 @@ void CS_PROCF (uiclim, UICLIM)(const    int *const ntcabs,
                 for (icharb = 0; icharb < *ncharb; icharb++)
                 {
                     bft_printf("-----coal=%i, qimpcp=%12.5e, timpcp=%12.5e \n",
-                                  icharb, qimpcp[icharb *(*nozppm)+zone_nbr-1],
+                                  icharb+1, qimpcp[icharb *(*nozppm)+zone_nbr-1],
                                   timpcp[icharb *(*nozppm)+zone_nbr-1]);
 
-                    for (k = 0; k < nclpch[icharb]; k++)
+                    for (iclass = 0; iclass < nclpch[icharb]; k++)
                         bft_printf("-----coal=%i, class=%i, distch=%f \n",
-                                      icharb, k,
-                                      distch[k * (*nozppm) * (*ncharm) +icharb * (*nozppm) +zone_nbr-1]);
+                                      icharb+1, iclass=1,
+                                      distch[iclass * (*nozppm) * (*ncharm) +icharb * (*nozppm) +zone_nbr-1]);
                 }
             }
             else
diff --git a/src/base/cs_coupling.c b/src/base/cs_gui_conjugate_heat_transfer.c
similarity index 50%
copy from src/base/cs_coupling.c
copy to src/base/cs_gui_conjugate_heat_transfer.c
index b75d8f8..60be480 100644
--- a/src/base/cs_coupling.c
+++ b/src/base/cs_gui_conjugate_heat_transfer.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -26,7 +26,7 @@
  *============================================================================*/
 
 /*============================================================================
- * Common functionnality for various coupling types.
+ * Management of the GUI parameters file: conjugate heat transfer
  *============================================================================*/
 
 #if defined(HAVE_CONFIG_H)
@@ -37,6 +37,12 @@
  * Standard C library headers
  *----------------------------------------------------------------------------*/
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include <fcntl.h>
+#include <unistd.h>
 #include <assert.h>
 
 /*----------------------------------------------------------------------------
@@ -44,23 +50,40 @@
  *----------------------------------------------------------------------------*/
 
 #include <bft_mem.h>
+#include <bft_error.h>
 #include <bft_printf.h>
 
 /*----------------------------------------------------------------------------
  * FVM library headers
  *----------------------------------------------------------------------------*/
 
-#include <fvm_coupling.h>
+#include "fvm_selector.h"
+
+/*----------------------------------------------------------------------------
+ * MEI library headers
+ *----------------------------------------------------------------------------*/
+
+#ifdef HAVE_MEI
+#include "mei_evaluate.h"
+#endif
 
 /*----------------------------------------------------------------------------
  * Local headers
  *----------------------------------------------------------------------------*/
 
+#include "cs_base.h"
+#include "cs_gui_util.h"
+#include "cs_gui_variables.h"
+#include "cs_gui_boundary_conditions.h"
+#include "cs_mesh.h"
+#include "cs_prototypes.h"
+#include "cs_syr_coupling.h"
+
 /*----------------------------------------------------------------------------
- *  Header for the current file
+ * Header for the current file
  *----------------------------------------------------------------------------*/
 
-#include "cs_coupling.h"
+#include "cs_gui_conjugate_heat_transfer.h"
 
 /*----------------------------------------------------------------------------*/
 
@@ -70,120 +93,102 @@ BEGIN_C_DECLS
  * Local Macro Definitions
  *============================================================================*/
 
-/*=============================================================================
- * Local Type Definitions
- *============================================================================*/
-
-
-/*============================================================================
- *  Global variables
- *============================================================================*/
-
-#if defined(FVM_HAVE_MPI)
-
-static int                       _cs_glob_coupling_mpi_app_num = -1;
-static fvm_coupling_mpi_world_t *_cs_glob_coupling_mpi_app_world = NULL;
-
-#endif
+/* debugging switch */
+#define _XML_DEBUG_ 0
 
 /*============================================================================
  * Private function definitions
  *============================================================================*/
 
-/*============================================================================
- * Public function definitions
- *============================================================================*/
-
-#if defined(HAVE_MPI)
-
-/*----------------------------------------------------------------------------
- * Discover other applications in the same MPI root communicator.
+/*-----------------------------------------------------------------------------
+ * Return the value to the asociated markup.
  *
- * parameters:
- *   app_num  <-- application number for this instance of Code_Saturne (>= 0)
- *   app_name <-- optional name of this instance of Code_Saturne, or NULL.
+ * parameter:
+ *   keyword    --> label of the markup
+ *   number     --> number of the syrthes coupling
  *----------------------------------------------------------------------------*/
 
-void
-cs_coupling_discover_mpi_apps(int          app_num,
-                              const char  *app_name)
+static char*
+_get_syrthes_coupling(const char* keyword, const int number)
 {
-  if (app_num > -1 && cs_glob_mpi_comm != MPI_COMM_WORLD) {
-
-    int i, n_apps, app_id;
-
-    _cs_glob_coupling_mpi_app_num = app_num;
-
-    /* App_type contains a string such as
-       "Code_Saturne 1.4.0" or "NEPTUNE_CFD 1.2.1" */
-
-    const char app_type[] = CS_APP_NAME " " CS_APP_VERSION;
-
-    if (cs_glob_rank_id < 1) {
-      bft_printf(_("\n"
-                   "Applications accessible through MPI:\n"
-                   "------------------------------------\n\n"));
-      bft_printf_flush();
-    }
-
-    _cs_glob_coupling_mpi_app_world
-      = fvm_coupling_mpi_world_create(app_num,
-                                      app_type,
-                                      app_name,
-                                      cs_glob_mpi_comm);
-
-    n_apps = fvm_coupling_mpi_world_n_apps(_cs_glob_coupling_mpi_app_world);
-    app_id = fvm_coupling_mpi_world_get_app_id(_cs_glob_coupling_mpi_app_world);
-
-    if (cs_glob_rank_id < 1) {
-
-      const char local_add[] = " (this instance)";
-      const char nolocal_add[] = "";
-
-      for (i = 0; i< n_apps; i++) {
-        const char *is_local = nolocal_add;
-        fvm_coupling_mpi_world_info_t
-          ai = fvm_coupling_mpi_world_get_info(_cs_glob_coupling_mpi_app_world,
-                                               i);
-        if (i == app_id)
-          is_local = local_add;
-        bft_printf(_("  %d; type:      \"%s\"%s\n"
-                     "     case name: \"%s\"\n"
-                     "     lead rank: %d; n_ranks: %d\n\n"),
-                   ai.app_num, ai.app_type, is_local,
-                   ai.app_name, ai.root_rank, ai.n_ranks);
-      }
-
-      bft_printf_flush();
-    }
-  }
+    char* value = NULL;
+    char *path = cs_xpath_init_path();
+    cs_xpath_add_elements(&path, 3, "thermophysical_models",
+                                    "conjugate_heat_transfer",
+                                    "external_coupling");
+    cs_xpath_add_element_num(&path, "syrthes", number);
+    cs_xpath_add_element(&path, keyword);
+    cs_xpath_add_function_text(&path);
+    value = cs_gui_get_text_value(path);
+    BFT_FREE(path);
+    return value;
 }
 
-/*----------------------------------------------------------------------------
- * Finalize MPI coupling helper structures.
- *----------------------------------------------------------------------------*/
-
-void
-cs_coupling_finalize(void)
-{
-  if (_cs_glob_coupling_mpi_app_world != NULL)
-    fvm_coupling_mpi_world_destroy(&_cs_glob_coupling_mpi_app_world);
-}
+/*============================================================================
+ * Public Fortran function definitions
+ *============================================================================*/
 
-/*----------------------------------------------------------------------------
- * Return info on other applications in the same MPI root communicator.
+/*-----------------------------------------------------------------------------
+ * Define new SYRTHES coupling.
+ *
+ * In the case of a single Code_Saturne and single SYRTHES instance, the
+ * syrthes_app_num and syrthes_name arguments are ignored.
+ *
+ * In case of multiple couplings, a coupling will be matched with available
+ * SYRTHES instances prioritarily based on the syrthes_name argument, then
+ * on the syrthes_app_num argument. If syrthes_name is empty, matching will
+ * be based on syrthes_app_num only.
+ *
+ * subroutine uisyrc
+ * *****************
  *
- * returns:
- *   info on other applications structure.
  *----------------------------------------------------------------------------*/
 
-const fvm_coupling_mpi_world_t *
-cs_coupling_get_mpi_apps(void)
+void CS_PROCF (uisyrc, UISYRC) (void)
 {
-  return _cs_glob_coupling_mpi_app_world;
-}
+    int izone;
+    int verbosity = 0;
+    int app_num = 0;
+    char* syrthes_name = NULL;
+    char* syrthes_app_num = NULL;
+    char* projection_axis = NULL;
+    char* boundary_criteria = NULL;
+    char* volume_criteria = NULL;
+
+    int coupling =
+      cs_gui_get_tag_number("/conjugate_heat_transfer/external_coupling/syrthes",
+                            1);
+
+    for (izone=0 ; izone < coupling ; izone++)
+    {
+      syrthes_name      = _get_syrthes_coupling("syrthes_name",       izone+1);
+      syrthes_app_num   = _get_syrthes_coupling("syrthes_app_num",    izone+1);
+      projection_axis   = _get_syrthes_coupling("projection_axis",    izone+1);
+      boundary_criteria = _get_syrthes_coupling("selection_criteria", izone+1);
+
+      app_num = atoi(syrthes_app_num);
+
+      cs_syr_coupling_define(app_num,
+                             syrthes_name,
+                             boundary_criteria,
+                             volume_criteria,
+                             *projection_axis,
+                             verbosity);
+
+#if _XML_DEBUG_
+      bft_printf("==>uisyrc\n");
+      bft_printf("--syrthes_name      = %s\n", syrthes_name);
+      bft_printf("--syrthes_app_num   = %s\n", syrthes_app_num);
+      bft_printf("--boundary_criteria = %s\n", boundary_criteria);
+      bft_printf("--projection_axis   = %s\n", projection_axis);
+#endif
+      BFT_FREE(syrthes_name);
+      BFT_FREE(syrthes_app_num);
+      BFT_FREE(projection_axis);
+      BFT_FREE(boundary_criteria);
 
-#endif /* HAVE_MPI */
+    }
+}
 
 /*----------------------------------------------------------------------------*/
 
diff --git a/src/base/cs_gui_matisse.c b/src/base/cs_gui_matisse.c
index f77753e..a50df3d 100644
--- a/src/base/cs_gui_matisse.c
+++ b/src/base/cs_gui_matisse.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/cs_gui_mobile_mesh.c b/src/base/cs_gui_mobile_mesh.c
index 8c5a3cb..0a31a4e 100644
--- a/src/base/cs_gui_mobile_mesh.c
+++ b/src/base/cs_gui_mobile_mesh.c
@@ -120,7 +120,7 @@ enum ale_boundary_nature
     ale_boundary_nature_internal_coupling,
     ale_boundary_nature_external_coupling,
     ale_boundary_nature_fixed_velocity,
-    ale_boundary_nature_fixed_displacement,
+    ale_boundary_nature_fixed_displacement
 };
 
 /*============================================================================
@@ -146,7 +146,7 @@ cs_gui_iale_parameter(const char   *const param,
   path = cs_xpath_init_path();
   cs_xpath_add_elements(&path, 3, "thermophysical_models", "ale_method", param);
 
-  if (cs_gui_strcmp(param,"mesh_viscosity") ){
+  if (cs_gui_strcmp(param,"mesh_viscosity")) {
 
     cs_xpath_add_attribute(&path, "type");
     type = cs_gui_get_attribute_value(path);
@@ -252,7 +252,7 @@ cs_gui_init_mei_tree(char         *formula,
                      unsigned int variable_nbr,
                      const double dtref,
                      const double ttcabs,
-                     const int    ntcabs )
+                     const int    ntcabs)
 {
     unsigned int i = 0;
 
@@ -260,14 +260,14 @@ cs_gui_init_mei_tree(char         *formula,
     mei_tree_t *tree = mei_tree_new(formula);
 
     /* Insert variables into mei_tree */
-    for( i = 0; i < variable_nbr; ++i )
+    for (i = 0; i < variable_nbr; ++i)
     {
         double value = 0;
 
         /* Read value from variables_value if it is not null 0 otherwise */
-        if( variables_value )
+        if (variables_value)
             value = variables_value[i];
-        mei_tree_insert(tree, variables[i], value );
+        mei_tree_insert(tree, variables[i], value);
     }
 
     /* Add commun variables: dt, t, nbIter */
@@ -281,7 +281,7 @@ cs_gui_init_mei_tree(char         *formula,
                       _("Error: can not interprete expression: %s\n"), tree->string);
 
     /* Check for symbols */
-    for( i = 0; i < symbol_nbr; ++i )
+    for (i = 0; i < symbol_nbr; ++i)
     {
         const char* symbol = symbols[i];
 
@@ -294,7 +294,7 @@ cs_gui_init_mei_tree(char         *formula,
 
     return tree;
 }
-#endif // HAVE_MEI
+#endif /* HAVE_MEI */
 
 /*----------------------------------------------------------------------------
  *  Get the ale property choice
@@ -303,6 +303,8 @@ cs_gui_init_mei_tree(char         *formula,
 static enum ale_property_choice
 get_ale_property_choice(void)
 {
+    char *choice_str;
+
     enum ale_property_choice choice = ale_property_choice_user_function;
     char *path = cs_xpath_init_path();
 
@@ -310,11 +312,11 @@ get_ale_property_choice(void)
     cs_xpath_add_test_attribute(&path, "label", "mesh_vi1");
     cs_xpath_add_attribute(&path, "choice");
 
-    char *choice_str = cs_gui_get_attribute_value(path);
+    choice_str = cs_gui_get_attribute_value(path);
 
-    if (cs_gui_strcmp( choice_str , "user_function" ) )
+    if (cs_gui_strcmp(choice_str , "user_function"))
         choice = ale_property_choice_user_function;
-    else if (cs_gui_strcmp( choice_str , "user_subroutine" ) )
+    else if (cs_gui_strcmp(choice_str , "user_subroutine"))
         choice = ale_property_choice_user_subroutine;
     else
         bft_error(__FILE__, __LINE__, 0,
@@ -331,12 +333,14 @@ get_ale_property_choice(void)
 static char *
 get_ale_formula(void)
 {
+    char *aleFormula;
+
     char *path = cs_xpath_short_path();
     cs_xpath_add_element(&path, "ale_method");
     cs_xpath_add_element(&path, "formula");
     cs_xpath_add_function_text(&path);
 
-    char *aleFormula =  cs_gui_get_text_value(path);
+    aleFormula =  cs_gui_get_text_value(path);
     BFT_FREE(path);
     return aleFormula;
 }
@@ -348,12 +352,14 @@ get_ale_formula(void)
 static char *
 get_ale_mesh_viscosity(void)
 {
+    char *viscosityType;
+
     char *path = cs_xpath_short_path();
     cs_xpath_add_element(&path, "ale_method");
     cs_xpath_add_element(&path, "mesh_viscosity");
     cs_xpath_add_attribute(&path, "type");
 
-    char *viscosityType = cs_gui_get_attribute_value(path);
+    viscosityType = cs_gui_get_attribute_value(path);
     BFT_FREE(path);
     return viscosityType;
 }
@@ -362,14 +368,16 @@ get_ale_mesh_viscosity(void)
  * Get the ale boundary formula
  *
  * parameters:
- * label        --> boundary label
- * choice       --> nature: "fixed_velocity" or "fixed_displacement"
+ *   label        --> boundary label
+ *   choice       --> nature: "fixed_velocity" or "fixed_displacement"
  *----------------------------------------------------------------------------*/
 
 static char*
 get_ale_boundary_formula(const char *const label,
                                      const char *const choice)
 {
+    char* formula;
+
     char *path = cs_xpath_init_path();
     cs_xpath_add_elements(&path, 2, "boundary_conditions",  "wall");
     cs_xpath_add_test_attribute(&path, "label", label);
@@ -378,7 +386,7 @@ get_ale_boundary_formula(const char *const label,
     cs_xpath_add_element(&path, "formula");
     cs_xpath_add_function_text(&path);
 
-    char* formula = cs_gui_get_text_value(path);
+    formula = cs_gui_get_text_value(path);
     BFT_FREE(path);
 
     return formula;
@@ -388,32 +396,36 @@ get_ale_boundary_formula(const char *const label,
  * Get uialcl data for fixed displacement
  *
  * parameters:
- * label        --> boundary label
- * begin        --> begin index for nodfbr
- * end          --> end index for nodfbr
- * nnod         --> number of node
- * nodfbr       --> NODFBR
- * impale       <-- IMPALE
- * depale       <-- DEPALE
- * dtref        --> time step
- * ttcabs       --> current time
- * ntcabs       --> current iteration number
+ *   label        --> boundary label
+ *   begin        --> begin index for nodfbr
+ *   end          --> end index for nodfbr
+ *   nnod         --> number of node
+ *   nodfbr       --> NODFBR
+ *   impale       <-- IMPALE
+ *   depale       <-- DEPALE
+ *   dtref        --> time step
+ *   ttcabs       --> current time
+ *   ntcabs       --> current iteration number
  *----------------------------------------------------------------------------*/
 
 static void
 uialcl_fixed_displacement(const char *const label,
-                                      const int         begin,
-                                      const int         end,
-                                      const int  *const nnod,
-                                      const int  *const nodfbr,
-                                            int  *const impale,
-                                     double *const      depale,
-                                     const double       dtref,
-                                     const double       ttcabs,
-                                     const int          ntcabs )
+                          const int         begin,
+                          const int         end,
+                          const int  *const nnod,
+                          const int  *const nodfbr,
+                          int        *const impale,
+                          double     *const depale,
+                          const double      dtref,
+                          const double      ttcabs,
+                          const int         ntcabs)
 {
+    int ii = 0;
 #ifdef HAVE_MEI
-    const char*  variables[3] = { "mesh_x", "mesh_y", "mesh_z" };
+    mei_tree_t *ev;
+    double X_mesh, Y_mesh, Z_mesh;
+
+    const char*  variables[3] = {"mesh_x", "mesh_y", "mesh_z"};
     unsigned int variable_nbr = 3;
 
     /* Get formula */
@@ -421,26 +433,25 @@ uialcl_fixed_displacement(const char *const label,
 
     if (!formula)
         bft_error(__FILE__, __LINE__, 0,
-            _("Boundary nature formula is null for %s.\n"), label );
+            _("Boundary nature formula is null for %s.\n"), label);
 
     /* Init mei */
-    mei_tree_t *ev = cs_gui_init_mei_tree(formula, variables, variable_nbr,
-                                          0, 0, 0, dtref, ttcabs, ntcabs );
+    ev = cs_gui_init_mei_tree(formula, variables, variable_nbr,
+                              0, 0, 0, dtref, ttcabs, ntcabs);
 
     mei_evaluate(ev);
 
     /* Get mei results */
-    double X_mesh = mei_tree_lookup(ev, "mesh_x");
-    double Y_mesh = mei_tree_lookup(ev, "mesh_y");
-    double Z_mesh = mei_tree_lookup(ev, "mesh_z");
+    X_mesh = mei_tree_lookup(ev, "mesh_x");
+    Y_mesh = mei_tree_lookup(ev, "mesh_y");
+    Z_mesh = mei_tree_lookup(ev, "mesh_z");
 
     BFT_FREE(formula);
     mei_tree_destroy(ev);
-#endif // HAVE_MEI
+#endif /* HAVE_MEI */
 
     /* Set depale and impale */
-    int ii = 0;
-    for( ii = begin; ii < end; ++ii )
+    for (ii = begin; ii < end; ++ii)
     {
         int inod = nodfbr[ii-1] - 1;
         if (impale[inod] == 0)
@@ -449,64 +460,65 @@ uialcl_fixed_displacement(const char *const label,
             depale[inod + 0 * (*nnod)] = X_mesh;
             depale[inod + 1 * (*nnod)] = Y_mesh;
             depale[inod + 2 * (*nnod)] = Z_mesh;
-#endif // HAVE_MEI
+#endif /* HAVE_MEI */
             impale[inod] = 1;
         }
     }
 }
 
 /*-----------------------------------------------------------------------------
- * Get uialcl data for fixed velicity
+ * Get uialcl data for fixed velocity
  *
  * parameters:
- * label        --> boundary label
- * iuma         --> IUMA
- * ivma         --> IVMA
- * iwma         --> IWMA
- * nfabor       --> Number of boundary faces
- * ifbr         --> ifbr
- * rcodcl       <-- RCODCL
- * dtref        --> time step
- * ttcabs       --> current time
- * ntcabs       --> current iteration number
+ *   label        --> boundary label
+ *   iuma         --> IUMA
+ *   ivma         --> IVMA
+ *   iwma         --> IWMA
+ *   nfabor       --> Number of boundary faces
+ *   ifbr         --> ifbr
+ *   rcodcl       <-- RCODCL
+ *   dtref        --> time step
+ *   ttcabs       --> current time
+ *   ntcabs       --> current iteration number
  *----------------------------------------------------------------------------*/
 
 static void
-uialcl_fixed_velocity( const char*   label,
-                                   const int     iuma,
-                                   const int     ivma,
-                                   const int     iwma,
-                                   const int     nfabor,
-                                   const int     ifbr,
-                                   double *const rcodcl,
-                                   const double  dtref,
-                                   const double  ttcabs,
-                                   const int     ntcabs )
+uialcl_fixed_velocity(const char*   label,
+                      const int     iuma,
+                      const int     ivma,
+                      const int     iwma,
+                      const int     nfabor,
+                      const int     ifbr,
+                      double *const rcodcl,
+                      const double  dtref,
+                      const double  ttcabs,
+                      const int     ntcabs)
 {
 #ifdef HAVE_MEI
+    mei_tree_t *ev;
     const char*  variables[3] = { "mesh_u", "mesh_v", "mesh_w" };
 
-    // Get formula
+    /* Get formula */
     char* formula = get_ale_boundary_formula(label, "fixed_velocity");
 
     if (!formula)
         bft_error(__FILE__, __LINE__, 0,
-            _("Boundary nature formula is null for %s.\n"), label );
+            _("Boundary nature formula is null for %s.\n"), label);
 
-    // Init MEI
-    mei_tree_t *ev = cs_gui_init_mei_tree(formula, variables, 3, 0, 0, 0,
-                                          dtref, ttcabs, ntcabs );
+    /* Init MEI */
+    ev = cs_gui_init_mei_tree(formula, variables, 3, 0, 0, 0,
+                              dtref, ttcabs, ntcabs);
 
     mei_evaluate(ev);
 
-    // Fill  rcodcl
+    /* Fill  rcodcl */
     rcodcl[ (iuma-1) * nfabor + ifbr ] = mei_tree_lookup(ev, "mesh_u");
     rcodcl[ (ivma-1) * nfabor + ifbr ] = mei_tree_lookup(ev, "mesh_v");
     rcodcl[ (iwma-1) * nfabor + ifbr ] = mei_tree_lookup(ev, "mesh_w");
 
     BFT_FREE(formula);
     mei_tree_destroy(ev);
-#endif // HAVE_MEI
+#endif /* HAVE_MEI */
 }
 
 /*-----------------------------------------------------------------------------
@@ -517,8 +529,10 @@ uialcl_fixed_velocity( const char*   label,
  *----------------------------------------------------------------------------*/
 
 static enum ale_boundary_nature
-get_ale_boundary_nature( const char *const label)
+get_ale_boundary_nature(const char *const label)
 {
+  char *ale_boundary_nature;
+
   enum ale_boundary_nature nature = ale_boundary_nature_fixed_wall;
 
   char *path = cs_xpath_init_path();
@@ -527,7 +541,7 @@ get_ale_boundary_nature( const char *const label)
   cs_xpath_add_test_attribute(&path, "label", label);
   cs_xpath_add_element(&path, "ale");
   cs_xpath_add_attribute(&path, "choice");
-  char *ale_boundary_nature = cs_gui_get_attribute_value(path);
+  ale_boundary_nature = cs_gui_get_attribute_value(path);
 
   if (cs_gui_strcmp(ale_boundary_nature, "fixed_boundary"))
     nature = ale_boundary_nature_fixed_wall;
@@ -552,21 +566,22 @@ get_ale_boundary_nature( const char *const label)
  * Get boundary attribute like nature or label
  *
  * parameters:
- * ith_zone  --> boundary index
- * nodeName  --> xml attribute name. for example, "nature" or "label"
+ *   ith_zone  --> boundary index
+ *   nodeName  --> xml attribute name. for example, "nature" or "label"
  *----------------------------------------------------------------------------*/
 
 static char*
 get_boundary_attribute(unsigned int ith_zone,
                        const char   *nodeName)
 {
+    char *result;
     char *path = cs_xpath_init_path();
 
     cs_xpath_add_element(&path, "boundary_conditions");
     cs_xpath_add_element_num(&path, "boundary", ith_zone);
     cs_xpath_add_attribute(&path, nodeName);
 
-    char *result = cs_gui_get_attribute_value(path);
+    result = cs_gui_get_attribute_value(path);
 
     BFT_FREE(path);
     return result;
@@ -575,14 +590,14 @@ get_boundary_attribute(unsigned int ith_zone,
 
 /*-----------------------------------------------------------------------------
  * Init xpath for internal coupling with:
-
-    boundary_conditions/wall[label=label]/
-    ale[choice=internal_coupling]/node_name, node_sub_name/text()
-
+ *
+ * boundary_conditions/wall[label=label]/
+ * ale[choice=internal_coupling]/node_name, node_sub_name/text()
+ *
  * parameters:
- * label            --> boundary label
- * node_name        --> xml node name ("initial_displacement")
- * node_sub_name    --> xml child node of node_name ("X")
+ *   label            --> boundary label
+ *   node_name        --> xml node name ("initial_displacement")
+ *   node_sub_name    --> xml child node of node_name ("X")
  *----------------------------------------------------------------------------*/
 
 static char*
@@ -609,9 +624,9 @@ init_internal_coupling_xpath(const char* label,
  * Get internal coupling double
  *
  * parameters:
- * label            --> boundary label
- * node_name        --> xml node name ("initial_displacement")
- * node_sub_name    --> xml child node of node_name ("X")
+ *   label            --> boundary label
+ *   node_name        --> xml node name ("initial_displacement")
+ *   node_sub_name    --> xml child node of node_name ("X")
  *----------------------------------------------------------------------------*/
 
 static double
@@ -622,7 +637,7 @@ get_internal_coupling_double(const char* label,
   double value = 0;
   char *path = init_internal_coupling_xpath(label, node_name, node_sub_name);
 
-  if( !cs_gui_get_double(path, &value ) )
+  if (!cs_gui_get_double(path, &value))
   {
     bft_error(__FILE__, __LINE__, 0,
               _("cannot get value for %s %s %s"),
@@ -638,9 +653,9 @@ get_internal_coupling_double(const char* label,
  * Get internal coupling string
  *
  * parameters:
- * label            --> boundary label
- * node_name        --> xml node name ("initial_displacement")
- * node_sub_name    --> xml child node of node_name ("formula")
+ *   label            --> boundary label
+ *   node_name        --> xml node name ("initial_displacement")
+ *   node_sub_name    --> xml child node of node_name ("formula")
  *----------------------------------------------------------------------------*/
 
 static char*
@@ -661,15 +676,15 @@ get_internal_coupling_string(const char* label,
  * Retreive internal coupling x, y and z XML values
  *
  * parameters:
- * label      --> boundary label
- * node_name  --> xml node name ("initial_displacement")
- * xyz        <-- result matrix
+ *   label      --> boundary label
+ *   node_name  --> xml node name ("initial_displacement")
+ *   xyz        <-- result matrix
  *----------------------------------------------------------------------------*/
 
 static void
 get_internal_coupling_xyz_values(const char *label,
                                  const char *node_name,
-                                 double      xyz[3] )
+                                 double      xyz[3])
 {
     xyz[0] = get_internal_coupling_double(label, node_name, "X");
     xyz[1] = get_internal_coupling_double(label, node_name, "Y");
@@ -681,7 +696,7 @@ get_internal_coupling_xyz_values(const char *label,
  * Retreive internal coupling advanced windows double value
  *
  * parameters:
- * node_name  --> xml node name ("displacement_prediction_alpha")
+ *   node_name  --> xml node name ("displacement_prediction_alpha")
  *----------------------------------------------------------------------------*/
 
 static void
@@ -703,7 +718,7 @@ get_uistr1_advanced_double(const char *const keyword,
  * Retreive internal coupling advanced windows checkbox value
  *
  * parameters:
- * node_name  --> xml node name ("monitor_point_synchronisation")
+ *   node_name  --> xml node name ("monitor_point_synchronisation")
  *----------------------------------------------------------------------------*/
 
 static void
@@ -724,17 +739,17 @@ get_uistr1_advanced_checkbox(const char *const keyword, int *const value)
  * Retreive data the internal coupling matrices
  *
  * parameters:
- * label            --> boundary label
- * node_name        --> xml matrix node name
- * symbols          --> see cs_gui_init_mei_tree
- * symbol_nbr       --> see cs_gui_init_mei_tree
- * variables        --> see cs_gui_init_mei_tree
- * variables_value  --> see cs_gui_init_mei_tree
- * variable_nbr     --> see cs_gui_init_mei_tree
- * output_matrix,   <-- result matrix
- * dtref            --> time step
- * ttcabs           --> current time
- * ntcabs           --> current iteration number
+ *   label            --> boundary label
+ *   node_name        --> xml matrix node name
+ *   symbols          --> see cs_gui_init_mei_tree
+ *   symbol_nbr       --> see cs_gui_init_mei_tree
+ *   variables        --> see cs_gui_init_mei_tree
+ *   variables_value  --> see cs_gui_init_mei_tree
+ *   variable_nbr     --> see cs_gui_init_mei_tree
+ *   output_matrix,   <-- result matrix
+ *   dtref            --> time step
+ *   ttcabs           --> current time
+ *   ntcabs           --> current iteration number
  *----------------------------------------------------------------------------*/
 
 static void
@@ -751,7 +766,9 @@ get_internal_coupling_matrix(const char    *label,
                              const int     ntcabs)
 {
 #ifdef HAVE_MEI
-    // Get the formula
+    /* Get the formula */
+    mei_tree_t *tree;
+
     unsigned int i = 0;
     char *matrix = get_internal_coupling_string(label, node_name, "formula");
 
@@ -759,13 +776,13 @@ get_internal_coupling_matrix(const char    *label,
         bft_error(__FILE__, __LINE__, 0,
                   _("Formula is null for %s %s"), label, node_name);
 
-    // Initialize mei
-    mei_tree_t *tree = cs_gui_init_mei_tree(matrix, symbols, symbol_nbr,
-                                            variables, variables_value, variable_nbr,
-                                            dtref, ttcabs, ntcabs );
+    /* Initialize mei */
+    tree = cs_gui_init_mei_tree(matrix, symbols, symbol_nbr,
+                                variables, variables_value, variable_nbr,
+                                dtref, ttcabs, ntcabs);
     mei_evaluate(tree);
 
-    // Read matrix values
+    /* Read matrix values */
     for (i = 0; i < symbol_nbr; ++i)
     {
         const char *symbol = symbols[i];
@@ -773,22 +790,22 @@ get_internal_coupling_matrix(const char    *label,
     }
     BFT_FREE(matrix);
     mei_tree_destroy(tree);
-#endif // HAVE_MEI
+#endif /* HAVE_MEI */
 }
 
 /*-----------------------------------------------------------------------------
  * Retreive data for internal coupling for a specific boundary
  *
  * parameters:
- * label    --> boundary label
- * xmstru   <-- Mass matrix
- * xcstr    <-- Damping matrix
- * xkstru   <-- Stiffness matrix
- * forstr   <-- Fluid force matrix
- * istruc   --> internal coupling boundary index
- * dtref    --> time step
- * ttcabs   --> current time
- * ntcabs   --> current iteration number
+ *   label    --> boundary label
+ *   xmstru   <-- Mass matrix
+ *   xcstr    <-- Damping matrix
+ *   xkstru   <-- Stiffness matrix
+ *   forstr   <-- Fluid force matrix
+ *   istruc   --> internal coupling boundary index
+ *   dtref    --> time step
+ *   ttcabs   --> current time
+ *   ntcabs   --> current iteration number
  *----------------------------------------------------------------------------*/
 
 static void
@@ -802,41 +819,53 @@ get_uistr2_data(const char    *label,
                 const double  ttcabs,
                 const int     ntcabs)
 {
-    const char   *symbols[] = {"m11", "m12", "m13", "m21", "m22", "m23", "m31", "m32", "m33"};
-    unsigned int symbol_nbr = sizeof(symbols) / sizeof(symbols[0]);
+    const char  *m_symbols[] = {"m11", "m12", "m13",
+                                "m21", "m22", "m23",
+                                "m31", "m32", "m33"};
+    const char  *c_symbols[] = {"c11", "c12", "c13",
+                                "c21", "c22", "c23",
+                                "c31", "c32", "c33"};
+    const char  *k_symbols[] = {"k11", "k12", "k13",
+                                "k21", "k22", "k23",
+                                "k31", "k32", "k33"};
+
+    unsigned int symbol_nbr = sizeof(m_symbols) / sizeof(m_symbols[0]);
 
     const char   *force_symbols[] = {"fx", "fy", "fz"};
     unsigned int force_symbol_nbr = sizeof(force_symbols) / sizeof(force_symbols[0]);
 
-    // Get mass matrix, damping matrix and stiffness matrix
-    get_internal_coupling_matrix(label, "mass_matrix", symbols,
+    const unsigned int  variable_nbr = 3;
+    const char *variables[3] = {"fluid_fx", "fluid_fy", "fluid_fz"};
+    double variable_values[3];
+
+    /* Get mass matrix, damping matrix and stiffness matrix */
+
+    get_internal_coupling_matrix(label, "mass_matrix", m_symbols,
                                  symbol_nbr, 0, 0, 0,
                                  &xmstru[istruc * symbol_nbr],
                                  dtref, ttcabs, ntcabs);
-    get_internal_coupling_matrix(label, "damping_matrix", symbols,
+
+    get_internal_coupling_matrix(label, "damping_matrix", c_symbols,
                                  symbol_nbr, 0, 0, 0,
                                  &xcstru[istruc * symbol_nbr],
                                  dtref, ttcabs, ntcabs);
-    get_internal_coupling_matrix(label, "stiffness_matrix", symbols,
+
+    get_internal_coupling_matrix(label, "stiffness_matrix", k_symbols,
                                  symbol_nbr, 0, 0, 0,
                                  &xkstru[istruc * symbol_nbr],
                                  dtref, ttcabs, ntcabs);
 
-    const unsigned int  variable_nbr = 3;
-    const char *variables[3] = { "fluid_fx", "fluid_fy", "fluid_fz" };
-    double variable_values[3];
-
-    // Set variable for fluid force matrix
-    variable_values[0] = forstr[istruc * force_symbol_nbr + 0 ];
-    variable_values[1] = forstr[istruc * force_symbol_nbr + 1 ];
-    variable_values[2] = forstr[istruc * force_symbol_nbr + 2 ];
+    /* Set variable for fluid force matrix */
+    variable_values[0] = forstr[istruc * force_symbol_nbr + 0];
+    variable_values[1] = forstr[istruc * force_symbol_nbr + 1];
+    variable_values[2] = forstr[istruc * force_symbol_nbr + 2];
 
-    // Get fluid force matrix
+    /* Get fluid force matrix */
     get_internal_coupling_matrix(label, "fluid_force_matrix",
                                  force_symbols, force_symbol_nbr,
                                  variables, variable_values, variable_nbr,
                                  &forstr[istruc * force_symbol_nbr],
-                                 dtref, ttcabs, ntcabs );
+                                 dtref, ttcabs, ntcabs);
 }
 
 /*-----------------------------------------------------------------------------
@@ -851,6 +880,9 @@ get_uistr2_data(const char    *label,
 static int
 get_coupling_post_synchronization_status(void)
 {
+    char *statusStr;
+    int  status;
+
     char *path = cs_xpath_init_path();
 
     cs_xpath_add_elements(&path, 3, "thermophysical_models",
@@ -858,8 +890,8 @@ get_coupling_post_synchronization_status(void)
                           "external_coupling_post_synchronization");
     cs_xpath_add_attribute(&path, "status");
 
-    char *statusStr = cs_gui_get_attribute_value(path);
-    int  status     = cs_gui_strcmp(statusStr, "on");
+    statusStr = cs_gui_get_attribute_value(path);
+    status    = cs_gui_strcmp(statusStr, "on");
 
     BFT_FREE(statusStr);
     BFT_FREE(path);
@@ -884,16 +916,19 @@ static int
 get_external_coupling_ddl(const char *const label,
                           const char *const node_name)
 {
+    char* choice;
+    int isOn;
+
     char *path = cs_xpath_init_path();
-    cs_xpath_add_elements(&path, 2, "boundary_conditions",  "wall");
+    cs_xpath_add_elements(&path, 2, "boundary_conditions", "wall");
     cs_xpath_add_test_attribute(&path, "label", label);
     cs_xpath_add_element(&path, "ale");
     cs_xpath_add_test_attribute(&path, "choice", "external_coupling");
     cs_xpath_add_element(&path, node_name);
     cs_xpath_add_attribute(&path, "choice");
 
-    char* choice = cs_gui_get_attribute_value(path);
-    int isOn = cs_gui_strcmp(choice, "on");
+    choice = cs_gui_get_attribute_value(path);
+    isOn = cs_gui_strcmp(choice, "on");
 
     BFT_FREE(choice);
     BFT_FREE(path);
@@ -918,14 +953,14 @@ get_external_coupling_ddl(const char *const label,
  * ntcabs   --> current iteration number
  *----------------------------------------------------------------------------*/
 
-void CS_PROCF (uivima, UIVIMA) ( const cs_int_t *const ncel,
-                                 double         *const viscmx,
-                                 double         *const viscmy,
-                                 double         *const viscmz,
-                                 const double   *const xyzcen,
-                                 double *const         dtref,
-                                 double *const         ttcabs,
-                                 const    int *const   ntcabs)
+void CS_PROCF (uivima, UIVIMA) (const cs_int_t *const ncel,
+                                double         *const viscmx,
+                                double         *const viscmy,
+                                double         *const viscmz,
+                                const double   *const xyzcen,
+                                double         *const dtref,
+                                double         *const ttcabs,
+                                const int      *const ntcabs)
 {
 #if defined(HAVE_MEI)
     int          iel            = 0;
@@ -934,9 +969,10 @@ void CS_PROCF (uivima, UIVIMA) ( const cs_int_t *const ncel,
     unsigned int variable_nbr   = 1;
 
     /* Check if user function is selection */
-    if( get_ale_property_choice() == ale_property_choice_user_function )
+    if (get_ale_property_choice() == ale_property_choice_user_function)
     {
         /* Get formula */
+        mei_tree_t *ev;
         char *aleFormula    = get_ale_formula();
         char *viscosityType = get_ale_mesh_viscosity();
         unsigned int isOrthotrop = cs_gui_strcmp(viscosityType, "orthotrop");
@@ -949,9 +985,9 @@ void CS_PROCF (uivima, UIVIMA) ( const cs_int_t *const ncel,
                     _("Formula is null for ale.\n"));
 
         /* Init mei */
-        mei_tree_t *ev = cs_gui_init_mei_tree(aleFormula, variables,
-                                              variable_nbr, symbols, 0, 3,
-                                              *dtref, *ttcabs, *ntcabs);
+        ev = cs_gui_init_mei_tree(aleFormula, variables,
+                                  variable_nbr, symbols, 0, 3,
+                                  *dtref, *ttcabs, *ntcabs);
 
         /* for each cell, update the value of the table of symbols for each scalar
             (including the thermal scalar), and evaluate the interpreter */
@@ -964,7 +1000,7 @@ void CS_PROCF (uivima, UIVIMA) ( const cs_int_t *const ncel,
 
             mei_evaluate(ev);
 
-            // Set viscmx, viscmy and viscmz
+            /* Set viscmx, viscmy and viscmz */
             viscmx[iel] = mei_tree_lookup(ev, "mesh_vi1");
             if (isOrthotrop)
             {
@@ -976,7 +1012,7 @@ void CS_PROCF (uivima, UIVIMA) ( const cs_int_t *const ncel,
         BFT_FREE(aleFormula);
         BFT_FREE(viscosityType);
     }
-#endif // HAVE_MEI
+#endif /* HAVE_MEI */
 }
 
 /*----------------------------------------------------------------------------
@@ -1040,40 +1076,40 @@ void CS_PROCF (uialin, UIALIN) (int    *const iale,
  *  uialcl
  *
  * parameters:
- * nfabor       --> Number of boundary faces
- * nozppm       --> Max number of boundary conditions zone
- * ialtyb       --> ialtyb
- * ipnfbr       --> First node position for each boundary in nodfbr
- * nodfbr       --> uialcl_fixed_displacement
- * impale       --> uialcl_fixed_displacement
- * depale       --> See uialcl_fixed_displacement
- * dtref        --> time step
- * ttcabs       --> current time
- * ntcabs       --> current iteration number
- * iuma         --> See uialcl_fixed_velocity
- * ivma         --> See uialcl_fixed_velocity
- * iwma         --> See uialcl_fixed_velocity
- * rcodcl       --> See uialcl_fixed_velocity
+ *   nfabor       --> Number of boundary faces
+ *   nozppm       --> Max number of boundary conditions zone
+ *   ialtyb       --> ialtyb
+ *   ipnfbr       --> First node position for each boundary in nodfbr
+ *   nodfbr       --> uialcl_fixed_displacement
+ *   impale       --> uialcl_fixed_displacement
+ *   depale       --> See uialcl_fixed_displacement
+ *   dtref        --> time step
+ *   ttcabs       --> current time
+ *   ntcabs       --> current iteration number
+ *   iuma         --> See uialcl_fixed_velocity
+ *   ivma         --> See uialcl_fixed_velocity
+ *   iwma         --> See uialcl_fixed_velocity
+ *   rcodcl       --> See uialcl_fixed_velocity
  *----------------------------------------------------------------------------*/
 
-void CS_PROCF (uialcl, UIALCL) ( const int *const    nfabor,
-                                 const int *const    nozppm,
-                                 const int *const    ibfixe,
-                                 const int *const    igliss,
-                                 const int *const    ivimpo,
-                                 int       *const    ialtyb,
-                                 const int *const    ipnfbr,
-                                 const int *const    nnod,
-                                 const int *const    nodfbr,
-                                       int *const    impale,
-                                       double *const depale,
-                                 double *const       dtref,
-                                 double *const       ttcabs,
-                                 const    int *const ntcabs,
-                                 const int *const    iuma,
-                                 const int *const    ivma,
-                                 const int *const    iwma,
-                                       double *const rcodcl  )
+void CS_PROCF (uialcl, UIALCL) (const int *const    nfabor,
+                                const int *const    nozppm,
+                                const int *const    ibfixe,
+                                const int *const    igliss,
+                                const int *const    ivimpo,
+                                int       *const    ialtyb,
+                                const int *const    ipnfbr,
+                                const int *const    nnod,
+                                const int *const    nodfbr,
+                                int       *const    impale,
+                                double    *const    depale,
+                                double    *const    dtref,
+                                double    *const    ttcabs,
+                                const int *const    ntcabs,
+                                const int *const    iuma,
+                                const int *const    ivma,
+                                const int *const    iwma,
+                                double    *const    rcodcl)
 {
     int  izone        = 0;
     int  ifac         = 0;
@@ -1110,7 +1146,7 @@ void CS_PROCF (uialcl, UIALCL) ( const int *const    nfabor,
                 ialtyb[ifbr]  = *igliss;
             }
         }
-        else if( nature == ale_boundary_nature_fixed_displacement )
+        else if (nature == ale_boundary_nature_fixed_displacement)
         {
             for (ifac = 0; ifac < faces; ifac++)
             {
@@ -1120,14 +1156,14 @@ void CS_PROCF (uialcl, UIALCL) ( const int *const    nfabor,
                                           *dtref, *ttcabs, *ntcabs);
             }
         }
-        else if( nature == ale_boundary_nature_fixed_velocity )
+        else if (nature == ale_boundary_nature_fixed_velocity)
         {
             for (ifac = 0; ifac < faces; ifac++)
             {
                 int ifbr = faces_list[ifac]-1;
                 uialcl_fixed_velocity(label, *iuma, *ivma, *iwma,
                                       *nfabor, ifbr, rcodcl,
-                                      *dtref, *ttcabs, *ntcabs );
+                                      *dtref, *ttcabs, *ntcabs);
                 ialtyb[ifbr]  = *ivimpo;
             }
         }
@@ -1139,27 +1175,28 @@ void CS_PROCF (uialcl, UIALCL) ( const int *const    nfabor,
  * Retreive data for internal coupling. Called once at initialization
  *
  * parameters:
- * nfabor   --> Number of boundary faces
- * idfstr   --> Structure definition
- * aexxst   <--  Displacement prediction alpha
- * bexxst   <-- Displacement prediction beta
- * cfopre   <-- Stress prediction alpha
- * ihistr   <-- Monitor point synchronisation
- * xstr0    <-- Values of the initial displacement
- * xstreq   <-- Values of the equilibrium displacement
- * vstr0    <-- Values of the initial velocity
+ *   nfabor   --> Number of boundary faces
+ *   idfstr   --> Structure definition
+ *   aexxst   <--  Displacement prediction alpha
+ *   bexxst   <-- Displacement prediction beta
+ *   cfopre   <-- Stress prediction alpha
+ *   ihistr   <-- Monitor point synchronisation
+ *   xstr0    <-- Values of the initial displacement
+ *   xstreq   <-- Values of the equilibrium displacement
+ *   vstr0    <-- Values of the initial velocity
  *----------------------------------------------------------------------------*/
 
-void CS_PROCF (uistr1, UISTR1) ( const int *const nfabor,
-                                 int       *const idfstr,
-                                 double           *aexxst,
-                                 double           *bexxst,
-                                 double           *cfopre,
-                                 int              *ihistr,
-                                 double           *xstr0,
-                                 double           *xstreq,
-                                 double           *vstr0 )
+void CS_PROCF (uistr1, UISTR1) (const int *const nfabor,
+                                int       *const idfstr,
+                                double           *aexxst,
+                                double           *bexxst,
+                                double           *cfopre,
+                                int              *ihistr,
+                                double           *xstr0,
+                                double           *xstreq,
+                                double           *vstr0)
 {
+    int  zones;
     int  izone        = 0;
     int  ifac         = 0;
     int  faces        = 0;
@@ -1167,24 +1204,24 @@ void CS_PROCF (uistr1, UISTR1) ( const int *const nfabor,
     int  *faces_list  = NULL;
     unsigned int    istruct = 0;
 
-    // Get advanced data
+    /* Get advanced data */
     get_uistr1_advanced_double("displacement_prediction_alpha", aexxst);
     get_uistr1_advanced_double("displacement_prediction_beta", bexxst);
     get_uistr1_advanced_double("stress_prediction_alpha", cfopre);
     get_uistr1_advanced_checkbox("monitor_point_synchronisation", ihistr);
 
-    int zones = cs_gui_boundary_zones_number();
+    zones = cs_gui_boundary_zones_number();
 
-    // At each time-step, loop on boundary faces
+    /* At each time-step, loop on boundary faces */
     for (izone=0 ; izone < zones ; izone++)
     {
         char *nature = get_boundary_attribute(izone + 1, "nature");
         char *label  = get_boundary_attribute(izone + 1, "label");
 
-            // Keep only internal coupling
+        /* Keep only internal coupling */
         if (get_ale_boundary_nature(label) == ale_boundary_nature_internal_coupling)
         {
-            // Read initial_displacement, equilibrium_displacement and initial_velocity
+            /* Read initial_displacement, equilibrium_displacement and initial_velocity */
             get_internal_coupling_xyz_values(label, "initial_displacement",
                                              &xstr0[3 * istruct]);
             get_internal_coupling_xyz_values(label, "equilibrium_displacement",
@@ -1193,7 +1230,7 @@ void CS_PROCF (uistr1, UISTR1) ( const int *const nfabor,
                                              &vstr0[3 * istruct]);
 
             faces_list = cs_gui_get_faces_list(izone, label, *nfabor, 0, &faces);
-            // Set idfstr to positiv index starting at 1
+            /* Set idfstr to positiv index starting at 1 */
             for (ifac = 0; ifac < faces; ifac++)
             {
                 ifbr = faces_list[ifac]-1;
@@ -1211,13 +1248,13 @@ void CS_PROCF (uistr1, UISTR1) ( const int *const nfabor,
  * Retreive data for internal coupling. Called at each step
  *
  * parameters:
- * xmstru       <-- Mass matrix
- * xcstr        <-- Damping matrix
- * xkstru       <-- Stiffness matrix
- * forstr       <-- Fluid force matrix
- * dtref        -->   time step
- * ttcabs       --> current time
- * ntcabs       --> current iteration number
+ *   xmstru       <-- Mass matrix
+ *   xcstr        <-- Damping matrix
+ *   xkstru       <-- Stiffness matrix
+ *   forstr       <-- Fluid force matrix
+ *   dtref        -->   time step
+ *   ttcabs       --> current time
+ *   ntcabs       --> current iteration number
  *----------------------------------------------------------------------------*/
 
 void CS_PROCF (uistr2, UISTR2) (double *const  xmstru,
@@ -1233,21 +1270,23 @@ void CS_PROCF (uistr2, UISTR2) (double *const  xmstru,
 
     int zones   = cs_gui_boundary_zones_number();
 
-    // At each time-step, loop on boundary faces
+    /* At each time-step, loop on boundary faces */
     for (izone=0 ; izone < zones ; izone++)
     {
         const char *label = boundaries->label[izone];
 
-        // Keep only internal coupling
+        /* Keep only internal coupling */
         if (get_ale_boundary_nature(label) == ale_boundary_nature_internal_coupling)
         {
-            // Read internal coupling data for boundaries
-            //for (int ii=0; ii<3; ii++)
-            //{
-            //    xmstru = 0.
-            //    xkstru = 0.
-            //    xcstru = 0.
-            //}
+#if 0
+            /* Read internal coupling data for boundaries */
+            for (int ii=0; ii<3; ii++)
+            {
+                xmstru = 0.;
+                xkstru = 0.;
+                xcstru = 0.;
+            }
+#endif
             get_uistr2_data(label,
                             xmstru,
                             xcstru,
@@ -1266,17 +1305,17 @@ void CS_PROCF (uistr2, UISTR2) (double *const  xmstru,
  * Retreive data for external coupling
  *
  * parameters:
- * nfabor    <-- Number of boundary faces
- * idfstr    <-- Structure definition
- * asddlf    <-- Block of the DDL forces
- * isyncp    <---
+ *   nfabor    <-- Number of boundary faces
+ *   idfstr    <-- Structure definition
+ *   asddlf    <-- Block of the DDL forces
+ *   isyncp    <---
  *----------------------------------------------------------------------------*/
 
 void
 CS_PROCF (uiaste, UIASTE) (const int *const nfabor,
-                              int    *const    idfstr,
-                              double *const    asddlf,
-                              int    *const    isyncp )
+                           int       *const idfstr,
+                           double    *const asddlf,
+                           int       *const isyncp)
 {
     int faces   = 0;
     int izone   = 0;
@@ -1286,25 +1325,25 @@ CS_PROCF (uiaste, UIASTE) (const int *const nfabor,
 
     int zones = cs_gui_boundary_zones_number();
 
-    // Get the coupling post synchronization status
+    /* Get the coupling post synchronization status */
     *isyncp = get_coupling_post_synchronization_status() ? 1 : 0;
 
-    // At each time-step, loop on boundary faces
+    /* At each time-step, loop on boundary faces */
     for (izone=0 ; izone < zones ; izone++)
     {
         const char *label  = boundaries->label[izone];
 
-        // Keep only internal coupling
+        /* Keep only internal coupling */
         if (get_ale_boundary_nature(label) == ale_boundary_nature_external_coupling)
         {
             int* faces_list = cs_gui_get_faces_list(izone, label, *nfabor, 0, &faces);
 
-            // Get DDLX, DDLY and DDLZ values
+            /* Get DDLX, DDLY and DDLZ values */
             asddlf[istruct * 3 + 0] = get_external_coupling_ddl(label, "DDLX") ? 0 : 1;
             asddlf[istruct * 3 + 1] = get_external_coupling_ddl(label, "DDLY") ? 0 : 1;
             asddlf[istruct * 3 + 2] = get_external_coupling_ddl(label, "DDLZ") ? 0 : 1;
 
-            // Set idfstr with negativ value starting from -1
+            /* Set idfstr with negativ value starting from -1 */
             for (ifac = 0; ifac < faces; ifac++)
             {
                 ifbr = faces_list[ifac]-1;
diff --git a/src/base/cs_gui_particles.c b/src/base/cs_gui_particles.c
index 4555ab5..f89a9d0 100644
--- a/src/base/cs_gui_particles.c
+++ b/src/base/cs_gui_particles.c
@@ -76,14 +76,16 @@ BEGIN_C_DECLS
 /* debugging switch */
 #define _XML_DEBUG_ 0
 
-//  rcodcl[ k * dim1 *dim2 + j *dim1 + i]
-//  iuslag (iclas,izone,ijnbp)
-//  iuslag[ijnbp][izone][iclas]
-//  iuslag[ijnbp*nclagm*nflagm + izone*nclagm + iclas]
-//  iuslag[ijnbp*nclagm*nflagm + izone*nclagm + iclas]
+/*
+  rcodcl[ k * dim1 *dim2 + j *dim1 + i]
+  iuslag (iclas,izone,ijnbp)
+  iuslag[ijnbp][izone][iclas]
+  iuslag[ijnbp*nclagm*nflagm + izone*nclagm + iclas]
+  iuslag[ijnbp*nclagm*nflagm + izone*nclagm + iclas]
 
-// F77: IUSLAG(ICLAS, IZONE, I)
-// C  : &iuslag[i][izone][iclas] = &iuslag[ i*(*nclagm)*(*nflagm) + izone*(*nclagm) + iclas ]
+  F77: IUSLAG(ICLAS, IZONE, I)
+  C  : &iuslag[i][izone][iclas] = &iuslag[ i*(*nclagm)*(*nflagm) + izone*(*nclagm) + iclas]
+*/
 
 /* simplfied access for fortran arrays */
 #define IUSLAG(I_,J_,K_) (*(iuslag +I_*(*nclagm)*(*nflagm) +J_*(*nclagm) +K_))
@@ -113,8 +115,10 @@ typedef struct {
   double     **specific_heat;     /* specific heat for each class                    */
   double     **emissivity;        /* emissivity for each class                       */
 #if defined(HAVE_MEI)
-//  mei_tree_t **velocity;        /* formula for norm or mass flow rate of velocity  */
-//  mei_tree_t **direction;       /* formula for direction of velocity               */
+#if 0
+  mei_tree_t **velocity;          /* formula for norm or mass flow rate of velocity  */
+  mei_tree_t **direction;         /* formula for direction of velocity               */
+#endif
 #endif
 } cs_particles_boundary_t;
 
@@ -965,10 +969,12 @@ void CS_PROCF (uilag1, UILAG1) (int *const iilagr,
     _get_status(idpvar, 3, "lagrangian", "particles_models", "break_up");
     _get_status(impvar, 3, "lagrangian", "particles_models", "evaporation");
     _get_status(itpvar, 3, "lagrangian", "particles_models", "thermal");
-//     if (*itpvar == 1) {
-//       _get_double(tpart,  4, "lagrangian", "particles_models", "thermal", "particle_temperature");
-//       _get_double(cppart, 4, "lagrangian", "particles_models", "thermal", "particle_specific_heat");
-//     }
+    /*
+    if (*itpvar == 1) {
+        _get_double(tpart,  4, "lagrangian", "particles_models", "thermal", "particle_temperature");
+        _get_double(cppart, 4, "lagrangian", "particles_models", "thermal", "particle_specific_heat");
+    }
+    */
     break;
   case 2:
     _get_status(iencra, 3, "lagrangian", "particles_models", "coal_fouling");
@@ -1388,8 +1394,10 @@ void CS_PROCF (uilag2, UILAG2) (const int *const nfabor,
 
   /* First iteration only: memory allocation */
 
-//  if (boundaries == NULL)
-//    _init_boundaries(nfabor, nozppm);
+  /*
+    if (boundaries == NULL)
+      _init_boundaries(nfabor, nozppm);
+  */
 
 
   for (izone=0; izone < zones; izone++) {
@@ -1443,18 +1451,18 @@ void CS_PROCF (uilag2, UILAG2) (const int *const nfabor,
           choice = _get_attr("choice", 2, path2, "velocity");
 
           if (cs_gui_strcmp(choice, "fluid"))
-            //iuslag[3*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = -1;
+            /* iuslag[3*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = -1; */
             IUSLAG((*ijuvw -1), izone, iclas) = -1;
 
           else if (cs_gui_strcmp(choice, "norm")) {
             IUSLAG((*ijuvw -1), izone, iclas) = 0;
-            //_get_double(&ruslag[1*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 3, path2, "velocity", "norm");
+            /* _get_double(&ruslag[1*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 3, path2, "velocity", "norm"); */
             _get_double(&RUSLAG((*iuno -1), izone, iclas), 3, path2, "velocity", "norm");
           }
           else if (cs_gui_strcmp(choice, "components")) {
-            //_get_double(&ruslag[1*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 3, path2, "velocity", "velocity_x");
-            //_get_double(&ruslag[2*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 3, path2, "velocity", "velocity_y");
-            //_get_double(&ruslag[3*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 3, path2, "velocity", "velocity_z");
+            /* _get_double(&ruslag[1*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 3, path2, "velocity", "velocity_x"); */
+            /*_get_double(&ruslag[2*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 3, path2, "velocity", "velocity_y"); */
+            /* _get_double(&ruslag[3*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 3, path2, "velocity", "velocity_z"); */
             IUSLAG((*ijuvw -1), izone, iclas) = 1;
             _get_double(&RUSLAG((*iupt -1), izone, iclas), 3, path2, "velocity", "velocity_x");
             _get_double(&RUSLAG((*ivpt -1), izone, iclas), 3, path2, "velocity", "velocity_y");
@@ -1468,22 +1476,22 @@ void CS_PROCF (uilag2, UILAG2) (const int *const nfabor,
           choice = _get_attr("choice", 2, path2, "statistical_weight");
 
           if (cs_gui_strcmp(choice, "prescribed")) {
-            //iuslag[5*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = 1;
-            //_get_double(&ruslag[10*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "statistical_weight");
+            /* iuslag[5*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = 1; */
+            /* _get_double(&ruslag[10*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "statistical_weight"); */
             IUSLAG((*ijprpd -1), izone, iclas) = 1;
             _get_double(&RUSLAG((*ipoit -1), izone, iclas), 2, path2, "statistical_weight");
             RUSLAG((*idebt -1), izone, iclas) = 0;
           }
           else if (cs_gui_strcmp(choice, "rate")) {
-            //iuslag[5*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = 1;
-            //_get_double(&ruslag[11*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "mass_flow_rate");
+            /* iuslag[5*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = 1; */
+            /* _get_double(&ruslag[11*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "mass_flow_rate"); */
             IUSLAG((*ijprpd -1), izone, iclas) = 1;
             _get_double(&RUSLAG((*idebt -1), izone, iclas), 2, path2, "mass_flow_rate");
             RUSLAG((*ipoit -1), izone, iclas) = 1;
           }
           else if (cs_gui_strcmp(choice, "subroutine")) {
-            //iuslag[5*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = 2;
-            //_get_double(&ruslag[10*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "statistical_weight");
+            /* iuslag[5*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = 2; */
+            /* _get_double(&ruslag[10*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "statistical_weight"); */
             IUSLAG((*ijprpd -1), izone, iclas) = 2;
             _get_double(&RUSLAG((*ipoit -1), izone, iclas), 2, path2, "statistical_weight");
             RUSLAG((*idebt -1), izone, iclas) = 0;
@@ -1494,9 +1502,9 @@ void CS_PROCF (uilag2, UILAG2) (const int *const nfabor,
           choice = _get_attr("choice", 2, path2, "diameter");
 
           if (cs_gui_strcmp(choice, "prescribed")) {
-            //iuslag[5*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = 1;
-            //_get_double(&ruslag[5*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "diameter");
-            //_get_double(&ruslag[6*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "diameter_standard_deviation");
+            /* iuslag[5*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = 1; */
+            /* _get_double(&ruslag[5*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "diameter"); */
+            /* _get_double(&ruslag[6*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "diameter_standard_deviation"); */
             IUSLAG((*ijprdp -1), izone, iclas) = 1;
             _get_double(&RUSLAG((*idpt -1), izone, iclas), 2, path2, "diameter");
             _get_double(&RUSLAG((*ivdpt -1), izone, iclas), 2, path2, "diameter_standard_deviation");
@@ -1507,7 +1515,7 @@ void CS_PROCF (uilag2, UILAG2) (const int *const nfabor,
 
           /* density */
 
-          //_get_double(&ruslag[7*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "density");
+          /* _get_double(&ruslag[7*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "density"); */
           _get_double(&RUSLAG((*iropt -1), izone, iclas), 2, path2, "density");
 
           if (*iphyla == 1) {
@@ -1517,16 +1525,16 @@ void CS_PROCF (uilag2, UILAG2) (const int *const nfabor,
             choice = _get_attr("choice", 2, path2, "temperature");
 
             if (cs_gui_strcmp(choice, "prescribed")) {
-              //iuslag[4*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = 1;
-              //_get_double(&ruslag[4*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "temperature");
+              /* iuslag[4*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas] = 1; */
+              /* _get_double(&ruslag[4*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "temperature"); */
               IUSLAG((*ijprtp -1), izone, iclas) = 1;
               _get_double(&RUSLAG((*itpt -1), izone, iclas), 2, path2, "temperature");
             }
             else if (cs_gui_strcmp(choice, "subroutine"))
               IUSLAG((*ijprtp -1), izone, iclas) = 2;
 
-            //_get_double(&ruslag[8*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "specific_heat");
-            //_get_double(&ruslag[9*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "emissivity");
+            /* _get_double(&ruslag[8*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "specific_heat"); */
+            /* _get_double(&ruslag[9*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "emissivity"); */
             _get_double(&RUSLAG((*icpt -1), izone, iclas), 2, path2, "specific_heat");
             _get_double(&RUSLAG((*iepsi -1), izone, iclas), 2, path2, "emissivity");
           }
@@ -1534,10 +1542,10 @@ void CS_PROCF (uilag2, UILAG2) (const int *const nfabor,
           /* coal */
 
           if (*iphyla == 2) {
-            //_get_int(&iuslag[6*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "coal_number");
-            //_get_double(&ruslag[12*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "coal_temperature");
-            //_get_double(&ruslag[13*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "raw_coal_mass_fraction");
-            //_get_double(&ruslag[14*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "char_mass_fraction");
+            /* _get_int(&iuslag[6*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "coal_number"); */
+            /* _get_double(&ruslag[12*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "coal_temperature"); */
+            /* _get_double(&ruslag[13*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "raw_coal_mass_fraction"); */
+            /* _get_double(&ruslag[14*(*nclagm)*(*nflagm)+izone*(*nclagm)+iclas], 2, path2, "char_mass_fraction"); */
             _get_int(&IUSLAG((*inuchl -1), izone, iclas), 2, path2, "coal_number");
             _get_double(&RUSLAG((*ihpt -1), izone, iclas), 2, path2, "coal_temperature");
             _get_double(&RUSLAG((*imcht -1), izone, iclas), 2, path2, "raw_coal_mass_fraction");
diff --git a/src/base/cs_gui_radiative_transfer.c b/src/base/cs_gui_radiative_transfer.c
index 4029daf..e335887 100644
--- a/src/base/cs_gui_radiative_transfer.c
+++ b/src/base/cs_gui_radiative_transfer.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -337,7 +337,7 @@ _radiative_boundary(const   char *const label,
                         param);
   cs_xpath_add_function_text(&path);
 
-  if (cs_gui_get_double(path, &res)){
+  if (cs_gui_get_double(path, &res)) {
     if (res != *value)
       *value = res;
   }
@@ -986,14 +986,17 @@ void CS_PROCF (uiray2, UIRAY2)
 
     /* list of faces building */
 
-//     description = cs_gui_boundary_zone_localization(boundary->label[izone]);
-//
-//     fvm_selector_get_list(cs_glob_mesh->select_b_faces,
-//                           description,
-//                           &faces,
-//                           faces_list);
-//
-//     BFT_FREE(description);
+    /*
+     description = cs_gui_boundary_zone_localization(boundary->label[izone]);
+
+     fvm_selector_get_list(cs_glob_mesh->select_b_faces,
+                           description,
+                           &faces,
+                           faces_list);
+
+     BFT_FREE(description);
+    */
+
     faces_list = cs_gui_get_faces_list(izone,
                                        boundaries->label[izone],
                                        *nfabor, *nozppm, &faces);
diff --git a/src/base/cs_gui_util.c b/src/base/cs_gui_util.c
index 4d59450..a04af42 100644
--- a/src/base/cs_gui_util.c
+++ b/src/base/cs_gui_util.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -88,7 +88,7 @@ BEGIN_C_DECLS
  * Local Macro Definitions
  *============================================================================*/
 
-#define XML_READER_VERSION 1.0
+#define XML_READER_VERSION 2.0
 
 /*=============================================================================
  * Global variables
diff --git a/src/base/cs_io.c b/src/base/cs_io.c
index 45f6119..e46a7be 100644
--- a/src/base/cs_io.c
+++ b/src/base/cs_io.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -181,6 +181,7 @@ struct _cs_io_t {
  * Static global variables
  *============================================================================*/
 
+static char  _type_name_none[] = "  ";
 static char  _type_name_char[] = "c ";  /* Character string */
 static char  _type_name_i4[] =   "i4";  /* Signed 32 bit integer */
 static char  _type_name_i8[] =   "i8";  /* Signed 64 bit integer */
@@ -598,6 +599,7 @@ _file_open(cs_io_t     *cs_io,
   default:
     assert(   cs_io->mode == CS_IO_MODE_READ
            || cs_io->mode == CS_IO_MODE_WRITE);
+    return;
   }
 
 
@@ -1186,6 +1188,7 @@ _echo_header(const char      *sec_name,
       break;
     default:
       assert(0);
+      type_name = _type_name_none;
     }
 
     bft_printf(_("    element type name:      \"%s\"\n"), type_name);
@@ -2037,31 +2040,6 @@ _dump_index(const cs_io_sec_index_t  *idx)
 }
 
 /*============================================================================
- * Public functions definition for Fortran API
- *============================================================================*/
-
-/*----------------------------------------------------------------------------
- * Set the default kernel IO hints to the specified value.
- *
- * Fortran interface :
- *
- * SUBROUTINE IOHINT (IHINT)
- * *****************
- *
- * INTEGER          IHINT       : <-> : IO hints (bit mask)
- *                                        0: default
- *                                        1: disable MPI IO
- *                                        4: MPI IO uses explicit offsets
- *                                        8: MPI IO uses individual pointers
- *----------------------------------------------------------------------------*/
-
-void
-CS_PROCF (iohint, IOHINT) (const cs_int_t  *ihint)
-{
-  cs_glob_io_hints = *ihint;
-}
-
-/*============================================================================
  * Public function definitions
  *============================================================================*/
 
@@ -3118,6 +3096,65 @@ cs_io_write_block_buffer(const char      *sec_name,
 }
 
 /*----------------------------------------------------------------------------
+ * Print information on default options for file access.
+ *----------------------------------------------------------------------------*/
+
+void
+cs_io_defaults_info(void)
+{
+  cs_bool_t  mpi_io = false;
+  const char *fmt = N_("  I/O mode:          %s\n");
+
+#if defined(FVM_HAVE_MPI_IO)
+
+  if (cs_glob_n_ranks > 1) {
+    if (cs_glob_io_hints & FVM_FILE_EXPLICIT_OFFSETS) {
+      bft_printf(_(fmt), _("MPI-IO, explicit offsets"));
+      mpi_io = true;
+    }
+    else if (cs_glob_io_hints & FVM_FILE_INDIVIDUAL_POINTERS) {
+      bft_printf(_(fmt), _("MPI-IO, individual file pointers"));
+      mpi_io = true;
+    }
+    if (mpi_io == false || (cs_glob_io_hints & FVM_FILE_NO_MPI_IO))
+      bft_printf(_(fmt), _("serial IO\n\n"));
+  }
+#endif
+}
+
+/*----------------------------------------------------------------------------
+ * Set the default semantics for file access.
+ *
+ * Allowed values for mpi_io_mode are:
+ *   0: no MPI-IO,
+ *   1: MPI-IO with explicit offsets,
+ *   2: MPI-IO with individual file pointers
+ *
+ * Invalid values (for example an MPI-IO mode with no MPI or MPI-IO
+ * support) are silently ignored.
+ *
+ * parameters:
+ *   mpi_io_mode <-- mode for default semantics
+ *----------------------------------------------------------------------------*/
+
+void
+cs_io_set_defaults(int  mpi_io_mode)
+{
+#if defined(HAVE_MPI)
+
+  if (mpi_io_mode == 0)
+    cs_glob_io_hints = FVM_FILE_NO_MPI_IO;
+  else if (mpi_io_mode == 1)
+    cs_glob_io_hints = FVM_FILE_EXPLICIT_OFFSETS;
+  else if (mpi_io_mode == 2)
+    cs_glob_io_hints = FVM_FILE_INDIVIDUAL_POINTERS;
+
+#endif
+
+  fvm_file_set_default_semantics(cs_glob_io_hints);
+}
+
+/*----------------------------------------------------------------------------
  * Dump a kernel IO file handle's metadata.
  *
  * parameters:
diff --git a/src/base/cs_join.c b/src/base/cs_join.c
index 0ec667e..13317ec 100644
--- a/src/base/cs_join.c
+++ b/src/base/cs_join.c
@@ -87,29 +87,113 @@ BEGIN_C_DECLS
  * Local Structure Definitions
  *===========================================================================*/
 
-typedef struct {
-
-  cs_join_param_t   param;      /* Set of parameters used to control
-                                   the joining operations */
-
-  char             *criteria;   /* Criteria used to select border faces
-                                   implied in the joining operation */
-
-} cs_join_t;
-
 /*============================================================================
  * Static global variables
  *===========================================================================*/
 
-static int  cs_glob_n_joinings = 0;
+int  cs_glob_n_joinings = 0;
 
-static cs_join_t  **cs_glob_join_array = NULL;
+cs_join_t  **cs_glob_join_array = NULL;
 
 /*============================================================================
  * Private function definitions
  *===========================================================================*/
 
 /*----------------------------------------------------------------------------
+ * Compute the cross product of two vectors.
+ *
+ * parameters:
+ *  v1     <--  first vector
+ *  v2     <--  second vector
+ *  result -->  cross product v1xv2
+ *
+ * returns:
+ *  the resulting cross product (v1 x v2)
+ *---------------------------------------------------------------------------*/
+
+inline static void
+_cross_product(double   v1[],
+               double   v2[],
+               double   result[])
+{
+  result[0] = v1[1] * v2[2] - v2[1] * v1[2];
+  result[1] = v2[0] * v1[2] - v1[0] * v2[2];
+  result[2] = v1[0] * v2[1] - v2[0] * v1[1];
+}
+
+/*----------------------------------------------------------------------------
+ * Compute the dot product of two vectors.
+ *
+ * parameters:
+ *  v1     <--  first vector
+ *  v2     <--  second vector
+ *
+ * returns:
+ *  the resulting dot product (v1.v2)
+ *---------------------------------------------------------------------------*/
+
+inline static double
+_dot_product(double   v1[],
+             double   v2[])
+{
+  int  i;
+  double  result = 0.0;
+
+  for (i = 0; i < 3; i++)
+    result += v1[i] * v2[i];
+
+  return result;
+}
+
+/*----------------------------------------------------------------------------
+ * Get the norm of a vector.
+ *
+ * parameters:
+ *  v      <->  vector to work with.
+ *---------------------------------------------------------------------------*/
+
+inline static double
+_norm(double   v[])
+{
+  return  sqrt(_dot_product(v, v));
+}
+
+/*----------------------------------------------------------------------------
+ * Compute the distance between two vertices.
+ *
+ * parameters:
+ *   id         <-- local id of the vertex to deal with
+ *   quantities <-- array keeping edge vector and its length
+ *
+ * returns:
+ *   sinus in radian between edges sharing vertex id
+ *---------------------------------------------------------------------------*/
+
+inline static double
+_compute_sinus(int           id,
+               const double  quantities[])
+{
+  int  i;
+
+  double  sinus;
+  double  norm_a, norm_b, a[3], b[3], c[3];
+
+  for (i = 0; i < 3; i++) {
+    a[i] = -quantities[4*id+i];
+    b[i] = quantities[4*(id+1)+i];
+  }
+
+  norm_a = quantities[4*id+3];
+  norm_b = quantities[4*(id+1)+3];
+
+  _cross_product(a, b, c);
+
+  sinus = _norm(c) / (norm_a * norm_b);
+
+  return sinus;
+}
+
+/*----------------------------------------------------------------------------
  * Compute the distance between two vertices.
  *
  * parameters:
@@ -121,8 +205,8 @@ static cs_join_t  **cs_glob_join_array = NULL;
  *---------------------------------------------------------------------------*/
 
 inline static double
-_compute_length(const cs_real_t  a[3],
-                const cs_real_t  b[3])
+_compute_length(const double  a[3],
+                const double  b[3])
 {
   double  length;
 
@@ -134,9 +218,102 @@ _compute_length(const cs_real_t  a[3],
 }
 
 /*----------------------------------------------------------------------------
- * Define for each vertex a tolerance which is the radius of the
- * sphere in which the vertex can be fused with another vertex.
- * This tolerance is computed from the given list of faces (interior or border)
+ * Compute tolerance (mode 2)
+ * tolerance = min[ edge length * sinus(v1v2) * fraction]
+ *
+ * parameters:
+ *   vertex_coords    <--  coordinates of vertices.
+ *   vertex_tolerance <->  local tolerance affected to each vertex and
+ *                         to be updated
+ *   n_faces          <--  number of selected faces
+ *   face_lst         <--  list of faces selected to compute the tolerance
+ *   f2v_idx          <--  "face -> vertex" connect. index
+ *   f2v_lst          <--  "face -> vertex" connect. list
+ *   fraction         <--  parameter used to compute the tolerance
+ *---------------------------------------------------------------------------*/
+
+static void
+_compute_tolerance2(const cs_real_t   vtx_coords[],
+                    double            vtx_tolerance[],
+                    const cs_int_t    n_faces,
+                    const cs_int_t    face_lst[],
+                    const cs_int_t    f2v_idx[],
+                    const cs_int_t    f2v_lst[],
+                    double            fraction)
+{
+  int  i, j, k, coord;
+  double  tolerance, sinus;
+  double  a[3], b[3];
+
+  int   n_max_face_vertices = 0;
+  int  *face_connect = NULL;
+  double  *edge_quantities = NULL;
+
+  for (i = 0; i < n_faces; i++) {
+    int  fid = face_lst[i] - 1;
+    n_max_face_vertices = CS_MAX(n_max_face_vertices,
+                                 f2v_idx[fid+1] - f2v_idx[fid]);
+  }
+
+  BFT_MALLOC(face_connect, n_max_face_vertices + 1, int);
+  BFT_MALLOC(edge_quantities, 4 * (n_max_face_vertices + 1), double);
+
+  for (i = 0; i < n_faces; i++) {
+
+    int  face_id = face_lst[i] - 1;
+    int  start = f2v_idx[face_id] - 1;
+    int  end = f2v_idx[face_id + 1] - 1;
+    int  n_face_vertices = end - start;
+
+    /* Keep face connect */
+
+    for (k = 0, j = start; j < end; j++, k++)
+      face_connect[k] = f2v_lst[j] - 1;
+    face_connect[k] = f2v_lst[start] - 1;
+
+    /* Keep edge lengths and edge vectors:
+        - edge_quantities[4*k+0..2] = edge vector
+        - edge_quantities[4*k+3] = edge length */
+
+    for (k = 0; k < n_face_vertices; k++) {
+
+      for (coord = 0; coord < 3; coord++) {
+        a[coord] = vtx_coords[3*face_connect[k] + coord];
+        b[coord] = vtx_coords[3*face_connect[k+1] + coord];
+        edge_quantities[4*(k+1)+coord] = b[coord] - a[coord];
+      }
+      edge_quantities[4*(k+1)+3] = _compute_length(a, b);
+
+    }
+
+    for (coord = 0; coord < 4; coord++)
+      edge_quantities[coord] = edge_quantities[4*k+coord];
+
+    /* Loop on the vertices of the face to update tolerance on
+       each vertex */
+
+    for (k = 0; k < n_face_vertices; k++) {
+
+      int  vid = face_connect[k];
+
+      tolerance = fraction * CS_MIN(edge_quantities[4*k+3],
+                                    edge_quantities[4*(k+1)+3]);
+      sinus = _compute_sinus(k, edge_quantities);
+
+      vtx_tolerance[vid] = FVM_MIN(vtx_tolerance[vid], sinus*tolerance);
+
+    }
+
+  } /* End of loop on faces */
+
+  BFT_FREE(face_connect);
+  BFT_FREE(edge_quantities);
+
+}
+
+/*----------------------------------------------------------------------------
+ * Compute tolerance (mode 1)
+ * tolerance = shortest edge length * fraction
  *
  * parameters:
  *   vertex_coords    <--  coordinates of vertices.
@@ -150,17 +327,17 @@ _compute_length(const cs_real_t  a[3],
  *---------------------------------------------------------------------------*/
 
 static void
-_get_local_tolerance(const cs_real_t  vtx_coords[],
-                     double           vtx_tolerance[],
-                     const cs_int_t   n_faces,
-                     const cs_int_t   face_lst[],
-                     const cs_int_t   face_vtx_idx[],
-                     const cs_int_t   face_vtx_lst[],
-                     double           fraction)
+_compute_tolerance1(const cs_real_t   vtx_coords[],
+                    double            vtx_tolerance[],
+                    const cs_int_t    n_faces,
+                    const cs_int_t    face_lst[],
+                    const cs_int_t    face_vtx_idx[],
+                    const cs_int_t    face_vtx_lst[],
+                    double            fraction)
 {
   cs_int_t  i, j, k, start, end, face_id, vtx_id1, vtx_id2;
   double  length, tolerance;
-  cs_real_t  a[3], b[3];
+  double  a[3], b[3];
 
   for (i = 0; i < n_faces; i++) {
 
@@ -206,6 +383,64 @@ _get_local_tolerance(const cs_real_t  vtx_coords[],
 
 }
 
+/*----------------------------------------------------------------------------
+ * Define for each vertex a tolerance which is the radius of the
+ * sphere in which the vertex can be fused with another vertex.
+ * This tolerance is computed from the given list of faces (interior or border)
+ *
+ * parameters:
+ *   param            <--  set of user-defined parameters for the joining
+ *   vertex_coords    <--  coordinates of vertices.
+ *   vertex_tolerance <->  local tolerance affected to each vertex and
+ *                         to be updated
+ *   n_faces          <--  number of selected faces
+ *   face_lst         <--  list of faces selected to compute the tolerance
+ *   face_vtx_idx     <--  "face -> vertex" connect. index
+ *   face_vtx_lst     <--  "face -> vertex" connect. list
+ *---------------------------------------------------------------------------*/
+
+static void
+_get_local_tolerance(cs_join_param_t  param,
+                     const cs_real_t  vtx_coords[],
+                     double           vtx_tolerance[],
+                     const cs_int_t   n_faces,
+                     const cs_int_t   face_lst[],
+                     const cs_int_t   face_vtx_idx[],
+                     const cs_int_t   face_vtx_lst[])
+{
+
+  if (param.tcm % 10 == 1) {
+
+    /* tol = min(edge length * fraction) */
+
+    _compute_tolerance1(vtx_coords,
+                        vtx_tolerance,
+                        n_faces,
+                        face_lst,
+                        face_vtx_idx,
+                        face_vtx_lst,
+                        param.fraction);
+
+  }
+  else if (param.tcm % 10 == 2) {
+
+    /* tol = min(edge length * sin(v1v2) * fraction) */
+
+    _compute_tolerance2(vtx_coords,
+                        vtx_tolerance,
+                        n_faces,
+                        face_lst,
+                        face_vtx_idx,
+                        face_vtx_lst,
+                        param.fraction);
+
+  }
+  else
+    bft_error(__FILE__, __LINE__, 0,
+              _("  Tolerance computation mode (%d) is not defined\n"));
+
+}
+
 #if defined(HAVE_MPI)
 
 /*----------------------------------------------------------------------------
@@ -425,35 +660,35 @@ _extract_mesh(const char              *name,
 
       /* Define local tolerance */
 
-      _get_local_tolerance(vtx_coord,
+      _get_local_tolerance(param,
+                           vtx_coord,
                            vtx_tolerance,
                            selection->n_faces,
                            selection->faces,
                            b_f2v_idx,
-                           b_f2v_lst,
-                           param.fraction);
+                           b_f2v_lst);
 
-      if (param.include_adj_faces == true) {
+      if (param.tcm / 10 == 0) {
 
         /* Update local tolerance with adjacent border faces */
 
-        _get_local_tolerance(vtx_coord,
+        _get_local_tolerance(param,
+                             vtx_coord,
                              vtx_tolerance,
                              selection->n_b_adj_faces,
                              selection->b_adj_faces,
                              b_f2v_idx,
-                             b_f2v_lst,
-                             param.fraction);
+                             b_f2v_lst);
 
         /* Update local tolerance with adjacent interior faces */
 
-        _get_local_tolerance(vtx_coord,
+        _get_local_tolerance(param,
+                             vtx_coord,
                              vtx_tolerance,
                              selection->n_i_adj_faces,
                              selection->i_adj_faces,
                              i_f2v_idx,
-                             i_f2v_lst,
-                             param.fraction);
+                             i_f2v_lst);
 
       } /* Include adjacent faces in the computation of the vertex tolerance */
 
@@ -489,7 +724,7 @@ _extract_mesh(const char              *name,
 
   } /* End if selection->n_vertices > 0 */
 
-#if 0 && defined(DEBUG) && !defined(NDEBUG)   /* Sanity check */
+#if 1 && defined(DEBUG) && !defined(NDEBUG)   /* Sanity check */
   for (i = 0; i < selection->n_vertices; i++)
     if (vtx_data[i].tolerance > (DBL_MAX - 1.))
       bft_error(__FILE__, __LINE__, 0,
@@ -520,8 +755,8 @@ _extract_mesh(const char              *name,
                           vtx_data);
 
     if (param.verbosity > 1)
-      bft_printf(_("  Global number of selected vertices: %11d\n\n"),
-                 selection->n_g_vertices);
+      bft_printf(_("  Global number of selected vertices: %11lu\n\n"),
+                 (unsigned long)(selection->n_g_vertices));
 
     fvm_io_num_destroy(select_vtx_io_num);
 
@@ -529,7 +764,7 @@ _extract_mesh(const char              *name,
 
 #endif /* defined(HAVE_MPI) */
 
-  /* Define the join mesh strcuture from the selected faces and the
+  /* Define the join mesh structure from the selected faces and the
      related vtx_data on selected vertices */
 
   join_mesh = cs_join_mesh_create_from_extract(name,
@@ -544,6 +779,9 @@ _extract_mesh(const char              *name,
                                                selection->vertices,
                                                vtx_data);
 
+  if (param.verbosity > 0)
+    cs_join_mesh_minmax_tol(param, join_mesh);
+
   /* Free memory */
 
   BFT_FREE(vtx_data);
@@ -557,7 +795,7 @@ _extract_mesh(const char              *name,
                  "        CPU time:                   %10.3g\n"),
                clock_end - clock_start, cpu_end - cpu_start);
 
-  if (param.verbosity > 1)
+  if (param.verbosity > 2)
     cs_join_post_dump_mesh("LocalMesh", join_mesh, param);
 
   return  join_mesh;
@@ -761,7 +999,6 @@ _build_join_structures(cs_join_param_t           join_param,
   BFT_FREE(mesh_name);
 
   /*
-
     Define a cs_join_mesh_t structure on only faces which will be
     potentially modified by the joining operation.
 
@@ -776,7 +1013,6 @@ _build_join_structures(cs_join_param_t           join_param,
 
     Get the associated edges and the list of potential intersections
     between these edges through an edge-edge visibility.
-
   */
 
   _get_work_struct(join_param,
@@ -790,11 +1026,12 @@ _build_join_structures(cs_join_param_t           join_param,
   clock_end = bft_timer_wtime();
   cpu_end = bft_timer_cpu_time();
 
-  if (join_param.verbosity > 0)
+  if (join_param.verbosity > 1)
     bft_printf(_("\n  Definition of structures for the joining algorithm:\n"
                  "      wall clock time:            %10.3g\n"
                  "      CPU time:                   %10.3g\n"),
                clock_end - clock_start, cpu_end - cpu_start);
+  bft_printf_flush();
 
   /* Return pointers */
 
@@ -896,13 +1133,20 @@ _intersect_edges(cs_join_param_t          param,
   }
 #endif
 
-  if (join_type == CS_JOIN_TYPE_CONFORM)
+  if (join_type == CS_JOIN_TYPE_CONFORM) {
+
     bft_printf(_("\n  Joining operation is conforming.\n"));
-  else if (join_type == CS_JOIN_TYPE_NO_CONFORM)
-    bft_printf(_("\n  Joining operation is non-conforming.\n"));
-  bft_printf_flush();
+    bft_printf_flush();
+
+    inter_set = cs_join_inter_set_destroy(inter_set);
+
+  }
+  else {
 
-  if (join_type == CS_JOIN_TYPE_NO_CONFORM) {
+    assert(join_type == CS_JOIN_TYPE_NO_CONFORM);
+
+    bft_printf(_("\n  Joining operation is non-conforming.\n"));
+    bft_printf_flush();
 
     /* Creation of new vertices. Update list of equivalent vertices.
        Associate to each intersection a vertex (old or created) */
@@ -937,12 +1181,16 @@ _intersect_edges(cs_join_param_t          param,
                                         sync_block,
                                         inter_edges);
 
+      /* Add new vertices to edge description if necessary */
+
       cs_join_intersect_update_struct(work_join_edges,
                                       work_join_mesh,
                                       &inter_edges);
 
       sync_block = cs_join_inter_edges_destroy(sync_block);
 
+      cs_join_mesh_sync_vertices(work_join_mesh);
+
     }
 #endif
 
@@ -1086,14 +1334,11 @@ _merge_vertices(cs_join_param_t           param,
 
   /* Post if required and level of verbosity is reached */
 
-  if (param.verbosity > 1)
+  if (param.verbosity > 2)
     cs_join_post_dump_mesh("MergeWorkMesh", work_join_mesh, param);
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
-  if (param.verbosity > 2) { /* Dump distributed face connectivity */
-    bft_printf("\n\n cs_join_edges_t structure after vertex merge\n");
     cs_join_mesh_dump_edges(work_join_edges, work_join_mesh);
-  }
 #endif
 
   /* Update cs_mesh_t structure after the vertex merge */
@@ -1113,6 +1358,7 @@ _merge_vertices(cs_join_param_t           param,
                  "    wall clock time:            %10.3g\n"
                  "    CPU time:                   %10.3g\n"),
                clock_end - clock_start, cpu_end - cpu_start);
+  bft_printf_flush();
 
   /* Set return pointers */
 
@@ -1132,7 +1378,7 @@ _merge_vertices(cs_join_param_t           param,
  *  work_face_normal     <--  normal based on the original face definition
  *  rank_face_gnum_index <--  index on face global numering to determine the
  *                            related rank
- *  p_work_join_mesh    <->  pointer to a cs_join_mesh_t structure
+ *  p_work_join_mesh     <->  pointer to a cs_join_mesh_t structure
  *  local_join_mesh      <--  pointer to a cs_join_mesh_t structure
  *  p_mesh               <->  pointer to cs_mesh_t struct.
  *---------------------------------------------------------------------------*/
@@ -1187,10 +1433,11 @@ _split_faces(cs_join_param_t      param,
                  "    wall clock time:            %10.3g\n"
                  "    CPU time:                   %10.3g\n"),
                clock_end - clock_start, cpu_end - cpu_start);
+  bft_printf_flush();
 
   /* Post if required and level of verbosity is reached */
 
-  if (param.verbosity > 1)
+  if (param.verbosity > 2)
     cs_join_post_dump_mesh("SplitWorkMesh", *p_work_join_mesh, param);
 
   /* Free memory */
@@ -1225,7 +1472,26 @@ _destroy_all_joinings(void)
 
 /*============================================================================
  *  Public function prototypes for Fortran API
- *============================================================================*/
+ *===========================================================================*/
+
+/*----------------------------------------------------------------------------
+ * Get the number of joining operations already defined
+ *
+ * Fortran Interface:
+ *
+ * SUBROUTINE NUMJOI
+ * *****************
+ *
+ * INTEGER        numjoi       : --> : number of joining op. already defined
+ *----------------------------------------------------------------------------*/
+
+void CS_PROCF(numjoi, NUMJOI)
+(
+ cs_int_t    *numjoi
+)
+{
+  *numjoi = cs_glob_n_joinings;
+}
 
 /*----------------------------------------------------------------------------
  * Define new boundary faces joining.
@@ -1235,32 +1501,26 @@ _destroy_all_joinings(void)
  * SUBROUTINE DEFJO1
  * *****************
  *
+ * INTEGER        numjoi           : <-- : number related to the joining op.
  * CHARACTER*     joining_criteria : <-- : boundary face selection criteria,
  * REAL           fraction         : <-- : parameter for merging vertices
  * REAL           plane            : <-- : parameter for splitting faces
- * REAL           rtf              : <-- : reduction of tolerance factor
- * REAL           mtf              : <-- : merge tolerance coefficient
- * REAL           etf              : <-- : equivalence tolerance coefficient
  * INTEGER        verbosity        : <-- : verbosity level
  * INTEGER        joining_c_len    : <-- : length of joining_criteria
- *----------------------------------------------------------------------------*/
+ *---------------------------------------------------------------------------*/
 
 void CS_PROCF(defjo1, DEFJO1)
 (
+ cs_int_t    *numjoi,
  const char  *joining_criteria,
  cs_real_t   *fraction,
  cs_real_t   *plane,
- cs_real_t   *rtf,
- cs_real_t   *mtf,
- cs_real_t   *etf,
  cs_int_t    *verbosity,
  cs_int_t    *joining_c_len
  CS_ARGF_SUPP_CHAINE
 )
 {
   char *_joining_criteria = NULL;
-  int tml, tmb, max_sub_faces;
-  double tmr;
 
   if (joining_criteria != NULL && *joining_c_len > 0)
     _joining_criteria = cs_base_string_f_to_c_create(joining_criteria,
@@ -1268,42 +1528,84 @@ void CS_PROCF(defjo1, DEFJO1)
   if (_joining_criteria != NULL && strlen(_joining_criteria) == 0)
     cs_base_string_f_to_c_free(&_joining_criteria);
 
-  /* Maximum allowable number of sub-faces for a given face */
+  cs_join_add(*numjoi,
+              _joining_criteria,
+              *fraction,
+              *plane,
+              *verbosity);
+
+  if (_joining_criteria != NULL)
+    cs_base_string_f_to_c_free(&_joining_criteria);
+}
 
-  max_sub_faces = 100;
+/*----------------------------------------------------------------------------
+ * Set advanced parameters for the joining algorithm.
+ *
+ * Fortran Interface:
+ *
+ * SUBROUTINE SETAJP
+ * *****************
+ *
+ * INTEGER      join_num          : <-- : join number
+ * REAL         mtf               : <-- : merge tolerance coefficient
+ * REAL         pmf               : <-- : pre-merge factor
+ * INTEGER      tcm               : <-- : tolerance computation mode
+ * INTEGER      icm               : <-- : intersection computation mode
+ * INTEGER      maxbrk            : <-- : max number of tolerance reduction
+ * INTEGER      max_sub_faces     : <-- : max. possible number of sub-faces
+ *                                        by splitting a selected face
+ * INTEGER      tml               : <-- : tree max level
+ * INTEGER      tmb               : <-- : tree max boxes
+ * REAL         tmr               : <-- : tree max ratio
+ *---------------------------------------------------------------------------*/
 
-  /* Default values for tree-base algorithm control parameters.
-   * These parameters are not available on the user side and must be
-   * modified here if needed. */
+void CS_PROCF(setajp, SETAJP)
+(
+ cs_int_t    *join_num,
+ cs_real_t   *mtf,
+ cs_real_t   *pmf,
+ cs_int_t    *tcm,
+ cs_int_t    *icm,
+ cs_int_t    *maxbrk,
+ cs_int_t    *max_sub_faces,
+ cs_int_t    *tml,
+ cs_int_t    *tmb,
+ cs_real_t   *tmr
+ CS_ARGF_SUPP_CHAINE
+)
+{
+  cs_int_t  i, join_id = -1;
+  cs_join_t  *join = NULL;
 
-  /* Tree Max. Level: deepest level reachable during the tree building */
+  /* Look for the joining structure related to "join_num" */
 
-  tml = 30;
+  for (i = 0; i < cs_glob_n_joinings; i++) {
 
-  /* Tree Max. Boxes: max. number of boxes which can be related to a leaf of
-   *                  the tree if level != tree_max_level */
+    join = cs_glob_join_array[i];
+    if (*join_num == join->param.num) {
+      join_id = i;
+      break;
+    }
 
-  tmb = 30;
+  }
 
-  /* Tree Max. Ratio: stop tree building if n_linked_boxes in the whole tree
-   *                  is greater than tree_max_box_ratio*n_init_boxes */
+  if (join_id < 0)
+    bft_error(__FILE__, __LINE__, 0,
+              _("  Join number %d is not defined.\n"), *join_num);
 
-  tmr = 10.0;
+  assert(join != NULL);
 
-  cs_join_add(_joining_criteria,
-              *fraction,
-              *plane,
-              *rtf,
-              *mtf,
-              *etf,
-              max_sub_faces,
-              tml,
-              tmb,
-              tmr,
-              *verbosity);
+  cs_join_set_advanced_param(join,
+                             *mtf,
+                             *pmf,
+                             *tcm,
+                             *icm,
+                             *maxbrk,
+                             *max_sub_faces,
+                             *tml,
+                             *tmb,
+                             *tmr);
 
-  if (_joining_criteria != NULL)
-    cs_base_string_f_to_c_free(&_joining_criteria);
 }
 
 /*============================================================================
@@ -1314,33 +1616,18 @@ void CS_PROCF(defjo1, DEFJO1)
  * Create and initialize a cs_join_t structure.
  *
  * parameters:
+ *   join_number   <-- number related to the joining operation
  *   sel_criteria  <-- boundary face selection criteria
  *   fraction      <-- value of the fraction parameter
  *   plane         <-- value of the plane parameter
- *   rtf           <-- value of the "reduction tolerance factor" parameter
- *   mtf           <-- value of the "merge tolerance factor" parameter
- *   etf           <-- value of the "edge equiv. tolerance factor" parameter
- *   max_sub_faces <-- value of the max_sub_faces
- *   tml           <-- value of the "tree max level" parameter
- *   tmb           <-- value of the "tree max boxes" parameter
- *   tmr           <-- value of the "tree max ratio" parameter
  *   verbosity     <-- level of verbosity required
- *
- * returns:
- *   a pointer to a cs_join_t structure.
  *---------------------------------------------------------------------------*/
 
 void
-cs_join_add(char   *sel_criteria,
+cs_join_add(int     join_number,
+            char   *sel_criteria,
             float   fraction,
             float   plane,
-            float   rtf,
-            float   mtf,
-            float   etf,
-            int     max_sub_faces,
-            int     tml,
-            int     tmb,
-            float   tmr,
             int     verbosity)
 {
   size_t  l;
@@ -1356,27 +1643,6 @@ cs_join_add(char   *sel_criteria,
                 "  It must be between [0.0, 1.0[ and is here: %f\n"),
               fraction);
 
-  if (rtf < 0.0 || rtf >= 1.0)
-    bft_error(__FILE__, __LINE__, 0,
-              _("Mesh joining:"
-                "  Forbidden value for the tolerance reduction factor.\n"
-                "  It must be between [0.0, 1.0[ and not: %f\n"),
-              rtf);
-
-  if (mtf < 0.0)
-    bft_error(__FILE__, __LINE__, 0,
-              _("Mesh joining:"
-                "  Forbidden value for the merge tolerance factor.\n"
-                "  It must be positive or nul and not: %f\n"),
-              mtf);
-
-  if (etf < 0.0)
-    bft_error(__FILE__, __LINE__, 0,
-              _("Mesh joining:"
-                "  Forbidden value for the equivalence tolerance factor.\n"
-                "  It must be positive or zero and not: %f\n"),
-              etf);
-
   if (plane < 0.0 || plane >= 90.0)
     bft_error(__FILE__, __LINE__, 0,
               _("Mesh joining:"
@@ -1384,21 +1650,14 @@ cs_join_add(char   *sel_criteria,
                 "  It must be between [0, 90] and is here: %f\n"),
               plane);
 
-  /* Allocate and initialize a cs_join_t structure */
+   /* Allocate and initialize a cs_join_t structure */
 
   BFT_REALLOC(cs_glob_join_array, cs_glob_n_joinings + 1, cs_join_t *);
   BFT_MALLOC(join, 1, cs_join_t);
 
-  join->param = cs_join_param_define(cs_glob_n_joinings,
+  join->param = cs_join_param_define(join_number,
                                      fraction,
                                      plane,
-                                     rtf,
-                                     mtf,
-                                     etf,
-                                     max_sub_faces,
-                                     tml,
-                                     tmb,
-                                     tmr,
                                      verbosity);
 
   /* Copy the selection criteria for future use */
@@ -1414,8 +1673,132 @@ cs_join_add(char   *sel_criteria,
 }
 
 /*----------------------------------------------------------------------------
+ * Set advanced parameters to user-defined values.
+ *
+ * parameters:
+ *   join           <-> pointer a to cs_join_t struct. to update
+ *   mtf            <-- merge tolerance coefficient
+ *   pmf            <-- pre-merge factor
+ *   tcm            <-- tolerance computation mode
+ *   icm            <-- intersection computation mode
+ *   maxbrk         <-- max number of equivalences to break (merge step)
+ *   max_sub_faces  <-- max. possible number of sub-faces by splitting a face
+ *   tml            <-- tree max level
+ *   tmb            <-- tree max boxes
+ *   tmr            <-- tree max ratio
+ *---------------------------------------------------------------------------*/
+
+void
+cs_join_set_advanced_param(cs_join_t   *join,
+                           cs_real_t    mtf,
+                           cs_real_t    pmf,
+                           cs_int_t     tcm,
+                           cs_int_t     icm,
+                           cs_int_t     maxbrk,
+                           cs_int_t     max_sub_faces,
+                           cs_int_t     tml,
+                           cs_int_t     tmb,
+                           cs_real_t    tmr)
+{
+  /* Deepest level reachable during tree building */
+
+  if (tml < 1)
+    bft_error(__FILE__, __LINE__, 0,
+              _("Mesh joining:"
+                "  Forbidden value for the tml parameter.\n"
+                "  It must be between > 0 and is here: %d\n"), tml);
+
+  join->param.tree_max_level = tml;
+
+  /* Max. number of boxes which can be related to a leaf of the tree
+     if level != tree_max_level */
+
+  if (tmb < 1)
+    bft_error(__FILE__, __LINE__, 0,
+              _("Mesh joining:"
+                "  Forbidden value for the tmb parameter.\n"
+                "  It must be between > 0 and is here: %d\n"), tmb);
+
+  join->param.tree_n_max_boxes = tmb;
+
+  /* Stop tree building if:
+     n_linked_boxes > tree_max_box_ratio*n_init_boxes */
+
+  if (tmr <= 0.0 )
+    bft_error(__FILE__, __LINE__, 0,
+              _("Mesh joining:"
+                "  Forbidden value for the tmr parameter.\n"
+                "  It must be between > 0.0 and is here: %f\n"), tmr);
+
+  join->param.tree_max_box_ratio = tmr;
+
+  /* Coef. used to modify the tolerance associated to each vertex BEFORE the
+     merge operation.
+     If coef = 0.0 => no vertex merge
+     If coef < 1.0 => reduce vertex merge
+     If coef = 1.0 => no change
+     If coef > 1.0 => increase vertex merge */
+
+  if (mtf < 0.0)
+    bft_error(__FILE__, __LINE__, 0,
+              _("Mesh joining:"
+                "  Forbidden value for the merge tolerance factor.\n"
+                "  It must be positive or nul and not: %f\n"), mtf);
+
+  join->param.merge_tol_coef = mtf;
+
+   /* Maximum number of equivalence breaks */
+
+  if (maxbrk < 0)
+    bft_error(__FILE__, __LINE__, 0,
+              _("Mesh joining:"
+                "  Forbidden value for the max. number of tolerance breaks.\n"
+                "  It must be between >= 0 and not: %d\n"), maxbrk);
+
+  join->param.n_max_equiv_breaks = maxbrk;
+
+  /* Pre-merge factor. This parameter is used to define a limit
+     under which two vertices are merged before the merge step.
+     Tolerance limit for the pre-merge = pmf * fraction
+     Default value: 0.10 */
+
+  join->param.pre_merge_factor = pmf;
+
+  /* Tolerance computation mode */
+
+  if ( (tcm)%10 < 1 || (tcm)%10 > 2)
+    bft_error(__FILE__, __LINE__, 0,
+              _("Mesh joining:"
+                "  Forbidden value for the tcm parameter.\n"
+                "  It must be between 1, 2 or 11, 12 and here is: %d\n"), tcm);
+
+  join->param.tcm = tcm;
+
+  /* Intersection computation mode */
+
+  if (icm != 1 && icm != 2)
+    bft_error(__FILE__, __LINE__, 0,
+              _("Mesh joining:"
+                "  Forbidden value for icm parameter.\n"
+                "  It must be 1 or 2 and here is: %d\n"), icm);
+
+  join->param.icm = icm;
+
+  /* Maximum number of sub-faces */
+
+  if (max_sub_faces < 1)
+    bft_error(__FILE__, __LINE__, 0,
+              _("Mesh joining:"
+                "  Forbidden value for the maxsf parameter.\n"
+                "  It must be between > 0 and here is: %d\n"), max_sub_faces);
+
+  join->param.max_sub_faces = max_sub_faces;
+
+}
+
+/*----------------------------------------------------------------------------
  * Apply all the defined joining operations.
- *----------------------------------------------------------------------------*/
+ *---------------------------------------------------------------------------*/
 
 void
 cs_join_all(void)
@@ -1461,15 +1844,29 @@ cs_join_all(void)
       bft_printf(_("\n"
                    "  Parameters for the joining operation:\n"
                    "    Shortest incident edge fraction:          %8.5f\n"
-                   "      Main tolerance reduction factor:        %8.5f\n"
-                   "      Vertex matching tolerance reduction:    %8.5f\n"
-                   "      Merge step tolerance multiplier:        %8.5f\n"
                    "    Maximum angle between joined face planes: %8.5f\n\n"),
-                 join_param.fraction,
-                 join_param.reduce_tol_factor,
-                 join_param.edge_equiv_tol_coef,
-                 join_param.merge_tol_coef,
-                 join_param.plane);
+                 join_param.fraction, join_param.plane);
+
+      if (join_param.verbosity > 1)
+         bft_printf(_("  Advanced join parameters:\n"
+                      "    Deepest level reachable in tree building: %8d\n"
+                      "    Max boxes by leaf:                        %8d\n"
+                      "    Max ratio of linked boxes / init. boxes:  %8.5f\n"
+                      "    Merge step tolerance multiplier:          %8.5f\n"
+                      "    Pre-merge factor:                         %8.5f\n"
+                      "    Tolerance computation mode:               %8d\n"
+                      "    Intersection computation mode:            %8d\n"
+                      "    Max. number of equiv. breaks:             %8d\n"
+                      "    Max. number of subfaces by face:          %8d\n\n"),
+                    join_param.tree_max_level,
+                    join_param.tree_n_max_boxes,
+                    join_param.tree_max_box_ratio,
+                    join_param.merge_tol_coef,
+                    join_param.pre_merge_factor,
+                    join_param.tcm, join_param.icm,
+                    join_param.n_max_equiv_breaks,
+                    join_param.max_sub_faces);
+
       cs_mesh_print_info(mesh, _(" Before joining"));
       bft_printf("\n");
     }
@@ -1519,6 +1916,9 @@ cs_join_all(void)
     join_select = cs_join_select_create(join_info->criteria,
                                         join_param.verbosity);
 
+    bft_printf(_("\n  Element selection successfully done.\n"));
+    bft_printf_flush();
+
     /* Free arrays and structures needed for selection */
 
     BFT_FREE(b_face_cog);
@@ -1650,8 +2050,7 @@ cs_join_all(void)
     bft_printf_flush();
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
-    if (join_param.verbosity > 2) {
-
+    {
       int  len;
       FILE  *dbg_file = NULL;
       char  *filename = NULL;
@@ -1668,13 +2067,6 @@ cs_join_all(void)
       BFT_FREE(filename);
       fclose(dbg_file);
     }
-
-    cs_debug_glob_mesh_dump("FinalGlobalVertices", mesh);
-#endif
-
-#if defined(HAVE_MPI)   /* Synchronization */
-    if (cs_glob_n_ranks > 1)
-      MPI_Barrier(cs_glob_mpi_comm);
 #endif
 
     if (join_param.verbosity > 0) {
@@ -1683,6 +2075,11 @@ cs_join_all(void)
       bft_printf("\n");
     }
 
+#if defined(HAVE_MPI)   /* Synchronization */
+    if (cs_glob_n_ranks > 1)
+      MPI_Barrier(cs_glob_mpi_comm);
+#endif
+
   } /* End of loop on joinings */
 
   /* Destroy all remaining structures relative to joining operation */
@@ -1700,8 +2097,8 @@ cs_join_all(void)
                "    CPU time:                   %10.3g\n\n"),
              full_clock_end - full_clock_start,
              full_cpu_end - full_cpu_start);
-
   bft_printf_flush();
+
 }
 
 /*---------------------------------------------------------------------------*/
diff --git a/src/base/cs_join_f2c.f90 b/src/base/cs_join_f2c.f90
index dc4e805..9439e83 100644
--- a/src/base/cs_join_f2c.f90
+++ b/src/base/cs_join_f2c.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 subroutine defjoi &
 !================
 
- ( critjo, fract, plane, rtf, mtf, etf, iwarni )
+ ( numjoi, critjo, fract, plane, iwarnj )
 
 !===============================================================================
 ! FONCTION :
@@ -39,16 +39,14 @@ subroutine defjoi &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! critjo           ! a  ! <-- ! critere de selection des faces de              !
-!                  !    !     ! bord a recoller                                !
-! fract            ! r  ! <-- ! parametre fraction                             !
-! plane            ! r  ! <-- ! coefficient de coplaneite                      !
-! rtf              ! r  ! <-- ! reduction of tolerance factor                  !
-! mtf              ! r  ! <-- ! merge tolerance coefficient                    !
-! etf              ! r  ! <-- ! equivalence tolerance coefficient              !
-! iwarni           ! e  ! <-- ! niveau d'impression                            !
+! numjoi           ! e  ! <-- ! join number                                    !
+! critjo           ! a  ! <-- ! selection criteria for the border faces to     !
+!                  !    !     ! transform                                      !
+! fract            ! r  ! <-- ! fraction parameter                             !
+! plane            ! r  ! <-- ! face coplanarity parameter                     !
+! iwarnj           ! e  ! <-- ! level of display                               !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -61,7 +59,7 @@ subroutine defjoi &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -69,8 +67,8 @@ implicit none
 ! Arguments
 
 character*(*)    critjo
-integer          iwarni
-double precision fract, plane, rtf, mtf, etf
+integer          iwarnj, numjoi
+double precision fract, plane
 
 ! Variables locales
 
@@ -80,7 +78,7 @@ integer       lcritj
 
 lcritj = len(critjo)
 
-call defjo1(critjo, fract, plane, rtf, mtf, etf, iwarni, lcritj)
+call defjo1(numjoi, critjo, fract, plane, iwarnj, lcritj)
 !==========
 
 return
diff --git a/src/base/cs_join_intersect.c b/src/base/cs_join_intersect.c
index 0519ae7..ef89285 100644
--- a/src/base/cs_join_intersect.c
+++ b/src/base/cs_join_intersect.c
@@ -246,7 +246,6 @@ _dot_product(const double  v1[],
  *   face_start    <--  start index in face_vtx_lst
  *   face_end      <--  end index in face_vtx_lst
  *   face_vtx_lst  <--  list of vertices for "face->vertices" connectivity
- *   n_vertices    <--  number of vertices
  *   vertices      <--  array on data associated to each selected vertex
  *   extents       -->  min. and max coordinates of the bounding box
  *---------------------------------------------------------------------------*/
@@ -255,7 +254,6 @@ static void
 _get_face_extents(const cs_int_t           face_start,
                   const cs_int_t           face_end,
                   const cs_int_t           face_vtx_lst[],
-                  const cs_int_t           n_vertices,
                   const cs_join_vertex_t  *vertices,
                   fvm_coord_t              extents[6])
 {
@@ -275,8 +273,6 @@ _get_face_extents(const cs_int_t           face_start,
     cs_int_t  vtx_id = face_vtx_lst[i] - 1;
     cs_join_vertex_t  vtx = vertices[vtx_id];
 
-    assert(vtx_id < n_vertices);
-
     for (j = 0; j < 3; j++) {
       extents[j] = CS_MIN(extents[j], vtx.coord[j] - vtx.tolerance);
       extents[3 + j] = CS_MAX(extents[3 + j], vtx.coord[j] + vtx.tolerance);
@@ -336,203 +332,1055 @@ _get_new_vertex(float                  curv_abs,
   cs_int_t  k;
   cs_join_vertex_t  new_vtx_data;
 
-  cs_join_vertex_t  v1 = work->vertices[vtx_couple[0]-1];
-  cs_join_vertex_t  v2 = work->vertices[vtx_couple[1]-1];
+  cs_join_vertex_t  v1 = work->vertices[vtx_couple[0]-1];
+  cs_join_vertex_t  v2 = work->vertices[vtx_couple[1]-1];
+
+  assert(curv_abs >= 0.0);
+  assert(curv_abs <= 1.0);
+
+  /* New global number */
+
+  new_vtx_data.gnum = gnum;
+
+  /* New tolerance */
+
+  new_vtx_data.tolerance = (1-curv_abs)*v1.tolerance + curv_abs*v2.tolerance;
+
+  /* New coordinates */
+
+  for (k = 0; k < 3; k++)
+    new_vtx_data.coord[k] = (1-curv_abs)*v1.coord[k] + curv_abs*v2.coord[k];
+
+  return new_vtx_data;
+}
+
+/*----------------------------------------------------------------------------
+ * Check the coherency of an equivalence. Return true if vertices are each
+ * other under their tolerance.
+ *
+ * parameters:
+ *   edges      <--  cs_join_edges_t structure
+ *   mesh       <--  cs_join_mesh_t structure associated
+ *   e1_id      <--  first edge implied in the equivalence
+ *   curv_abs1  <--  curvilinear abscissa of the intersection on edge 1
+ *   e2_id      <--  second edge implied in the equivalence
+ *   curv_abs2  <--  curvilinear abscissa of the intersection on edge 2
+ *   verbosity  <--  level of accuracy in information display
+ *
+ * returns:
+ *  true if the check is ok, false otherwise
+ *---------------------------------------------------------------------------*/
+
+static cs_bool_t
+_check_equiv(const cs_join_edges_t  *edges,
+             const cs_join_mesh_t   *mesh,
+             cs_int_t                e1_id,
+             float                   curv_abs1,
+             cs_int_t                e2_id,
+             float                   curv_abs2,
+             int                     verbosity)
+{
+  cs_join_vertex_t  p1 = _get_new_vertex(curv_abs1, 1,
+                                         &(edges->def[2*e1_id]), mesh);
+  cs_join_vertex_t  p2 = _get_new_vertex(curv_abs2, 2,
+                                          &(edges->def[2*e2_id]), mesh);
+  cs_real_t  d12 = _compute_length(p1, p2);
+
+  if (p1.tolerance < d12 || p2.tolerance < d12) {
+
+    cs_int_t  v1e1_id = edges->def[2*e1_id]-1;
+    cs_int_t  v2e1_id = edges->def[2*e1_id+1]-1;
+    cs_int_t  v1e2_id = edges->def[2*e2_id]-1;
+    cs_int_t  v2e2_id = edges->def[2*e2_id+1]-1;
+
+    _n_inter_tolerance_warnings++;
+
+    if (verbosity > 2)
+      bft_printf(_("\n"
+                   "  Edge - Edge intersection warning between:\n"
+                   "    edge 1: %d (%u) [%d (%u), %d (%u)]\n"
+                   "    edge 2: %d (%u) [%d (%u), %d (%u)]\n"
+                   "  Intersection found for curv. abs. %f (e1) - %f (e2)"
+                   " will be ignored.\n"),
+                 e1_id+1, edges->gnum[e1_id],
+                 v1e1_id+1, mesh->vertices[v1e1_id].gnum,
+                 v2e1_id+1, mesh->vertices[v2e1_id].gnum,
+                 e2_id+1, edges->gnum[e2_id],
+                 v1e2_id+1, mesh->vertices[v1e2_id].gnum,
+                 v2e2_id+1, mesh->vertices[v2e2_id].gnum,
+                 curv_abs1, curv_abs2);
+
+    if (p1.tolerance < d12 && verbosity > 3)
+      bft_printf(_(" Failure for edge 1: "
+                   " Distance [v_inter1, v_inter2]: %e > v_inter1.tol: %e\n"),
+                 d12, p1.tolerance);
+    if (p2.tolerance < d12 && verbosity > 3)
+      bft_printf(_(" Failure for edge 2: "
+                   " Distance [v_inter1, v_inter2]: %e > v_inter2.tol: %e\n"),
+                 d12, p1.tolerance);
+
+    return false;
+  }
+  else
+    return true;
+}
+
+/*----------------------------------------------------------------------------
+ * Add new equivalences between vertices in cs_join_eset_t structure.
+ *
+ * parameters:
+ *   e1_id     <-- data relative to edge E1
+ *   e2_id     <-- data relative to edge E2
+ *   abs_e1    <-- curvilinear abscissa of intersection for edge E1
+ *   abs_e2    <-- curvilinear abscissa of intersection for edge E2
+ *   edges     <-- list of edges
+ *   vtx_equiv <-> pointer to a structure dealing with vertex equivalences
+ *---------------------------------------------------------------------------*/
+
+static void
+_add_trivial_equiv(cs_int_t                e1_id,
+                   cs_int_t                e2_id,
+                   double                  abs_e1,
+                   double                  abs_e2,
+                   const cs_join_edges_t  *edges,
+                   cs_join_eset_t         *vtx_equiv)
+{
+  cs_int_t  v1_num, v2_num;
+
+  cs_int_t  equiv_id = vtx_equiv->n_equiv;
+
+  cs_join_eset_check_size(equiv_id, &vtx_equiv);
+
+  /* abs_ei is either 0 or 1, but we avoid exact floating-point comparisons */
+
+  if (abs_e1 < 0.5)
+    v1_num = edges->def[2*e1_id];
+  else
+    v1_num = edges->def[2*e1_id+1];
+
+  if (abs_e2 < 0.5)
+    v2_num = edges->def[2*e2_id];
+  else
+    v2_num = edges->def[2*e2_id+1];
+
+  if (v1_num < v2_num) {
+    vtx_equiv->equiv_couple[2*equiv_id] = v1_num;
+    vtx_equiv->equiv_couple[2*equiv_id+1] = v2_num;
+  }
+  else {
+    vtx_equiv->equiv_couple[2*equiv_id] = v2_num;
+    vtx_equiv->equiv_couple[2*equiv_id+1] = v1_num;
+  }
+
+  vtx_equiv->n_equiv += 1;
+}
+
+/*----------------------------------------------------------------------------
+ * Add a no trivial intersection in a cs_join_inter_set_t structure.
+ *
+ * parameters:
+ *  e1_id     <-- data relative to edge E1
+ *  e2_id     <-- data relative to edge E2
+ *  abs_e1    <-- curvilinear abscissa of intersection(s) for edge E1
+ *  abs_e2    <-- curvilinear abscissa of intersection(s) for edge E2
+ *  inter_set <-> pointer to the structure maintaining data about edge-edge
+ *                intersections
+ *---------------------------------------------------------------------------*/
+
+static void
+_add_inter(cs_int_t              e1_id,
+           cs_int_t              e2_id,
+           double                abs_e1,
+           double                abs_e2,
+           cs_join_inter_set_t  *inter_set)
+{
+  cs_join_inter_t  new_inter_e1, new_inter_e2;
+
+  cs_int_t  inter_id = inter_set->n_inter;
+
+  if (inter_id + 1 > inter_set->n_max_inter) {
+
+    inter_set->n_max_inter *= 2;
+
+    BFT_REALLOC(inter_set->inter_lst,
+                2*inter_set->n_max_inter,
+                cs_join_inter_t);
+
+  }
+
+  new_inter_e1.edge_id = e1_id;
+  new_inter_e1.vtx_id = -1;
+  new_inter_e1.curv_abs = abs_e1;
+
+  new_inter_e2.edge_id = e2_id;
+  new_inter_e2.vtx_id = -1;
+  new_inter_e2.curv_abs = abs_e2;
+
+  if (e1_id < e2_id) {
+    inter_set->inter_lst[2*inter_id] = new_inter_e1;
+    inter_set->inter_lst[2*inter_id+1] = new_inter_e2;
+  }
+  else {
+    inter_set->inter_lst[2*inter_id] = new_inter_e2;
+    inter_set->inter_lst[2*inter_id+1] = new_inter_e1;
+  }
+
+  inter_set->n_inter += 1;
+}
+
+/*----------------------------------------------------------------------------
+ * Reduce tolerance for the weakest equivalence in order to break this
+ * equivalence
+ *
+ * parameters:
+ *  n_elts      <-- size of vtx_lst (n_inter on edges + the two extremities)
+ *  edge_length <-- length of the edge
+ *  equiv_lst   <-- true if equiv between two elements else false
+ *  abs_lst     <-- curvilinear abscissa of each element
+ *  tol_lst     <-> tolerance of each element
+ *---------------------------------------------------------------------------*/
+
+static void
+_break_equivalence(cs_int_t           n_elts,
+                   double             edge_length,
+                   cs_bool_t          equiv_lst[],
+                   const float        abs_lst[],
+                   const double       tol_lst[])
+{
+  int  i1, i2, i2_save;
+  double  range, _rtf, rtf12, rtf21;
+
+  int  k = 0, i1_save = 0;
+  double rtf = -1.0;
+
+  for (i1 = 0; i1 < n_elts - 1; i1++) {
+
+    i2 = i1 + 1;
+
+    if (i1 == 0)
+      k = 0;
+    else
+      k += n_elts - i1;
+
+    if (equiv_lst[k] == true) {
+
+      range = (abs_lst[i2] - abs_lst[i1]) * edge_length;
+      rtf12 = range/tol_lst[i1];
+      rtf21 = range/tol_lst[i2];
+
+      assert(range >= 0.0);
+      assert(rtf12 < 1.0);
+      assert(rtf21 < 1.0);
+
+      _rtf = CS_MAX(rtf12, rtf21);
+      if (_rtf > rtf) {
+        i1_save = i1;
+        i2_save = i2;
+        rtf = _rtf;
+      }
+
+    }
+
+  } /* End of loop on i1 */
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  bft_printf(" Break equivalence between [%d, %d]\n", i1_save, i2_save);
+#endif
+
+  if (rtf > 0.0) { /* We have find an equivalence to break */
+
+    /* Break equivalence between i1_save and i2_save which the weakest
+       equivalence between two consecutive vertices in the set */
+
+    for (i1 = 0; i1 < n_elts - 1; i1++) {
+
+      i2 = i1 + 1;
+
+      if (i1 == 0)
+        k = 0;
+      else
+        k += n_elts - i1;
+
+      if (i1 == i1_save) {
+        for (i2 = i1 + 1; i2 < n_elts; i2++, k++)
+          equiv_lst[k] = false;
+      }
+
+    }
+
+  }
+
+}
+
+/*----------------------------------------------------------------------------
+ * Fill equiv_lst[] according to the tolerance related to each vertex
+ *
+ * parameters:
+ *  param       <-- set of user-defined parameters
+ *  n_elts      <-- size of vtx_lst (n_inter on edges + the two extremities)
+ *  abs_lst     <-- curvilinear abscissa of each element
+ *  tol_lst     <-> tolerance of each element
+ *  equiv_lst   <-> true if equiv between two elements else false
+ *  tag         <-- array used to mark equivalent vertices by the same tag
+ *  edge_length <-- length of the edge
+ *
+ * returns:
+ *  number of tolerance reductions applied
+ *---------------------------------------------------------------------------*/
+
+static cs_int_t
+_find_edge_equiv(cs_join_param_t  param,
+                 cs_int_t         n_elts,
+                 float            abs_lst[],
+                 double           tol_lst[],
+                 cs_bool_t        equiv_lst[],
+                 int              tag[],
+                 double           edge_length)
+{
+  int  i, i1, i2, k;
+  double  dist;
+
+  cs_int_t  n_loops = 0;
+  cs_bool_t  do_reduction = true;
+
+  /* Find equivalence between vertices sharing the same edge */
+
+  for (i1 = 0, k = 0; i1 < n_elts - 1; i1++) {
+    for (i2 = i1 + 1; i2 < n_elts; i2++, k++) {
+
+      dist = (abs_lst[i2] - abs_lst[i1]) * edge_length;
+      assert(dist >= 0.0);
+
+      /* Tag equivalence if test is true */
+
+      if (tol_lst[i1] < dist || tol_lst[i2] < dist)
+        equiv_lst[k] = false;
+      else
+        equiv_lst[k] = true;
+
+    }
+  }
+
+  while (do_reduction == true && n_loops <= param.n_max_equiv_breaks) {
+
+    /* Reduce tolerance after the first loop if necessary */
+
+    if (do_reduction == true && n_loops > 0)
+      _break_equivalence(n_elts,
+                         edge_length,
+                         equiv_lst,
+                         abs_lst,
+                         tol_lst);
+
+    /* Tag vertices in equivalence with the same even if they are
+       in equivalence thanks to transitivity */
+
+    for (i = 0; i < n_elts; i++)  /* Re-initialize array */
+      tag[i] = i+1;
+
+    for (i1 = 0; i1 < n_elts-1; i1++) {
+
+      if (i1 == 0)
+        k = 0;
+      else
+        k += n_elts - i1;
+
+      if (equiv_lst[k] == true)
+        tag[i1+1] = tag[i1];
+
+    }
+
+    /* Check tolerance consistency: avoid excessive transitivity
+       on an edge */
+
+    do_reduction = false;
+    for (i1 = 0, k = 0; i1 < n_elts - 1; i1++) {
+      for (i2 = i1 + 1; i2 < n_elts; i2++, k++) {
+
+        if (equiv_lst[k] == false)
+          if (tag[i1] == tag[i2])
+            do_reduction = true;
+
+      } /* End of loop on i2 */
+    } /* End of loop on i1 */
+
+    n_loops++;
+
+  } /* End of while reduc_tol == false */
+
+  return n_loops - 1;
+}
+
+/*----------------------------------------------------------------------------
+ * Get 3D intersection location(s) between two edges in curvilinear abscissa.
+ *
+ * We successively try to find vertices-vertices matching,
+ *                             vertex-vertex matching,
+ *                             a "real" intersection.
+ *
+ * Each vertex owns a tolerance which drives to a sphere in which intersection
+ * is possible.
+ * When an intersection is found, we store the related curvilinear abscissa
+ * for each edge.
+ * If curvilinear abscissa : 0 => -0.01 / 1 => 1.01 in order to test an
+ * inequality rather than an equality.
+ *
+ * Let be two edges E1 (P1E1, P2E1) and E2 (P1E2, P2E2) :
+ * a point on edge E1 is defined by :
+ *   P1E1 + s * (P2E1 - P1E1)   with 0 <= s <= 1
+ * a point on edge B is defined by :
+ *   P1E2 + t * (P2E2 - P1E2)   with 0 <= t <= 1
+ *
+ * The squared distance between a point from A and a point from B is :
+ *  len(s, t) = || P1E2 - P1E1 + t * (P2E2 - P1E1) - s * (P2E1 - P1E1) ||^2
+ * equivalent to :
+ *   len(s, t) = a.s^2 + 2b.s.t + c.t^2 + 2d.s + 2e.t + f = d2_e1e2(s,t)
+ *
+ * We try to find (s, t) such as len(s,t) is minimal
+ * with 0 <= s <= 1 and 0 <= t <= 1
+ *
+ *       ->   ->
+ * a =   v0 . v0                  ->
+ *                                v0
+ *       ->   ->     P1E1  x--------------> P2E1
+ * b = - v0 . v1            \
+ *                           \               P2E2
+ *       ->   ->              \             ^
+ * c =   v1 . v1               \           /
+ *                           -> \         /
+ *       ->   ->             v2  \       / ->
+ * d = - v0 . v2                  \     /  v1
+ *                                 \   /
+ *       ->   ->                    \ /
+ * e =   v1 . v2                     x
+ *                                P1E2
+ *
+ *    ->
+ *    v0 = vector (P1E1, P2E1)
+ *    ->
+ *    v1 = vector (P1E2, P2E2)
+ *    ->
+ *    v2 = vector (P1E1, P1E2)
+ *
+ * parameters:
+ *   mesh     <-- pointer to joining mesh
+ *   edges    <-- pointer to edges
+ *   p1e1     <--  pointer to the associated P1E1 cs_join_vertex_t structure
+ *   p2e1     <--  pointer to the associated P2E1 cs_join_vertex_t structure
+ *   p1e2     <--  pointer to the associated P1E2 cs_join_vertex_t structure
+ *   p2e2     <--  pointer to the associated P2E2 cs_join_vertex_t structure
+ *   fraction <--  global tolerance for geometrical intersection.
+ *   abs_e1   <--  intersection location on E1 (curvilinear abscissa)
+ *   abs_e2   <--  intersection location on E2 (curvilinear abscissa)
+ *   n_inter  <->  number of intersections detected.
+ *---------------------------------------------------------------------------*/
+
+static void
+_new_edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
+                        const cs_join_edges_t  *edges,
+                        double                  fraction,
+                        cs_int_t                e1_id,
+                        double                  abs_e1[2],
+                        cs_int_t                e2_id,
+                        double                  abs_e2[2],
+                        double                  parall_eps2,
+                        int                     verbosity,
+                        int                    *n_inter)
+{
+  int  k;
+  double  a, b, c, d, e, f, s, t;
+  double  d2_limit_e1, d_limit_e1, d2_limit_e2, d_limit_e2, d2_e1e2;
+  double  inv_cross_norm2, cross_norm2;
+  double  int_inter[2], ext_inter[4], v0[3], v1[3], v2[3];
+
+  int  n_int_inter = 0, n_ext_inter = 0;
+  cs_bool_t  int_p1e2 = false, int_p2e2 = false;
+
+  cs_int_t  p1e1_id = edges->def[2*e1_id] - 1;
+  cs_int_t  p2e1_id = edges->def[2*e1_id+1] - 1;
+  cs_int_t  p1e2_id = edges->def[2*e2_id] - 1;
+  cs_int_t  p2e2_id = edges->def[2*e2_id+1] - 1;
+
+  const cs_join_vertex_t  p1e1 = mesh->vertices[p1e1_id];
+  const cs_join_vertex_t  p2e1 = mesh->vertices[p2e1_id];
+  const cs_join_vertex_t  p1e2 = mesh->vertices[p1e2_id];
+  const cs_join_vertex_t  p2e2 = mesh->vertices[p2e2_id];
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  cs_bool_t  tst_dbg = (verbosity > 5 &&
+                       (p1e1.gnum == 716852 || p2e1.gnum == 716852 ||
+                        p1e2.gnum == 716852 || p2e2.gnum == 716852) ?
+                        true : false);
+#endif
+
+  /* Initialize parameters */
+
+  *n_inter = 0 ;
+
+  assert(p1e1.gnum != p2e1.gnum);
+  assert(p1e2.gnum != p2e2.gnum);
+
+  if (p1e1.gnum == p1e2.gnum || p2e1.gnum == p2e2.gnum)
+    return;
+
+  if (p1e1.gnum == p2e2.gnum || p2e1.gnum == p1e2.gnum)
+    return;
+
+  /* Compute local vectors and parameters */
+
+  for (k = 0; k < 3; k++) {
+    v0[k] = p2e1.coord[k] - p1e1.coord[k];
+    v1[k] = p2e2.coord[k] - p1e2.coord[k];
+    v2[k] = p1e2.coord[k] - p1e1.coord[k];
+  }
+
+  a =   _dot_product(v0, v0);
+  b = - _dot_product(v0, v1);
+  c =   _dot_product(v1, v1);
+  d = - _dot_product(v0, v2);
+  e =   _dot_product(v1, v2);
+  f =   _dot_product(v2, v2);
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  if (tst_dbg) {
+    bft_printf("\n\np1e1 : %10u - [%10.8e %10.8e %10.8e] - tol: %10.8g\n",
+               p1e1.gnum, p1e1.coord[0], p1e1.coord[1], p1e1.coord[2], p1e1.tolerance);
+    bft_printf("p2e1 : %10u - [%10.8e %10.8e %10.8e] - tol: %10.8g\n",
+               p2e1.gnum, p2e1.coord[0], p2e1.coord[1], p2e1.coord[2], p2e1.tolerance);
+    bft_printf("p1e2 : %10u - [%10.8e %10.8e %10.8e] - tol: %10.8g\n",
+               p1e2.gnum, p1e2.coord[0], p1e2.coord[1], p1e2.coord[2], p1e2.tolerance);
+    bft_printf("p2e2 : %10u - [%10.8e %10.8e %10.8e] - tol: %10.8g\n\n",
+               p2e2.gnum, p2e2.coord[0], p2e2.coord[1], p2e2.coord[2], p2e2.tolerance);
+    bft_printf("v0 : [ %10.8e %10.8e %10.8e]\n", v0[0], v0[1], v0[2]);
+    bft_printf("v1 : [ %10.8e %10.8e %10.8e]\n", v1[0], v1[1], v1[2]);
+    bft_printf("v2 : [ %10.8e %10.8e %10.8e]\n\n", v2[0], v2[1], v2[2]);
+    bft_printf("a : %10.8e, b : %10.8e, c : %10.8e\n", a, b, c);
+    bft_printf("d : %10.8e, e : %10.8e, f : %10.8e\n", d, e, f);
+  }
+#endif
+
+  /* Check size of each edge is not equal to 0 */
+
+  assert(a > 0);
+  assert(c > 0);
+
+  /* Check computation of the tolerance */
+
+  assert(sqrt(a) * fraction * 1.00001 >= p1e1.tolerance);
+  assert(sqrt(a) * fraction * 1.00001 >= p2e1.tolerance);
+  assert(sqrt(c) * fraction * 1.00001 >= p1e2.tolerance);
+  assert(sqrt(c) * fraction * 1.00001 >= p2e2.tolerance);
+
+  /*------------------------------------------------------------------
+   * First part : Search for interior/interior intersection
+   * The only possibility is an intersection with 0 < s < 1 and
+   * 0 < t < 1.
+   *------------------------------------------------------------------*/
+
+  /* Edges are parallel if a.c - b^2 = 0.
+   * However, this term is o(length^4). So, we will prefer work with angle
+   * If two edges are not parallel => a.c - b^2 > 0.
+   *
+   * cos(theta) = v0.v1 / ||v0||.||v1||
+   * cos^2 (theta) = (v0.v1)^2 / ((v0.v0).(v1.v1))^2 = (-b)^2 / (a.c)
+   * sin^2 (theta) = 1 - b^2 / (a.c)
+   *
+   * || v0 ^ v1 ||^2 = ||v0||^2 . ||v1||^2 . sin^2(thetha)
+   *
+   */
+
+  cross_norm2 = CS_ABS(a * c - b * b);
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  if (tst_dbg)
+    bft_printf(" [I]: Test inter. E1 - E2: "
+               "\t cross_norm2: %12.8e - parall_limit: %12.8e\n",
+               cross_norm2, parall_eps2*a*c);
+#endif
+
+  if (cross_norm2 > parall_eps2 * a * c) {
+
+    /* <=> 1 - b^2/(a.c) < epsilon^2 <=> sin^2(theta)  < epsilon^2
+
+       Edges are not parallel.
+       Define s and t if there is an intersection on interior points.
+
+       ->     ->     ->
+       v2 + s.v0 = t.v1 and cross_norm2 = a.c - b^2 != 0.0
+
+       => s = (b.e - c.d)/cross_norm2
+       => t = (e.a - b.d)/cross_norm2
+    */
+
+    s = b * e - c * d;
+    t = b * d - a * e;
+    inv_cross_norm2 = 1.0 / cross_norm2;
+    s *= inv_cross_norm2;
+    t *= inv_cross_norm2;
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  if (tst_dbg)
+    bft_printf(" [I]-1: Test inter. E1 - E2: "
+               "\t s: %12.8e - t: %12.8e\n", s, t);
+#endif
+
+    if (s >= 0. && s <= 1.0) {
+      if (t >= 0. && t <= 1.0)  {
+
+        /* If tests are OK, we are on an interior point for E1 and E2 */
+
+        d2_e1e2 = CS_ABS(s*(a*s + 2.0*(b*t + d)) + t*(c*t + 2.0*e) + f);
+        d_limit_e1 = (1.0-s) * p1e1.tolerance + s * p2e1.tolerance;
+        d_limit_e2 = (1.0-t) * p1e2.tolerance + t * p2e2.tolerance;
+        d2_limit_e1 = d_limit_e1 * d_limit_e1;
+        d2_limit_e2 = d_limit_e2 * d_limit_e2;
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+        if (tst_dbg)
+          bft_printf("\t[I]-2: s = %10.8e, t = %10.8e\n"
+                     "\t  d2_e1e2: %10.8e, d2_limit_e1: %10.8e, "
+                     "d2_limit_e2: %10.8e\n",
+                     s, t, d2_e1e2, d2_limit_e1, d2_limit_e2);
+#endif
+
+        if (d2_e1e2 <= d2_limit_e1 && d2_e1e2 <= d2_limit_e2) {
+
+          /* Under tolerance for edges E1 and E2 => intersection is possible */
+
+          assert(0.0 <= s && s <= 1.0);
+          assert(0.0 <= t && t <= 1.0);
+
+          n_int_inter = 1;
+          int_inter[0] = s;
+          int_inter[1] = t;
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+          if (tst_dbg)
+            bft_printf("\t[I]-3: Add int. inter. Edge-Edge (%10.8e,%10.8e)\n",
+                       s, t);
+#endif
+
+        } /* If we are under tolerance */
+
+      } /* If it is an interior point for edge E2 */
+    } /* If it is an interior point for edge E1 */
+
+  } /* End of last test : inter. E1 - E2 */
+
+  /*-----------------------------------------------------------------
+   * Second part : we try to find under the current tolerance if
+   * "parallel edges", "extremity-extremity" or "extremity-interior"
+   * are possible.
+   *-----------------------------------------------------------------*/
+
+  /* Distance between P1E1 (s = 0) and a point on E2 */
+  /* ----------------------------------------------- */
+
+  t = -e / c; /* Nearest point on E2 if s = 0 => t = -e/c */
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  if (tst_dbg)
+    bft_printf(" [II] Test inter. P1E1 - E2: t = %10.8e\n", t);
+#endif
+
+  if (t > -fraction && t < 1.0 + fraction) { /* filter */
+
+    d2_e1e2 = t*(c*t + 2.0*e) + f;
+    assert(d2_e1e2 >= -1.e-8);
+
+    /* Tolerance for vertex p1e1 (s = 0) */
+
+    d2_limit_e1 = p1e1.tolerance * p1e1.tolerance;
+
+    if (d2_e1e2 <= d2_limit_e1) { /* Under the tolerance for vertex P1E1 */
+
+      /* Tolerance for a vertex on E2 located at "t" */
+
+      d_limit_e2 = (1-t)*p1e2.tolerance + t*p2e2.tolerance;
+      d2_limit_e2 = d_limit_e2 * d_limit_e2;
+
+      if (d2_e1e2 <= d2_limit_e2) {
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+        if (tst_dbg)
+          bft_printf("\t[II]-3: Under tol. for P1E1 and a point of E2\n"
+                     "\td2_e1e2 = %10.8e, d2_lim_e1: %10.8e, d2_lim_e2: %10.8e\n",
+                     d2_e1e2, d2_limit_e1, d2_limit_e2);
+#endif
+
+        /* We are under tolerance for edge E2. We try to find if it is
+           a vertex-vertex intersection */
+
+        if (t < 0.0) { /* Test intersection P1E1-P1E2 */
+
+          d2_e1e2 = f; /* s = t = 0.0 */
+          d2_limit_e2 = p1e2.tolerance * p1e2.tolerance;
+
+          if (d2_e1e2 <= d2_limit_e1 && d2_e1e2 <= d2_limit_e2) {
+
+            if (_check_equiv(edges, mesh, e1_id, 0.0, e2_id, 0.0, verbosity)) {
+
+              /* "extremity-extremity" intersection with s = t = 0.0
+                 under the tolerance is possible */
+
+              int_p1e2 = true;
+              n_ext_inter = 1;
+              ext_inter[0] = 0.0;
+              ext_inter[1] = 0.0;
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+              if (tst_dbg)
+                bft_printf("\t[II]-4: Add inter. Vtx-Vtx (0.00, 0.00)\n");
+#endif
+            }
+          }
+        }
+        else if (t > 1.0) { /* Test intersection P1E1-P2E2 */
+
+          d2_e1e2 = c + 2.0*e + f; /* s = 0.0 and t = 1.0 */
+          d2_limit_e2 = p2e2.tolerance * p2e2.tolerance;
+
+          if (d2_e1e2 <= d2_limit_e1 && d2_e1e2 <= d2_limit_e2) {
+
+            if (_check_equiv(edges, mesh, e1_id, 0.0, e2_id, 1.0, verbosity)) {
+
+              /* "extremity-extremity" intersection with s = 0.0, t = 1.0
+                 under the tolerance is possible */
+
+              int_p2e2 = true;
+              n_ext_inter = 1;
+              ext_inter[0] = 0.0;
+              ext_inter[1] = 1.0;
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+              if (tst_dbg)
+                bft_printf("\t[II]-5: Add inter. Vtx-Vtx (0.00, 1.00)\n");
+#endif
+
+            }
+          }
+        }
+        else {
+
+          assert(0.0 <= t && t <= 1.0);
+
+          /* It's an "extremity-interior" intersection */
+
+          n_ext_inter = 1;
+          ext_inter[0] = 0.0;
+          ext_inter[1] = t;
+
+          if (t <= 0.0)
+            int_p1e2 = true;
+          if (t >= 1.0)
+            int_p2e2 = true;
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+          if (tst_dbg)
+            bft_printf("\t[II]-6: Add inter. Vtx-Edge (0.00, %10.8e)\n", t);
+#endif
+
+        }
+
+      } /* End if d2_e1e2 <= d2_limit_e2 */
+
+    } /* End if d2_e1e2 <= d2_limit_e1 */
+
+  } /* End if -fraction < t < 1 + fraction */
+
+  /* Distance between P2E1 (s = 1) and a point on edge E2 */
+  /* ---------------------------------------------------- */
+
+  t = -(b + e) / c; /* Minimum for d2_e1e2 is reached for t = -(b+e) / c
+                       when s = 1. */
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  if (tst_dbg)
+    bft_printf(" [III] Test inter. P2E1 - E2: t = %10.8e\n", t);
+#endif
+
+  if (t > -fraction && t < 1.0 + fraction) { /* filter */
+
+    d2_e1e2 = CS_ABS((a + 2.0*(b*t + d)) + t*(c*t + 2.0*e) + f);
+
+    assert(d2_e1e2 >= -1.e-8);
+
+    /* Tolerance for vertex p2e1 (s = 1) */
+
+    d2_limit_e1 = p2e1.tolerance * p2e1.tolerance;
+
+    if (d2_e1e2 <= d2_limit_e1) { /* Under the tolerance for vertex P2E1 */
+
+      d_limit_e2 = (1.0-t)*p1e2.tolerance + t*p2e2.tolerance;
+      d2_limit_e2 = d_limit_e2 * d_limit_e2;
+
+      if (d2_e1e2 <= d2_limit_e2) { /* Under tolerance for edge 2 */
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+        if (tst_dbg)
+          bft_printf("\t[III]-3: Under tol. for P2E1 and a point of E2\n"
+                     "\td2_e1e2 = %10.8e, d2_lim_e1: %10.8e, d2_lim_e2: %10.8e\n",
+                     d2_e1e2, d2_limit_e1, d2_limit_e2);
+#endif
+
+        /* We are under tolerance for edge E2. We try to find if it is
+           a vertex-vertex intersection */
+
+        if (t < 0.0) { /* Test intersection P2E1-P1E2 */
+
+          d2_e1e2 = CS_ABS(a + 2.0*d + f);
+          d2_limit_e2 = p1e2.tolerance * p1e2.tolerance;
+
+          if (d2_e1e2 <= d2_limit_e1 && d2_e1e2 <= d2_limit_e2) {
+
+            if (_check_equiv(edges, mesh, e1_id, 1.0, e2_id, 0.0, verbosity)) {
+
+              /* "extremity-extremity" intersection with s = 1.0, t = 0.0
+                 under the tolerance is possible */
+
+              int_p1e2 = true;
+              ext_inter[2*n_ext_inter] = 1.0;
+              ext_inter[2*n_ext_inter+1] = 0.0;
+              n_ext_inter += 1;
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+              if (tst_dbg)
+                bft_printf("\t[III]-4: Add inter. Vtx-Vtx (1.00, 0.00)\n");
+#endif
+
+            }
+          }
+        }
+        else if (t > 1.0) { /* Test intersection P2E1-P2E2 */
+
+          d2_e1e2 = CS_ABS(a + 2.0*(b + d + e) + c + f);
+          d2_limit_e2 = p2e2.tolerance * p2e2.tolerance;
+
+          if (d2_e1e2 <= d2_limit_e1 && d2_e1e2 <= d2_limit_e2) {
+
+            if (_check_equiv(edges, mesh, e1_id, 1.0, e2_id, 1.0, verbosity)) {
+
+              /* "extremity-extremity" intersection with s = t = 1.0
+                 under the tolerance is possible */
+
+              int_p2e2 = true;
+              ext_inter[2*n_ext_inter] = 1.0;
+              ext_inter[2*n_ext_inter+1] = 1.0;
+              n_ext_inter += 1;
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+              if (tst_dbg)
+                bft_printf("\t[III]-5: Add inter. Vtx-Vtx (1.00, 1.00)\n");
+#endif
+
+            }
+          }
+        }
+        else {
+
+          assert(0.0 <= t && t <= 1.0);
+
+          /* It's an "extremity-interior" intersection */
+
+          ext_inter[2*n_ext_inter] = 1.0;
+          ext_inter[2*n_ext_inter+1] = t;
+          n_ext_inter += 1;
+
+          if (t <= 0.0)
+            int_p1e2 = true;
+          if (t >= 1.0)
+            int_p2e2 = true;
+
+          assert(n_ext_inter <= 2);
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+          if (tst_dbg)
+            bft_printf("\t[III]-6: Add inter. Vtx-Edge (1.00, %10.8e)\n", t);
+#endif
+        }
+
+      } /* End if d2_e1e2 <= d2_limit_e2 */
+
+    } /* End if d2_e1e2 <= d2_limit_e1 */
+
+  } /* End if -fraction < t < 1 + fraction */
+
+  /* If vertices from edge E2 are not implied in an intersection
+     we do a test for each vertex */
+
+  if (int_p1e2 == false && n_ext_inter < 2) {
+
+    /* Distance between P1E2 (t = 0.0) on edge E2 and a point on edge E1 */
+    /* ----------------------------------------------------------------- */
+
+    s = -d / a; /* t = 0.0 */
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+    if (tst_dbg)
+      bft_printf(" [IV] Test inter. P1E2 - E1: s = %10.8e\n", s);
+#endif
+
+    if (s > 0.0 && s < 1.0) { /* s = 0.0 and s = 1.0 are already tested */
+
+      d2_e1e2 = CS_ABS(s*(a*s + 2.0*d) + f);
+      d2_limit_e2 = p1e2.tolerance * p1e2.tolerance;
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+    if (tst_dbg)
+      bft_printf("\t [IV-1a] d2_e1e2: %10.8e - d2_lim_e2: %10.8e\n",
+                 d2_e1e2, d2_limit_e2);
+#endif
+
+      if (d2_e1e2 <= d2_limit_e2) { /* Under the tolerance for vertex P1E2 */
+
+        d_limit_e1 = (1.0-s)*p1e1.tolerance + s*p2e1.tolerance;
+        d2_limit_e1 = d_limit_e1 * d_limit_e1;
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+        if (tst_dbg)
+          bft_printf("\t [IV-1b] d2_e1e2: %10.8e - d2_lim_e1: %10.8e\n",
+                     d2_e1e2, d2_limit_e1);
+#endif
+
+        if (d2_e1e2 <= d2_limit_e1) {
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+          if (tst_dbg)
+            bft_printf("\t[IV]-2: Under tol. for P1E2 and a point of E1\n"
+                       "\t d2_e1e2 = %10.8e, d2_lim_e1: %10.8e, d2_lim_e2: %10.8e\n",
+                       d2_e1e2, d2_limit_e1, d2_limit_e2);
+#endif
+
+          /* We are under tolerance for edge E1. There is an intersection
+             between P1E2 and a point on edge E1 */
 
-  assert(curv_abs >= 0.0);
-  assert(curv_abs <= 1.0);
+          ext_inter[2*n_ext_inter] = s;
+          ext_inter[2*n_ext_inter+1] = 0.0;
+          n_ext_inter += 1;
+          assert(n_ext_inter <= 2);
 
-  /* New global number */
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+          if (tst_dbg)
+            bft_printf("\t[IV]-3: Add inter. Edge-Vtx (%10.8e, 0.00)\n", s);
+#endif
 
-  new_vtx_data.gnum = gnum;
+        } /* End if d2_e1e2 < d2_limit_e1 */
 
-  /* New tolerance */
+      } /* End if d2_e1e2 < d2_limit_e2 */
 
-  new_vtx_data.tolerance = (1-curv_abs)*v1.tolerance + curv_abs*v2.tolerance;
+    } /* 0.0 < s < 1.0 */
 
-  /* New coordinates */
+  } /* If int_p1e2 == false && n_ext_inter < 2 */
 
-  for (k = 0; k < 3; k++)
-    new_vtx_data.coord[k] = (1-curv_abs)*v1.coord[k] + curv_abs*v2.coord[k];
+  if (int_p2e2 == false && n_ext_inter < 2) {
 
-  return new_vtx_data;
-}
+    /* Distance between P2E2 (t = 1.0) on edge E2 and a point on edge E1 */
+    /* ----------------------------------------------------------------- */
 
-/*----------------------------------------------------------------------------
- * Check the coherency of an equivalence. Return true if vertices are each
- * other under their tolerance.
- *
- * parameters:
- *   edges      <--  cs_join_edges_t structure
- *   mesh       <--  cs_join_mesh_t structure associated
- *   e1_id      <--  first edge implied in the equivalence
- *   curv_abs1  <--  curvilinear abscissa of the intersection on edge 1
- *   e2_id      <--  second edge implied in the equivalence
- *   curv_abs2  <--  curvilinear abscissa of the intersection on edge 2
- *   verbosity  <--  level of accuracy in information display
- *
- * returns:
- *  true if the check is ok, false otherwise
- *---------------------------------------------------------------------------*/
+    s = -(b + d) / a; /* t = 1 */
 
-static cs_bool_t
-_check_equiv(const cs_join_edges_t  *edges,
-             const cs_join_mesh_t   *mesh,
-             cs_int_t                e1_id,
-             float                   curv_abs1,
-             cs_int_t                e2_id,
-             float                   curv_abs2,
-             int                     verbosity)
-{
-  cs_join_vertex_t  p1 = _get_new_vertex(curv_abs1, 1,
-                                         &(edges->def[2*e1_id]), mesh);
-  cs_join_vertex_t  p2 = _get_new_vertex(curv_abs2, 2,
-                                          &(edges->def[2*e2_id]), mesh);
-  cs_real_t  d12 = _compute_length(p1, p2);
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+    if (tst_dbg)
+      bft_printf(" [V] Test inter. P2E2 - E1: s = %10.8e\n", s);
+#endif
 
-  if (p1.tolerance < d12 || p2.tolerance < d12) {
+    if (s > 0.0 && s < 1.0) { /* s = 0.0 and s = 1.0 are already tested */
 
-    cs_int_t  v1e1_id = edges->def[2*e1_id]-1;
-    cs_int_t  v2e1_id = edges->def[2*e1_id+1]-1;
-    cs_int_t  v1e2_id = edges->def[2*e2_id]-1;
-    cs_int_t  v2e2_id = edges->def[2*e2_id+1]-1;
+      d2_e1e2 = CS_ABS(s*(a*s + 2.0*(b + d)) + c + 2.0*e + f);
+      d2_limit_e2 = p2e2.tolerance * p2e2.tolerance;
 
-    _n_inter_tolerance_warnings++;
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+    if (tst_dbg)
+      bft_printf("\t [V-1a] d2_e1e2: %10.8e - d2_lim_e2: %10.8e\n",
+                 d2_e1e2, d2_limit_e2);
+#endif
 
-    if (verbosity > 2)
-      bft_printf(_("\n"
-                   "  Edge - Edge intersection warning between:\n"
-                   "    edge 1: %d (%u) [%d (%u), %d (%u)]\n"
-                   "    edge 2: %d (%u) [%d (%u), %d (%u)]\n"
-                   "  Intersection found for curv. abs. %f (e1) - %f (e2)"
-                   " will be ignored.\n"),
-                 e1_id+1, edges->gnum[e1_id],
-                 v1e1_id+1, mesh->vertices[v1e1_id].gnum,
-                 v2e1_id+1, mesh->vertices[v2e1_id].gnum,
-                 e2_id+1, edges->gnum[e2_id],
-                 v1e2_id+1, mesh->vertices[v1e2_id].gnum,
-                 v2e2_id+1, mesh->vertices[v2e2_id].gnum,
-                 curv_abs1, curv_abs2);
+      if (d2_e1e2 <= d2_limit_e2) { /* Under the tolerance for vertex P2E2 */
 
-    if (p1.tolerance < d12 && verbosity > 3)
-      bft_printf(_(" Failure for edge 1: "
-                   " Distance [v_inter1, v_inter2]: %e > v_inter1.tol: %e\n"),
-                 d12, p1.tolerance);
-    if (p2.tolerance < d12 && verbosity > 3)
-      bft_printf(_(" Failure for edge 2: "
-                   " Distance [v_inter1, v_inter2]: %e > v_inter2.tol: %e\n"),
-                 d12, p1.tolerance);
+        d_limit_e1 = (1.0-s)*p1e1.tolerance + s*p2e1.tolerance;
+        d2_limit_e1 = d_limit_e1 * d_limit_e1;
 
-    return false;
-  }
-  else
-    return true;
-}
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+        if (tst_dbg)
+          bft_printf("\t [V-1b] d2_e1e2: %10.8e - d2_lim_e1: %10.8e\n",
+                     d2_e1e2, d2_limit_e1);
+#endif
 
-/*----------------------------------------------------------------------------
- * Add new equivalences between vertices in cs_join_eset_t structure.
- *
- * parameters:
- *   e1_id     <-- data relative to edge E1
- *   e2_id     <-- data relative to edge E2
- *   abs_e1    <-- curvilinear abscissa of intersection for edge E1
- *   abs_e2    <-- curvilinear abscissa of intersection for edge E2
- *   edges     <-- list of edges
- *   vtx_equiv <-> pointer to a structure dealing with vertex equivalences
- *---------------------------------------------------------------------------*/
+        if (d2_e1e2 <= d2_limit_e1) {
 
-static void
-_add_trivial_equiv(cs_int_t                e1_id,
-                   cs_int_t                e2_id,
-                   double                  abs_e1,
-                   double                  abs_e2,
-                   const cs_join_edges_t  *edges,
-                   cs_join_eset_t         *vtx_equiv)
-{
-  cs_int_t  v1_num, v2_num;
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+          if (tst_dbg)
+            bft_printf("\t[V]-2: Under tol. for P2E2 and a point of E1\n"
+                       "\t d2_e1e2 = %10.8e, d2_lim_e1: %10.8e, d2_lim_e2: %10.8e\n",
+                       d2_e1e2, d2_limit_e1, d2_limit_e2);
+#endif
 
-  cs_int_t  equiv_id = vtx_equiv->n_equiv;
+          /* We are under tolerance for edge E1. There is an intersection
+             between P2E2 and a point on edge E1 */
 
-  cs_join_eset_check_size(equiv_id, &vtx_equiv);
+          ext_inter[2*n_ext_inter] = s;
+          ext_inter[2*n_ext_inter+1] = 1.0;
+          n_ext_inter += 1;
+          assert(n_ext_inter <= 2);
 
-  assert(abs_e1 <= 0.0 || abs_e1 >= 1.0);
-  assert(abs_e2 <= 0.0 || abs_e2 >= 1.0);
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+          if (tst_dbg)
+            bft_printf("\t[V]-3: Add inter (%10.8e, 1.01)\n", s);
+#endif
 
-  /* abs_ei is either 0 or 1, but we avoid exact floating-point comparisons */
+        } /* End if d2_e1e2 < d2_limit_e1 */
 
-  if (abs_e1 < 0.5)
-    v1_num = edges->def[2*e1_id];
-  else
-    v1_num = edges->def[2*e1_id+1];
+      } /* End if d2_e1e2 < d2_limit_e2 */
 
-  if (abs_e2 < 0.5)
-    v2_num = edges->def[2*e2_id];
-  else
-    v2_num = edges->def[2*e2_id+1];
+    } /* 0.0 < s < 1.0 */
 
-  if (v1_num < v2_num) {
-    vtx_equiv->equiv_couple[2*equiv_id] = v1_num;
-    vtx_equiv->equiv_couple[2*equiv_id+1] = v2_num;
-  }
-  else {
-    vtx_equiv->equiv_couple[2*equiv_id] = v2_num;
-    vtx_equiv->equiv_couple[2*equiv_id+1] = v1_num;
-  }
+  } /* If int_p2e2 == false && n_ext_inter < 2 */
 
-  vtx_equiv->n_equiv += 1;
-}
+  /* Define intersection(s) to return */
 
-/*----------------------------------------------------------------------------
- * Add a no trivial intersection in a cs_join_inter_set_t structure.
- *
- * parameters:
- *  e1_id     <-- data relative to edge E1
- *  e2_id     <-- data relative to edge E2
- *  abs_e1    <-- curvilinear abscissa of intersection(s) for edge E1
- *  abs_e2    <-- curvilinear abscissa of intersection(s) for edge E2
- *  inter_set <-> pointer to the structure maintaining data about edge-edge
- *                intersections
- *---------------------------------------------------------------------------*/
+  if (n_int_inter == 1) {
 
-static void
-_add_inter(cs_int_t              e1_id,
-           cs_int_t              e2_id,
-           double                abs_e1,
-           double                abs_e2,
-           cs_join_inter_set_t  *inter_set)
-{
-  cs_join_inter_t  new_inter_e1, new_inter_e2;
+    if (n_ext_inter < 2) { /* Interior intersection is kept */
+      *n_inter = 1;
+      abs_e1[0] = int_inter[0];
+      abs_e2[0] = int_inter[1];
+    }
+    else { /* A choice between interior or extremity intersection
+              has to be done */
 
-  cs_int_t  inter_id = inter_set->n_inter;
+      double  ds = CS_ABS(ext_inter[2] - ext_inter[0]);
+      double  dt = CS_ABS(ext_inter[3] - ext_inter[1]);
 
-  if (inter_id + 1 > inter_set->n_max_inter) {
+      assert(n_ext_inter == 2);
 
-    inter_set->n_max_inter *= 2;
+      if (ds > fraction && dt > fraction) { /* Keep extremity inter. */
+        *n_inter = 2;
+        for (k = 0; k < 2; k++) {
+          abs_e1[k] = ext_inter[2*k];
+          abs_e2[k] = ext_inter[2*k+1];
+        }
+      }
+      else { /* Keep interior inter. */
+        *n_inter = 1;
+        abs_e1[0] = int_inter[0];
+        abs_e2[0] = int_inter[1];
+      }
 
-    BFT_REALLOC(inter_set->inter_lst,
-                2*inter_set->n_max_inter,
-                cs_join_inter_t);
+    }
 
   }
+  else { /* n_int_inter == 0 */
 
-  new_inter_e1.edge_id = e1_id;
-  new_inter_e1.vtx_id = -1;
-  new_inter_e1.curv_abs = abs_e1;
+    *n_inter = n_ext_inter;
 
-  new_inter_e2.edge_id = e2_id;
-  new_inter_e2.vtx_id = -1;
-  new_inter_e2.curv_abs = abs_e2;
+    for (k = 0; k < n_ext_inter; k++) {
+      abs_e1[k] = ext_inter[2*k];
+      abs_e2[k] = ext_inter[2*k+1];
+    }
 
-  if (e1_id < e2_id) {
-    inter_set->inter_lst[2*inter_id] = new_inter_e1;
-    inter_set->inter_lst[2*inter_id+1] = new_inter_e2;
-  }
-  else {
-    inter_set->inter_lst[2*inter_id] = new_inter_e2;
-    inter_set->inter_lst[2*inter_id+1] = new_inter_e1;
   }
 
-  inter_set->n_inter += 1;
+
 }
 
 /*----------------------------------------------------------------------------
@@ -607,6 +1455,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
                     double                  abs_e1[2],
                     cs_int_t                e2_id,
                     double                  abs_e2[2],
+                    double                  parall_eps2,
                     int                     verbosity,
                     int                    *n_inter)
 {
@@ -664,19 +1513,19 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
   if (tst_dbg) {
-    bft_printf("\n\np1e1 : %10u - [%12.6e %12.6e %12.6e] - tol: %12.6g\n",
+    bft_printf("\n\np1e1 : %10u - [%10.8e %10.8e %10.8e] - tol: %10.8g\n",
                p1e1.gnum, p1e1.coord[0], p1e1.coord[1], p1e1.coord[2], p1e1.tolerance);
-    bft_printf("p2e1 : %10u - [%12.6e %12.6e %12.6e] - tol: %12.6g\n",
+    bft_printf("p2e1 : %10u - [%10.8e %10.8e %10.8e] - tol: %10.8g\n",
                p2e1.gnum, p2e1.coord[0], p2e1.coord[1], p2e1.coord[2], p2e1.tolerance);
-    bft_printf("p1e2 : %10u - [%12.6e %12.6e %12.6e] - tol: %12.6g\n",
+    bft_printf("p1e2 : %10u - [%10.8e %10.8e %10.8e] - tol: %10.8g\n",
                p1e2.gnum, p1e2.coord[0], p1e2.coord[1], p1e2.coord[2], p1e2.tolerance);
-    bft_printf("p2e2 : %10u - [%12.6e %12.6e %12.6e] - tol: %12.6g\n\n",
+    bft_printf("p2e2 : %10u - [%10.8e %10.8e %10.8e] - tol: %10.8g\n\n",
                p2e2.gnum, p2e2.coord[0], p2e2.coord[1], p2e2.coord[2], p2e2.tolerance);
-    bft_printf("v0 : [ %12.6e %12.6e %12.6e]\n", v0[0], v0[1], v0[2]);
-    bft_printf("v1 : [ %12.6e %12.6e %12.6e]\n", v1[0], v1[1], v1[2]);
-    bft_printf("v2 : [ %12.6e %12.6e %12.6e]\n\n", v2[0], v2[1], v2[2]);
-    bft_printf("a : %12.6e, b : %12.6e, c : %12.6e\n", a, b, c);
-    bft_printf("d : %12.6e, e : %12.6e, f : %12.6e\n", d, e, f);
+    bft_printf("v0 : [ %10.8e %10.8e %10.8e]\n", v0[0], v0[1], v0[2]);
+    bft_printf("v1 : [ %10.8e %10.8e %10.8e]\n", v1[0], v1[1], v1[2]);
+    bft_printf("v2 : [ %10.8e %10.8e %10.8e]\n\n", v2[0], v2[1], v2[2]);
+    bft_printf("a : %10.8e, b : %10.8e, c : %10.8e\n", a, b, c);
+    bft_printf("d : %10.8e, e : %10.8e, f : %10.8e\n", d, e, f);
   }
 #endif
 
@@ -705,7 +1554,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
   if (tst_dbg)
-    bft_printf(" [I] Test inter. P1E1 - E2: t = %12.6e\n", t);
+    bft_printf(" [I] Test inter. P1E1 - E2: t = %10.8e\n", t);
 #endif
 
   if (t > -fraction && t < 1.0 + fraction) { /* filter */
@@ -729,7 +1578,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
         if (tst_dbg)
           bft_printf("\t[I]-3: Under tol. for P1E1 and a point of E2\n"
-                     "\td2_e1e2 = %12.6e, d2_lim_e1: %12.6e, d2_lim_e2: %12.6e\n",
+                     "\td2_e1e2 = %10.8e, d2_lim_e1: %10.8e, d2_lim_e2: %10.8e\n",
                      d2_e1e2, d2_limit_e1, d2_limit_e2);
 #endif
 
@@ -809,7 +1658,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
           if (tst_dbg)
-            bft_printf("\t[I]-6: Add inter. Vtx-Edge (0.00, %12.6e)\n", t);
+            bft_printf("\t[I]-6: Add inter. Vtx-Edge (0.00, %10.8e)\n", t);
 #endif
 
         }
@@ -828,7 +1677,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
   if (tst_dbg)
-    bft_printf(" [II] Test inter. P2E1 - E2: t = %12.6e\n", t);
+    bft_printf(" [II] Test inter. P2E1 - E2: t = %10.8e\n", t);
 #endif
 
   if (t > -fraction && t < 1.0 + fraction) { /* filter */
@@ -851,7 +1700,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
         if (tst_dbg)
           bft_printf("\t[II]-3: Under tol. for P2E1 and a point of E2\n"
-                     "\td2_e1e2 = %12.6e, d2_lim_e1: %12.6e, d2_lim_e2: %12.6e\n",
+                     "\td2_e1e2 = %10.8e, d2_lim_e1: %10.8e, d2_lim_e2: %10.8e\n",
                      d2_e1e2, d2_limit_e1, d2_limit_e2);
 #endif
 
@@ -929,7 +1778,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
           if (tst_dbg)
-            bft_printf("\t[II]-6: Add inter. Vtx-Edge (1.00, %12.6e)\n", t);
+            bft_printf("\t[II]-6: Add inter. Vtx-Edge (1.00, %10.8e)\n", t);
 #endif
         }
 
@@ -956,7 +1805,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
     if (tst_dbg)
-      bft_printf(" [III] Test inter. P1E2 - E1: s = %12.6e\n", s);
+      bft_printf(" [III] Test inter. P1E2 - E1: s = %10.8e\n", s);
 #endif
 
     if (s > 0.0 && s < 1.0) { /* s = 0.0 and s = 1.0 are already tested */
@@ -966,7 +1815,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
     if (tst_dbg)
-      bft_printf("\t [III-1a] d2_e1e2: %12.6e - d2_lim_e2: %12.6e\n",
+      bft_printf("\t [III-1a] d2_e1e2: %10.8e - d2_lim_e2: %10.8e\n",
                  d2_e1e2, d2_limit_e2);
 #endif
 
@@ -977,7 +1826,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
         if (tst_dbg)
-          bft_printf("\t [IV-1b] d2_e1e2: %12.6e - d2_lim_e1: %12.6e\n",
+          bft_printf("\t [IV-1b] d2_e1e2: %10.8e - d2_lim_e1: %10.8e\n",
                      d2_e1e2, d2_limit_e1);
 #endif
 
@@ -986,7 +1835,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
           if (tst_dbg)
             bft_printf("\t[III]-2: Under tol. for P1E2 and a point of E1\n"
-                       "\t d2_e1e2 = %12.6e, d2_lim_e1: %12.6e, d2_lim_e2: %12.6e\n",
+                       "\t d2_e1e2 = %10.8e, d2_lim_e1: %10.8e, d2_lim_e2: %10.8e\n",
                        d2_e1e2, d2_limit_e1, d2_limit_e2);
 #endif
 
@@ -1001,7 +1850,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
           if (tst_dbg)
-            bft_printf("\t[III]-3: Add inter. Edge-Vtx (%12.6e, 0.00)\n", s);
+            bft_printf("\t[III]-3: Add inter. Edge-Vtx (%10.8e, 0.00)\n", s);
 #endif
 
           if (*n_inter == 2)
@@ -1024,7 +1873,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
     if (tst_dbg)
-      bft_printf(" [IV] Test inter. P2E2 - E1: s = %12.6e\n", s);
+      bft_printf(" [IV] Test inter. P2E2 - E1: s = %10.8e\n", s);
 #endif
 
     if (s > 0.0 && s < 1.0) { /* s = 0.0 and s = 1.0 are already tested */
@@ -1034,7 +1883,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
     if (tst_dbg)
-      bft_printf("\t [IV-1a] d2_e1e2: %12.6e - d2_lim_e2: %12.6e\n",
+      bft_printf("\t [IV-1a] d2_e1e2: %10.8e - d2_lim_e2: %10.8e\n",
                  d2_e1e2, d2_limit_e2);
 #endif
 
@@ -1045,7 +1894,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
         if (tst_dbg)
-          bft_printf("\t [IV-1b] d2_e1e2: %12.6e - d2_lim_e1: %12.6e\n",
+          bft_printf("\t [IV-1b] d2_e1e2: %10.8e - d2_lim_e1: %10.8e\n",
                      d2_e1e2, d2_limit_e1);
 #endif
 
@@ -1054,7 +1903,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
           if (tst_dbg)
             bft_printf("\t[IV]-2: Under tol. for P2E2 and a point of E1\n"
-                       "\t d2_e1e2 = %12.6e, d2_lim_e1: %12.6e, d2_lim_e2: %12.6e\n",
+                       "\t d2_e1e2 = %10.8e, d2_lim_e1: %10.8e, d2_lim_e2: %10.8e\n",
                        d2_e1e2, d2_limit_e1, d2_limit_e2);
 #endif
 
@@ -1069,7 +1918,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
           if (tst_dbg)
-            bft_printf("\t[IV]-3: Add inter (%12.6e, 1.01)\n", s);
+            bft_printf("\t[IV]-3: Add inter (%10.8e, 1.01)\n", s);
 #endif
 
           if (*n_inter == 2)
@@ -1110,12 +1959,11 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
     double  inv_cross_norm2;
     double  cross_norm2 = CS_ABS(a * c - b * b);
-    double  parall_eps2 = 1e-6; /* default value : eps * eps */
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
     if (tst_dbg)
-      bft_printf(" [V]: Test inter. E1 - E2: cross_norm2: %12.6e\n"
-                 "\ta = %12.6e, b = %12.6e, c = %12.6e, a*c = %12.6e\n",
+      bft_printf(" [V]: Test inter. E1 - E2: cross_norm2: %10.8e\n"
+                 "\ta = %10.8e, b = %10.8e, c = %10.8e, a*c = %10.8e\n",
                  cross_norm2, a, b, c, a*c);
 #endif
 
@@ -1152,9 +2000,9 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
         if (tst_dbg)
-          bft_printf("\t[V]-2: s = %12.6e, t = %12.6e\n"
-                     "\t  d2_e1e2: %12.6e, d2_limit_e1: %12.6e, "
-                     "d2_limit_e2: %12.6e\n",
+          bft_printf("\t[V]-2: s = %10.8e, t = %10.8e\n"
+                     "\t  d2_e1e2: %10.8e, d2_limit_e1: %10.8e, "
+                     "d2_limit_e2: %10.8e\n",
                      s, t, d2_e1e2, d2_limit_e1, d2_limit_e2);
 #endif
 
@@ -1170,7 +2018,7 @@ _edge_edge_3d_inter(const cs_join_mesh_t   *mesh,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
           if (tst_dbg)
-            bft_printf("\t[V]-3: Add inter. Edge-Edge (%12.6e,%12.6e)\n", s, t);
+            bft_printf("\t[V]-3: Add inter. Edge-Edge (%10.8e,%10.8e)\n", s, t);
 #endif
 
           *n_inter += 1;
@@ -1211,15 +2059,24 @@ _create_exch_inter_datatype(void)
 
   /* Define array of displacements */
 
+#if defined(MPI_VERSION) && (MPI_VERSION >= 2)
   MPI_Get_address(&inter, displacements);
   MPI_Get_address(&inter.curv_abs, displacements + 1);
+#else
+  MPI_Address(&inter, displacements);
+  MPI_Address(&inter.curv_abs, displacements + 1);
+#endif
 
   displacements[1] -= displacements[0];
   displacements[0] = 0;
 
   /* Create new datatype */
 
+#if defined(MPI_VERSION) && (MPI_VERSION >= 2)
   MPI_Type_create_struct(2, blocklengths, displacements, types, &new_type);
+#else
+  MPI_Type_struct(2, blocklengths, displacements, types, &new_type);
+#endif
   MPI_Type_commit(&new_type);
 
   return new_type;
@@ -1386,6 +2243,8 @@ _face_bbox_search_stats(const fvm_neighborhood_t  *face_neighborhood,
   if (cs_glob_n_ranks == 1)
     bft_printf(_("      CPU time:                   %10.3g   %10.3g\n"),
                build_cpu_time + box_cpu_time, query_cpu_time);
+  bft_printf_flush();
+
 }
 
 /*============================================================================
@@ -1500,8 +2359,6 @@ cs_join_inter_edges_create(cs_int_t  n_edges)
 
   cs_join_inter_edges_t  *inter_edges = NULL;
 
-  if (n_edges == 0)
-    return NULL;
 
   /* Allocate and initialize structure */
 
@@ -1732,112 +2589,177 @@ cs_join_inter_edges_destroy(cs_join_inter_edges_t  *inter_edges)
  *---------------------------------------------------------------------------*/
 
 void
-cs_join_add_equiv_from_edges(const cs_join_param_t         param,
-                             const cs_join_mesh_t         *mesh,
+cs_join_add_equiv_from_edges(cs_join_param_t               param,
+                             cs_join_mesh_t               *mesh,
                              const cs_join_edges_t        *edges,
                              const cs_join_inter_edges_t  *inter_edges,
                              cs_join_eset_t               *vtx_equiv)
 {
-  cs_int_t  i, j, k, i1, i2;
+  cs_int_t  i, j, k, i1, i2, size, esize, n_breaks;
 
-  cs_int_t  *tmp_vtx_lst = NULL;
-  float  *tmp_abs_lst = NULL;
-  double  *tmp_tol_lst = NULL;
+  cs_bool_t  *equiv_lst = NULL;
+  cs_int_t  *vtx_lst = NULL, *tag_lst = NULL;
+  float  *abs_lst = NULL;
+  double  *tol_lst = NULL;
 
-  if (inter_edges == NULL)
-    return;
+  int  n_break_counter = 0, n_max_breaks = 0;
 
-  if (inter_edges->index[inter_edges->n_edges] == 0)
-    return; /* Intersections only on the extremities */
+  if (inter_edges != NULL) {
+    if (inter_edges->index[inter_edges->n_edges] > 0) {
 
-  assert(inter_edges->vtx_lst != NULL);
-  assert(inter_edges->abs_lst != NULL);
+      assert(inter_edges->vtx_lst != NULL);
+      assert(inter_edges->abs_lst != NULL);
 
-  BFT_MALLOC(tmp_vtx_lst, inter_edges->max_sub_size + 2, cs_int_t);
-  BFT_MALLOC(tmp_abs_lst, inter_edges->max_sub_size + 2, float);
-  BFT_MALLOC(tmp_tol_lst, inter_edges->max_sub_size + 2, double);
+      size = inter_edges->max_sub_size + 2;
+      BFT_MALLOC(vtx_lst, size, cs_int_t);
+      BFT_MALLOC(tag_lst, size, cs_int_t);
+      BFT_MALLOC(abs_lst, size, float);
+      BFT_MALLOC(tol_lst, size, double);
+      esize = size*(size-1)/2;
+      BFT_MALLOC(equiv_lst, esize, cs_bool_t);
 
-  /* Main loop */
+      /* Main loop */
 
-  for (i = 0; i < inter_edges->n_edges; i++) {
+      for (i = 0; i < inter_edges->n_edges; i++) {
 
-    cs_int_t  v1_num = edges->def[2*i];
-    cs_int_t  v2_num = edges->def[2*i+1];
-    cs_int_t  v1_id = v1_num - 1;
-    cs_int_t  v2_id = v2_num - 1;
-    cs_int_t  start = inter_edges->index[i];
-    cs_int_t  end = inter_edges->index[i+1];
-    cs_int_t  n_sub_elts = 2 + end - start;
-    cs_real_t  edge_length = _compute_length(mesh->vertices[v1_id],
-                                             mesh->vertices[v2_id]);
-
-    /* Build temporay lists */
-
-    tmp_vtx_lst[0] = v1_num;
-    tmp_abs_lst[0] = 0.0;
-    tmp_tol_lst[0] =  (mesh->vertices[v1_id]).tolerance
-                    * _cs_join_tol_eps_coef * param.edge_equiv_tol_coef;
-
-    for (j = start, k = 1; j < end; j++, k++) {
-      tmp_vtx_lst[k] = inter_edges->vtx_lst[j];
-      tmp_abs_lst[k] = inter_edges->abs_lst[j];
-      tmp_tol_lst[k] =  (mesh->vertices[tmp_vtx_lst[k]-1]).tolerance
-                      * _cs_join_tol_eps_coef * param.edge_equiv_tol_coef;
-    }
+        cs_int_t  v1_num = edges->def[2*i];
+        cs_int_t  v2_num = edges->def[2*i+1];
+        cs_int_t  v1_id = v1_num - 1;
+        cs_int_t  v2_id = v2_num - 1;
+        cs_int_t  start = inter_edges->index[i];
+        cs_int_t  end = inter_edges->index[i+1];
+        cs_int_t  n_sub_elts = 2 + end - start;
+        double  edge_length = _compute_length(mesh->vertices[v1_id],
+                                              mesh->vertices[v2_id]);
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+        fvm_gnum_t  v1_gnum = (mesh->vertices[v1_num-1]).gnum;
+        fvm_gnum_t  v2_gnum = (mesh->vertices[v2_num-1]).gnum;
+        bft_printf("\n%6d: [%9u] = (%7d [%9u] - %7d [%9u] - len: %8.6e)\n",
+                   i, edges->gnum[i], v1_num, v1_gnum, v2_num, v2_gnum,
+                   edge_length);
+        if (inter_edges->vtx_glst == NULL) {
+          for (j = start, k = 0; j < end; j++, k++) {
+            int  vid = inter_edges->vtx_lst[j] - 1;
+            double  ds_tol = mesh->vertices[vid].tolerance/edge_length;
+            bft_printf("    %7d (%9u) - (%7d, s = %8.6e, ds_tol = %8.6e)\n",
+                       k+1, vid+1, mesh->vertices[vid].gnum,
+                       inter_edges->abs_lst[j], ds_tol);
+          }
+        }
+        else {
+          for (j = start, k = 0; j < end; j++, k++) {
+            int  vid = inter_edges->vtx_lst[j] - 1;
+            double  ds_tol = mesh->vertices[vid].tolerance/edge_length;
+            bft_printf("   %9u - (%7d, s = %8.6e, ds_tol = %8.6e)\n",
+                       k+1, inter_edges->vtx_glst[j],
+                       inter_edges->abs_lst[j], ds_tol);
+          }
+        }
+#endif
 
-    tmp_vtx_lst[k] = v2_num;
-    tmp_abs_lst[k] = 1.0;
-    tmp_tol_lst[k] =  (mesh->vertices[v2_id]).tolerance
-                    * _cs_join_tol_eps_coef * param.edge_equiv_tol_coef;
+        /* Build temporary lists */
 
-    /* Loop on couples of vertices to find if two vertices are equivalent */
+        vtx_lst[0] = v1_num;
+        abs_lst[0] = 0.0;
+        tol_lst[0] = (mesh->vertices[v1_id]).tolerance * _cs_join_tol_eps_coef;
 
-    for (i1 = 0; i1 < n_sub_elts - 1; i1++) {
+        for (j = start, k = 1; j < end; j++, k++) {
+          vtx_lst[k] = inter_edges->vtx_lst[j];
+          abs_lst[k] = inter_edges->abs_lst[j];
+          tol_lst[k] =  (mesh->vertices[vtx_lst[k]-1]).tolerance
+                       * _cs_join_tol_eps_coef;
+        }
 
-      for (i2 = i1 + 1; i2 < n_sub_elts; i2++) {
+        vtx_lst[k] = v2_num;
+        abs_lst[k] = 1.0;
+        tol_lst[k] =  (mesh->vertices[v2_id]).tolerance
+                    * _cs_join_tol_eps_coef;
 
-        if (tmp_vtx_lst[i1] != tmp_vtx_lst[i2]) {
+        /* Loop on couples of vertices to find if two vertices are equivalent
+           Apply a tolerance reduction if necessary. */
 
-          float  ds = tmp_abs_lst[i2] - tmp_abs_lst[i1];
-          cs_real_t  range = ds * edge_length;
+        n_breaks = _find_edge_equiv(param,
+                                    n_sub_elts,
+                                    abs_lst,
+                                    tol_lst,
+                                    equiv_lst,
+                                    tag_lst,
+                                    edge_length);
 
-          assert(range >= 0.0);
+        if (n_breaks > 0) {
 
-          /* Add an equivalence if test is true */
+          n_break_counter += 1;
+          if (param.verbosity > 2)
+            bft_printf(" Edge %8d: n_equiv. broken: %d\n", i+1, n_breaks);
 
-          if (tmp_tol_lst[i1] >= range && tmp_tol_lst[i2] >= range) {
+        }
 
-            cs_int_t  equiv_id = vtx_equiv->n_equiv;
+        n_max_breaks = CS_MAX(n_max_breaks, n_breaks);
 
-            cs_join_eset_check_size(equiv_id, &vtx_equiv);
+        /* Add new equivalences */
 
-            if (tmp_vtx_lst[i1] < tmp_vtx_lst[i2]) {
-              vtx_equiv->equiv_couple[2*equiv_id] = tmp_vtx_lst[i1];
-              vtx_equiv->equiv_couple[2*equiv_id+1] = tmp_vtx_lst[i2];
-            }
-            else {
-              vtx_equiv->equiv_couple[2*equiv_id] = tmp_vtx_lst[i2];
-              vtx_equiv->equiv_couple[2*equiv_id+1] = tmp_vtx_lst[i1];
-            }
-            vtx_equiv->n_equiv += 1;
+        for (i1 = 0; i1 < n_sub_elts - 1; i1++) {
+          for (i2 = i1 + 1; i2 < n_sub_elts; i2++) {
 
-          }
-          else
-            break;
+            if (tag_lst[i1] == tag_lst[i2]) {
+              if (vtx_lst[i1] != vtx_lst[i2]) {
 
-        } /* End if vtx_lst[i1/i2] != */
+                cs_int_t  equiv_id = vtx_equiv->n_equiv;
+                cs_join_eset_check_size(equiv_id, &vtx_equiv);
 
-      } /* End of loop on i2 */
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+                bft_printf("  Add equiv %d between [%u, %u]\n",
+                           equiv_id+1,
+                           mesh->vertices[vtx_lst[i1]-1].gnum,
+                           mesh->vertices[vtx_lst[i2]-1].gnum);
+#endif
 
-    } /* End of loop on i1 */
+                if (vtx_lst[i1] < vtx_lst[i2]) {
+                  vtx_equiv->equiv_couple[2*equiv_id] = vtx_lst[i1];
+                  vtx_equiv->equiv_couple[2*equiv_id+1] = vtx_lst[i2];
+                }
+                else {
+                  vtx_equiv->equiv_couple[2*equiv_id] = vtx_lst[i2];
+                  vtx_equiv->equiv_couple[2*equiv_id+1] = vtx_lst[i1];
+                }
+                vtx_equiv->n_equiv += 1;
 
-  } /* End of loop on edge intersections */
+              }
+            } /* Equivalence found */
 
-  /* Free memory */
+          } /* End of loop on i2 */
+        } /* End of loop on i1 */
+
+      } /* End of loop on edge intersections */
+
+      /* Free memory */
+
+      BFT_FREE(vtx_lst);
+      BFT_FREE(tag_lst);
+      BFT_FREE(abs_lst);
+      BFT_FREE(tol_lst);
+      BFT_FREE(equiv_lst);
+
+    } /* inter_edges->index[inter_edges->n_edges] > 0 */
+  } /* inter_edges != NULL */
+
+  if (param.verbosity > 0) {
+
+    fvm_gnum_t n_g_break_counter = n_break_counter;
+    fvm_parall_counter(&n_g_break_counter, 1);
+
+    bft_printf(_("\n  Equivalences broken for %lu edges.\n"),
+               (unsigned long)n_g_break_counter);
+
+    if (param.verbosity > 1) {
+      fvm_lnum_t g_n_max_breaks = n_max_breaks;
+      fvm_parall_counter_max(&g_n_max_breaks, 1);
+      bft_printf(_("\n  Max. number of equiv. breaks: %lu\n"),
+                 (unsigned long)g_n_max_breaks);
+    }
+  }
 
-  BFT_FREE(tmp_vtx_lst);
-  BFT_FREE(tmp_abs_lst);
-  BFT_FREE(tmp_tol_lst);
 }
 
 #if defined(HAVE_MPI)
@@ -2520,7 +3442,7 @@ cs_join_intersect_update_struct(const cs_join_edges_t   *edges,
 
   /* Pre-allocate a buffer to store data on possible new vertices */
 
-  max_size = 25;
+  max_size = 100;
   BFT_MALLOC(new_vertices, max_size, cs_join_vertex_t);
 
   /* Fill vtx_lst array of the cs_join_inter_edges_t structure */
@@ -2615,15 +3537,19 @@ cs_join_intersect_edges(cs_join_param_t         param,
                         cs_join_eset_t        **vtx_eset,
                         cs_join_inter_set_t   **inter_set)
 {
-  cs_int_t  i, j, k, n_inter;
+  cs_int_t  i, j, k;
   double  clock_start, clock_end, cpu_start, cpu_end;
   double  abs_e1[2], abs_e2[2];
 
   cs_join_type_t  join_type = CS_JOIN_TYPE_CONFORM;
+  cs_int_t  n_inter = 0;
   cs_int_t  n_inter_detected = 0, n_real_inter = 0, n_trivial_inter = 0;
   cs_join_inter_set_t  *_inter_set = NULL;
   cs_join_eset_t  *_vtx_eset = NULL;
 
+  const float  merge_limit = param.fraction * param.pre_merge_factor;
+  const double  parall_eps2 = 1e-6;
+
   /* Sanity checks */
 
   assert(mesh != NULL);
@@ -2632,12 +3558,15 @@ cs_join_intersect_edges(cs_join_param_t         param,
   clock_start = bft_timer_wtime();
   cpu_start = bft_timer_cpu_time();
 
+  if (param.verbosity > 2)
+    bft_printf("  Parallel intersection criterion: %8.5e\n", parall_eps2);
+
   /* Initialization of structures */
 
   _n_inter_tolerance_warnings = 0;
 
-  _inter_set = cs_join_inter_set_create(25);
-  _vtx_eset = cs_join_eset_create(15);
+  _inter_set = cs_join_inter_set_create(50);
+  _vtx_eset = cs_join_eset_create(30);
 
   /* Loop on edges */
 
@@ -2653,13 +3582,25 @@ cs_join_intersect_edges(cs_join_param_t         param,
 
       /* Get edge-edge intersection */
 
-      _edge_edge_3d_inter(mesh,
-                          edges,
-                          param.fraction,
-                          e1_id, abs_e1,
-                          e2_id, abs_e2,
-                          param.verbosity,
-                          &n_inter);
+      if (param.icm == 1)
+        _edge_edge_3d_inter(mesh,
+                            edges,
+                            param.fraction,
+                            e1_id, abs_e1,
+                            e2_id, abs_e2,
+                            parall_eps2,
+                            param.verbosity,
+                            &n_inter);
+
+      else if (param.icm == 2)
+        _new_edge_edge_3d_inter(mesh,
+                                edges,
+                                param.fraction,
+                                e1_id, abs_e1,
+                                e2_id, abs_e2,
+                                parall_eps2,
+                                param.verbosity,
+                                &n_inter);
 
       n_inter_detected += n_inter;
 
@@ -2687,8 +3628,8 @@ cs_join_intersect_edges(cs_join_param_t         param,
 
         cs_bool_t  trivial = false;
 
-        if (abs_e1[k] <= 0.0 || abs_e1[k] >= 1.0)
-          if (abs_e2[k] <= 0.0 || abs_e2[k] >= 1.0)
+        if (abs_e1[k] <= merge_limit || abs_e1[k] >= 1.0 - merge_limit)
+          if (abs_e2[k] <= merge_limit || abs_e2[k] >= 1.0 - merge_limit)
             trivial = true;
 
         if (trivial) {
@@ -2727,17 +3668,17 @@ cs_join_intersect_edges(cs_join_param_t         param,
   if (param.verbosity > 0) {
 
     bft_printf(_("\n"
-                 "  Number of intersections detected: %12lu\n"
+                 "  Number of local intersections detected: %12lu\n"
                  "    Vertex-Vertex intersections:    %12lu\n"
                  "    Other intersections:            %12lu\n"),
                n_inter_detected, n_trivial_inter, n_real_inter);
 
-    if (param.verbosity > 1)
-      bft_printf(_("\n  Number of edge-edge intersection warnings: %8d\n"),
+    if (param.verbosity > 1) {
+      bft_printf(_("\n  Local number of edge-edge intersection warnings:%9d\n"),
                  _n_inter_tolerance_warnings);
-
-    bft_printf(_("\n  Number of equivalences between existing vertices: %9d\n"),
-               _vtx_eset->n_equiv);
+      bft_printf(_("\n  Local number of equivalences between vertices:%9d\n"),
+                 _vtx_eset->n_equiv);
+    }
 
   }
 
@@ -2811,7 +3752,6 @@ cs_join_intersect_faces(const cs_join_param_t   param,
     _get_face_extents(join_mesh->face_vtx_idx[i],
                       join_mesh->face_vtx_idx[i+1],
                       join_mesh->face_vtx_lst,
-                      join_mesh->n_vertices,
                       join_mesh->vertices,
                       f_extents + i*6);
 
@@ -3023,10 +3963,7 @@ cs_join_intersect_face_to_edge(const cs_join_mesh_t   *mesh,
 
     for (j = 0; j < n_edges; j++, edge_id++) {
 
-      cs_int_t  e_start = edge_visib->index[edge_id];
-      cs_int_t  e_end = edge_visib->index[edge_id+1];
-
-      assert(_count == e_end - e_start);
+      assert(_count == edge_visib->index[edge_id+1]-edge_visib->index[edge_id]);
 
       shift = edge_visib->index[edge_id];
 
@@ -3096,9 +4033,6 @@ cs_join_inter_edges_dump(const cs_join_inter_edges_t  *inter_edges,
     bft_printf("\n%6d: [%9u] = (%7d [%9u] - %7d [%9u])\n",
                i, edges->gnum[i], v1_num, v1_gnum, v2_num, v2_gnum);
 
-    assert(v1_num != v2_num);
-    assert(v1_gnum != v2_gnum);
-
     bft_printf("    n_sub_inter: %4d - index : %7d <-- %7d\n",
                end-start, start, end);
 
diff --git a/src/base/cs_join_merge.c b/src/base/cs_join_merge.c
index e4ee336..9a7e04d 100644
--- a/src/base/cs_join_merge.c
+++ b/src/base/cs_join_merge.c
@@ -89,7 +89,7 @@ BEGIN_C_DECLS
 
 /* Turn on (1) or off (0) the tolerance reduc. */
 #define  CS_JOIN_MERGE_TOL_REDUC  1
-#define  CS_JOIN_MERGE_INV_TOL  0
+#define  CS_JOIN_MERGE_INV_TOL  1
 
 /*============================================================================
  * Global variable definitions
@@ -99,13 +99,10 @@ BEGIN_C_DECLS
 
 enum {
 
-  CS_JOIN_MERGE_MAX_GLOB_ITERS = 5,  /* Max. number of glob. iter. for finding
-                                        equivalent vertices */
-  CS_JOIN_MERGE_MAX_LOC_ITERS = 15,  /* Max. number of loc. iter. for finding
-                                        equivalent vertices */
-  CS_JOIN_MERGE_MAX_REDUCTIONS = 100 /* Max. number of loc. iter. for
-                                        reducing the tolerance */
-
+  CS_JOIN_MERGE_MAX_GLOB_ITERS = 25,  /* Max. number of glob. iter. for finding
+                                         equivalent vertices */
+  CS_JOIN_MERGE_MAX_LOC_ITERS = 50    /* Max. number of loc. iter. for finding
+                                         equivalent vertices */
 };
 
 /* Coefficient to deal with rounding approximations */
@@ -1205,120 +1202,61 @@ _exchange_merged_vertices(const cs_join_mesh_t  *work,
 #endif /* HAVE_MPI */
 
 /*----------------------------------------------------------------------------
- * Check if all vertices in the list include the target_vertex in their
- * tolerance.
- *
- * If check is ok, no need to apply a reduction of the tolerance.
- *
- * parameters:
- *   start      <-- index for the last vertex in id_lst
- *   end        <-- index for the last vertex in id_lst
- *   list       <-- list of id in vertices
- *   vertices   <-- pointer to an array of cs_join_vertex_t structures
- *   ref_vertex <-- vertex resulting of the merge
- *
- * returns:
- *   true if all vertices have ref_vertex in their tolerance, false otherwise
- *---------------------------------------------------------------------------*/
-
-static cs_bool_t
-_is_in_tolerance(cs_int_t                start,
-                 cs_int_t                end,
-                 const fvm_gnum_t        list[],
-                 const cs_join_vertex_t  vertices[],
-                 cs_join_vertex_t        ref_vertex)
-{
-  cs_int_t  i;
-
-  for (i = start; i < end; i++) {
-
-    cs_join_vertex_t  cur_vertex = vertices[list[i]];
-    cs_real_t  d_cur_ref = _compute_length(cur_vertex, ref_vertex);
-    cs_real_t  tolerance =  cur_vertex.tolerance * cs_join_tol_eps_coef2;
-
-    if (d_cur_ref > tolerance)
-      return false;
-
-  } /* End of loop on each vertex of the list */
-
-  return true;
-}
-
-/*----------------------------------------------------------------------------
- * Get the resulting cs_join_vertex_t structure after the merge of a list
+ * Get the resulting cs_join_vertex_t structure after the merge of a set
  * of vertices.
  *
  * parameters:
- *   ref_gnum <-- global number associated to the current list of vertices
- *   start    <-- index for the first vertex in id_list
- *   end      <-- index for the last vertex in id_list
- *   list     <-- list of id in vertices array
- *   vertices <-- array of cs_join_vertex_t structures
+ *   n_elts    <-- size of the set
+ *   set       <-- set of vertices
  *
  * returns:
  *   a cs_join_vertex_t structure for the resulting vertex
  *---------------------------------------------------------------------------*/
 
 static cs_join_vertex_t
-_get_merged_vertex(fvm_gnum_t              ref_gnum,
-                   cs_int_t                start,
-                   cs_int_t                end,
-                   const fvm_gnum_t        list[],
-                   const cs_join_vertex_t  vertices[])
+_compute_merged_vertex(cs_int_t                n_elts,
+                       const cs_join_vertex_t  set[])
 {
   cs_int_t  i, k;
-  cs_join_vertex_t  merged_vertex;
+  cs_real_t  w;
+  cs_join_vertex_t  mvtx;
 
-  cs_int_t  n_elts = end - start;
-
-  /* Initialize cs_join_vertex_t structure */
-
-  merged_vertex.gnum = ref_gnum;
-  merged_vertex.tolerance = vertices[list[start]].tolerance;
-
-  /* Compute the resulting vertex data of the merge */
-
-  for (i = start; i < end; i++)
-    merged_vertex.tolerance = CS_MIN(vertices[list[i]].tolerance,
-                                     merged_vertex.tolerance);
+  cs_real_t  denum = 0.0;
 
   assert(n_elts > 0);
 
-  /* Compute the resulting coordinates of the merged vertices */
-
-  for (k = 0; k < 3; k++)
-    merged_vertex.coord[k] = 0.0;
+  /* Initialize cs_join_vertex_t structure */
 
-#if CS_JOIN_MERGE_INV_TOL
-  {
-    cs_real_t  denum = 0.0;
+  mvtx.gnum = set[0].gnum;
+  mvtx.tolerance = set[0].tolerance;
 
-    for (i = start; i < end; i++)
-      denum += 1.0/vertices[list[i]].tolerance;
+  for (k = 0; k < 3; k++)
+    mvtx.coord[k] = 0.0;
 
-    for (k = 0; k < 3; k++) {
+  /* Compute the resulting vertex */
 
-      for (i = start; i < end; i++)
-        merged_vertex.coord[k] +=
-          1.0/vertices[list[i]].tolerance * vertices[list[i]].coord[k];
+  for (i = 0; i < n_elts; i++) {
 
-      merged_vertex.coord[k] /= denum;
+    mvtx.tolerance = CS_MIN(set[i].tolerance, mvtx.tolerance);
+    mvtx.gnum = CS_MIN(set[i].gnum, mvtx.gnum);
 
-    } /* End of loop on coordinates */
+  /* Compute the resulting coordinates of the merged vertices */
 
-  }
+#if CS_JOIN_MERGE_INV_TOL
+    w = 1.0/set[i].tolerance;
 #else
+    w = 1.0;
+#endif
+    denum += w;
 
-  for (k = 0; k < 3; k++) {
-
-    for (i = start; i < end; i++)
-      merged_vertex.coord[k] += vertices[list[i]].coord[k];
-    merged_vertex.coord[k] /= n_elts;
-
+    for (k = 0; k < 3; k++)
+      mvtx.coord[k] += w * set[i].coord[k];
   }
-#endif
 
-  return merged_vertex;
+  for (k = 0; k < 3; k++)
+    mvtx.coord[k] /= denum;
+
+  return mvtx;
 }
 
 /*----------------------------------------------------------------------------
@@ -1338,23 +1276,27 @@ _get_merged_vertex(fvm_gnum_t              ref_gnum,
  *---------------------------------------------------------------------------*/
 
 static void
-_trivial_merge(cs_join_param_t     param,
-               cs_join_gset_t     *merge_set,
-               cs_join_vertex_t    vertices[],
-               cs_join_gset_t    **p_equiv_gnum)
+_pre_merge(cs_join_param_t     param,
+           cs_join_gset_t     *merge_set,
+           cs_join_vertex_t    vertices[],
+           cs_join_gset_t    **p_equiv_gnum)
 {
   cs_int_t  i, j, j1, j2, k, k1, k2, n_sub_elts;
-  cs_real_t  delta;
+  cs_real_t  deltad, deltat, limit, min_tol;
+  cs_join_vertex_t  mvtx, coupled_vertices[2];
 
-  cs_int_t  max_n_sub_elts = 0;
+  cs_int_t  max_n_sub_elts = 0, n_local_pre_merge = 0;
   cs_int_t  *merge_index = merge_set->index;
   fvm_gnum_t  *merge_list = merge_set->g_list;
   fvm_gnum_t  *sub_list = NULL, *init_list = NULL;
   cs_join_gset_t  *equiv_gnum = NULL;
 
-#if 0 && defined(DEBUG) && !defined(NDEBUG)
-  if (param.verbosity > 2) {
+  const cs_real_t  pmf = param.pre_merge_factor;
+
+  cs_join_gset_sort_sublist(merge_set);
 
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  {
     int  len;
     FILE  *dbg_file = NULL;
     char  *filename = NULL;
@@ -1370,7 +1312,6 @@ _trivial_merge(cs_join_param_t     param,
     fflush(dbg_file);
     BFT_FREE(filename);
     fclose(dbg_file);
-
   }
 #endif
 
@@ -1425,13 +1366,17 @@ _trivial_merge(cs_join_param_t     param,
         }
         else {
 
-          if (fabs(v1.tolerance - v2.tolerance) < 1e-30) {
+          min_tol = CS_MIN(v1.tolerance, v2.tolerance);
+          limit = min_tol * pmf;
+          deltat = CS_ABS(v1.tolerance - v2.tolerance);
 
-            delta = 0.0;
-            for (k = 0; k < 3; k++)
-              delta += v1.coord[k] - v2.coord[k];
+          if (deltat < limit) {
 
-            if (fabs(delta) < 1e-30) { /* Identical vertices */
+            deltad = _compute_length(v1, v2);
+
+            if (deltad < limit) { /* Do a pre-merge */
+
+              n_local_pre_merge++;
 
               if (v1.gnum < v2.gnum)
                 k1 = j1, k2 = j2;
@@ -1442,9 +1387,14 @@ _trivial_merge(cs_join_param_t     param,
                 if (sub_list[k] == sub_list[k2])
                   sub_list[k] = sub_list[k1];
 
-            } /* End if delta == 0.0 */
+              coupled_vertices[0] = v1, coupled_vertices[1] = v2;
+              mvtx = _compute_merged_vertex(2, coupled_vertices);
+              vertices[v1_id] = mvtx;
+              vertices[v2_id] = mvtx;
+
+            } /* deltad < limit */
 
-          } /* End if v1.tol != v2.tol */
+          } /* deltat < limit */
 
         } /* v1.gnum != v2.gnum */
 
@@ -1471,6 +1421,22 @@ _trivial_merge(cs_join_param_t     param,
 
   cs_join_gset_clean(merge_set);
 
+  /* Display information about the joining */
+
+  if (param.verbosity > 0) {
+
+    fvm_gnum_t n_g_counter = n_local_pre_merge;
+    fvm_parall_counter(&n_g_counter, 1);
+
+    bft_printf(_("\n  Pre-merge for %lu global couple of elements.\n"),
+               (unsigned long)n_g_counter);
+
+    if (param.verbosity > 1) {
+      bft_printf(_("\n  Local number of pre-merge: %d\n"),
+                 n_local_pre_merge);
+    }
+  }
+
   /* Free memory */
 
   BFT_FREE(sub_list);
@@ -1482,315 +1448,507 @@ _trivial_merge(cs_join_param_t     param,
 }
 
 /*----------------------------------------------------------------------------
- * Apply the tolerance reduction until each vertex of the list has
- * a resulting vertex under its tolerance.
+ * Check if all vertices in the set include the ref_vertex in their tolerance.
  *
  * parameters:
- *   param        <-- set of user-defined parameters
- *   start        <-- index for the last vertex in sub_list
- *   end          <-- index for the last vertex in sub_list
- *   list         <-- list of id in vertices
- *   vertices     <-> pointer to a cs_join_vertex_t structure
- *   distances    <-- list of distance between couples of vertices
- *   ref_tags     <-> list of reference tags for each vertex of sub_list
- *   work_tags    <-> list of working tags for each vertex of sub_list
- *   bool_lst     <-> list of booleans
- *   n_reductions <-> number of tolerance reduction done
+ *   set_size   <-- size of set of vertices
+ *   vertices   <-- set of vertices to check
+ *   ref_vertex <-- ref. vertex
+ *
+ * returns:
+ *   true if all vertices have ref_vertex in their tolerance, false otherwise
  *---------------------------------------------------------------------------*/
 
-static void
-_reduce_tolerance(cs_join_param_t     param,
-                  cs_int_t            start,
-                  cs_int_t            end,
-                  const fvm_gnum_t    list[],
-                  cs_join_vertex_t    vertices[],
-                  const cs_real_t     distances[],
-                  fvm_gnum_t          ref_tags[],
-                  fvm_gnum_t          work_tags[],
-                  cs_bool_t           bool_lst[],
-                  int                *n_reductions)
+static cs_bool_t
+_is_in_tolerance(cs_int_t                set_size,
+                 const cs_join_vertex_t  set[],
+                 cs_join_vertex_t        ref_vertex)
 {
   cs_int_t  i;
 
-  cs_bool_t reduc_tol = true;
+  for (i = 0; i < set_size; i++) {
 
-  while (reduc_tol == true) {
+    cs_real_t  d2ref = _compute_length(set[i], ref_vertex);
+    cs_real_t  tolerance =  set[i].tolerance * cs_join_tol_eps_coef2;
 
-    cs_int_t  i1, i2, shift;
+    if (d2ref > tolerance)
+      return false;
 
-    *n_reductions += 1;
+  }
 
-    if (*n_reductions > CS_JOIN_MERGE_MAX_REDUCTIONS)
-      bft_error(__FILE__, __LINE__, 0,
-                _("  Max number of tolerance reductions has been reached.\n"
-                  "  Check your joining parameters.\n"));
+  return true;
+}
 
-    /* Reduce tolerance by the constant "reduce_tol_factor" */
+/*----------------------------------------------------------------------------
+ * Test if we have to continue to the subset building
+ *
+ * parameters:
+ *   set_size  <-- size of set
+ *   prev_num  <-> array used to store previous subset_num
+ *   new_num   <-> number associated to each vertices of the set
+ *
+ * returns:
+ *   true or false
+ *---------------------------------------------------------------------------*/
 
-    for (i = start; i < end; i++)
-      vertices[list[i]].tolerance *= param.reduce_tol_factor;
+static cs_bool_t
+_continue_subset_building(int              set_size,
+                          const cs_int_t   prev_num[],
+                          const cs_int_t   new_num[])
+{
+  int  i;
 
-    /* Define a boolean list on couples of vertices which are under
-       tolerance each other */
+  for (i = 0; i < set_size; i++)
+    if (new_num[i] != prev_num[i])
+      return true;
 
-    for (shift = 0, i1 = start; i1 < end - 1; i1++) {
+  return false;
+}
 
-      cs_join_vertex_t  v1 = vertices[list[i1]];
+/*----------------------------------------------------------------------------
+ * Define subsets of vertices.
+ *
+ * parameters:
+ *   set_size    <-- size of set
+ *   state       <-- array keeping the state of the link
+ *   subset_num  <-> number associated to each vertices of the set
+ *---------------------------------------------------------------------------*/
 
-      for (i2 = i1 + 1; i2 < end; i2++) {
+static void
+_iter_subset_building(cs_int_t                set_size,
+                      const cs_int_t          state[],
+                      cs_int_t                subset_num[])
+{
+  cs_int_t  i1, i2, k;
+
+  for (k = 0, i1 = 0; i1 < set_size-1; i1++) {
+    for (i2 = i1 + 1; i2 < set_size; i2++, k++) {
 
-        cs_join_vertex_t  v2 = vertices[list[i2]];
+      if (state[k] == 1) { /* v1 - v2 are in tolerance each other */
 
-        if (v2.tolerance < distances[shift] || v1.tolerance < distances[shift])
-          bool_lst[shift++] = false;
-        else
-          bool_lst[shift++] = true;
+        int _min = CS_MIN(subset_num[i1], subset_num[i2]);
+
+        subset_num[i1] = _min;
+        subset_num[i2] = _min;
 
       }
 
     }
+  }
 
-    /* Update tag list according to the values of bool_lst */
+}
 
-    for (i = start; i < end; i++)
-      work_tags[i] = ref_tags[i];
+/*----------------------------------------------------------------------------
+ * Define subsets of vertices.
+ *
+ * parameters:
+ *   set_size    <-- size of set
+ *   state       <-- array keeping the state of the link
+ *   prev_num    <-> array used to store previous subset_num
+ *   subset_num  <-> number associated to each vertices of the set
+ *---------------------------------------------------------------------------*/
 
-    for (shift = 0, i1 = start; i1 < end - 1; i1++) {
-      for (i2 = i1 + 1; i2 < end; i2++) {
+static void
+_build_subsets(cs_int_t          set_size,
+               const cs_int_t    state[],
+               cs_int_t          prev_num[],
+               cs_int_t          subset_num[])
+{
+  int  i;
+  cs_int_t  n_loops = 0;
 
-        if (bool_lst[shift] == true) {
+  /* Initialize */
 
-          fvm_gnum_t  _min = CS_MIN(work_tags[i1], work_tags[i2]);
+  for (i = 0; i < set_size; i++) {
+    subset_num[i] = i+1;
+    prev_num[i] = subset_num[i];
+  }
 
-          work_tags[i1] = _min;
-          work_tags[i2] = _min;
+  _iter_subset_building(set_size, state, subset_num);
 
-        }
-        shift++;
+  while (   _continue_subset_building(set_size, prev_num, subset_num)
+         && n_loops < CS_JOIN_MERGE_MAX_LOC_ITERS ) {
 
-      } /* End of loop on i2 */
-    } /* End of loop on i1 */
+    n_loops++;
 
-    /* Check if the reduction of the tolerance is sufficient */
+    for (i = 0; i < set_size; i++)
+      prev_num[i] = subset_num[i];
 
-    reduc_tol = false;
+    _iter_subset_building(set_size, state, subset_num);
 
-    for (shift = 0, i1 = start; i1 < end - 1; i1++) {
-      for (i2 = i1 + 1; i2 < end; i2++) {
+  }
+
+#if 1 && defined(DEBUG) && !defined(NDEBUG)
+  if (n_loops >= CS_JOIN_MERGE_MAX_LOC_ITERS)
+    bft_printf("WARNING max sub_loops to build subset reached\n");
+#endif
+
+}
+
+/*----------------------------------------------------------------------------
+ * Check if each subset is consistent with tolerance of vertices
+ * If a transitivity is found, modify the state of the link
+ * state = 1 (each other in their tolerance)
+ *       = 0 (not each other in their tolerance)
+ *
+ * parameters:
+ *   set_size    <-- size of set
+ *   set         <-- pointer to a set of vertices
+ *   state       <-> array keeping the state of the link
+ *   subset_num  <-> number associated to each vertices of the set
+ *   issues      <-> numbering of inconsistent subsets
+ *   verbosity   <-- level of verbosity
+ *
+ * returns:
+ *  number of subsets not consistent
+ *---------------------------------------------------------------------------*/
+
+static cs_int_t
+_check_tol_consistency(cs_int_t                set_size,
+                       const cs_join_vertex_t  set[],
+                       cs_int_t                state[],
+                       cs_int_t                subset_num[],
+                       cs_int_t                issues[],
+                       cs_int_t                verbosity)
+{
+  cs_int_t  i1, i2, j, k;
+
+  cs_int_t  n_issues = 0;
+
+  for (k = 0, i1 = 0; i1 < set_size-1; i1++) {
+    for (i2 = i1 + 1; i2 < set_size; i2++, k++) {
+
+      if (state[k] == 0) {
+
+        if (subset_num[i1] == subset_num[i2]) {
+
+          if (verbosity > 3)
+            bft_printf(" Transitivity detected between (%u, %u)\n",
+                       set[i1].gnum, set[i2].gnum);
+
+          for (j = 0; j < n_issues; j++)
+            if (issues[j] == subset_num[i1])
+              break;
+          if (j == n_issues)
+            issues[n_issues++] = subset_num[i1];
 
-        if (bool_lst[shift] == true) {
-          if (work_tags[i1] != work_tags[i2])
-            reduc_tol = true;
-        }
-        else  {/* bool_lst = false */
-          if (work_tags[i1] == work_tags[i2])
-            reduc_tol = true;
         }
-        shift++;
+      }
 
-      } /* End of loop on i2 */
-    } /* End of loop on i1 */
+    } /* End of loop on i2 */
+  } /* ENd of loop on i1 */
 
-  } /* End of while reduc_tol = true */
+  return  n_issues; /* Not a subset number */
+}
 
-  /* Store new equivalences between vertices in ref_tags */
+/*----------------------------------------------------------------------------
+ * Check if the merged vertex related to a subset is consistent with tolerance
+ * of each vertex of the subset.
+ *
+ * parameters:
+ *   set_size    <-- size of set
+ *   subset_num  <-- number associated to each vertices of the set
+ *   set         <-- pointer to a set of vertices
+ *   merge_set   <-> merged vertex related to each subset
+ *   work_set    <-> work array of vertices
+ *
+ * returns:
+ *  true if all subsets are consistent otherwise false
+ *---------------------------------------------------------------------------*/
 
-  for (i = start; i < end; i++) {
-    ref_tags[i] = work_tags[i];
-    work_tags[i] = i;
-  }
+static cs_bool_t
+_check_subset_consistency(cs_int_t                set_size,
+                          const cs_int_t          subset_num[],
+                          const cs_join_vertex_t  set[],
+                          cs_join_vertex_t        merge_set[],
+                          cs_join_vertex_t        work_set[])
+{
+  cs_int_t  i, set_id, subset_size;
 
-  { /* Order ref_tags and keep the original position in work_tags */
+  cs_bool_t  is_consistent = true;
 
-    int  h, j;
-    cs_int_t  n_sub_elts = end - start;
+  /* Apply merged to each subset */
 
-    /* Compute stride */
-    for (h = 1; h <= n_sub_elts/9; h = 3*h+1) ;
+  for (set_id = 0; set_id < set_size; set_id++) {
 
-    /* Sort array */
-    for ( ; h > 0; h /= 3) {
+    subset_size = 0;
+    for (i = 0; i < set_size; i++)
+      if (subset_num[i] == set_id+1)
+        work_set[subset_size++] = set[i];
 
-      for (i = start + h; i < end; i++) {
+    if (subset_size > 0) {
 
-        fvm_gnum_t vr = ref_tags[i];
-        fvm_gnum_t vw = work_tags[i];
+      merge_set[set_id] = _compute_merged_vertex(subset_size, work_set);
 
-        j = i;
-        while ( (j >= start+h) && (vr < ref_tags[j-h]) ) {
-          ref_tags[j] = ref_tags[j-h];
-          work_tags[j] = work_tags[j-h];
-          j -= h;
-        }
-        ref_tags[j] = vr;
-        work_tags[j] = vw;
+      if (!_is_in_tolerance(subset_size, work_set, merge_set[set_id]))
+        is_consistent = false;
 
-      } /* Loop on array elements */
+    }
 
-    } /* End of loop on stride */
+  } /* End of loop on subsets */
 
-  } /* End of sort */
+  return is_consistent;
+}
 
-  for (i = start; i < end; i++)
-    work_tags[i] = list[work_tags[i]];
+/*----------------------------------------------------------------------------
+ * Get position of the link between vertices i1 and i2.
+ *
+ * parameters:
+ *   i1     <-- id in set for vertex 1
+ *   i2     <-- id in set for vertex 2
+ *   idx    <-- array of positions
+ *
+ * returns:
+ *   position in an array like distances or state
+ *---------------------------------------------------------------------------*/
+
+inline static cs_int_t
+_get_pos(cs_int_t        i1,
+         cs_int_t        i2,
+         const cs_int_t  idx[])
+{
+  cs_int_t  pos = -1;
+
+  if (i1 < i2)
+    pos = idx[i1] + i2-i1-1;
+  else {
+    assert(i1 != i2);
+    pos = idx[i2] + i1-i2-1;
+  }
 
+  return pos;
 }
 
 /*----------------------------------------------------------------------------
- * Apply a reduction of the tolerance until each vertex of the list has
- * the resulting vertex of the merge under its tolerance.
+ * Break equivalences for vertices implied in transitivity issue
  *
  * parameters:
- *   param         <-- set of user-defined parameters
- *   start         <-- index for the last vertex in sub_list
- *   end           <-- index for the last vertex in sub_list
- *   sub_list      <-> list of id in vertices for each vertex of the sub list
- *   vertices      <-> pointer to a cs_join_vertex_t structure
- *   distances     <-> list of distance between couples of vertices
- *   ref_tag_list  <-> list of reference tags for each vertex of sub_list
- *   work_tag_list <-> list of working tags for each vertex of sub_list
- *   bool_lst      <-> list of booleans
- *   n_reductions  <-> number of tolerance reduction done
+ *   param       <-- parameters used to manage the joining algorithm
+ *   set_size    <-- size of set
+ *   set         <-- pointer to a set of vertices
+ *   state       <-> array keeping the state of the link
+ *   n_issues    <-- number of detected transitivity issues
+ *   issues      <-- subset numbers of subset with a transitivity issue
+ *   idx         <-- position of vertices couple in array like distances
+ *   subset_num  <-- array of subset numbers
+ *   distances   <-- array keeping the distances between vertices
  *---------------------------------------------------------------------------*/
 
 static void
-_merge_with_tol_reduction(cs_join_param_t    param,
-                          cs_int_t           start,
-                          cs_int_t           end,
-                          fvm_gnum_t         sub_list[],
-                          cs_join_vertex_t   vertices[],
-                          cs_real_t          distances[],
-                          fvm_gnum_t         ref_tags[],
-                          fvm_gnum_t         work_tags[],
-                          cs_bool_t          bool_list[],
-                          int               *n_reductions)
+_break_equivalence(cs_join_param_t         param,
+                   cs_int_t                set_size,
+                   const cs_join_vertex_t  set[],
+                   int                     state[],
+                   cs_int_t                n_issues,
+                   const int               issues[],
+                   const int               idx[],
+                   const int               subset_num[],
+                   const double            distances[])
 {
-  cs_int_t  i1, i2, i, j;
+  cs_int_t  i, i1, i2, k;
 
-  cs_int_t  shift = 0;
-  cs_int_t  n_sub_equiv = 1;
-  cs_int_t  n_sub_elts = end - start;
-  cs_int_t  *sub_index = NULL;
+  for (i = 0; i < n_issues; i++) {
 
-  /* Sanity checks */
+    /* Find the weakest equivalence and break it.
+       Purpose: Have the minimal number of equivalences to break
+       for each subset where an inconsistency has been detected */
 
-  assert(param.reduce_tol_factor >= 0.0);
-  assert(param.reduce_tol_factor < 1.0);
+    int  i_save = 0;
+    double rtf = -1.0, dist_save = 0.0;
 
-  if (param.verbosity > 2) { /* Display information */
+    for (k = 0, i1 = 0; i1 < set_size-1; i1++) {
+      for (i2 = i1 + 1; i2 < set_size; i2++, k++) {
 
-    bft_printf(_("\n"
-                 "  Merge: Local tolerance reduction for the"
-                 " following vertices (global numbering):\n"
-                 "        "));
-    for (j = start; j < end; j++)
-      bft_printf("%u  ", vertices[sub_list[j]].gnum);
-    bft_printf("\n");
-  }
+        if (state[k] == 1) { /* v1, v2 are equivalent */
 
-  /* Initialize temporary buffers */
+          if (   subset_num[i1] == issues[i]
+              && subset_num[i2] == issues[i]) {
 
-  for (i = start; i < end; i++)
-    ref_tags[i] = vertices[sub_list[i]].gnum;
+            /* Vertices belongs to a subset where an inconsistency
+               has been found */
 
-  for (i1 = start; i1 < end - 1; i1++)
-    for (i2 = i1 + 1; i2 < end; i2++)
-      distances[shift++] = _compute_length(vertices[sub_list[i1]],
-                                           vertices[sub_list[i2]]);
+            double  rtf12 = distances[k]/set[i1].tolerance;
+            double  rtf21 = distances[k]/set[i2].tolerance;
 
-#if 0 && defined(DEBUG) && !defined(NDEBUG)
-  bft_printf("\t\t\t  (BEGIN) Reduce tolerance\n");
-  cs_join_dump_array("gnum", "sub_list", n_sub_elts, &(sub_list[start]));
-  cs_join_dump_array("gnum", "ref_tags", n_sub_elts, &(ref_tags[start]));
-  shift = 0;
-  bft_printf("\n  distances:\n");
-  for (i1 = start; i1 < end - 1; i1++) {
-    bft_printf(" %10u : ", ref_tags[i1]);
-    for (i2 = i1+1; i2 < end; i2++)
-      bft_printf(" (%10u, %le)", ref_tags[i2], distances[shift++]);
-    bft_printf("\n");
-  }
-  bft_printf("\n");
-  bft_printf_flush();
-#endif
+            assert(rtf12 < 1.0); /* Because they are equivalent */
+            assert(rtf21 < 1.0);
 
-  /* Reduce tolerance until coherent sub-equivalences appear.
-     Local operation. */
+            if (rtf12 >= rtf21) {
+              if (rtf12 > rtf) {
+                rtf = rtf12;
+                i_save = i1;
+                dist_save = distances[k];
+              }
+            }
+            else {
+              if (rtf21 > rtf) {
+                rtf = rtf21;
+                i_save = i2;
+                dist_save = distances[k];
+              }
+            }
 
-  _reduce_tolerance(param,
-                    start,
-                    end,
-                    sub_list,
-                    vertices,
-                    distances,
-                    ref_tags,
-                    work_tags,
-                    bool_list,
-                    n_reductions);
+          }
+        }
 
-  /* Define an index on new sub equivalences */
+      } /* End of loop on i1 */
+    } /* End of loop on i2 */
 
-  BFT_MALLOC(sub_index, n_sub_elts+1, cs_int_t);
+    if (rtf > 0.0) {
 
-  sub_index[0] = start;
-  sub_index[n_sub_equiv] = start + 1;
+      /* Break equivalence between i_save and all vertices linked to
+         i_save with a distance to i_save >= dist_save */
 
-  for (i = start + 1; i < end; i++) {
+      for (i2 = 0; i2 < set_size; i2++) {
 
-    if (ref_tags[i] != ref_tags[i-1]) {
-      sub_index[n_sub_equiv + 1] = sub_index[n_sub_equiv] + 1;
-      n_sub_equiv++;
-    }
-    else
-      sub_index[n_sub_equiv] += 1;
+        if (i2 != i_save) {
+
+          k = _get_pos(i_save, i2, idx);
+          if (distances[k] >= dist_save && state[k] == 1) {
+
+            state[k] = 0; /* Break equivalence */
+
+            if (param.verbosity > 2)
+              bft_printf(" %2d - Break equivalence between [%u, %u]"
+                         " (dist_ref: %6.4e)\n",
+                         issues[i], set[i_save].gnum, set[i2].gnum, dist_save);
+
+          }
+        }
+
+      } /* End of loop on vertices */
+
+    } /* rtf > 0.0 */
+
+  } /* End of loop on issues */
+
+}
+
+/*----------------------------------------------------------------------------
+ * Break equivalences between vertices until each vertex of the list has
+ * the resulting vertex of the merge under its tolerance.
+ *
+ * parameters:
+ *   param         <-- set of user-defined parameters
+ *   set_size      <-- size of the set of vertices
+ *   set           <-> set of vertices
+ *   vbuf          <-> tmp buffer
+ *   rbuf          <-> tmp buffer
+ *   ibuf          <-> tmp buffer
+ *
+ * returns:
+ *   number of loop necessary to build consistent subsets
+ *---------------------------------------------------------------------------*/
+
+static cs_int_t
+_solve_transitivity(cs_join_param_t    param,
+                    cs_int_t           set_size,
+                    cs_join_vertex_t   set[],
+                    cs_join_vertex_t   vbuf[],
+                    cs_real_t          rbuf[],
+                    cs_int_t           ibuf[])
+{
+  cs_int_t  i1, i2, k, n_issues;
 
+  cs_int_t  n_loops = 0;
+  cs_bool_t  is_end = false;
+  cs_int_t  *subset_num = NULL, *state = NULL, *prev_num = NULL;
+  cs_int_t  *subset_issues = NULL, *idx = NULL;
+  cs_real_t  *distances = NULL;
+  cs_join_vertex_t  *merge_set = NULL, *work_set = NULL;
+
+  /* Sanity checks */
+
+  assert(set_size > 0);
+
+  /* Define temporary buffers */
+
+  subset_num = &(ibuf[0]);
+  prev_num = &(ibuf[set_size]);
+  subset_issues = &(ibuf[2*set_size]);
+  idx = &(ibuf[3*set_size]);
+  state = &(ibuf[4*set_size]);
+  distances = &(rbuf[0]);
+  merge_set = &(vbuf[0]);
+  work_set = &(vbuf[set_size]);
+
+  /* Compute distances between each couple of vertices among the set */
+
+  for (k = 0, i1 = 0; i1 < set_size-1; i1++)
+    for (i2 = i1 + 1; i2 < set_size; i2++, k++)
+      distances[k] = _compute_length(set[i1], set[i2]);
+
+  /* Compute initial state of equivalences between vertices */
+
+  for (k = 0, i1 = 0; i1 < set_size-1; i1++) {
+    for (i2 = i1 + 1; i2 < set_size; i2++, k++) {
+      if (   set[i1].tolerance < distances[k]
+          || set[i2].tolerance < distances[k])
+        state[k] = 0;
+      else
+        state[k] = 1;
+    }
   }
 
-  assert(n_sub_equiv > 1);
+  idx[0] = 0;
+  for (k = 1; k < set_size - 1; k++)
+    idx[k] = set_size - k + idx[k-1];
 
-  /* Loop on sub-equivalences */
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  cs_join_dump_array("double", "\nDist", set_size*(set_size-1)/2, distances);
+  cs_join_dump_array("int", "\nInit. State", set_size*(set_size-1)/2, state);
+#endif
 
-  for (i = 0; i < n_sub_equiv; i++) {
+  _build_subsets(set_size, state, prev_num, subset_num);
 
-    cs_bool_t  ok;
-    cs_join_vertex_t  merged_vertex;
+  while (is_end == false && n_loops < param.n_max_equiv_breaks) {
 
-    cs_int_t  sub_start = sub_index[i];
-    cs_int_t  sub_end = sub_index[i+1];
+    n_loops++;
 
-    /* Define a sub_list */
+    n_issues = _check_tol_consistency(set_size,
+                                      set,
+                                      state,
+                                      subset_num,
+                                      subset_issues,
+                                      param.verbosity);
 
-    for (j = sub_start; j < sub_end; j++)
-      sub_list[j] = work_tags[j];
+    if (n_issues > 0)
+      _break_equivalence(param,
+                         set_size,
+                         set,
+                         state,
+                         n_issues,
+                         subset_issues,
+                         idx,
+                         subset_num,
+                         distances);
 
-    if (sub_end - sub_start > 1) {
+    _build_subsets(set_size, state, prev_num, subset_num);
 
-      merged_vertex = _get_merged_vertex(ref_tags[sub_start],
-                                         sub_start,
-                                         sub_end,
-                                         sub_list,
-                                         vertices);
+    is_end = _check_subset_consistency(set_size,
+                                       subset_num,
+                                       set,
+                                       merge_set,
+                                       work_set);
 
-      /* Check if the vertex resulting of the merge is in the tolerance
-         for each vertex of the list. Previous op. should assume this. */
+  } /* End of while */
 
-      ok = _is_in_tolerance(sub_start,
-                            sub_end,
-                            sub_list,
-                            vertices,
-                            merged_vertex);
+  if (param.verbosity > 2) {
 
-      assert(ok == true); /* One call to _reduce_tolerance should be enough */
+    bft_printf(_(" Number of tolerance reductions:  %4d\n"), n_loops);
 
-      for (j = sub_start; j < sub_end; j++)
-        vertices[sub_list[j]] = merged_vertex;
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+    cs_join_dump_array("int", "\nFinal Subset", set_size, subset_num);
+#endif
 
-    } /* n_sub_sub_list > 1 */
+  }
 
-  } /* End of loop on sub-equivalences */
+  /* Apply merged to each subset */
 
-  BFT_FREE(sub_index);
+  for (k = 0; k < set_size; k++)
+    set[k] = merge_set[subset_num[k]-1];
 
+  return n_loops;
 }
 
 /*----------------------------------------------------------------------------
@@ -1811,20 +1969,19 @@ _merge_vertices(cs_join_param_t    param,
                 cs_int_t           n_vertices,
                 cs_join_vertex_t   vertices[])
 {
-  cs_int_t  i, j, k, tmp_size, n_sub_elts;
+  cs_int_t  i, j, k, list_size;
   cs_join_vertex_t  merged_vertex;
   cs_bool_t  ok;
 
-  int  n_reduction_counter = 0, n_max_tol_reductions = 0;
-  cs_int_t  max_n_sub_elts = 0;
+  cs_int_t  max_list_size = 0, vv_max_list_size = 0;
+  cs_int_t  n_loops = 0, n_max_loops = 0, n_transitivity = 0;
 
   cs_join_gset_t  *equiv_gnum = NULL;
-  cs_bool_t  *bool_list = NULL;
-  cs_int_t  *merge_index = NULL;
+  cs_real_t  *rbuf = NULL;
+  cs_int_t  *merge_index = NULL, *ibuf = NULL;
   fvm_gnum_t  *merge_list = NULL, *merge_ref_elts = NULL;
-  fvm_gnum_t  *sub_list = NULL, *tmp_buffer = NULL;
-  fvm_gnum_t  *ref_tags = NULL, *work_tags = NULL;
-  cs_real_t  *distances = NULL;
+  fvm_gnum_t  *list = NULL;
+  cs_join_vertex_t  *set = NULL, *vbuf = NULL;
 
   const int  verbosity = param.verbosity;
 
@@ -1834,16 +1991,10 @@ _merge_vertices(cs_join_param_t    param,
 
   /* Pre-merge of identical vertices */
 
-  _trivial_merge(param, merge_set, vertices, &equiv_gnum);
-
-  merge_index = merge_set->index;
-  merge_list = merge_set->g_list;
-  merge_ref_elts = merge_set->g_elts;
+  _pre_merge(param, merge_set, vertices, &equiv_gnum);
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
-
-  if (verbosity > 2) {
-
+  {
     int  len;
     FILE  *dbg_file = NULL;
     char  *filename = NULL;
@@ -1859,18 +2010,9 @@ _merge_vertices(cs_join_param_t    param,
     fflush(dbg_file);
     BFT_FREE(filename);
     fclose(dbg_file);
-
   }
-
 #endif /* defined(DEBUG) && !defined(NDEBUG) */
 
-  /* Compute the max. size of a sub list */
-
-  for (i = 0; i < merge_set->n_elts; i++) {
-    n_sub_elts = merge_index[i+1] - merge_index[i];
-    max_n_sub_elts = CS_MAX(max_n_sub_elts, n_sub_elts);
-  }
-
   /* Modify the tolerance for the merge operation if needed */
 
   if (fabs(param.merge_tol_coef - 1.0) > 1e-30) {
@@ -1880,120 +2022,114 @@ _merge_vertices(cs_join_param_t    param,
 
   /* Compute the max. size of a sub list */
 
+  merge_index = merge_set->index;
+  merge_list = merge_set->g_list;
+  merge_ref_elts = merge_set->g_elts;
+
   for (i = 0; i < merge_set->n_elts; i++) {
-    n_sub_elts = merge_index[i+1] - merge_index[i];
-    max_n_sub_elts = CS_MAX(max_n_sub_elts, n_sub_elts);
+    list_size = merge_index[i+1] - merge_index[i];
+    max_list_size = CS_MAX(max_list_size, list_size);
   }
+  vv_max_list_size = ((max_list_size-1)*max_list_size)/2;
 
   if (verbosity > 0) {   /* Display information */
 
-    fvm_lnum_t g_max_n_sub_elts = max_n_sub_elts;
-    fvm_parall_counter_max(&g_max_n_sub_elts, 1);
+    fvm_lnum_t g_max_list_size = max_list_size;
+    fvm_parall_counter_max(&g_max_list_size, 1);
 
-    if (g_max_n_sub_elts < 2) {
+    if (g_max_list_size < 2) {
       bft_printf(_("\n  No need to merge vertices.\n"));
       return;
     }
     else
-      bft_printf(_("\n  Max size of a merge list: %lu\n"),
-                 (unsigned long)g_max_n_sub_elts);
+      bft_printf(_("\n  Max size of a merge set of vertices: %lu\n"),
+                 (unsigned long)g_max_list_size);
   }
 
-  /* Temporary buffers */
+  /* Temporary buffers allocation */
 
-  BFT_MALLOC(tmp_buffer, 3*max_n_sub_elts, fvm_gnum_t);
+  BFT_MALLOC(ibuf, 4*max_list_size + vv_max_list_size, cs_int_t);
+  BFT_MALLOC(rbuf, vv_max_list_size, cs_real_t);
+  BFT_MALLOC(vbuf, 2*max_list_size, cs_join_vertex_t);
+  BFT_MALLOC(list, max_list_size, fvm_gnum_t);
+  BFT_MALLOC(set, max_list_size, cs_join_vertex_t);
 
-  sub_list = tmp_buffer;
-  ref_tags = &(tmp_buffer[max_n_sub_elts]);
-  work_tags = &(tmp_buffer[2*max_n_sub_elts]);
-
-  tmp_size = ((max_n_sub_elts-1)*max_n_sub_elts)/2;
-  BFT_MALLOC(distances, tmp_size, cs_real_t);
-  BFT_MALLOC(bool_list, tmp_size, cs_bool_t);
-
-  /* Apply merge */
+  /* Merge set of vertices */
 
   for (i = 0; i < merge_set->n_elts; i++) {
 
-    n_sub_elts = merge_index[i+1] - merge_index[i];
+    list_size = merge_index[i+1] - merge_index[i];
 
-    if (n_sub_elts > 1) {
-
-      for (k = merge_index[i], j = 0; k < merge_index[i+1]; k++, j++)
-        sub_list[j] = merge_list[k];
-
-      if (verbosity > 2) { /* Display information */
-
-        bft_printf("\n Begin merge for ref. elt: %u - n_sub_elts: %d\n",
-                   merge_ref_elts[i], merge_index[i+1] - merge_index[i]);
-        for (j = 0; j < n_sub_elts; j++) {
-          bft_printf("%9u -", sub_list[j]);
-          cs_join_mesh_dump_vertex(vertices[sub_list[j]]);
-        }
-        bft_printf("\n");
+    if (list_size > 1) {
 
+      for (j = 0, k = merge_index[i]; k < merge_index[i+1]; k++, j++) {
+        list[j] = merge_list[k];
+        set[j] = vertices[list[j]];
       }
 
       /* Define the resulting cs_join_vertex_t structure of the merge */
 
-      merged_vertex = _get_merged_vertex(merge_ref_elts[i],
-                                         0, n_sub_elts,
-                                         sub_list,
-                                         vertices);
+      merged_vertex = _compute_merged_vertex(list_size, set);
 
       /* Check if the vertex resulting of the merge is in the tolerance
          for each vertex of the list */
 
-      ok = _is_in_tolerance(0, n_sub_elts, sub_list, vertices, merged_vertex);
+      ok = _is_in_tolerance(list_size, set, merged_vertex);
 
 #if CS_JOIN_MERGE_TOL_REDUC
+      if (ok == false) { /*
+                            The merged vertex is not in the tolerance of
+                            each vertex. This is a transitivity problem.
+                            We have to split the initial set into several
+                            subsets.
+                         */
+
+        n_transitivity++;
+
+        if (verbosity > 2) { /* Display information on vertices to merge */
+          bft_printf("\n Begin merge for ref. elt: %u - list_size: %d\n",
+                     merge_ref_elts[i], merge_index[i+1] - merge_index[i]);
+          for (j = 0; j < list_size; j++) {
+            bft_printf("%9u -", list[j]);
+            cs_join_mesh_dump_vertex(set[j]);
+          }
+          bft_printf("\nMerged vertex rejected:\n");
+          cs_join_mesh_dump_vertex(merged_vertex);
+        }
 
-      if (ok == false) { /* Reduction of the tolerance is necessary */
-
-        int  n_tol_reductions = 0;
-
-        n_reduction_counter += 1;
-
-        _merge_with_tol_reduction(param,
-                                  0,
-                                  n_sub_elts,
-                                  sub_list,
-                                  vertices,
-                                  distances,
-                                  ref_tags,
-                                  work_tags,
-                                  bool_list,
-                                  &n_tol_reductions);
-
-        if (verbosity > 1) /* Display information */
-          bft_printf(_("\n  Number of tolerance reductions: %4d\n"),
-                     n_tol_reductions);
-
-        n_max_tol_reductions = CS_MAX(n_max_tol_reductions,
-                                      n_tol_reductions);
+        n_loops = _solve_transitivity(param,
+                                      list_size,
+                                      set,
+                                      vbuf,
+                                      rbuf,
+                                      ibuf);
+
+        for (j = 0; j < list_size; j++)
+          vertices[list[j]] = set[j];
+
+        n_max_loops = CS_MAX(n_max_loops, n_loops);
+
+        if (verbosity > 2) { /* Display information */
+          bft_printf(_("\n  %3d loop(s) to get consistent subsets\n"),
+                     n_loops);
+          bft_printf("\n End merge for ref. elt: %u - list_size: %d\n",
+                     merge_ref_elts[i], merge_index[i+1] - merge_index[i]);
+          for (j = 0; j < list_size; j++) {
+            bft_printf("%7u -", list[j]);
+            cs_join_mesh_dump_vertex(vertices[list[j]]);
+          }
+          bft_printf("\n");
+        }
 
       }
-
       else /* New vertex data for the sub-elements */
 
 #endif /* CS_JOIN_MERGE_TOL_REDUC */
 
-        for (j = 0; j < n_sub_elts; j++)
-          vertices[sub_list[j]] = merged_vertex;
-
-      if (verbosity > 2) { /* Display information */
-
-        bft_printf("\n End merge for ref. elt: %u - n_sub_elts: %d\n",
-                   merge_ref_elts[i], merge_index[i+1] - merge_index[i]);
-        for (j = 0; j < n_sub_elts; j++) {
-          bft_printf("%7u -", sub_list[j]);
-          cs_join_mesh_dump_vertex(vertices[sub_list[j]]);
-        }
-        bft_printf("\n");
-
-      }
+        for (j = 0; j < list_size; j++)
+          vertices[list[j]] = merged_vertex;
 
-    } /* sub_list_size > 1 */
+    } /* list_size > 1 */
 
   } /* End of loop on potential merges */
 
@@ -2002,9 +2138,7 @@ _merge_vertices(cs_join_param_t    param,
   if (equiv_gnum != NULL) {
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
-
-    if (verbosity > 2) {
-
+    {
       int  len;
       FILE  *dbg_file = NULL;
       char  *filename = NULL;
@@ -2020,9 +2154,7 @@ _merge_vertices(cs_join_param_t    param,
       fflush(dbg_file);
       BFT_FREE(filename);
       fclose(dbg_file);
-
     }
-
 #endif /* defined(DEBUG) && !defined(NDEBUG) */
 
     for (i = 0; i < equiv_gnum->n_elts; i++) {
@@ -2039,25 +2171,27 @@ _merge_vertices(cs_join_param_t    param,
 
   if (verbosity > 0) {
 
-    fvm_gnum_t n_g_reduction_counter = n_reduction_counter;
-    fvm_parall_counter(&n_g_reduction_counter, 1);
+    fvm_gnum_t n_g_counter = n_transitivity;
+    fvm_parall_counter(&n_g_counter, 1);
 
-    bft_printf(_("\n  Tolerance reduction for %lu elements.\n"),
-               (unsigned long)n_g_reduction_counter);
+    bft_printf(_("\n  Excessive transitivity for %lu set(s) of vertices.\n"),
+               (unsigned long)n_g_counter);
 
     if (verbosity > 1) {
-      fvm_lnum_t g_n_max_tol_reductions = n_max_tol_reductions;
-      fvm_parall_counter_max(&g_n_max_tol_reductions, 1);
-      bft_printf(_("\n  Max. number of tolerance reductions: %lu\n"),
-                 (unsigned long)g_n_max_tol_reductions);
+      fvm_lnum_t g_n_max_loops = n_max_loops;
+      fvm_parall_counter_max(&g_n_max_loops, 1);
+      bft_printf(_("\n  Max. number of iterations to solve transitivity"
+                   " excess: %lu\n"), (unsigned long)g_n_max_loops);
     }
   }
 
   /* Free memory */
 
-  BFT_FREE(tmp_buffer);
-  BFT_FREE(distances);
-  BFT_FREE(bool_list);
+  BFT_FREE(ibuf);
+  BFT_FREE(vbuf);
+  BFT_FREE(rbuf);
+  BFT_FREE(set);
+  BFT_FREE(list);
 
   cs_join_gset_destroy(&equiv_gnum);
 }
@@ -2226,20 +2360,20 @@ _keep_global_vtx_evolution(cs_int_t                n_iwm_vertices,
  * parameters:
  *   n_vertices      <-- number of vertices before merge/after intersection
  *   vertices        <-- array of cs_join_vertex_t structures
- *   p_n_af_vertices --> number of vertices after the merge step
+ *   p_n_am_vertices --> number of vertices after the merge step
  *   p_o2n_vtx_id    --> array keeping the evolution of the vertex ids
  *---------------------------------------------------------------------------*/
 
 static void
 _keep_local_vtx_evolution(cs_int_t                 n_vertices,
                           const cs_join_vertex_t   vertices[],
-                          cs_int_t                *p_n_af_vertices,
+                          cs_int_t                *p_n_am_vertices,
                           cs_int_t                *p_o2n_vtx_id[])
 {
   cs_int_t  i;
   fvm_gnum_t  prev;
 
-  cs_int_t  n_af_vertices = 0;
+  cs_int_t  n_am_vertices = 0;
   cs_int_t  *o2n_vtx_id = NULL;
   fvm_lnum_t  *order = NULL;
   fvm_gnum_t  *vtx_gnum = NULL;
@@ -2263,7 +2397,7 @@ _keep_local_vtx_evolution(cs_int_t                 n_vertices,
   BFT_MALLOC(o2n_vtx_id, n_vertices, cs_int_t);
 
   prev = vtx_gnum[order[0]];
-  o2n_vtx_id[order[0]] = n_af_vertices;
+  o2n_vtx_id[order[0]] = n_am_vertices;
 
   for (i = 1; i < n_vertices; i++) {
 
@@ -2272,18 +2406,18 @@ _keep_local_vtx_evolution(cs_int_t                 n_vertices,
 
     if (cur != prev) {
       prev = cur;
-      n_af_vertices++;
-      o2n_vtx_id[o_id] = n_af_vertices;
+      n_am_vertices++;
+      o2n_vtx_id[o_id] = n_am_vertices;
     }
     else
-      o2n_vtx_id[o_id] = n_af_vertices;
+      o2n_vtx_id[o_id] = n_am_vertices;
 
   } /* End of loop on vertices */
 
-  /* n_af_vertices is an id */
-  n_af_vertices += 1;
+  /* n_am_vertices is an id */
+  n_am_vertices += 1;
 
-  assert(n_af_vertices <= n_vertices); /* after merge <= after inter. */
+  assert(n_am_vertices <= n_vertices); /* after merge <= after inter. */
 
   /* Free memory */
 
@@ -2292,137 +2426,333 @@ _keep_local_vtx_evolution(cs_int_t                 n_vertices,
 
   /* Set return pointers */
 
-  *p_n_af_vertices = n_af_vertices;
+  *p_n_am_vertices = n_am_vertices;
   *p_o2n_vtx_id = o2n_vtx_id;
 }
 
 /*----------------------------------------------------------------------------
+ * Search for new elements to add to the definition of the current edge
+ * These new sub-elements come from initial edges which are now (after the
+ * merge step) sub-edge of the current edge
+ * Count step
+ *
+ * parameters:
+ *   edge_id        <-- id of the edge to deal with
+ *   inter_edges    <-- structure keeping data on edge intersections
+ *   edges          <-- edges definition
+ *   n_iwm_vertices <-- initial number of vertices in work_mesh
+ *   n_new_sub_elts --> number of new elements to add in the edge definition
+ *
+ * returns:
+ *  number of new sub-elements related to this edge
+ *---------------------------------------------------------------------------*/
+
+static cs_int_t
+_count_new_sub_edge_elts(cs_int_t                      edge_id,
+                         const cs_join_inter_edges_t  *inter_edges,
+                         const cs_join_edges_t        *edges,
+                         cs_int_t                      n_iwm_vertices)
+{
+  cs_int_t  j, k, j1, j2, sub_edge_id;
+  cs_int_t  start, end, _start, _end, v1_num, v2_num;
+  cs_bool_t  found;
+
+  cs_int_t  n_new_sub_elts = 0;
+
+  start = inter_edges->index[edge_id];
+  end = inter_edges->index[edge_id+1];
+
+  for (j1 = start; j1 < end-1; j1++) {
+
+    v1_num = inter_edges->vtx_lst[j1];
+
+    if (v1_num <= n_iwm_vertices) { /* v1 is an initial vertex */
+      for (j2 = j1+1; j2 < end; j2++) {
+
+        v2_num = inter_edges->vtx_lst[j2];
+
+        if (v2_num <= n_iwm_vertices) { /* (v1,v2) is an initial edge */
+
+          sub_edge_id = CS_ABS(cs_join_mesh_get_edge(v1_num,
+                                                     v2_num,
+                                                     edges))-1;
+          assert(sub_edge_id != -1);
+          _start = inter_edges->index[sub_edge_id];
+          _end = inter_edges->index[sub_edge_id+1];
+
+          for (j = _start; j < _end; j++) {
+
+            found = false;
+            for (k = j1+1; k < j2; k++)
+              if (inter_edges->vtx_glst[k] == inter_edges->vtx_glst[j])
+                found = true;
+
+            if (found == false)
+              n_new_sub_elts += 1;
+
+          } /* End of loop on sub_edge_id definition */
+
+        }
+
+      } /* End of loop on j2 */
+    }
+
+  } /* End of loop on j1 */
+
+  return n_new_sub_elts;
+}
+
+/*----------------------------------------------------------------------------
  * Update a cs_join_inter_edges_t structure after the merge operation.
  * cs_join_inter_edges_t structure should be not NULL.
  *
  * parameters:
- *   o2n_vtx_id    <-- array keeping the evolution of the vertex ids
- *   p_inter_edges <-> pointer to the structure keeping data on
- *                     edge intersections
+ *   param          <-- user-defined parameters for the joining algorithm
+ *   n_iwm_vertices <-- initial number of vertices in work_mesh
+ *   o2n_vtx_id     <-- array keeping the evolution of the vertex ids
+ *   edges          <-- edges definition
+ *   p_inter_edges  <-> pointer to the structure keeping data on
+ *                      edge intersections
  *---------------------------------------------------------------------------*/
 
 static void
-_update_inter_edges_after_merge(const cs_int_t           o2n_vtx_id[],
+_update_inter_edges_after_merge(cs_join_param_t          param,
+                                cs_int_t                 n_iwm_vertices,
+                                const cs_int_t           o2n_vtx_id[],
+                                const cs_join_edges_t   *edges,
+                                const cs_join_mesh_t    *mesh,
                                 cs_join_inter_edges_t  **p_inter_edges)
 {
-  cs_int_t  i, j, prev_num, new_num;
+  cs_int_t  i, j,k, j1, j2,  start_shift, idx_shift;
+  cs_int_t  save, _start, _end, start, end;
+  cs_int_t  v1_num, v2_num, v1_id, v2_id, sub_edge_id;
+  fvm_gnum_t  v1_gnum, v2_gnum, new_gnum, prev_gnum;
+  cs_bool_t  found;
+
+  cs_int_t  n_adds = 0;
 
-  cs_int_t  *new_index = NULL;
   cs_join_inter_edges_t  *inter_edges = *p_inter_edges;
+  cs_join_inter_edges_t  *new_inter_edges = NULL;
   cs_int_t  n_edges = inter_edges->n_edges;
+  cs_int_t  init_list_size = inter_edges->index[n_edges];
 
-  /* No need to update vtx_glst because it's no more used */
+  assert(n_edges == edges->n_edges);
 
-  if (inter_edges->vtx_glst != NULL)
-    BFT_FREE(inter_edges->vtx_glst);
+  /* Define vtx_glst to compare global vertex numbering */
 
-  /* Update cs_join_inter_edges_t structure */
-
-  for (i = 0; i < n_edges; i++) {
+  if (inter_edges->vtx_glst == NULL)
+    BFT_MALLOC(inter_edges->vtx_glst, inter_edges->index[n_edges], fvm_gnum_t);
 
-    cs_int_t  start = inter_edges->index[i];
-    cs_int_t  end = inter_edges->index[i+1];
+  for (i = 0; i < inter_edges->index[n_edges]; i++) {
+    v1_id = inter_edges->vtx_lst[i] - 1;
+    inter_edges->vtx_glst[i] = mesh->vertices[v1_id].gnum;
+  }
 
-    for (j = start; j < end; j++) {
+  /* Delete redundancies of vertices sharing the same global numbering
+     after the merge step and define a new index */
 
-      cs_int_t old_id = inter_edges->vtx_lst[j] - 1;
+  idx_shift = 0;
+  save = inter_edges->index[0];
 
-      inter_edges->vtx_lst[j] = o2n_vtx_id[old_id] + 1;
+  for (i = 0; i < n_edges; i++) {
 
-    }
+    start = save;
+    end = inter_edges->index[i+1];
 
-  }
+    if (end - start > 0) {
 
-  /* Delete redundancies and define a new index */
+      start_shift = start;
+      v1_id = edges->def[2*i] - 1;
+      v2_id = edges->def[2*i+1] - 1;
+      v1_gnum = mesh->vertices[v1_id].gnum;
+      v2_gnum = mesh->vertices[v2_id].gnum;
+      prev_gnum = inter_edges->vtx_glst[start_shift];
 
-  BFT_MALLOC(new_index, n_edges + 1, cs_int_t);
+      /* Don't take into account vertices with the same number as the
+         first edge element */
 
-  for (i = 0; i < n_edges + 1; i++)
-    new_index[i] = 0;
+      while (prev_gnum == v1_gnum && start_shift + 1 < end)
+        prev_gnum = inter_edges->vtx_glst[++start_shift];
 
-  for (i = 0; i < n_edges; i++) {
+      if (prev_gnum != v1_gnum && start_shift < end) {
 
-    cs_int_t  start = inter_edges->index[i];
-    cs_int_t  end = inter_edges->index[i+1];
+        inter_edges->vtx_lst[idx_shift] = inter_edges->vtx_lst[start_shift];
+        inter_edges->abs_lst[idx_shift] = inter_edges->abs_lst[start_shift];
+        inter_edges->vtx_glst[idx_shift] = inter_edges->vtx_glst[start_shift];
+        idx_shift += 1;
 
-    if (end - start > 0) {
+        for (j = start_shift + 1; j < end; j++) {
 
-      prev_num = inter_edges->vtx_lst[start];
-      new_index[i+1] += 1;
+          new_gnum = inter_edges->vtx_glst[j];
 
-      for (j = start + 1; j < end; j++) {
+          /* Don't take into account redundancies and vertices with the same
+             number as the second edge element */
 
-        new_num = inter_edges->vtx_lst[j];
+          if (prev_gnum != new_gnum && new_gnum != v2_gnum) {
+            prev_gnum = new_gnum;
+            inter_edges->vtx_lst[idx_shift] = inter_edges->vtx_lst[j];
+            inter_edges->abs_lst[idx_shift] = inter_edges->abs_lst[j];
+            inter_edges->vtx_glst[idx_shift] = inter_edges->vtx_glst[j];
+            idx_shift += 1;
+          }
 
-        if (prev_num != new_num) {
-          prev_num = new_num;
-          new_index[i+1] += 1;
         }
 
-      }
+      } /* If start_shift < end */
 
     } /* end - start > 0 */
 
+    save = inter_edges->index[i+1];
+    inter_edges->index[i+1] = idx_shift;
+
   } /* End of loop on edge intersections */
 
   inter_edges->max_sub_size = 0;
 
-  for (i = 0; i < n_edges; i++) {
+  for (i = 0; i < n_edges; i++)
+    inter_edges->max_sub_size =
+            CS_MAX(inter_edges->max_sub_size,
+                       inter_edges->index[i+1] - inter_edges->index[i]);
 
-    inter_edges->max_sub_size = CS_MAX(inter_edges->max_sub_size,
-                                       new_index[i+1]);
-    new_index[i+1] += new_index[i];
+  assert(inter_edges->index[n_edges] <= init_list_size);
 
-  }
+  BFT_REALLOC(inter_edges->vtx_lst, inter_edges->index[n_edges], cs_int_t);
+  BFT_REALLOC(inter_edges->abs_lst, inter_edges->index[n_edges], float);
 
-  for (i = 0; i < n_edges; i++) {
+#if 0 && defined(DEBUG) && !defined(NDEBUG) /* Dump local structures */
+  bft_printf(" AFTER REDUNDANCIES CLEAN\n");
+  cs_join_inter_edges_dump(inter_edges, edges, mesh);
+#endif
 
-    cs_int_t  start = inter_edges->index[i];
-    cs_int_t  end = inter_edges->index[i+1];
+  /* Add new vertices from initial edges which are now sub-edges */
 
-    if (end - start > 0) {
+  for (i = 0; i < n_edges; i++)
+    n_adds += _count_new_sub_edge_elts(i, inter_edges, edges, n_iwm_vertices);
 
-      cs_int_t  shift = new_index[i];
+  if (param.verbosity > 1)
+    bft_printf(_("  Number of sub-elements to add to edge definition: %8d\n"),
+               n_adds);
 
-      inter_edges->vtx_lst[shift] = inter_edges->vtx_lst[start];
-      inter_edges->abs_lst[shift++] = inter_edges->abs_lst[start];
+  if (n_adds > 0) { /* Define a new inter_edges structure */
 
-      prev_num = inter_edges->vtx_lst[start];
+    new_inter_edges = cs_join_inter_edges_create(n_edges);
 
-      for (j = start + 1; j < end; j++) {
+    BFT_MALLOC(new_inter_edges->vtx_lst,
+               inter_edges->index[n_edges] + n_adds, cs_int_t);
+    BFT_MALLOC(new_inter_edges->abs_lst,
+               inter_edges->index[n_edges] + n_adds, float);
 
-        new_num = inter_edges->vtx_lst[j];
+    n_adds = 0;
+    idx_shift = 0;
+    new_inter_edges->index[0] = 0;
 
-        if (prev_num != new_num) {
-          inter_edges->vtx_lst[shift] = new_num;
-          inter_edges->abs_lst[shift++] = inter_edges->abs_lst[j];
-          prev_num = new_num;
-        }
+    for (i = 0; i < n_edges; i++) {
 
-      }
+      new_inter_edges->edge_gnum[i] = inter_edges->edge_gnum[i];
+      start = inter_edges->index[i];
+      end = inter_edges->index[i+1];
 
-    } /* end - start  > 0 */
+      if (start - end > 0) {
 
-  } /* End of loop on edge intersections */
+        for (j1 = start; j1 < end-1; j1++) {
 
-  /* Apply updates to the structure */
+          v1_num = inter_edges->vtx_lst[j1];
+          new_inter_edges->vtx_lst[idx_shift] = v1_num;
+          new_inter_edges->abs_lst[idx_shift] = inter_edges->abs_lst[j1];
+          idx_shift++;
 
-  BFT_FREE(inter_edges->index);
-  inter_edges->index = new_index;
+          if (v1_num <= n_iwm_vertices) { /* v1 is an initial vertex */
+            for (j2 = j1+1; j2 < end; j2++) {
 
-  BFT_REALLOC(inter_edges->vtx_lst, inter_edges->index[n_edges], cs_int_t);
-  BFT_REALLOC(inter_edges->abs_lst, inter_edges->index[n_edges], float);
+              v2_num = inter_edges->vtx_lst[j2];
+
+              if (v2_num <= n_iwm_vertices) { /* (v1,v2) is an initial edge */
+
+                sub_edge_id =
+                  CS_ABS(cs_join_mesh_get_edge(v1_num, v2_num, edges))-1;
+                assert(sub_edge_id != -1);
+
+                _start = inter_edges->index[sub_edge_id];
+                _end = inter_edges->index[sub_edge_id+1];
+
+                for (j = _start; j < _end; j++) {
+
+                  found = false;
+                  for (k = j1+1; k < j2; k++)
+                    if (inter_edges->vtx_glst[k] == inter_edges->vtx_glst[j])
+                      found = true;
+
+                  if (found == false) {
+
+                    new_inter_edges->vtx_lst[idx_shift] =
+                      inter_edges->vtx_lst[j];
+                    new_inter_edges->abs_lst[idx_shift] =
+                      inter_edges->abs_lst[j];
+                    idx_shift++;
+
+                  }
+
+                } /* End of loop on sub_edge_id definition */
+
+              }
+
+            } /* End of loop on j2 */
+          }
+
+        } /* End of loop on j1 */
+
+        /* Add last vertex in the previous edge definition */
+
+        new_inter_edges->vtx_lst[idx_shift] = inter_edges->vtx_lst[end-1];
+        new_inter_edges->abs_lst[idx_shift] = inter_edges->abs_lst[end-1];
+        idx_shift++;
+
+      } /* If end - start > 0 */
+
+      new_inter_edges->index[i+1] = idx_shift;
+
+    } /* End of loop on edges */
+
+    inter_edges = cs_join_inter_edges_destroy(inter_edges);
+    inter_edges = new_inter_edges;
+
+    inter_edges->max_sub_size = 0;
+
+    for (i = 0; i < n_edges; i++)
+      inter_edges->max_sub_size = CS_MAX(inter_edges->max_sub_size,
+                                         inter_edges->index[i+1]);
+
+  } /* End if n_adds > 0 */
+
+#if 0 && defined(DEBUG) && !defined(NDEBUG) /* Dump local structures */
+  bft_printf(" AFTER SUB ELTS ADD\n");
+  cs_join_inter_edges_dump(inter_edges, edges, mesh);
+#endif
+
+  /* Update cs_join_inter_edges_t structure */
+
+  for (i = 0; i < n_edges; i++) {
+
+    start = inter_edges->index[i];
+    end = inter_edges->index[i+1];
+
+    for (j = start; j < end; j++) {
+
+      cs_int_t old_id = inter_edges->vtx_lst[j] - 1;
+
+      inter_edges->vtx_lst[j] = o2n_vtx_id[old_id] + 1;
+
+    }
+
+  }
 
   /* Return pointer */
 
   *p_inter_edges = inter_edges;
 }
 
+#if defined(HAVE_MPI)
+
 /*----------------------------------------------------------------------------
  * Define send_rank_index and send_faces to prepare the exchange of new faces
  * between mesh structures.
@@ -2444,7 +2774,7 @@ _get_faces_to_send(cs_int_t           n_faces,
                    cs_int_t          *p_send_rank_index[],
                    cs_int_t          *p_send_faces[])
 {
-  cs_int_t  i, rank, shift;
+  cs_int_t  i, rank, shift, reduce_rank;
   fvm_gnum_t  start_gnum, end_gnum;
   cs_join_block_info_t  block_info;
 
@@ -2504,11 +2834,11 @@ _get_faces_to_send(cs_int_t           n_faces,
 
       /* The current face is a "main" face for the local rank */
 
-      int  reduce_rank = cs_search_gindex_binary(reduce_size,
-                                                 face_gnum[i],
-                                                 reduce_index);
+      reduce_rank = cs_search_gindex_binary(reduce_size,
+                                            face_gnum[i],
+                                            reduce_index);
 
-      assert(reduce_rank != -1);
+      assert(reduce_rank > -1);
       assert(reduce_rank < reduce_size);
 
       rank = reduce_ids[reduce_rank];
@@ -2522,9 +2852,9 @@ _get_faces_to_send(cs_int_t           n_faces,
     send_rank_index[i+1] += send_rank_index[i];
 
   BFT_MALLOC(send_faces, send_rank_index[n_ranks], cs_int_t);
-  BFT_MALLOC(count, n_faces, cs_int_t);
+  BFT_MALLOC(count, n_ranks, cs_int_t);
 
-  for (i = 0; i < n_faces; i++)
+  for (i = 0; i < n_ranks; i++)
     count[i] = 0;
 
   /* Fill the list of ranks */
@@ -2535,9 +2865,12 @@ _get_faces_to_send(cs_int_t           n_faces,
 
       /* The current face is a "main" face for the local rank */
 
-      int  reduce_rank = cs_search_gindex_binary(reduce_size,
-                                                 face_gnum[i],
-                                                 reduce_index);
+      reduce_rank = cs_search_gindex_binary(reduce_size,
+                                            face_gnum[i],
+                                            reduce_index);
+
+      assert(reduce_rank > -1);
+      assert(reduce_rank < reduce_size);
 
       rank = reduce_ids[reduce_rank];
       shift = send_rank_index[rank] + count[rank];
@@ -2550,10 +2883,6 @@ _get_faces_to_send(cs_int_t           n_faces,
 
   /* Free memory */
 
-  BFT_FREE(count);
-  BFT_FREE(reduce_ids);
-  BFT_FREE(reduce_index);
-
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
   for (rank = 0; rank < n_ranks; rank++) {
     bft_printf(" rank %d: ", rank);
@@ -2564,20 +2893,26 @@ _get_faces_to_send(cs_int_t           n_faces,
   }
 #endif
 
+  BFT_FREE(count);
+  BFT_FREE(reduce_ids);
+  BFT_FREE(reduce_index);
+
   /* Set return pointers */
 
   *p_send_rank_index = send_rank_index;
   *p_send_faces = send_faces;
 }
 
+#endif /* defined(HAVE_MPI) */
+
 /*----------------------------------------------------------------------------
  * Update local_mesh by redistributing mesh.
  * Send back to the original rank the new face and vertex description.
  *
  * parameters:
- *   gnum_rank_index <-- index on ranks for the old global face numbering
- *   send_mesh       <-- distributed mesh on faces to join
- *   p_recv_mesh     <-> mesh on local selected faces to be joined
+ *   gnum_rank_index  <--  index on ranks for the old global face numbering
+ *   send_mesh        <--  distributed mesh on faces to join
+ *   p_recv_mesh      <->  mesh on local selected faces to be joined
  *---------------------------------------------------------------------------*/
 
 static void
@@ -2669,7 +3004,9 @@ cs_join_create_new_vertices(int                     verbosity,
                             fvm_gnum_t             *p_n_g_new_vertices,
                             cs_join_eset_t        **p_vtx_eset)
 {
-  cs_int_t  i;
+  cs_int_t  i, shift;
+  double  tol_min;
+  cs_join_vertex_t  v1, v2;
 
   cs_int_t  n_new_vertices = 0;
   fvm_gnum_t  n_g_new_vertices = 0;
@@ -2712,7 +3049,7 @@ cs_join_create_new_vertices(int                     verbosity,
                            &new_vtx_gnum);
 
   if (verbosity > 0)
-    bft_printf(_("  Number of new vertices to create: %10lu\n"),
+    bft_printf(_("\n  Global number of new vertices to create: %10lu\n"),
                (unsigned long)n_g_new_vertices);
 
   /* Define new vertices */
@@ -2755,28 +3092,42 @@ cs_join_create_new_vertices(int                     verbosity,
 
     /* Create new vertices if needed */
 
-    if (v1_num > n_iwm_vertices) { /* Add a new vertex */
-
-      cs_int_t shift = inter1.vtx_id - n_iwm_vertices;
-      cs_join_vertex_t  new = _get_new_vertex(inter1.curv_abs,
-                                               new_vtx_gnum[shift],
-                                               &(edges->def[2*inter1.edge_id]),
-                                               work);
+    if (v1_num > n_iwm_vertices) {
 
-      work->vertices[inter1.vtx_id] = new;
+      shift = inter1.vtx_id - n_iwm_vertices;
+      v1 = _get_new_vertex(inter1.curv_abs,
+                           new_vtx_gnum[shift],
+                           &(edges->def[2*inter1.edge_id]),
+                           work);
+      tol_min = v1.tolerance;
 
     }
+    else
+      tol_min = work->vertices[v1_num-1].tolerance;
 
-    if (v2_num > n_iwm_vertices) { /* Add a new vertex */
+    if (v2_num > n_iwm_vertices) {
 
-      cs_int_t shift = inter2.vtx_id - n_iwm_vertices;
-      cs_join_vertex_t  new = _get_new_vertex(inter2.curv_abs,
-                                               new_vtx_gnum[shift],
-                                               &(edges->def[2*inter2.edge_id]),
-                                               work);
+      shift = inter2.vtx_id - n_iwm_vertices;
+      v2 = _get_new_vertex(inter2.curv_abs,
+                           new_vtx_gnum[shift],
+                           &(edges->def[2*inter2.edge_id]),
+                           work);
+      tol_min = CS_MIN(tol_min, v2.tolerance);
+
+    }
+    else
+      tol_min = CS_MIN(tol_min, work->vertices[v2_num-1].tolerance);
 
-      work->vertices[inter2.vtx_id] = new;
+    /* A new vertex has a tolerance equal to the minimal tolerance
+       between the two vertices implied in the intersection */
 
+    if (v1_num > n_iwm_vertices) {
+      v1.tolerance = tol_min;
+      work->vertices[inter1.vtx_id] = v1;
+    }
+    if (v2_num > n_iwm_vertices) {
+      v2.tolerance = tol_min;
+      work->vertices[inter2.vtx_id] = v2;
     }
 
     /* Add equivalence between the two current vertices */
@@ -2816,9 +3167,9 @@ cs_join_create_new_vertices(int                     verbosity,
   } /* End of loop on vertices */
 
 #if 0
-  if (verbosity > 3)  /* Dump local structures */
     _dump_vtx_eset(vtx_equiv, work);
 #endif
+
 #endif
 
   /* Set return pointers */
@@ -2860,7 +3211,6 @@ cs_join_merge_vertices(cs_join_param_t        param,
   _initialize_merge_counter();
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG) /* Dump local structures */
-  if (param.verbosity > 3)
     _dump_vtx_eset(vtx_eset, work);
 #endif
 
@@ -2917,11 +3267,11 @@ cs_join_merge_vertices(cs_join_param_t        param,
     /* Build a merge list in parallel */
 
     _build_parall_merge_structures(work,
-                                    vtx_tags,
-                                    send_count, send_shift,
-                                    recv_count, recv_shift,
-                                    &vtx_merge_data,
-                                    &merge_set);
+                                   vtx_tags,
+                                   send_count, send_shift,
+                                   recv_count, recv_shift,
+                                   &vtx_merge_data,
+                                   &merge_set);
 
     /* Merge of equivalent vertices for the current block */
 
@@ -2995,7 +3345,7 @@ cs_join_merge_update_struct(cs_join_param_t          param,
                             cs_join_mesh_t         **p_local_mesh,
                             fvm_gnum_t              *p_o2n_vtx_gnum[])
 {
-  cs_int_t  n_af_vertices = 0; /* new number of vertices after merge */
+  cs_int_t  n_am_vertices = 0; /* new number of vertices after merge */
   cs_int_t  *o2n_vtx_id = NULL;
   fvm_gnum_t  *o2n_vtx_gnum = NULL;
   cs_join_mesh_t  *mesh = *p_mesh;
@@ -3014,7 +3364,7 @@ cs_join_merge_update_struct(cs_join_param_t          param,
 
   _keep_local_vtx_evolution(mesh->n_vertices, /* n_vertices after inter */
                             mesh->vertices,
-                            &n_af_vertices,   /* n_vertices after merge */
+                            &n_am_vertices,   /* n_vertices after merge */
                             &o2n_vtx_id);
 
   /* Update all structures which keeps data about vertices */
@@ -3023,15 +3373,16 @@ cs_join_merge_update_struct(cs_join_param_t          param,
 
     /* Update inter_edges structure */
 
-    _update_inter_edges_after_merge(o2n_vtx_id, &inter_edges);
+    _update_inter_edges_after_merge(param,
+                                    n_iwm_vertices,
+                                    o2n_vtx_id,  /* size of mesh->n_vertices */
+                                    edges,
+                                    mesh,
+                                    &inter_edges);
 
     assert(edges->n_edges == inter_edges->n_edges);  /* Else: problem for
                                                         future synchro. */
 
-#if 0 && defined(DEBUG) && !defined(NDEBUG) /* Dump local structures */
-    cs_join_inter_edges_dump(inter_edges, edges, mesh);
-#endif
-
     /* Update cs_join_mesh_t structure after the merge of vertices
        numbering of the old vertices + add new vertices */
 
@@ -3039,7 +3390,7 @@ cs_join_merge_update_struct(cs_join_param_t          param,
                         edges,
                         inter_edges->index,
                         inter_edges->vtx_lst,
-                        n_af_vertices,
+                        n_am_vertices,
                         o2n_vtx_id);
 
   } /* End if inter_edges != NULL */
@@ -3052,7 +3403,7 @@ cs_join_merge_update_struct(cs_join_param_t          param,
                         edges,
                         NULL,
                         NULL,
-                        n_af_vertices,
+                        n_am_vertices,
                         o2n_vtx_id);
 
   BFT_FREE(o2n_vtx_id);
diff --git a/src/base/cs_join_mesh.c b/src/base/cs_join_mesh.c
index 339f14b..93d6f00 100644
--- a/src/base/cs_join_mesh.c
+++ b/src/base/cs_join_mesh.c
@@ -40,6 +40,7 @@
 #include <assert.h>
 #include <string.h>
 #include <math.h>
+#include <float.h>
 
 /*----------------------------------------------------------------------------
  * BFT library headers
@@ -132,6 +133,8 @@ _dot_product(const double  v1[],
   return result;
 }
 
+#if defined(HAVE_MPI)
+
 /*----------------------------------------------------------------------------
  * Find for each face of the list its related rank
  *
@@ -171,8 +174,6 @@ _get_rank_from_index(cs_int_t          n_elts,
   return rank_list;
 }
 
-#if defined(HAVE_MPI)
-
 /*----------------------------------------------------------------------------
  * Get the index on ranks and th list of faces to send from a list of global
  * faces to receive.
@@ -326,16 +327,14 @@ _remove_empty_edges(cs_join_mesh_t  *mesh,
     cs_int_t  s = mesh->face_vtx_idx[i] - 1;
     cs_int_t  e = mesh->face_vtx_idx[i+1] - 1;
 
-    mesh->face_vtx_lst[shift++] = mesh->face_vtx_lst[s];
+    if (mesh->face_vtx_lst[e-1] != mesh->face_vtx_lst[s])
+      mesh->face_vtx_lst[shift++] = mesh->face_vtx_lst[s];
 
     /* Loop on face vertices */
 
-    for (j = s + 1; j < e - 1; j++)
+    for (j = s; j < e - 1; j++)
       if (mesh->face_vtx_lst[j] != mesh->face_vtx_lst[j+1])
-        mesh->face_vtx_lst[shift++] = mesh->face_vtx_lst[j];
-
-    if (mesh->face_vtx_lst[e-1] != mesh->face_vtx_lst[s])
-      mesh->face_vtx_lst[shift++] = mesh->face_vtx_lst[e-1];
+        mesh->face_vtx_lst[shift++] = mesh->face_vtx_lst[j+1];
 
     new_face_vtx_idx[i+1] = shift + 1;
 
@@ -494,9 +493,11 @@ _remove_degenerate_edges(cs_join_mesh_t  *mesh,
 
       n_modified_faces += 1;
 
-      if (verbosity > 2) { /* Display the degenerate face */
+      /* Display the degenerate face */
+
+      if (n_face_vertices < 3 || verbosity > 2) {
 
-        bft_printf("\n  Degenerate connectivity for face: %d [%u]:",
+        bft_printf("\n  Remove edge for face: %d [%u]:",
                    i+1, mesh->face_gnum[i]);
 
         bft_printf("\n    Initial def: ");
@@ -513,6 +514,12 @@ _remove_degenerate_edges(cs_join_mesh_t  *mesh,
 
         bft_printf("\n");
         bft_printf_flush();
+
+        if (n_face_vertices < 3)
+          bft_error(__FILE__, __LINE__, 0,
+                    _("  The simplified face has less than 3 vertices.\n"
+                      "  Check your joining parameters.\n"
+                      "  Face %d (%u)\n"), i+1, mesh->face_gnum[i]);
       }
 
     } /* End if n_face_vertices != n_init_vertices */
@@ -523,11 +530,13 @@ _remove_degenerate_edges(cs_join_mesh_t  *mesh,
 
   } /* End of loop on faces */
 
+  n_g_modified_faces = n_modified_faces;
   fvm_parall_counter(&n_g_modified_faces, 1);
 
-  bft_printf("  Degenerate connectivity for %lu faces.\n"
-             "  Mesh cleaning done.\n",
-             (unsigned long)n_g_modified_faces);
+  if (verbosity > 0)
+    bft_printf("\n  Edge removed for %lu faces (global).\n"
+               "  Join mesh cleaning done.\n",
+               (unsigned long)n_g_modified_faces);
 
   for (i = n_faces; i > 0; i--)
     mesh->face_vtx_idx[i] = mesh->face_vtx_idx[i-1] + 1;
@@ -716,9 +725,15 @@ cs_join_mesh_create_vtx_datatype(void)
 
   /* Define array of displacements */
 
+#if defined(MPI_VERSION) && (MPI_VERSION >= 2)
   MPI_Get_address(&v_data, displacements);
   MPI_Get_address(&v_data.gnum, displacements + 1);
   MPI_Get_address(&v_data.coord, displacements + 2);
+#else
+  MPI_Address(&v_data, displacements);
+  MPI_Address(&v_data.gnum, displacements + 1);
+  MPI_Address(&v_data.coord, displacements + 2);
+#endif
 
   displacements[2] -= displacements[0];
   displacements[1] -= displacements[0];
@@ -726,13 +741,104 @@ cs_join_mesh_create_vtx_datatype(void)
 
   /* Create new datatype */
 
+#if defined(MPI_VERSION) && (MPI_VERSION >= 2)
   MPI_Type_create_struct(3, blocklengths, displacements, types, &new_type);
+#else
+  MPI_Type_struct(3, blocklengths, displacements, types, &new_type);
+#endif
 
   MPI_Type_commit(&new_type);
 
   return new_type;
 }
 
+/*----------------------------------------------------------------------------
+ * Create a function to define an operator for MPI reduction operation
+ *
+ * parameters:
+ *   in        <--  input vertices
+ *   inout     <->  in/out vertices (vertex with the min. toelrance)
+ *   len       <--  size of input array
+ *   datatype  <--  MPI_datatype associated to cs_join_vertex_t
+ *---------------------------------------------------------------------------*/
+
+void  cs_join_mesh_mpi_vertex_min(cs_join_vertex_t   *in,
+                                  cs_join_vertex_t   *inout,
+                                  int                *len,
+                                  MPI_Datatype       *datatype)
+{
+  int  i, j;
+
+  for (i = 0; i < *len; i++) {
+
+    if (in->tolerance <= inout->tolerance) {
+
+      if (in->tolerance < inout->tolerance) {
+
+        inout->gnum = in->gnum;
+        for (j = 0; j < 3; j++)
+          inout->coord[j] = in->coord[j];
+        inout->tolerance = in->tolerance;
+
+      }
+      else {
+        if (in->gnum < inout->gnum) {
+          inout->gnum = in->gnum;
+          for (j = 0; j < 3; j++)
+            inout->coord[j] = in->coord[j];
+          inout->tolerance = in->tolerance;
+        }
+
+      }
+
+    } /* in.tol <= inout.tol */
+
+  } /* End of loop on array */
+
+}
+
+/*----------------------------------------------------------------------------
+ * Create a function to define an operator for MPI reduction operation
+ *
+ * parameters:
+ *   in        <--  input vertices
+ *   inout     <->  in/out vertices (vertex with the max. toelrance)
+ *   len       <--  size of input array
+ *   datatype  <--  MPI_datatype associated to cs_join_vertex_t
+ *---------------------------------------------------------------------------*/
+
+void  cs_join_mesh_mpi_vertex_max(cs_join_vertex_t   *in,
+                                  cs_join_vertex_t   *inout,
+                                  int                *len,
+                                  MPI_Datatype       *datatype)
+{
+  int  i, j;
+
+  for (i = 0; i < *len; i++) {
+
+    if (in->tolerance >= inout->tolerance) {
+
+      if (in->tolerance > inout->tolerance) {
+        inout->gnum = in->gnum;
+        for (j = 0; j < 3; j++)
+          inout->coord[j] = in->coord[j];
+        inout->tolerance = in->tolerance;
+      }
+      else {
+        if (in->gnum < inout->gnum) {
+          inout->gnum = in->gnum;
+          for (j = 0; j < 3; j++)
+            inout->coord[j] = in->coord[j];
+          inout->tolerance = in->tolerance;
+        }
+      }
+
+    } /* in.tol >= inout.tol */
+
+  } /* End of loop on array */
+
+}
+
 #endif /* HAVE_MPI */
 
 /*----------------------------------------------------------------------------
@@ -1243,6 +1349,81 @@ cs_join_mesh_copy(cs_join_mesh_t        **mesh,
   *mesh = _mesh;
 }
 
+/*----------------------------------------------------------------------------
+ * Compute the global min/max tolerance defined on vertices and display it
+ *
+ * parameters:
+ *   param <-- user-defined parameters for the joining algorithm
+ *   mesh  <-- pointer to a cs_join_mesh_t structure
+ *---------------------------------------------------------------------------*/
+
+void
+cs_join_mesh_minmax_tol(cs_join_param_t    param,
+                        cs_join_mesh_t    *mesh)
+{
+  int  i;
+  cs_join_vertex_t  _min, _max, g_min, g_max;
+
+  const int  n_ranks = cs_glob_n_ranks;
+
+  _min.tolerance = DBL_MAX;
+  _max.tolerance = -DBL_MAX;
+  g_min.tolerance = DBL_MAX;
+  g_max.tolerance = -DBL_MAX;
+
+  /* Compute local min/max */
+
+  if (mesh->n_vertices > 0) {
+
+    for (i = 0; i < mesh->n_vertices; i++) {
+
+      if (_min.tolerance > mesh->vertices[i].tolerance)
+        _min = mesh->vertices[i];
+      if (_max.tolerance < mesh->vertices[i].tolerance)
+        _max = mesh->vertices[i];
+
+    }
+
+    if (param.verbosity > 2) {
+      bft_printf(_("\n  Local min/max. tolerance:\n\n"
+                   "Glob. Num.  |  Tolerance  |        Coordinates\n"));
+      cs_join_mesh_dump_vertex(_min);
+      cs_join_mesh_dump_vertex(_max);
+    }
+
+  }
+
+#if defined(HAVE_MPI)
+  if (n_ranks > 1) {
+
+    MPI_Datatype  MPI_JOIN_VERTEX = cs_join_mesh_create_vtx_datatype();
+    MPI_Op   MPI_Vertex_min, MPI_Vertex_max;
+
+    MPI_Op_create((MPI_User_function  *)cs_join_mesh_mpi_vertex_min,
+                  true, &MPI_Vertex_min);
+    MPI_Op_create((MPI_User_function  *)cs_join_mesh_mpi_vertex_max,
+                  false, &MPI_Vertex_max);
+
+    MPI_Allreduce(&_min, &g_min, 1, MPI_JOIN_VERTEX, MPI_Vertex_min,
+                  cs_glob_mpi_comm);
+    MPI_Allreduce(&_max, &g_max, 1, MPI_JOIN_VERTEX, MPI_Vertex_max,
+                  cs_glob_mpi_comm);
+
+    bft_printf(_("\n  Global min/max. tolerance:\n\n"
+                 "Glob. Num.  |  Tolerance  |        Coordinates\n"));
+    cs_join_mesh_dump_vertex(g_min);
+    cs_join_mesh_dump_vertex(g_max);
+
+    MPI_Op_free(&MPI_Vertex_min);
+    MPI_Op_free(&MPI_Vertex_max);
+    MPI_Type_free(&MPI_JOIN_VERTEX);
+
+  }
+#endif
+
+}
+
+
 #if defined(HAVE_MPI)
 
 /*----------------------------------------------------------------------------
@@ -1738,6 +1919,163 @@ cs_join_mesh_face_order(cs_join_mesh_t  *mesh)
   BFT_REALLOC(mesh->face_vtx_lst, mesh->face_vtx_idx[n_new_faces], cs_int_t);
 }
 
+#if defined(HAVE_MPI)
+
+/*----------------------------------------------------------------------------
+ * Synchronize vertices definition over the rank. For a vertex with the same
+ * global number but a not equal tolerance, we keep the minimal tolerance.
+ *
+ * parameters:
+ *  mesh <->  pointer to the cs_join_mesh_t structure to synchronize
+ *---------------------------------------------------------------------------*/
+
+void
+cs_join_mesh_sync_vertices(cs_join_mesh_t  *mesh)
+{
+  cs_int_t  i, rank, shift, start, end;
+  double  min_tol;
+  fvm_gnum_t  ref_gnum, l_max_gnum, g_max_gnum;
+  cs_join_block_info_t  block_info;
+
+  int  *send_shift = NULL, *recv_shift = NULL;
+  int  *send_count = NULL, *recv_count = NULL;
+  fvm_lnum_t  *order = NULL;
+  fvm_gnum_t  *recv_gnum = NULL;
+  cs_join_vertex_t  *send_vertices = NULL, *recv_vertices = NULL;
+
+  MPI_Datatype  CS_MPI_JOIN_VERTEX = cs_join_mesh_create_vtx_datatype();
+  MPI_Comm  mpi_comm = cs_glob_mpi_comm;
+
+  const int  n_ranks = cs_glob_n_ranks;
+  const int  local_rank = CS_MAX(cs_glob_rank_id, 0);
+
+  assert(n_ranks > 1);
+
+  /* Get the max global number */
+
+  l_max_gnum = 0;
+  for (i = 0; i < mesh->n_vertices; i++)
+    l_max_gnum = CS_MAX(l_max_gnum, mesh->vertices[i].gnum);
+
+  MPI_Allreduce(&l_max_gnum, &g_max_gnum, 1, FVM_MPI_GNUM, MPI_MAX, mpi_comm);
+
+  block_info = cs_join_get_block_info(g_max_gnum,
+                                      n_ranks,
+                                      local_rank);
+
+  BFT_MALLOC(send_count, n_ranks, int);
+  BFT_MALLOC(recv_count, n_ranks, int);
+
+  for (i = 0; i < n_ranks; i++)
+    send_count[i] = 0;
+
+  for (i = 0; i < mesh->n_vertices; i++) {
+    rank = (mesh->vertices[i].gnum - 1)/block_info.size;
+    send_count[rank] += 1;
+  }
+
+  MPI_Alltoall(send_count, 1, MPI_INT, recv_count, 1, MPI_INT, mpi_comm);
+
+  BFT_MALLOC(send_shift, n_ranks + 1, int);
+  BFT_MALLOC(recv_shift, n_ranks + 1, int);
+
+  send_shift[0] = 0;
+  recv_shift[0] = 0;
+
+  for (rank = 0; rank < n_ranks; rank++) {
+    send_shift[rank + 1] = send_shift[rank] + send_count[rank];
+    recv_shift[rank + 1] = recv_shift[rank] + recv_count[rank];
+  }
+
+  assert(send_shift[n_ranks] == mesh->n_vertices);
+
+  BFT_MALLOC(send_vertices, send_shift[n_ranks], cs_join_vertex_t);
+  BFT_MALLOC(recv_vertices, recv_shift[n_ranks], cs_join_vertex_t);
+
+  for (i = 0; i < n_ranks; i++)
+    send_count[i] = 0;
+
+  for (i = 0; i < mesh->n_vertices; i++) {
+    rank = (mesh->vertices[i].gnum - 1)/block_info.size;
+    shift = send_shift[rank] + send_count[rank];
+    send_vertices[shift] = mesh->vertices[i];
+    send_count[rank] += 1;
+  }
+
+  /* Send vertices to sync and receive its part of work */
+
+  MPI_Alltoallv(send_vertices, send_count, send_shift, CS_MPI_JOIN_VERTEX,
+                recv_vertices, recv_count, recv_shift, CS_MPI_JOIN_VERTEX,
+                mpi_comm);
+
+  /* Order vertices by increasing global number */
+
+  BFT_MALLOC(recv_gnum, recv_shift[n_ranks], fvm_gnum_t);
+  BFT_MALLOC(order, recv_shift[n_ranks], fvm_lnum_t);
+
+  for (i = 0; i < recv_shift[n_ranks]; i++)
+    recv_gnum[i] = recv_vertices[i].gnum;
+
+  fvm_order_local_allocated(NULL, recv_gnum, order, recv_shift[n_ranks]);
+
+  /* Sync. vertices sharing the same global number */
+
+  start = 0;
+  while (start < recv_shift[n_ranks]) {
+
+    min_tol = recv_vertices[order[start]].tolerance;
+    ref_gnum = recv_vertices[order[start]].gnum;
+    for (i = start;
+         i < recv_shift[n_ranks] && ref_gnum == recv_vertices[order[i]].gnum;
+         i++);
+    end = i;
+
+    /* Get min tolerance */
+    for (i = start; i < end; i++)
+      min_tol = CS_MIN(min_tol, recv_vertices[order[i]].tolerance);
+
+    /* Set min tolerance to all vertices sharing the same global number */
+    for (i = start; i < end; i++)
+      recv_vertices[order[i]].tolerance = min_tol;
+
+    start = end;
+  }
+
+  /* Send back vertices after synchronization */
+
+  MPI_Alltoallv(recv_vertices, recv_count, recv_shift, CS_MPI_JOIN_VERTEX,
+                send_vertices, send_count, send_shift, CS_MPI_JOIN_VERTEX,
+                mpi_comm);
+
+  /* Update mesh->vertices */
+
+  for (i = 0; i < n_ranks; i++)
+    send_count[i] = 0;
+
+  for (i = 0; i < mesh->n_vertices; i++) {
+    rank = (mesh->vertices[i].gnum - 1)/block_info.size;
+    shift = send_shift[rank] + send_count[rank];
+    mesh->vertices[i] = send_vertices[shift];
+    send_count[rank] += 1;
+  }
+
+  /* Free buffers */
+
+  MPI_Type_free(&CS_MPI_JOIN_VERTEX);
+
+  BFT_FREE(recv_gnum);
+  BFT_FREE(order);
+  BFT_FREE(send_count);
+  BFT_FREE(send_shift);
+  BFT_FREE(send_vertices);
+  BFT_FREE(recv_count);
+  BFT_FREE(recv_shift);
+  BFT_FREE(recv_vertices);
+
+}
+
+#endif /* HAVE_MPI */
+
 /*----------------------------------------------------------------------------
  * Delete vertices which appear several times (same global number) and
  * vertices which are not used in face definition.
@@ -1932,9 +2270,6 @@ cs_join_mesh_define_edges(const cs_join_mesh_t  *mesh)
 
   n_init_edges = mesh->face_vtx_idx[mesh->n_faces] - 1;
 
-  if (n_init_edges == 0)
-    return edges;
-
   BFT_MALLOC(edges->def, 2*n_init_edges, cs_int_t);
   BFT_MALLOC(edges->vtx_idx, mesh->n_vertices + 1, cs_int_t);
 
@@ -1951,6 +2286,8 @@ cs_join_mesh_define_edges(const cs_join_mesh_t  *mesh)
     cs_int_t  start = mesh->face_vtx_idx[i] - 1;
     cs_int_t  end =  mesh->face_vtx_idx[i+1] - 1;
 
+    assert(end-start > 0);
+
     for (j = start; j < end - 1; j++) {
 
       v1_num = mesh->face_vtx_lst[j];
@@ -2011,35 +2348,39 @@ cs_join_mesh_define_edges(const cs_join_mesh_t  *mesh)
 
   fvm_order_local_allocated_s(NULL, adjacency, 2, order, n_init_edges);
 
-  /* Fill cs_join_edges_t structure */
+  if (n_init_edges > 0) {
 
-  o_id1 = order[0];
-  edges->def[0] = vtx_lst[2*o_id1];
-  edges->def[1] = vtx_lst[2*o_id1+1];
-  edges->vtx_idx[vtx_lst[2*o_id1]] += 1;
-  edges->vtx_idx[vtx_lst[2*o_id1+1]] += 1;
-  edge_shift = 1;
+    /* Fill cs_join_edges_t structure */
 
-  for (i = 1; i < n_init_edges; i++) {
+    o_id1 = order[0];
+    edges->def[0] = vtx_lst[2*o_id1];
+    edges->def[1] = vtx_lst[2*o_id1+1];
+    edges->vtx_idx[vtx_lst[2*o_id1]] += 1;
+    edges->vtx_idx[vtx_lst[2*o_id1+1]] += 1;
+    edge_shift = 1;
 
-    o_id1 = order[i-1];
-    o_id2 = order[i];
+    for (i = 1; i < n_init_edges; i++) {
 
-    if (   vtx_lst[2*o_id1]   != vtx_lst[2*o_id2]
-        || vtx_lst[2*o_id1+1] != vtx_lst[2*o_id2+1]) {
+      o_id1 = order[i-1];
+      o_id2 = order[i];
 
-      edges->vtx_idx[vtx_lst[2*o_id2]] += 1;
-      edges->vtx_idx[vtx_lst[2*o_id2+1]] += 1;
-      edges->def[2*edge_shift] = vtx_lst[2*o_id2];
-      edges->def[2*edge_shift+1] = vtx_lst[2*o_id2+1];
-      edge_shift++;
+      if (   vtx_lst[2*o_id1]   != vtx_lst[2*o_id2]
+          || vtx_lst[2*o_id1+1] != vtx_lst[2*o_id2+1]) {
 
-    }
+        edges->vtx_idx[vtx_lst[2*o_id2]] += 1;
+        edges->vtx_idx[vtx_lst[2*o_id2+1]] += 1;
+        edges->def[2*edge_shift] = vtx_lst[2*o_id2];
+        edges->def[2*edge_shift+1] = vtx_lst[2*o_id2+1];
+        edge_shift++;
 
-  } /* End of loop on edges */
+      }
 
-  edges->n_edges = edge_shift;
-  BFT_REALLOC(edges->def, 2*edges->n_edges, cs_int_t);
+    } /* End of loop on edges */
+
+    edges->n_edges = edge_shift;
+    BFT_REALLOC(edges->def, 2*edges->n_edges, cs_int_t);
+
+  } /* If n_init_edges > 0 */
 
   /* Build adj_vtx_lst and edge_lst */
 
@@ -2053,7 +2394,8 @@ cs_join_mesh_define_edges(const cs_join_mesh_t  *mesh)
   BFT_MALLOC(edges->adj_vtx_lst, edges->vtx_idx[mesh->n_vertices], cs_int_t);
   BFT_MALLOC(edges->edge_lst, edges->vtx_idx[mesh->n_vertices], cs_int_t);
 
-  {
+  if (n_init_edges > 0) {
+
     cs_int_t  vtx_id_a, vtx_id_b, shift_a, shift_b;
     fvm_gnum_t  vtx_gnum_a, vtx_gnum_b;
 
@@ -2129,7 +2471,7 @@ cs_join_mesh_define_edges(const cs_join_mesh_t  *mesh)
 
     assert(cur_edge_num - 1 == edges->n_edges);
 
-  } /* End of adj_vtx_lst and edge_lst building */
+  } /* End of adj_vtx_lst and edge_lst building if n_init_edges > 0 */
 
   /* Partial clean-up */
 
@@ -2419,6 +2761,7 @@ cs_join_mesh_update(cs_join_mesh_t         *mesh,
 
     mesh->face_vtx_idx = new_face_vtx_idx;
     mesh->face_vtx_lst = new_face_vtx_lst;
+
   }
 
   /* Define the new_vertices structure */
@@ -2777,7 +3120,7 @@ cs_join_mesh_dump_vertex(const cs_join_vertex_t   vertex)
   assert(vertex.gnum > 0);
   assert(vertex.tolerance >= 0.0);
 
-  bft_printf(" %10u | %11.6f |  [ %12.6g %12.6g  %12.6g]\n",
+  bft_printf(" %10u | %11.8f |  [ %12.9e %12.9e  %12.9e]\n",
              vertex.gnum, vertex.tolerance,
              vertex.coord[0], vertex.coord[1], vertex.coord[2]);
 }
diff --git a/src/base/cs_join_post.c b/src/base/cs_join_post.c
index 3de9b2d..170bba5 100644
--- a/src/base/cs_join_post.c
+++ b/src/base/cs_join_post.c
@@ -666,8 +666,8 @@ cs_join_post_dump_mesh(const char            *basename,
   const  int  n_ranks = cs_glob_n_ranks;
   const  int  rank_id = CS_MAX(cs_glob_rank_id, 0);
 
-#if 0 && defined(DEBUG) && !defined(NDEBUG) /* Dump mesh structure */
-  if (param.verbosity > 1) {
+#if 1 && defined(DEBUG) && !defined(NDEBUG) /* Dump mesh structure */
+  if (param.verbosity > 2) {
 
     int  len;
     FILE  *dbg_file = NULL;
@@ -688,7 +688,7 @@ cs_join_post_dump_mesh(const char            *basename,
   }
 #endif
 
-  if (_cs_join_post_initialized == true && param.verbosity > 2) {
+  if (_cs_join_post_initialized == true && param.verbosity > 3) {
 
     if (n_ranks == 1)
       cs_join_post_mesh(basename, mesh);
diff --git a/src/base/cs_join_set.c b/src/base/cs_join_set.c
index 2daf755..65d3a45 100644
--- a/src/base/cs_join_set.c
+++ b/src/base/cs_join_set.c
@@ -1796,15 +1796,27 @@ cs_join_dump_array(const char   *type,
     const int *i_array = array;
 
     for (i = 0; i < n_elts; i++)
-      bft_printf(" %d ", i_array[i]);
+      bft_printf(" %8d", i_array[i]);
 
   }
+  else if (!strncmp(type, "bool", strlen("bool"))) { /* "boolean" array  */
+
+    const cs_bool_t *b_array = array;
+
+    for (i = 0; i < n_elts; i++)
+      if (b_array[i] == true)
+        bft_printf(" T");
+      else {
+        assert(b_array[i] == false);
+        bft_printf(" F");
+      }
+  }
   else if (!strncmp(type, "double", strlen("double"))) { /* "double" array */
 
     const double  *d_array = array;
 
     for (i = 0; i < n_elts; i++)
-      bft_printf(" %e ", d_array[i]);
+      bft_printf(" %10.8e", d_array[i]);
 
   }
   else if (!strncmp(type, "gnum", strlen("gnum"))) { /* "gnum" array */
@@ -1812,7 +1824,7 @@ cs_join_dump_array(const char   *type,
     const fvm_gnum_t  *u_array = array;
 
     for (i = 0; i < n_elts; i++)
-      bft_printf(" %u ", u_array[i]);
+      bft_printf(" %9u", u_array[i]);
 
   }
   else
diff --git a/src/base/cs_join_split.c b/src/base/cs_join_split.c
index 70bdc12..d896c40 100644
--- a/src/base/cs_join_split.c
+++ b/src/base/cs_join_split.c
@@ -56,8 +56,8 @@
  * FVM library headers
  *---------------------------------------------------------------------------*/
 
-#include <fvm_io_num.h>
 #include <fvm_order.h>
+#include <fvm_io_num.h>
 #include <fvm_parall.h>
 
 /*----------------------------------------------------------------------------
@@ -203,9 +203,11 @@ _cosine(double   v1[],
   double  dprod = _dot_product(v1, v2);
   double  n1 = _norm(v1);
   double  n2 = _norm(v2);
-  double  result = dprod / (n1 * n2);
 
-  return result;
+  assert(n1 > 0.0);
+  assert(n2 > 0.0);
+
+  return dprod / (n1 * n2);
 }
 
 /*----------------------------------------------------------------------------
@@ -234,9 +236,6 @@ _renumber_local_ordered_i(cs_int_t          n_elts,
   cs_int_t  *_new_index = NULL;
   fvm_gnum_t  *_new_glist = NULL;
 
-  if (n_elts < 1)
-    return;
-
   assert(index[0] == 0); /* case index[0] = 1 coulb be coded in the future */
 
   /* Build a new index */
@@ -270,6 +269,8 @@ _renumber_local_ordered_i(cs_int_t          n_elts,
   *new_glist = _new_glist;
 }
 
+#if defined(HAVE_MPI)
+
 /*----------------------------------------------------------------------------
  * Define send_rank_index and send_faces to prepare the exchange of new faces
  * between mesh structures.
@@ -419,6 +420,8 @@ _get_faces_to_send(const cs_join_gset_t  *o2n_hist,
   *send_faces = _send_faces;
 }
 
+#endif /* defined(HAVE_MPI) */
+
 /*----------------------------------------------------------------------------
  * Define the head_edges and ext_edges lists.
  *
@@ -508,9 +511,6 @@ _create_face_builder(cs_int_t  n_faces)
 
   face_builder_t  *builder = NULL;
 
-  if (n_faces == 0)
-    return NULL;
-
   BFT_MALLOC(builder, 1, face_builder_t);
 
   builder->n_faces = n_faces;
@@ -675,8 +675,14 @@ _split_face(cs_int_t                face_id,
 
   const cs_join_vertex_t  *vertices = work->vertices;
   const cs_real_t  min_limit_cos = -1.1, max_limit_cos = 1.1;
+  const cs_real_t  plane2 = plane * plane;
+  const cs_real_t  eps_dot_prod = 1e-8;
 
-  cs_bool_t  tst_dbg = (verbosity > 3 ? true : false);
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  cs_bool_t  face_tst = ( face_id == 20758 || face_id == 30105 ||
+                          face_id == 20759 || face_id == 34385 ? true : false);
+  cs_bool_t  tst_dbg = (verbosity > 2 && face_tst ? true : false);
+#endif
 
   /* To be implemented ... */
   cs_int_t  *face_face_connect = NULL;
@@ -790,7 +796,7 @@ _split_face(cs_int_t                face_id,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
             if (tst_dbg)
-              bft_printf("  (%d) vertex connected to v2: %u\n",
+              bft_printf("  (v2v_id: %d) Next vertex connected to v2 to test: %u\n",
                          i, vertices[connect_vid].gnum);
 #endif
 
@@ -849,7 +855,7 @@ _split_face(cs_int_t                face_id,
                                  face_norm[0], face_norm[1], face_norm[2]);
 #endif
 
-                    if (dprod2 > plane) {
+                    if (dprod2 > plane2) {
 
                       if (face_face_connect == NULL) {
                         found = true;
@@ -922,12 +928,12 @@ _split_face(cs_int_t                face_id,
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
                   if (tst_dbg)
-                    bft_printf("\t  dot_prod: %g, cosine: %g\n",
+                    bft_printf("\t dot_prod: %g (DP>0=>min | DP<0=>max), cosine: %g\n",
                                dprod, cosine);
 #endif
 
-                  if (dprod > 0) { /* Left part. We choose the edge
-                                      with the smallest cosine */
+                  if (dprod >= -eps_dot_prod * _norm(cprod) ) {
+                    /* Left part. We choose the edge with the smallest cosine */
 
                     if (cosine < left_min_cos) {
                       left_min_cos = cosine;
@@ -1270,7 +1276,6 @@ _get_subface_gnum(face_builder_t  *builder)
   const fvm_gnum_t  *global_num = NULL;
 
   assert(index != NULL);
-  assert(gconnect != NULL);
 
   /* Allocate the buffer we want to define */
 
@@ -1452,6 +1457,7 @@ _update_mesh_after_split(cs_join_block_info_t    block_info,
   /* Sanity checks */
 
   assert(init_mesh != NULL);
+  assert(builder != NULL);
 
   /* Create a new cs_join_mesh_t structure */
 
@@ -1463,20 +1469,13 @@ _update_mesh_after_split(cs_join_block_info_t    block_info,
 
   BFT_FREE(new_mesh_name);
 
-  if (builder == NULL) { /* No face to treat for the current rank */
-
-    assert(block_info.local_size == 0);
-
-    cs_join_mesh_destroy(&init_mesh);
-
-    /* Return pointers */
-
-    *mesh = new_mesh;
-
-    return;
-  }
-
-  assert((int)block_info.local_size == builder->n_faces);
+  if ((int)block_info.local_size != builder->n_faces)
+    bft_error(__FILE__, __LINE__, 0,
+              _(" Inconsistent values between:\n"
+                "    block_info.local_size  %8d\n"
+                "    builder->n_faces:      %8d\n"
+                " These values should be equal.\n"),
+              block_info.local_size, builder->n_faces);
 
   /* Compute the number of new faces */
 
@@ -1951,12 +1950,12 @@ cs_join_split_faces(cs_join_param_t          param,
     if (n_g_face_problems > 0) {
 
       bft_printf
-        (_("  Warning: (%lu) problem(s) found during the face splitting\n"
+        (_("\n  *** WARNING ***\n"
+           "  Globally, %lu problem(s) found during the face splitting\n"
            "     %12lu  open cycles,\n"
            "     %12lu  edges traversed twice,\n"
-           "     %12lu  faces split into more than "
-           "max_subfaces (= %d)\n\n"
-           "  => Eventually modify joining parameters\n\n"),
+           "     %12lu  faces split into more than max_subfaces (= %d)\n\n"
+           "    => Eventually modify joining parameters\n\n"),
          (unsigned long)n_g_face_problems,
          (unsigned long)n_g_open_cycles,
          (unsigned long)n_g_edges_twice,
@@ -1997,9 +1996,7 @@ cs_join_split_faces(cs_join_param_t          param,
   BFT_FREE(edge_face_idx);
   BFT_FREE(edge_face_lst);
 
-  /* Define a global number for each new sub-faces */
-
-  if (loc_builder != NULL) {
+  { /* Define a global number for each new sub-faces */
 
     cs_int_t  n_subfaces = loc_builder->face_index[loc_builder->n_faces];
     cs_int_t  sub_connect_size = loc_builder->subface_index->array[n_subfaces];
@@ -2017,8 +2014,7 @@ cs_join_split_faces(cs_join_param_t          param,
 
     }
 
-    if (sub_connect_size > 0)
-      _get_subface_gnum(loc_builder);
+    _get_subface_gnum(loc_builder);
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
     bft_printf("\nFINAL BUILDER STATE\n");
diff --git a/src/base/cs_join_update.c b/src/base/cs_join_update.c
index 7128b7d..d31228f 100644
--- a/src/base/cs_join_update.c
+++ b/src/base/cs_join_update.c
@@ -359,14 +359,13 @@ _sync_single_vertices(const cs_join_select_t  *selection,
   MPI_Status   *status = NULL;
   MPI_Comm  mpi_comm = cs_glob_mpi_comm;
 
-  const int  n_ranks = cs_glob_n_ranks;
   const int  loc_rank = CS_MAX(cs_glob_rank_id, 0);
 
   bft_printf("\n  Synchronization of the \"single\" elements after the fusion"
              " step.\n");
   bft_printf_flush();
 
-  assert(n_ranks > 1);
+  assert(cs_glob_n_ranks > 1);
 
   /* Allocate MPI buffers used for exchanging data */
 
@@ -508,12 +507,11 @@ _sync_single_edges(const cs_join_select_t   *selection,
   MPI_Status   *status = NULL;
   MPI_Comm  mpi_comm = cs_glob_mpi_comm;
 
-  const int  n_ranks = cs_glob_n_ranks;
   const int  loc_rank = CS_MAX(cs_glob_rank_id, 0);
   const cs_join_sync_t  *s_edges = selection->s_edges;
   const cs_join_sync_t  *c_edges = selection->c_edges;
 
-  assert(n_ranks > 1);
+  assert(cs_glob_n_ranks > 1);
 
   /* Allocate MPI buffers used for exchanging data */
 
@@ -2524,6 +2522,7 @@ _add_new_border_faces(const cs_join_select_t     *join_select,
 
   if (n_new_b_faces > 0) {
     for (i = 0; i < join_mesh->n_faces; i++) {
+
       if (new_face_type[i] == CS_JOIN_FACE_BORDER) {
 
         shift = n2o_face_hist->index[i];
@@ -2535,19 +2534,50 @@ _add_new_border_faces(const cs_join_select_t     *join_select,
 
         fid = join_select->faces[compact_old_fgnum - rank_start] - 1;
 
-        if (n_ranks > 1)
-          new_fgnum[n_fb_faces] = join_mesh->face_gnum[i] + n_g_ib_faces;
-
         new_face_cells[n_fb_faces] = mesh->b_face_cells[fid];
         new_face_family[n_fb_faces] = mesh->b_face_family[fid];
 
+        if (n_ranks > 1)
+          new_fgnum[n_fb_faces] = join_mesh->face_gnum[i] + n_g_ib_faces;
+
         n_fb_faces++;
         n_face_vertices =
           join_mesh->face_vtx_idx[i+1] - join_mesh->face_vtx_idx[i];
         new_f2v_idx[n_fb_faces] = n_face_vertices;
 
       } /* If new border face */
-    }
+
+      else if (new_face_type[i] == CS_JOIN_FACE_MULTIPLE_BORDER) {
+
+        for (j = n2o_face_hist->index[i]; j < n2o_face_hist->index[i+1]; j++) {
+
+          compact_old_fgnum = n2o_face_hist->g_list[j];
+
+          if (    rank_start <= compact_old_fgnum
+              &&  compact_old_fgnum < rank_end) {
+
+            /* Initial selected border face must be in the selection */
+
+            fid = join_select->faces[compact_old_fgnum - rank_start] - 1;
+            new_face_cells[n_fb_faces] = mesh->b_face_cells[fid];
+            new_face_family[n_fb_faces] = mesh->b_face_family[fid];
+
+          }
+
+        }
+
+        if (n_ranks > 1)
+          new_fgnum[n_fb_faces] = join_mesh->face_gnum[i] + n_g_ib_faces;
+
+        n_fb_faces++;
+        n_face_vertices =
+          join_mesh->face_vtx_idx[i+1] - join_mesh->face_vtx_idx[i];
+        new_f2v_idx[n_fb_faces] = n_face_vertices;
+
+      }
+
+    } /* Loop on faces */
+
   } /* If n_new_b_faces > 0 */
 
   assert(mesh->n_b_faces == n_fb_faces);
@@ -2589,7 +2619,8 @@ _add_new_border_faces(const cs_join_select_t     *join_select,
 
   if (n_new_b_faces > 0) {
     for (i = 0; i < join_mesh->n_faces; i++) {
-      if (new_face_type[i] == CS_JOIN_FACE_BORDER) {
+      if (   new_face_type[i] == CS_JOIN_FACE_BORDER
+          || new_face_type[i] == CS_JOIN_FACE_MULTIPLE_BORDER) {
 
         shift = new_f2v_idx[n_fb_faces] - 1;
 
@@ -2962,7 +2993,7 @@ _reorient_faces(cs_mesh_t       *mesh,
     _get_face_quantity(n_face_vertices,
                        face_vtx_coord,
                        face_barycenter,
-                       face_normal);  // unitary
+                       face_normal);  /* unitary */
 
     /*  Cb: cell barycenter
         Fb: face barycenter
@@ -3284,20 +3315,23 @@ cs_join_update_mesh_after_merge(cs_join_param_t          join_param,
 #endif
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG) /* Dump the structure */
-  if (join_param.verbosity > 2) {
+  {
     int k;
 
     bft_printf("\n  Dump edge_builder_t structure (%p)\n", edge_builder);
 
     if (edge_builder != NULL) {
-      bft_printf("  n_vertices: %10d\n"
-                 "  n_edges   : %10d\n",
-                 edge_builder->n_vertices, edge_builder->n_edges);
+      bft_printf("  n_vertices: %9d\n"
+                 "  n_edges   : %9d\n"
+                 "  idx_size  : %9d\n",
+                 edge_builder->n_vertices, edge_builder->n_edges,
+                 edge_builder->v2v_idx[edge_builder->n_vertices]);
 
-      for (i = 0; i < mesh->n_vertices; i++) {
+      for (i = 0; i < edge_builder->n_vertices; i++) {
 
-        bft_printf("%9d - [%10.4f %10.4f %10.4f]: (%d, %d) v-v:",
-                   i+1, mesh->vtx_coord[3*i], mesh->vtx_coord[3*i+1],
+        bft_printf("%7d - %9u- [%10.4f %10.4f %10.4f]: (%d, %d) v-v:",
+                   i+1, mesh->global_vtx_num[i],
+                   mesh->vtx_coord[3*i], mesh->vtx_coord[3*i+1],
                    mesh->vtx_coord[3*i+2], edge_builder->v2v_idx[i],
                    edge_builder->v2v_idx[i+1]);
 
@@ -3454,7 +3488,7 @@ cs_join_update_mesh_after_split(cs_join_param_t          join_param,
                                 const cs_join_mesh_t    *join_mesh,
                                 cs_mesh_t               *mesh)
 {
-  int  i, n_matches, default_family;
+  int  i, j, n_matches, default_family;
 
   fvm_gnum_t  n_g_new_b_faces = 0;
   cs_int_t  n_new_i_faces = 0, n_new_b_faces = 0;
@@ -3471,6 +3505,7 @@ cs_join_update_mesh_after_split(cs_join_param_t          join_param,
   const int  n_ranks = cs_glob_n_ranks;
 
   assert(mesh != NULL);
+  assert(join_mesh != NULL);
 
   /* Invert face historic */
 
@@ -3497,8 +3532,7 @@ cs_join_update_mesh_after_split(cs_join_param_t          join_param,
 #endif
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
-  if (join_param.verbosity > 3) { /* Full dump of structures */
-
+  {
     int  len;
     FILE  *dbg_file = NULL;
     char  *filename = NULL;
@@ -3514,7 +3548,6 @@ cs_join_update_mesh_after_split(cs_join_param_t          join_param,
     fflush(dbg_file);
     BFT_FREE(filename);
     fclose(dbg_file);
-
   }
 #endif
 
@@ -3537,13 +3570,24 @@ cs_join_update_mesh_after_split(cs_join_param_t          join_param,
       n_new_i_faces += 1;
       new_face_type[i] = CS_JOIN_FACE_INTERIOR;
     }
-    else
-      bft_error(__FILE__, __LINE__, 0,
-                _("  Incompatible new face type found.\n"
-                  "  n_matches is not to 1 or 2: n_matches = %d\n"),
-                n_matches);
+    else {
+
+      if (join_param.verbosity > 1) {
+        bft_printf(_("  Warning: Face %d (%u) has more than two ancestors.\n"
+                     "  Old faces implied:"),
+                   i+1, join_mesh->face_gnum[i]);
+        for (j = n2o_face_hist->index[i]; j < n2o_face_hist->index[i+1]; j++)
+          bft_printf(" %u", n2o_face_hist->g_list[j]);
+        bft_printf("\n");
+      }
+
+      /* Border face by default */
+      n_new_b_faces += 1;
+      new_face_type[i] = CS_JOIN_FACE_MULTIPLE_BORDER;
+
+    }
 
-  }
+  } /* End of loop on faces */
 
   if (join_param.verbosity > 0)
     bft_printf(_("\n  Local configuration after the joining operation:\n"
@@ -3580,7 +3624,7 @@ cs_join_update_mesh_after_split(cs_join_param_t          join_param,
 
   /* Define join2mesh_vtx_id and add new vertices (only in parallel mode)
      These vertices already exist but only on other ranks. During the face
-     cutting op., these vertices are used to define the new face connect. */
+     splitting op., these vertices are used to define the new face connect. */
 
   _update_vertices_after_split(join_mesh, mesh, &join2mesh_vtx_id);
 
@@ -3672,6 +3716,45 @@ cs_join_update_mesh_after_split(cs_join_param_t          join_param,
                            join_select->n_faces,
                            mesh,
                            join_param);
+
+  /* Check face -> vertex connectivity */
+
+  for (i = 0; i < mesh->n_i_faces; i++) {
+
+    for (j = mesh->i_face_vtx_idx[i] - 1;
+         j < mesh->i_face_vtx_idx[i+1] - 1; j++) {
+
+       if (mesh->i_face_vtx_lst[j] < 1 ||
+           mesh->i_face_vtx_lst[j] > mesh->n_vertices)
+         bft_error(__FILE__, __LINE__, 0,
+                   "  Incoherency found in face -> vertex connect.\n"
+                   "  for interior face %d (%u)\n"
+                   "  vtx: %d and n_vertices = %d\n",
+                   i+1, mesh->global_i_face_num[i],
+                   mesh->i_face_vtx_lst[j], mesh->n_vertices);
+
+    }
+
+  }
+
+  for (i = 0; i < mesh->n_b_faces; i++) {
+
+    for (j = mesh->b_face_vtx_idx[i] - 1;
+         j < mesh->b_face_vtx_idx[i+1] - 1; j++) {
+
+       if (mesh->b_face_vtx_lst[j] < 1 ||
+           mesh->b_face_vtx_lst[j] > mesh->n_vertices)
+         bft_error(__FILE__, __LINE__, 0,
+                   "  Incoherency found in face -> vertex connect.\n"
+                   "  for border face %d (%u)\n"
+                   "  vtx: %d and n_vertices = %d\n",
+                   i+1, mesh->global_b_face_num[i],
+                   mesh->b_face_vtx_lst[j], mesh->n_vertices);
+
+    }
+
+  }
+
 }
 
 /*----------------------------------------------------------------------------
@@ -3760,9 +3843,10 @@ cs_join_update_mesh_clean(cs_join_param_t   param,
 
   } /* End of loop on border faces */
 
-  if (param.verbosity > 0)
-    bft_printf(_("\n  Degenerate connectivity for %d final border faces.\n"),
-               n_b_clean_faces);
+  if (param.verbosity > 1)
+    bft_printf
+      (_("\n  Degenerate connectivity for %d final local boundary faces.\n"),
+       n_b_clean_faces);
 
   for (i = mesh->n_b_faces; i > 0; i--)
     mesh->b_face_vtx_idx[i] = mesh->b_face_vtx_idx[i-1] + 1;
@@ -3820,9 +3904,10 @@ cs_join_update_mesh_clean(cs_join_param_t   param,
 
   } /* End of loop on interior faces */
 
-  if (param.verbosity > 0)
-    bft_printf(_("  Degenerate connectivity for %d final interior faces.\n"
-                 "  Mesh cleaning done.\n"), n_i_clean_faces);
+  if (param.verbosity > 1)
+    bft_printf
+      (_("  Degenerate connectivity for %d final local interior faces.\n"),
+       n_i_clean_faces);
 
   for (i = mesh->n_i_faces; i > 0; i--)
     mesh->i_face_vtx_idx[i] = mesh->i_face_vtx_idx[i-1] + 1;
@@ -3831,25 +3916,53 @@ cs_join_update_mesh_clean(cs_join_param_t   param,
   BFT_REALLOC(mesh->i_face_vtx_lst, mesh->i_face_vtx_idx[mesh->n_i_faces],
               cs_int_t);
 
-  if (param.verbosity > 1) { /* Post-treat clean faces */
+  if (param.verbosity > 0) { /* Post-treat clean faces */
 
-    if (n_i_clean_faces > 0 || n_b_clean_faces > 0) {
+    fvm_gnum_t  gbuf[2], buf[2];
+    fvm_gnum_t  n_g_i_clean_faces = 0, n_g_b_clean_faces = 0;
 
-      BFT_REALLOC(i_clean_faces, n_i_clean_faces, cs_int_t);
-      BFT_REALLOC(b_clean_faces, n_b_clean_faces, cs_int_t);
+    buf[0] = n_i_clean_faces;
+    buf[1] = n_b_clean_faces;
 
-      cs_join_post_cleaned_faces(n_i_clean_faces,
-                                 i_clean_faces,
-                                 n_b_clean_faces,
-                                 b_clean_faces,
-                                 param);
+ #if defined(HAVE_MPI)
+    if (cs_glob_n_ranks > 1) {
+      MPI_Allreduce(buf, gbuf, 2, FVM_MPI_GNUM, MPI_SUM, cs_glob_mpi_comm);
 
+      buf[0] = gbuf[0];
+      buf[1] = gbuf[1];
     }
+#endif
 
-    BFT_FREE(b_clean_faces);
-    BFT_FREE(i_clean_faces);
+    n_g_i_clean_faces = buf[0];
+    n_g_b_clean_faces = buf[1];
 
-  }
+    if (param.verbosity > 1) { /* Post-treat clean faces */
+
+      if (n_g_i_clean_faces > 0 || n_g_b_clean_faces > 0) {
+
+        BFT_REALLOC(i_clean_faces, n_i_clean_faces, cs_int_t);
+        BFT_REALLOC(b_clean_faces, n_b_clean_faces, cs_int_t);
+
+        cs_join_post_cleaned_faces(n_i_clean_faces,
+                                   i_clean_faces,
+                                   n_b_clean_faces,
+                                   b_clean_faces,
+                                   param);
+
+      }
+
+      BFT_FREE(b_clean_faces);
+      BFT_FREE(i_clean_faces);
+
+    } /* verbosity > 1 */
+
+    bft_printf(_("\n  Mesh cleaning done for degenerated faces.\n"
+                 "    Global number of cleaned interior faces: %8u\n"
+                 "    Global number of cleaned border faces:   %8u\n"),
+               n_g_i_clean_faces, n_g_b_clean_faces);
+    bft_printf_flush();
+
+  } /* verbosity > 0 */
 
   /* Free memory */
 
diff --git a/src/base/cs_join_util.c b/src/base/cs_join_util.c
index bfe3b61..76b0546 100644
--- a/src/base/cs_join_util.c
+++ b/src/base/cs_join_util.c
@@ -155,8 +155,8 @@ _compact_face_gnum_selection(cs_int_t     n_select_faces,
  * parameters:
  *  n_elts      <->  number of elements in the list to clean
  *  elts        <->  list of elements in the list to clean
- *  n_ref_elts  -->  number of elements in the reference list
- *  ref_elts    -->  list of reference elements
+ *  n_ref_elts  <--  number of elements in the reference list
+ *  ref_elts    <--  list of reference elements
  *---------------------------------------------------------------------------*/
 
 static void
@@ -261,8 +261,7 @@ _extract_vertices(cs_int_t         n_select_faces,
  *
  * parameters:
  *   n_vertices        <-- number of vertices in the whole mesh
- *   n_select_vertices <-- number of selected vertices
- *   select_vertices   <-- list of selected vertices
+ *   selection         <-- pointer to a selection structure
  *   n_faces           <-- number of faces in the whole mesh
  *   f2v_idx           <-- "face -> vertex" connect. index
  *   f2v_lst           <-- "face -> vertex" connect. list
@@ -271,14 +270,13 @@ _extract_vertices(cs_int_t         n_select_faces,
  *---------------------------------------------------------------------------*/
 
 static void
-_extract_contig_faces(cs_int_t         n_vertices,
-                      cs_int_t         n_select_vertices,
-                      const cs_int_t   select_vertices[],
-                      cs_int_t         n_faces,
-                      const cs_int_t   f2v_idx[],
-                      const cs_int_t   f2v_lst[],
-                      cs_int_t        *n_contig_faces,
-                      cs_int_t        *contig_faces[])
+_extract_contig_faces(cs_int_t          n_vertices,
+                      cs_join_select_t *selection,
+                      cs_int_t          n_faces,
+                      const cs_int_t    f2v_idx[],
+                      const cs_int_t    f2v_lst[],
+                      cs_int_t         *n_contig_faces,
+                      cs_int_t         *contig_faces[])
 {
   cs_int_t  i, j,  vtx_id, shift;
 
@@ -286,7 +284,12 @@ _extract_contig_faces(cs_int_t         n_vertices,
   cs_int_t  *_contig_faces = NULL, *counter = NULL;
   cs_int_t  *v2f_idx = NULL, *v2f_lst = NULL;
 
-  if (n_select_vertices == 0)
+  const cs_int_t  n_select_vertices = selection->n_vertices;
+  const cs_int_t  n_single_vertices = selection->s_vertices->n_elts;
+  const cs_int_t  *select_vertices = selection->vertices;
+  const cs_int_t  *single_vertices = selection->s_vertices->array;
+
+  if (n_select_vertices + n_single_vertices == 0)
     return;
 
   /* Reverse face -> vertex connectivity */
@@ -347,6 +350,15 @@ _extract_contig_faces(cs_int_t         n_vertices,
 
   }
 
+  for (i = 0; i < n_single_vertices; i++) {
+
+    vtx_id = single_vertices[i] - 1;
+
+    for (j = v2f_idx[vtx_id]; j < v2f_idx[vtx_id+1]; j++)
+      counter[v2f_lst[j]-1] = 1;
+
+  }
+
   for (i = 0; i < n_faces; i++)
     _n_contig_faces += counter[i];
 
@@ -374,12 +386,11 @@ _extract_contig_faces(cs_int_t         n_vertices,
   *contig_faces = _contig_faces;
 }
 
-#if defined(HAVE_MPI)
 /*----------------------------------------------------------------------------
  * Initialize a structure for the synchronization of single
  * elements
  *
- * returns
+ * returns:
  *   a pointer to a new structure used for synchronizing single elements
  *----------------------------------------------------------------------------*/
 
@@ -422,13 +433,14 @@ _destroy_join_sync(cs_join_sync_t   **sync)
   *sync = _sync;
 }
 
+#if defined(HAVE_MPI)
 /*----------------------------------------------------------------------------
  * Define a structure used for synchronizing "single" vertices.
  * Use a fvm_interface_t structure to help the build.
  *
  * parameters:
- *   interfaces     --> pointer to a fvm_interface_set_t structure
- *   var_size       --> number of elements in var buffer
+ *   interfaces     <-- pointer to a fvm_interface_set_t structure
+ *   var_size       <-- number of elements in var buffer
  *   count          <-> counter buffer (0: not selected, 1 otherwise)
  *   related_ranks  <-> rank associated to each single vertex (size: var_size)
  *   single         <-> data about the distribution of single vertices
@@ -442,9 +454,10 @@ _add_single_vertices(fvm_interface_set_t    *interfaces,
                      cs_join_sync_t         *single)
 {
   int  request_count, distant_rank, n_interfaces, total_size;
-  int  i, j, id, ii, shift, last_found_rank;
+  int  id, ii, last_found_rank;
 
   int  count_size = 0;
+  int  n_max_ranks = 0, n_max_elts = 0;
   fvm_lnum_t  n_entities = 0;
   int  *buf = NULL, *send_buf = NULL, *recv_buf = NULL;
 
@@ -457,6 +470,7 @@ _add_single_vertices(fvm_interface_set_t    *interfaces,
   const fvm_interface_t  *interface = NULL;
 
   assert(count != NULL);
+  assert(single != NULL);
 
   /* Initialize and allocate */
 
@@ -541,12 +555,12 @@ _add_single_vertices(fvm_interface_set_t    *interfaces,
   BFT_FREE(request);
   BFT_FREE(status);
 
-  /* Now we had each part to count */
+  /* Now we estimate the max. number of ranks and elements involved */
 
   count_size = 0;
   last_found_rank = -1;
 
-  for (id = 0 ; id < n_interfaces ; id++) {
+  for (id = 0; id < n_interfaces; id++) {
 
     /* Scan data */
 
@@ -567,9 +581,9 @@ _add_single_vertices(fvm_interface_set_t    *interfaces,
 
         if (last_found_rank != distant_rank) {
           last_found_rank = distant_rank;
-          single->n_ranks++;
+          n_max_ranks++;
         }
-        single->n_elts++;
+        n_max_elts++;
 
       }
 
@@ -579,19 +593,19 @@ _add_single_vertices(fvm_interface_set_t    *interfaces,
 
   }
 
-  if (single->n_elts > 0) {
-
-    int  rank_shift = 0, vtx_shift = 0;
+  if (n_max_elts > 0) {
 
-    BFT_MALLOC(single->ranks, single->n_ranks, int);
-    BFT_MALLOC(single->index, single->n_ranks + 1, int);
-    BFT_MALLOC(single->array, single->n_elts, int);
+    BFT_MALLOC(single->ranks, n_max_ranks, int);
+    BFT_MALLOC(single->index, n_max_ranks + 1, int);
+    BFT_MALLOC(single->array, n_max_elts, int);
 
     count_size = 0;
     last_found_rank = -1;
     single->index[0] = 0;
+    single->n_elts = 0;
+    single->n_ranks = 0;
 
-    for (id = 0 ; id < n_interfaces ; id++) {
+    for (id = 0; id < n_interfaces; id++) {
 
       /* Scan data */
 
@@ -610,11 +624,11 @@ _add_single_vertices(fvm_interface_set_t    *interfaces,
 
           if (last_found_rank != distant_rank) {
             last_found_rank = distant_rank;
-            single->ranks[rank_shift++] = distant_rank;
+            single->ranks[single->n_ranks++] = distant_rank;
           }
 
-          single->array[vtx_shift++] = local_num[ii];
-          single->index[rank_shift] = vtx_shift;
+          single->array[single->n_elts++] = local_num[ii];
+          single->index[single->n_ranks] = single->n_elts;
 
           related_ranks[vtx_id] = distant_rank;
           count[vtx_id] = recv_buf[ii];
@@ -627,22 +641,35 @@ _add_single_vertices(fvm_interface_set_t    *interfaces,
 
     } /* End of loop on interfaces */
 
+    BFT_REALLOC(single->ranks, single->n_ranks, int);
+    BFT_REALLOC(single->index, single->n_ranks + 1, int);
+    BFT_REALLOC(single->array, single->n_elts, int);
+
+  } /* End if n_max_elts > 0 */
+
+  BFT_FREE(buf);
+
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
-    bft_printf("\n  Single vertices for the joining operations:\n");
-    for (i = 0, shift = 0; i < single->n_ranks; i++) {
-      for (j = single->index[i]; j < single->index[i+1]; j++) {
-        bft_printf(" %9d | %6d | %9d\n",
-                   shift, single->ranks[i], single->array[j]);
-        shift++;
-      }
+ {
+   int  i, j;
+
+    bft_printf("\n  Single vertices for the joining operation: (%p)\n",
+               single);
+    bft_printf("  Single vertices: n_elts : %8d\n"
+               "  Single vertices: n_ranks: %8d\n",
+               single->n_elts, single->n_ranks);
+
+    if (single->n_elts > 0) {
+      for (i = 0; i < single->n_ranks; i++)
+        for (j = single->index[i]; j < single->index[i+1]; j++)
+          bft_printf(" %9d | %6d | %9d\n",
+                     j, single->ranks[i], single->array[j]);
+      bft_printf("\n");
     }
-    bft_printf("\n");
     bft_printf_flush();
-#endif
-
-  } /* End if single->n_vertices > 0 */
 
-  BFT_FREE(buf);
+ }
+#endif
 
 }
 
@@ -663,7 +690,7 @@ _add_coupled_vertices(fvm_interface_set_t    *interfaces,
                       int                    *related_ranks,
                       cs_join_sync_t         *coupled)
 {
-  int  i, j, id, ii, shift;
+  int  id, ii;
   int  request_count, distant_rank, n_interfaces, total_size, last_found_rank;
 
   int  count_size = 0;
@@ -679,6 +706,7 @@ _add_coupled_vertices(fvm_interface_set_t    *interfaces,
   const fvm_interface_t  *interface = NULL;
 
   assert(related_ranks != NULL);
+  assert(coupled != NULL);
 
   /* Initialize and allocate */
 
@@ -780,7 +808,7 @@ _add_coupled_vertices(fvm_interface_set_t    *interfaces,
 
     recv_buf = buf + count_size;
 
-    for (ii = 0 ; ii < n_entities ; ii++) {
+    for (ii = 0; ii < n_entities; ii++) {
 
       if (recv_buf[ii] == local_rank) {
         coupled->n_elts++;
@@ -838,22 +866,193 @@ _add_coupled_vertices(fvm_interface_set_t    *interfaces,
 
     }
 
+  } /* End if coupled->n_elts > 0 */
+
+  BFT_FREE(buf);
+
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
-    bft_printf("\n  Coupled vertices for the joining operations:\n");
-    for (i = 0, shift = 0; i < coupled->n_ranks; i++) {
-      for (j = coupled->index[i]; j < coupled->index[i+1]; j++) {
-        bft_printf(" %9d | %6d | %9d\n",
-                   shift, coupled->ranks[i], coupled->array[j]);
-        shift++;
-      }
-    }
-    bft_printf("\n");
-    bft_printf_flush();
+  {
+   int  i, j;
+
+   bft_printf("\n  Coupled vertices for the joining operation: (%p)\n",
+              coupled);
+   bft_printf("  Coupled vertices: n_elts : %8d\n"
+              "  Coupled vertices: n_ranks: %8d\n",
+              coupled->n_elts, coupled->n_ranks);
+
+   if (coupled->n_elts > 0) {
+     for (i = 0; i < coupled->n_ranks; i++)
+       for (j = coupled->index[i]; j < coupled->index[i+1]; j++)
+         bft_printf(" %9d | %6d | %9d\n",
+                    j, coupled->ranks[i], coupled->array[j]);
+     bft_printf("\n");
+   }
+   bft_printf_flush();
+
+  }
 #endif
+}
 
-  } /* End if coupled->n_elts > 0 */
+/*----------------------------------------------------------------------------
+ * Get the full selection of vertices to extract. Only in parallel. Somme
+ * vertices may have been selected on another rank and not on the local rank
+ * but you have to take them into account to have a good update of the mesh.
+ *
+ * parameters:
+ *   n_vertices   <--  number of vertices in the parent mesh
+ *   ifs          <--  pointer to a fvm_interface_set_t struct.
+ *   p_vtx_tag    <->  pointer to an array on vertices. tag=1 if selected
+ *   join_select  <->  pointer to a fvm_join_selection_t structure
+ *---------------------------------------------------------------------------*/
 
-  BFT_FREE(buf);
+static void
+_get_missing_vertices(cs_int_t              n_vertices,
+                      fvm_interface_set_t  *ifs,
+                      cs_int_t             *p_vtx_tag[],
+                      cs_join_select_t     *selection)
+{
+  cs_int_t  i;
+  fvm_gnum_t  n_g_elts;
+
+  cs_int_t  *vtx_tag = NULL, *related_ranks = NULL;
+
+  /* Define a counter on vertices. 1 if selected, 0 otherwise */
+
+  BFT_MALLOC(vtx_tag, n_vertices, cs_int_t);
+  BFT_MALLOC(related_ranks, n_vertices, cs_int_t);
+
+  for (i = 0; i < n_vertices; i++) {
+    vtx_tag[i] = 0;
+    related_ranks[i] = -1;
+  }
+
+  for (i = 0; i < selection->n_vertices; i++)
+    vtx_tag[selection->vertices[i] - 1] = 1;
+
+  /* Has to be done before the search of single edges because
+     we need a synchronized vtx_tag */
+
+  _add_single_vertices(ifs,
+                       n_vertices,
+                       vtx_tag,
+                       related_ranks,
+                       selection->s_vertices);
+
+  MPI_Allreduce(&(selection->s_vertices->n_elts), &n_g_elts, 1, FVM_MPI_GNUM,
+                MPI_SUM, cs_glob_mpi_comm);
+
+  if (n_g_elts > 0) {
+
+    bft_printf("\n  Global number of single vertices found: %6u\n", n_g_elts);
+    bft_printf_flush();
+    selection->do_single_sync = true;
+
+    _add_coupled_vertices(ifs,
+                          n_vertices,
+                          related_ranks,
+                          selection->c_vertices);
+
+  } /* End if n_g_elts > 0 */
+
+  /* Return pointers */
+
+  *p_vtx_tag = vtx_tag;
+
+  /* Free memory */
+
+  BFT_FREE(related_ranks);
+
+}
+
+/*----------------------------------------------------------------------------
+ * Define a vertex -> vertex connectivity for vertices belonging to the
+ * selected border faces.
+ *
+ * parameters:
+ *   n_vertices  <--  number of vertices in the parent mesh
+ *   selection   <--  pointer to a fvm_join_selection_t structure
+ *   b_f2v_idx   <--  border "face -> vertex" connect. index
+ *   b_f2v_lst   <--  border "face -> vertex" connect. list
+ *   p_v2v_idx   <->  vertex -> vertex connect. index
+ *   p_v2v_lst   <->  vertex -> vertex connect. list
+ *---------------------------------------------------------------------------*/
+
+static void
+_get_select_v2v_connect(cs_int_t               n_vertices,
+                        cs_join_select_t      *selection,
+                        cs_int_t               b_f2v_idx[],
+                        cs_int_t               b_f2v_lst[],
+                        cs_int_t              *p_v2v_idx[],
+                        cs_int_t              *p_v2v_lst[])
+{
+  cs_int_t  i, j, save, s, e, n_sel_edges, shift;
+
+  cs_int_t  *count = NULL, *sel_v2v_idx = NULL, *sel_v2v_lst = NULL;
+
+  /* Build a vertex -> vertex connectivity for the selected border faces  */
+
+  BFT_MALLOC(sel_v2v_idx, n_vertices + 1, cs_int_t);
+
+  for (i = 0; i < n_vertices + 1; i++)
+    sel_v2v_idx[i] = 0;
+
+  cs_join_build_edges_idx(selection->n_faces,
+                          selection->faces,
+                          b_f2v_idx,
+                          b_f2v_lst,
+                          sel_v2v_idx);
+
+  BFT_MALLOC(count, n_vertices, cs_int_t);
+
+  for (i = 0; i < n_vertices; i++) {
+    sel_v2v_idx[i+1] += sel_v2v_idx[i];
+    count[i] = 0;
+  }
+
+  BFT_MALLOC(sel_v2v_lst, sel_v2v_idx[n_vertices], cs_int_t);
+
+  cs_join_build_edges_lst(selection->n_faces,
+                          selection->faces,
+                          b_f2v_idx,
+                          b_f2v_lst,
+                          count,
+                          sel_v2v_idx,
+                          sel_v2v_lst);
+
+  BFT_FREE(count);
+
+  /* Order sub-lists and then clean repeated elements */
+
+  for (i = 0; i < n_vertices; i++)
+    cs_sort_shell(sel_v2v_idx[i], sel_v2v_idx[i+1], sel_v2v_lst);
+
+  save = sel_v2v_idx[0];
+  shift = 0;
+
+  for (i = 0; i < n_vertices; i++) {
+
+    s = save;
+    e = sel_v2v_idx[i+1];
+
+    if (e - s > 0) {
+      sel_v2v_lst[shift++] = sel_v2v_lst[s];
+      for (j = s + 1; j < e; j++)
+        if (sel_v2v_lst[j-1] != sel_v2v_lst[j])
+          sel_v2v_lst[shift++] = sel_v2v_lst[j];
+    }
+
+    save = e;
+    sel_v2v_idx[i+1] = shift;
+
+  }
+
+  n_sel_edges = sel_v2v_idx[n_vertices];
+  BFT_REALLOC(sel_v2v_lst, n_sel_edges, cs_int_t);
+
+  /* Return pointers */
+
+  *p_v2v_idx = sel_v2v_idx;
+  *p_v2v_lst = sel_v2v_lst;
 
 }
 
@@ -861,20 +1060,20 @@ _add_coupled_vertices(fvm_interface_set_t    *interfaces,
  * Get the related edge id from a couple of vertex ids.
  *
  * parameters:
- *  v1_id        -->  first vertex id
- *  v2_id        -->  second vertex id
- *  v2v_idx      -->  vertex -> vertex connect. index
- *  v2v_lst      -->  vertex -> vertex connect. list
+ *   v1_id     <-- first vertex id
+ *   v2_id     <-- second vertex id
+ *   v2v_idx   <-- vertex -> vertex connect. index
+ *   v2v_lst   <-- vertex -> vertex connect. list
  *
- * return:
- *  related edge_id in cs_join_edges_t structure
+ * returns:
+ *   related edge_id in cs_join_edges_t structure
  *---------------------------------------------------------------------------*/
 
 inline static cs_int_t
-_get_edge_id(cs_int_t      v1_id,
-             cs_int_t      v2_id,
-             cs_int_t      v2v_idx[],
-             cs_int_t      v2v_lst[])
+_get_edge_id(cs_int_t         v1_id,
+             cs_int_t         v2_id,
+             const cs_int_t   v2v_idx[],
+             const cs_int_t   v2v_lst[])
 {
   int  i, va, vb;
 
@@ -900,25 +1099,25 @@ _get_edge_id(cs_int_t      v1_id,
  * Done only if the run is parallel.
  *
  * parameters:
- *  vertex_tag    -->  tag to know if a vertices is in selection
- *  v1_id         -->  first vertex id
- *  v2_id         -->  second vertex id
- *  ref_v2v_idx   -->  vertex -> vertex connect. index
- *  ref_v2v_lst   -->  vertex -> vertex connect. list
- *  p_tmp_size    <->  pointer to the current number of single edges
- *  p_max_size    <->  pointer to the max allocated size of new_s_vertices
- *  p_tmp_size    <->  pointer to the single edges definition
+ *   vertex_tag   <--  tag to know if a vertices is in selection
+ *   v1_id        <--  first vertex id
+ *   v2_id        <--  second vertex id
+ *   ref_v2v_idx  <--  vertex -> vertex connect. index
+ *   ref_v2v_lst  <--  vertex -> vertex connect. list
+ *   p_tmp_size   <->  pointer to the current number of single edges
+ *   p_max_size   <->  pointer to the max allocated size of new_s_vertices
+ *   p_tmp_size   <->  pointer to the single edges definition
  *---------------------------------------------------------------------------*/
 
 static void
-_add_s_edge(cs_int_t      vertex_tag[],
-            cs_int_t      v1_id,
-            cs_int_t      v2_id,
-            cs_int_t      sel_v2v_idx[],
-            cs_int_t      sel_v2v_lst[],
-            int          *p_tmp_size,
-            int          *p_max_size,
-            int          *p_tmp_edges[])
+_add_s_edge(cs_int_t         vertex_tag[],
+            cs_int_t         v1_id,
+            cs_int_t         v2_id,
+            const cs_int_t   sel_v2v_idx[],
+            const cs_int_t   sel_v2v_lst[],
+            int             *p_tmp_size,
+            int             *p_max_size,
+            int             *p_tmp_edges[])
 {
   int  i, a, b, edge_id;
 
@@ -938,6 +1137,7 @@ _add_s_edge(cs_int_t      vertex_tag[],
 
     if (edge_id == -1) { /* Edge not found among the selected edges */
 
+      assert(v1_id != v2_id);
       if (v1_id < v2_id)
         a = v1_id + 1, b = v2_id + 1;
       else
@@ -982,93 +1182,38 @@ _add_s_edge(cs_int_t      vertex_tag[],
  * Get the full selection of single edges. Done only if the run is parallel.
  *
  * parameters:
- *  ifs          -->  pointer to the interface set on vertices
- *  n_vertices   -->  number of vertices in the parent mesh
- *  vertex_tag   -->  tag to know if a vertices is in selection
- *  selection    -->  pointer to a fvm_join_selection_t structure
- *  b_f2v_idx    -->  border "face -> vertex" connect. index
- *  b_f2v_lst    -->  border "face -> vertex" connect. list
- *  i_f2v_idx    -->  interior "face -> vertex" connect. index
- *  i_f2v_lst    -->  interior "face -> vertex" connect. list
- *  s_edges      <->  pointer to the single edges structure to define
+ *   ifs          <-- pointer to the interface set on vertices
+ *   vertex_tag   <-- tag to know if a vertices is in selection
+ *   selection    <-- pointer to a fvm_join_selection_t structure
+ *   sel_v2v_idx  <-- vertex -> vertex connect. index
+ *   sel_v2v_lst  <-- vertex -> vertex connect. list
+ *   b_f2v_idx    <-- border "face -> vertex" connect. index
+ *   b_f2v_lst    <-- border "face -> vertex" connect. list
+ *   i_f2v_idx    <-- interior "face -> vertex" connect. index
+ *   i_f2v_lst    <-- interior "face -> vertex" connect. list
+ *   i_face_cells <-- interior face -> cells connect.
+ *   s_edges      <-> pointer to the single edges structure to define
  *---------------------------------------------------------------------------*/
 
 static void
 _add_single_edges(fvm_interface_set_t   *ifs,
-                  cs_int_t               n_vertices,
                   cs_int_t               vertex_tag[],
                   cs_join_select_t      *selection,
+                  cs_int_t               sel_v2v_idx[],
+                  cs_int_t               sel_v2v_lst[],
                   cs_int_t               b_f2v_idx[],
                   cs_int_t               b_f2v_lst[],
                   cs_int_t               i_f2v_idx[],
                   cs_int_t               i_f2v_lst[],
+                  cs_int_t               i_face_cells[],
                   cs_join_sync_t        *s_edges)
 {
-  cs_int_t  i, j, fid, save, shift, s, e, n_sel_edges;
+  cs_int_t  i, j, fid, s, e;
 
-  int  tmp_size = 0, max_size = 10;
+  int  shift = 0, tmp_size = 0, max_size = 10;
   int  *tmp_edges = NULL;
-  cs_int_t  *count = NULL, *sel_v2v_idx = NULL, *sel_v2v_lst = NULL;
-
-  /* Build selected edges */
-
-  BFT_MALLOC(sel_v2v_idx, n_vertices + 1, cs_int_t);
-
-  for (i = 0; i < n_vertices + 1; i++)
-    sel_v2v_idx[i] = 0;
-
-  cs_join_build_edges_idx(selection->n_faces,
-                          selection->faces,
-                          b_f2v_idx,
-                          b_f2v_lst,
-                          sel_v2v_idx);
-
-  BFT_MALLOC(count, n_vertices, cs_int_t);
-
-  for (i = 0; i < n_vertices; i++) {
-    sel_v2v_idx[i+1] += sel_v2v_idx[i];
-    count[i] = 0;
-  }
-
-  BFT_MALLOC(sel_v2v_lst, sel_v2v_idx[n_vertices], cs_int_t);
-
-  cs_join_build_edges_lst(selection->n_faces,
-                          selection->faces,
-                          b_f2v_idx,
-                          b_f2v_lst,
-                          count,
-                          sel_v2v_idx,
-                          sel_v2v_lst);
-
-  BFT_FREE(count);
-
-  /* Order sub-lists and then clean repeated elements */
-
-  for (i = 0; i < n_vertices; i++)
-    cs_sort_shell(sel_v2v_idx[i], sel_v2v_idx[i+1], sel_v2v_lst);
-
-  save = sel_v2v_idx[0];
-  shift = 0;
-
-  for (i = 0; i < n_vertices; i++) {
-
-    s = save;
-    e = sel_v2v_idx[i+1];
-
-    if (e - s > 0) {
-      sel_v2v_lst[shift++] = sel_v2v_lst[s];
-      for (j = s + 1; j < e; j++)
-        if (sel_v2v_lst[j-1] != sel_v2v_lst[j])
-          sel_v2v_lst[shift++] = sel_v2v_lst[j];
-    }
-
-    save = e;
-    sel_v2v_idx[i+1] = shift;
-
-  }
 
-  n_sel_edges = sel_v2v_idx[n_vertices];
-  BFT_REALLOC(sel_v2v_lst, n_sel_edges, cs_int_t);
+  assert(s_edges != NULL);
 
   /* Scan adjacent faces to find new "single" edges */
 
@@ -1104,27 +1249,32 @@ _add_single_edges(fvm_interface_set_t   *ifs,
   for (i = 0; i < selection->n_i_adj_faces; i++) {
 
     fid = selection->i_adj_faces[i] - 1;
-    s = i_f2v_idx[fid] - 1;
-    e = i_f2v_idx[fid+1] - 1;
 
-    for (j = s; j < e - 1; j++)
+    if (i_face_cells[2*fid] == 0 || i_face_cells[2*fid+1] == 0) {
+
+      s = i_f2v_idx[fid] - 1;
+      e = i_f2v_idx[fid+1] - 1;
+
+      for (j = s; j < e - 1; j++)
+        _add_s_edge(vertex_tag,
+                    i_f2v_lst[j]-1,
+                    i_f2v_lst[j+1]-1,
+                    sel_v2v_idx,
+                    sel_v2v_lst,
+                    &tmp_size,
+                    &max_size,
+                    &tmp_edges);
+
       _add_s_edge(vertex_tag,
-                  i_f2v_lst[j]-1,
-                  i_f2v_lst[j+1]-1,
+                  i_f2v_lst[e-1]-1,
+                  i_f2v_lst[s]-1,
                   sel_v2v_idx,
                   sel_v2v_lst,
                   &tmp_size,
                   &max_size,
                   &tmp_edges);
 
-    _add_s_edge(vertex_tag,
-                i_f2v_lst[e-1]-1,
-                i_f2v_lst[s]-1,
-                sel_v2v_idx,
-                sel_v2v_lst,
-                &tmp_size,
-                &max_size,
-                &tmp_edges);
+    } /* Face on a parallel boundary */
 
   }
 
@@ -1134,53 +1284,50 @@ _add_single_edges(fvm_interface_set_t   *ifs,
 
     int   n_entities, distant_rank;
 
+    int  last_found_rank = -1;
     int  *edge_tag = NULL;
 
     const int  n_interfaces = fvm_interface_set_size(ifs);
     const fvm_lnum_t  *local_num = NULL;
     const fvm_interface_t  *interface = NULL;
 
+    shift = 0;
     s_edges->n_elts = tmp_size;
-    BFT_REALLOC(tmp_edges, 2*s_edges->n_elts, int);
+    BFT_REALLOC(tmp_edges, 2*tmp_size, int);
 
-    BFT_MALLOC(edge_tag, s_edges->n_elts, int);
-    BFT_MALLOC(s_edges->array, 2*s_edges->n_elts, int);
+    BFT_MALLOC(edge_tag, tmp_size, int);
+    BFT_MALLOC(s_edges->array, 2*tmp_size, int);
     BFT_MALLOC(s_edges->index, n_interfaces + 1, int);
     BFT_MALLOC(s_edges->ranks, n_interfaces, int);
 
-    for (i = 0; i < s_edges->n_elts; i++)
+    for (i = 0; i < tmp_size; i++)
       edge_tag[i] = 0; /* Not matched */
 
     for (i = 0; i < n_interfaces; i++) {
-      s_edges->index[i] = 0;
-      s_edges->ranks[i] = -1;
-    }
-
-    for (i = 0; i < n_interfaces; i++) {
 
       interface = fvm_interface_set_get(ifs, i);
-      distant_rank   = fvm_interface_rank(interface);
+      distant_rank = fvm_interface_rank(interface);
       n_entities = fvm_interface_size(interface);
       local_num = fvm_interface_get_local_num(interface);
 
-      for (j = 0; j < s_edges->n_elts; j++) {
+      for (j = 0; j < tmp_size; j++) {
 
         if (edge_tag[j] == 0) {
           if (cs_search_binary(n_entities, tmp_edges[2*j], local_num) > -1) {
             if (cs_search_binary(n_entities, tmp_edges[2*j+1], local_num) > -1) {
 
-              s_edges->array[2*s_edges->index[i+1]] = tmp_edges[2*j];
-              s_edges->array[2*s_edges->index[i+1]+1] = tmp_edges[2*j+1];
-              s_edges->index[i+1] += 1;
-              edge_tag[j] = 1;
-
-              if (s_edges->n_ranks == 0 ||
-                  (   s_edges->n_ranks > 0
-                   && s_edges->ranks[s_edges->n_ranks-1] != distant_rank) ) {
+              if (last_found_rank != distant_rank) {
                 s_edges->ranks[s_edges->n_ranks] = distant_rank;
+                s_edges->index[s_edges->n_ranks] = shift;
                 s_edges->n_ranks++;
+                last_found_rank = distant_rank;
               }
 
+              edge_tag[j] = 1;
+              s_edges->array[2*shift] = tmp_edges[2*j];
+              s_edges->array[2*shift+1] = tmp_edges[2*j+1];
+              shift++;
+
             }
           }
         } /* Not matched yet */
@@ -1189,42 +1336,41 @@ _add_single_edges(fvm_interface_set_t   *ifs,
 
     } /* Loop on interfaces */
 
-    /* sanity check */
-
-    for (j = 0; j < s_edges->n_elts; j++)
-      if (edge_tag[j] == 0)
-        bft_error(__FILE__, __LINE__, 0,
-                  _(" Can't find the distant rank in the interface set"
-                    " for the current edge [%d, %d] (local num.\n"),
-                  s_edges->array[2*j], s_edges->array[2*j+1]);
+    s_edges->index[s_edges->n_ranks] = shift;
+    s_edges->n_elts = shift;
 
     /* Memory management */
 
+    if (s_edges->n_elts != tmp_size)
+        BFT_REALLOC(s_edges->array, 2*s_edges->n_elts, int);
+
     BFT_REALLOC(s_edges->ranks, s_edges->n_ranks, int);
     BFT_REALLOC(s_edges->index, s_edges->n_ranks + 1, int);
     BFT_FREE(edge_tag);
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
-    bft_printf("\n  Single edges for the joining operations:\n");
-    for (i = 0, shift = 0; i < s_edges->n_ranks; i++) {
-      for (j = s_edges->index[i]; j < s_edges->index[i+1]; j++) {
-        bft_printf(" %9d | %6d | (%9d, %9d)\n",
-                   shift, s_edges->ranks[i],
-                   s_edges->array[2*j], s_edges->array[2*j+1]);
-        shift++;
-      }
+    bft_printf("\n  Single edges for the joining operation: (%p)\n",
+               s_edges);
+    bft_printf("  Single edges: n_elts : %8d\n"
+               "  Single edges: n_ranks: %8d\n",
+               s_edges->n_elts, s_edges->n_ranks);
+
+    if (s_edges->n_elts > 0) {
+      for (i = 0; i < s_edges->n_ranks; i++)
+        for (j = s_edges->index[i]; j < s_edges->index[i+1]; j++)
+          bft_printf(" %9d | %6d | (%9d, %9d)\n",
+                     j, s_edges->ranks[i], s_edges->array[2*j],
+                     s_edges->array[2*j+1]);
+      bft_printf("\n");
     }
-    bft_printf("\n");
     bft_printf_flush();
 #endif
 
-  }
+  } /* End if tmp_size > 0 */
 
   /* Free memory */
 
   BFT_FREE(tmp_edges);
-  BFT_FREE(sel_v2v_idx);
-  BFT_FREE(sel_v2v_lst);
 
 }
 
@@ -1233,8 +1379,8 @@ _add_single_edges(fvm_interface_set_t   *ifs,
  * been detected and only in parallel.
  *
  * parameters:
- *  ifs          -->  pointer to the interface set on vertices
- *  s_edges      -->  single edges structure used to build coupled_edges
+ *  ifs          <--  pointer to the interface set on vertices
+ *  s_edges      <--  single edges structure used to build coupled_edges
  *  c_edges      <->  pointer to the coupled edges structure to define
  *---------------------------------------------------------------------------*/
 
@@ -1256,6 +1402,8 @@ _add_coupled_edges(fvm_interface_set_t   *ifs,
   const int  n_interfaces = fvm_interface_set_size(ifs);
   const fvm_interface_t  *interface = NULL;
 
+  assert(c_edges != NULL);
+
   /* Exchange number of single edges */
 
   BFT_MALLOC(request, n_interfaces * 2, MPI_Request);
@@ -1458,9 +1606,14 @@ _add_coupled_edges(fvm_interface_set_t   *ifs,
   } /* Loop on interfaces */
 
 #if 0 && defined(DEBUG) && !defined(NDEBUG)
+  bft_printf("\n  Coupled edges for the joining operation: (%p)\n",
+             c_edges);
+  bft_printf("  Coupled edges: n_elts : %8d\n"
+             "  Coupled edges: n_ranks: %8d\n",
+             c_edges->n_elts, c_edges->n_ranks);
+
   if (c_edges->n_elts > 0) {
     int  shift;
-    bft_printf("\n  Coupled edges for the joining operations:\n");
     for (i = 0, shift = 0; i < c_edges->n_ranks; i++) {
       for (j = c_edges->index[i]; j < c_edges->index[i+1]; j++) {
         bft_printf(" %9d | %6d | (%9d, %9d)\n",
@@ -1477,106 +1630,220 @@ _add_coupled_edges(fvm_interface_set_t   *ifs,
 }
 
 /*----------------------------------------------------------------------------
- * Get the full selection of vertices to extract. Only in parallel. Somme
- * vertices may have been selected on another rank and not on the local rank
- * but you have to take them into account to have a good update of the mesh
+ * Get the full selection of single edges. Done only if the run is parallel.
  *
  * parameters:
- *  b_f2v_idx       -->  border "face -> vertex" connect. index
- *  b_f2v_lst       -->  border "face -> vertex" connect. list
- *  i_f2v_idx       -->  interior "face -> vertex" connect. index
- *  i_f2v_lst       -->  interior "face -> vertex" connect. list
- *  n_vertices      -->  number of vertices in the parent mesh
- *  v_gnum          -->  global vertex numbering (NULL if n_ranks = 1)
- *  join_select     <->  pointer to a fvm_join_selection_t structure
+ *  selection    <-> pointer to a fvm_join_selection_t structure
+ *  sel_v2v_idx  <-- vertex -> vertex connect. index
+ *  sel_v2v_lst  <-- vertex -> vertex connect. list
  *---------------------------------------------------------------------------*/
 
 static void
-_get_single_elements(cs_int_t            b_f2v_idx[],
-                     cs_int_t            b_f2v_lst[],
-                     cs_int_t            i_f2v_idx[],
-                     cs_int_t            i_f2v_lst[],
-                     cs_int_t            n_vertices,
-                     fvm_gnum_t          v_gnum[],
-                     cs_join_select_t   *selection)
+_filter_edge_element(cs_join_select_t   *selection,
+                     const cs_int_t      sel_v2v_idx[],
+                     const cs_int_t      sel_v2v_lst[])
 {
-  cs_int_t  i;
-  fvm_gnum_t  n_g_elts;
+  cs_int_t  i, j, vid1, vid2, edge_id, request_count, shift, save;
 
-  cs_int_t  *vtx_tag = NULL, *related_ranks = NULL;
-  fvm_interface_set_t  *ifs = NULL;
+  cs_int_t  *c_edge_tag = NULL, *s_edge_tag = NULL;
+  cs_join_sync_t  *s_edges = selection->s_edges;
+  cs_join_sync_t  *c_edges = selection->c_edges;
 
+  MPI_Request  *request = NULL;
+  MPI_Status   *status = NULL;
   MPI_Comm  mpi_comm = cs_glob_mpi_comm;
 
-  assert(v_gnum != NULL);
+  const int  loc_rank = CS_MAX(cs_glob_rank_id, 0);
 
-  /* Build an interface on vertices to detect single vertices */
+  assert(cs_glob_n_ranks > 1);
 
-  ifs = fvm_interface_set_create(n_vertices,
-                                 NULL,
-                                 v_gnum,
-                                 NULL,
-                                 0,
-                                 NULL,
-                                 NULL,
-                                 NULL);
+  /* Allocate MPI buffers used for exchanging data */
 
-  assert(ifs != NULL);
+  BFT_MALLOC(request, c_edges->n_ranks + s_edges->n_ranks, MPI_Request);
+  BFT_MALLOC(status, c_edges->n_ranks + s_edges->n_ranks, MPI_Status);
 
-  /* Define a counter on vertices. 1 if selected, 0 otherwise */
+  BFT_MALLOC(c_edge_tag, c_edges->n_elts, cs_int_t);
+  BFT_MALLOC(s_edge_tag, s_edges->n_elts, cs_int_t);
 
-  BFT_MALLOC(vtx_tag, n_vertices, cs_int_t);
-  BFT_MALLOC(related_ranks, n_vertices, cs_int_t);
+  for (i = 0; i < c_edges->n_elts; i++)
+    c_edge_tag[i] = 1; /* define as selected */
+
+  for (i = 0; i < s_edges->n_elts; i++)
+    s_edge_tag[i] = 1; /* define as selected */
+
+  for (i = 0; i < c_edges->n_elts; i++) {
+
+    vid1 = c_edges->array[2*i] - 1;
+    vid2 = c_edges->array[2*i+1] - 1;
+    edge_id = _get_edge_id(vid1, vid2, sel_v2v_idx, sel_v2v_lst);
+
+    if (edge_id == -1)
+      c_edge_tag[i] = 0; /* unselect this coupled edge */
+
+  } /* End of loop on c_edges */
+
+  /* Exchange between ranks the status of the coupled edges.
+     If one receive a tag equal to 0 => delete the related single edge */
+
+  request_count = 0;
+
+  for (i = 0; i < s_edges->n_ranks; i++) {
+
+    int  distant_rank = s_edges->ranks[i];
+    int  length = s_edges->index[i+1] - s_edges->index[i];
+    int  *recv_buf = s_edge_tag + s_edges->index[i];
+
+    MPI_Irecv(recv_buf,
+              length,
+              MPI_INT,
+              distant_rank,
+              distant_rank,
+              mpi_comm,
+              &(request[request_count++]));
 
-  for (i = 0; i < n_vertices; i++) {
-    vtx_tag[i] = 0;
-    related_ranks[i] = -1;
   }
 
-  for (i = 0; i < selection->n_vertices; i++)
-    vtx_tag[selection->vertices[i] - 1] = 1;
+  /* We wait for posting all receives (often recommended) */
 
-  /* Has to be done before the search of single edges because
-     we need a synchronized vtx_tag */
+  MPI_Barrier(mpi_comm);
 
-  _add_single_vertices(ifs,
-                       n_vertices,
-                       vtx_tag,
-                       related_ranks,
-                       selection->s_vertices);
+  /* Send data to distant ranks */
 
-  MPI_Allreduce(&(selection->s_vertices->n_elts), &n_g_elts, 1, FVM_MPI_GNUM,
-                MPI_SUM, mpi_comm);
+  for (i = 0; i < c_edges->n_ranks; i++) {
 
-  if (n_g_elts > 0) {
+    int  distant_rank = c_edges->ranks[i];
+    int  length = c_edges->index[i+1] - c_edges->index[i];
+    int  *send_buf = c_edge_tag + c_edges->index[i];
 
-    bft_printf("\n  Global number of single vertices found: %6u\n", n_g_elts);
-    bft_printf_flush();
-    selection->do_single_sync = true;
+    MPI_Isend(send_buf,
+              length,
+              MPI_INT,
+              distant_rank,
+              loc_rank,
+              mpi_comm,
+              &(request[request_count++]));
 
-    _add_coupled_vertices(ifs,
-                          n_vertices,
-                          related_ranks,
-                          selection->c_vertices);
+  }
+
+  /* Wait for all exchanges */
+
+  MPI_Waitall(request_count, request, status);
+
+  /* Delete unselected elements */
+
+  shift = 0;
+  if (c_edges-> n_elts > 0) {
+
+    save = c_edges->index[0];
+
+    for (i = 0; i < c_edges->n_ranks; i++) {
+
+      for (j = save; j < c_edges->index[i+1]; j++) {
+        if (c_edge_tag[j] == 1) {
+          c_edges->array[2*shift] = c_edges->array[2*j];
+            c_edges->array[2*shift+1] = c_edges->array[2*j+1];
+           shift++;
+        }
+      }
+      save = c_edges->index[i+1];
+      c_edges->index[i+1] = shift;
+
+    }
+    c_edges->n_elts = shift;
+
+  } /* c_edges->n_elts > 0 */
 
-  } /* End if n_g_s_vertices > 0 */
+  shift = 0;
+  if (s_edges->n_elts > 0) {
+
+    save = s_edges->index[0];
+
+    for (i = 0; i < s_edges->n_ranks; i++) {
+
+      for (j = save; j < s_edges->index[i+1]; j++) {
+        if (s_edge_tag[j] == 1) {
+          s_edges->array[2*shift] = s_edges->array[2*j];
+          s_edges->array[2*shift+1] = s_edges->array[2*j+1];
+          shift++;
+        }
+      }
+      save = s_edges->index[i+1];
+      s_edges->index[i+1] = shift;
+
+    }
+    s_edges->n_elts = shift;
+
+  } /* s_edges->n_elts > 0 */
+
+  /* Free memory */
+
+  BFT_FREE(c_edge_tag);
+  BFT_FREE(s_edge_tag);
+  BFT_FREE(request);
+  BFT_FREE(status);
+
+}
+
+/*----------------------------------------------------------------------------
+ * Get the full selection of vertices to extract. Only in parallel. Somme
+ * vertices may have been selected on another rank and not on the local rank
+ * but you have to take them into account to have a good update of the mesh
+ *
+ * parameters:
+ *  b_f2v_idx     <-- border "face -> vertex" connect. index
+ *  b_f2v_lst     <-- border "face -> vertex" connect. list
+ *  i_f2v_idx     <-- interior "face -> vertex" connect. index
+ *  i_f2v_lst     <-- interior "face -> vertex" connect. list
+ *  n_vertices    <-- number of vertices in the parent mesh
+ *  vtx_tag       <-- tag on vertices. 1 if selected, 0 otherwise
+ *  ifs           <-- pointer to a fvm_interface_set_t struct.
+ *  i_face_cells  <-- interior face -> cells connect.
+ *  join_select   <-> pointer to a fvm_join_selection_t structure
+ *---------------------------------------------------------------------------*/
+
+static void
+_get_missing_edges(cs_int_t              b_f2v_idx[],
+                   cs_int_t              b_f2v_lst[],
+                   cs_int_t              i_f2v_idx[],
+                   cs_int_t              i_f2v_lst[],
+                   cs_int_t              n_vertices,
+                   cs_int_t              vtx_tag[],
+                   fvm_interface_set_t  *ifs,
+                   cs_int_t              i_face_cells[],
+                   cs_join_select_t     *selection)
+{
+  fvm_gnum_t  n_g_elts;
+
+  cs_int_t  *sel_v2v_idx = NULL, *sel_v2v_lst = NULL;
+
+  /* Define single edge element */
+
+  _get_select_v2v_connect(n_vertices,
+                          selection,
+                          b_f2v_idx,
+                          b_f2v_lst,
+                          &sel_v2v_idx,
+                          &sel_v2v_lst);
 
   _add_single_edges(ifs,
-                    n_vertices,
                     vtx_tag,
                     selection,
+                    sel_v2v_idx,
+                    sel_v2v_lst,
                     b_f2v_idx,
                     b_f2v_lst,
                     i_f2v_idx,
                     i_f2v_lst,
+                    i_face_cells,
                     selection->s_edges);
 
   MPI_Allreduce(&(selection->s_edges->n_elts), &n_g_elts, 1, FVM_MPI_GNUM,
-                MPI_SUM, mpi_comm);
+                MPI_SUM, cs_glob_mpi_comm);
 
   if (n_g_elts > 0) {
 
-    bft_printf("  Global number of single edges found: %6d\n", n_g_elts);
+    bft_printf("  Global number of single edges found:    %6lu\n",
+               (unsigned long)n_g_elts);
     bft_printf_flush();
     selection->do_single_sync = true;
 
@@ -1584,14 +1851,61 @@ _get_single_elements(cs_int_t            b_f2v_idx[],
                        selection->s_edges,
                        selection->c_edges);
 
+    _filter_edge_element(selection,
+                         sel_v2v_idx,
+                         sel_v2v_lst);
+
   } /* End if n_g_s_elts > 0 */
 
-  /* Free memory */
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+ {
+  int  i, j;
+  cs_join_sync_t  *s_edges = selection->s_edges;
+  cs_join_sync_t  *c_edges = selection->c_edges;
 
-  BFT_FREE(vtx_tag);
-  BFT_FREE(related_ranks);
+  bft_printf("\n  Coupled edges for the joining operation: (%p)\n",
+             c_edges);
+  bft_printf("  Coupled edges: n_elts : %8d\n"
+             "  Coupled edges: n_ranks: %8d\n",
+             c_edges->n_elts, c_edges->n_ranks);
+
+  if (c_edges->n_elts > 0) {
+    int  shift;
+    for (i = 0, shift = 0; i < c_edges->n_ranks; i++) {
+      for (j = c_edges->index[i]; j < c_edges->index[i+1]; j++) {
+        bft_printf(" %9d | %6d | (%9d, %9d)\n",
+                   shift, c_edges->ranks[i],
+                   c_edges->array[2*j], c_edges->array[2*j+1]);
+        shift++;
+      }
+    }
+    bft_printf("\n");
+    bft_printf_flush();
+  }
 
-  ifs = fvm_interface_set_destroy(ifs);
+  bft_printf("\n  Single edges for the joining operation: (%p)\n",
+             s_edges);
+  bft_printf("  Single edges: n_elts : %8d\n"
+             "  Single edges: n_ranks: %8d\n",
+             s_edges->n_elts, s_edges->n_ranks);
+
+  if (s_edges->n_elts > 0) {
+    for (i = 0; i < s_edges->n_ranks; i++)
+      for (j = s_edges->index[i]; j < s_edges->index[i+1]; j++)
+        bft_printf(" %9d | %6d | (%9d, %9d)\n",
+                   j, s_edges->ranks[i], s_edges->array[2*j],
+                     s_edges->array[2*j+1]);
+    bft_printf("\n");
+  }
+  bft_printf_flush();
+
+ }
+#endif
+
+  /* Free memory */
+
+  BFT_FREE(sel_v2v_idx);
+  BFT_FREE(sel_v2v_lst);
 
 }
 #endif /* defined(HAVE_MPI) */
@@ -1750,7 +2064,7 @@ _cell_cen_vtx(const cs_mesh_t  *mesh,
 
   BFT_MALLOC(v_tag, mesh->n_vertices, cs_int_t);
 
-  for (vid = 0 ; vid < mesh->n_vertices ; vid++)
+  for (vid = 0; vid < mesh->n_vertices; vid++)
     v_tag[vid] = -1;
 
   /* Loop on selected cells */
@@ -1790,7 +2104,7 @@ _cell_cen_vtx(const cs_mesh_t  *mesh,
           vid = f2v_lst[k] - 1;
 
           if (v_tag[vid] < cid) {
-            for (coord = 0 ; coord < 3 ; coord++)
+            for (coord = 0; coord < 3; coord++)
               cell_cen[3*cid + coord] += mesh->vtx_coord[3*vid + coord];
             vtx_counter += 1;
             v_tag[vid] = cid;
@@ -1936,16 +2250,9 @@ cs_join_get_block_info(fvm_gnum_t  n_g_elts,
  * Initialize a cs_join_param_t structure.
  *
  * parameters:
- *   join_id       <-- id of the current joining operation
+ *   join_num      <-- number of the current joining operation
  *   fraction      <-- value of the fraction parameter
  *   plane         <-- value of the plane parameter
- *   rtf           <-- value of the "reduction tolerance factor" parameter
- *   ftf           <-- value of the "merge tolerance factor" parameter
- *   etf           <-- value of the "edge equiv. tolerance factor" parameter
- *   max_sub_faces <-- maximum number of sub-faces allowed during splitting
- *   tml           <-- value of the "tree max level" parameter
- *   tmb           <-- value of the "tree max boxes" parameter
- *   tmr           <-- value of the "tree max ratio" parameter
  *   verbosity     <-- level of verbosity required
  *
  * returns:
@@ -1953,21 +2260,14 @@ cs_join_get_block_info(fvm_gnum_t  n_g_elts,
  *---------------------------------------------------------------------------*/
 
 cs_join_param_t
-cs_join_param_define(int     join_id,
-                     double  fraction,
-                     double  plane,
-                     double  rtf,
-                     double  ftf,
-                     double  etf,
-                     int     max_sub_faces,
-                     int     tml,
-                     int     tmb,
-                     double  tmr,
-                     int     verbosity)
+cs_join_param_define(int      join_num,
+                     float    fraction,
+                     float    plane,
+                     int      verbosity)
 {
   cs_join_param_t  param;
 
-  param.num = join_id + 1;
+  param.num = join_num;
 
   /* geometric parameters */
 
@@ -1981,12 +2281,6 @@ cs_join_param_define(int     join_id,
 
   param.plane = plane;
 
-  /* Coef. used to reduce the tolerance during merge step:
-     new tol. = tol * coef.
-     Values between [0.0, 1.0[ */
-
-  param.reduce_tol_factor = rtf;
-
   /* Coef. used to modify the tolerance associated to each vertex BEFORE the
      merge operation.
      If coef = 0.0 => no vertex merge
@@ -1994,48 +2288,57 @@ cs_join_param_define(int     join_id,
      If coef = 1.0 => no change
      If coef > 1.0 => increase vertex merge */
 
-  param.merge_tol_coef = ftf;
+  param.merge_tol_coef = 1.0;
 
-  /* Coef. used to modify locally the tolerance associated to each vertex
-     BEFORE adding equivalences between vertices after edge intersections.
-     If coef = 0.0 => add no equivalence
-     If coef < 1.0 => reduce the number of equivalences between vertices
-                      sharing the same edge
-     If coef = 1.0 => no change
-     If coef > 1.0 => increase the number of equivalences between vertices
-                      sharing the same edge. Not advised. */
+  /* Coef. used to compute a limit under which two vertices are merged
+     before the merge step.
+     Default value: 1e-3; Should be small. [1e-4, 1e-2] */
+
+   param.pre_merge_factor = 0.05;
+
+  /* Maximum number of equivalence breaks */
 
-   param.edge_equiv_tol_coef = etf;
+   param.n_max_equiv_breaks = 500;
 
-  /* Parameter to switch on/off the influence of adjacent faces in the
-     computation of tolerance */
+   /* Tolerance computation mode: tcm
+      1: (default) tol = min. edge length related to a vertex * fraction
+      2: tolerance is computed like in mode 1 with in addition, the
+         multiplication by a coef. which is equal to the max sin(e1, e2)
+         where e1 and e2 are two edges sharing the same vertex V for which
+         we want to compute the tolerance
+     11: like 1 but only in taking into account only the selected faces
+     12: like 2 but only in taking into account only the selected faces
+   */
 
-   param.include_adj_faces = true;  /* Default value: true */
+   param.tcm = 1;
 
-  /* Parameter used to define if we get vertex equivalence trough the
-     comparison of vertex tolerance or through the difference of curvilinear
-     abscissa of vertices on edges.
-     If include_adj_faces = false => this parameter should not have any
-     effect. (Not a user-defined parameter) */
+   /* Intersection computation mode: icm
+      1: (default) Original algorithm. Try to clip intersection on extremity
+      2: New intersection algorithm. Avoid to clip intersection on extremity
+   */
 
-   param.edge_equiv_by_tolerance = true; /* Default value: true */
+   param.icm = 1;
 
-   /* Maximum number of sub-faces */
+   /* Maximum number of sub-faces for an initial selected face
+      Default value: 200 */
 
-   param.max_sub_faces = max_sub_faces;
+   param.max_sub_faces = 200;
 
-   /* Deepest level reachable during tree building */
+   /* Deepest level reachable during tree building
+      Default value: 30  */
 
-   param.tree_max_level = tml;
+   param.tree_max_level = 30;
 
    /* Max. number of boxes which can be related to a leaf of the tree
-      if level != tree_max_level */
+      if level != tree_max_level
+      Default value: 25  */
 
-   param.tree_n_max_boxes = tmb;
+   param.tree_n_max_boxes = 25;
 
-   /* Stop tree building if: n_linked_boxes > tree_max_box_ratio*n_init_boxes */
+   /* Stop tree building if: n_linked_boxes > tree_max_box_ratio*n_init_boxes
+      Default value: 5.0 */
 
-   param.tree_max_box_ratio = tmr;
+   param.tree_max_box_ratio = 5.0;
 
    /* Level of display */
 
@@ -2061,8 +2364,10 @@ cs_join_select_create(const char  *selection_criteria,
 {
   cs_int_t  i, fid, cid;
 
+  cs_int_t  *vtx_tag = NULL;
   cs_join_select_t  *selection = NULL;
   fvm_lnum_t  *order = NULL, *ordered_faces = NULL;
+  fvm_interface_set_t  *ifs = NULL;
   cs_mesh_t  *mesh = cs_glob_mesh;
 
   const int  n_ranks = cs_glob_n_ranks;
@@ -2180,6 +2485,15 @@ cs_join_select_create(const char  *selection_criteria,
 
   assert(selection->n_g_faces == selection->compact_rank_index[n_ranks]);
 
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  bft_printf(_("\n  Selected faces for the joining operation:\n"));
+  for (i = 0; i < selection->n_faces; i++)
+    bft_printf(" %9d | %9d | %10u | %10u\n",
+               i, selection->faces[i], selection->compact_face_gnum[i],
+               selection->cell_gnum[i]);
+  bft_printf("\n");
+#endif
+
   /* Extract selected vertices from the selected border faces */
 
   _extract_vertices(selection->n_faces,
@@ -2190,11 +2504,41 @@ cs_join_select_create(const char  *selection_criteria,
                     &(selection->n_vertices),
                     &(selection->vertices));
 
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  bft_printf(_("\n  Select vertices for the joining operation:\n"));
+  for (i = 0; i < selection->n_vertices; i++)
+    bft_printf(" %9d | %9d\n", i, selection->vertices[i]);
+  bft_printf("\n");
+#endif
+
+#if defined(HAVE_MPI)
+  if (n_ranks > 1) { /* Search for missing vertices */
+
+    assert(mesh->global_vtx_num != NULL);
+
+    ifs = fvm_interface_set_create(mesh->n_vertices,
+                                   NULL,
+                                   mesh->global_vtx_num,
+                                   NULL,
+                                   0,
+                                   NULL,
+                                   NULL,
+                                   NULL);
+
+    assert(ifs != NULL);
+
+    _get_missing_vertices(mesh->n_vertices,
+                          ifs,
+                          &vtx_tag,
+                          selection);
+
+  }
+#endif
+
   /* Extract list of border faces contiguous to the selected vertices  */
 
   _extract_contig_faces(mesh->n_vertices,
-                        selection->n_vertices,
-                        selection->vertices,
+                        selection,
                         mesh->n_b_faces,
                         mesh->b_face_vtx_idx,
                         mesh->b_face_vtx_lst,
@@ -2208,86 +2552,77 @@ cs_join_select_create(const char  *selection_criteria,
                    selection->n_faces,
                    selection->faces);
 
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  bft_printf(_("\n  Contiguous border faces for the joining operation:\n"));
+  for (i = 0; i < selection->n_b_adj_faces; i++)
+    bft_printf(" %9d | %9d\n", i, selection->b_adj_faces[i]);
+  bft_printf("\n");
+#endif
+
   /* Extract list of interior faces contiguous to the selected vertices */
 
   _extract_contig_faces(mesh->n_vertices,
-                        selection->n_vertices,
-                        selection->vertices,
+                        selection,
                         mesh->n_i_faces,
                         mesh->i_face_vtx_idx,
                         mesh->i_face_vtx_lst,
                         &(selection->n_i_adj_faces),
                         &(selection->i_adj_faces));
 
+#if 0 && defined(DEBUG) && !defined(NDEBUG)
+  bft_printf(_("\n  Contiguous interior faces for the joining operation:\n"));
+  for (i = 0; i < selection->n_i_adj_faces; i++)
+    bft_printf(" %9d | %9d\n", i, selection->i_adj_faces[i]);
+  bft_printf("\n");
+#endif
+
    /* Check if there is no forgotten vertex in the selection.
       Otherwise define structures to enable future synchronization.
       Only possible in parallel. */
 
 #if defined(HAVE_MPI)
-  if (n_ranks > 1)
-    _get_single_elements(mesh->b_face_vtx_idx,
-                         mesh->b_face_vtx_lst,
-                         mesh->i_face_vtx_idx,
-                         mesh->i_face_vtx_lst,
-                         mesh->n_vertices,
-                         mesh->global_vtx_num,
-                         selection);
+  if (n_ranks > 1) {
+
+    _get_missing_edges(mesh->b_face_vtx_idx,
+                       mesh->b_face_vtx_lst,
+                       mesh->i_face_vtx_idx,
+                       mesh->i_face_vtx_lst,
+                       mesh->n_vertices,
+                       vtx_tag,
+                       ifs,
+                       mesh->i_face_cells,
+                       selection);
+
+    BFT_FREE(vtx_tag);
+    ifs = fvm_interface_set_destroy(ifs);
+
+  }
 #endif
 
   /* Display information according to the level of verbosity */
 
   if (verbosity > 1) {
 
-    bft_printf("\n  Compact index on ranks for the selected faces:\n");
-    for (i = 0; i < n_ranks + 1; i++)
-      bft_printf(" %5d | %11u\n", i, selection->compact_rank_index[i]);
-    bft_printf("\n");
+    if (selection->do_single_sync == true) {
+      bft_printf("\n Information on single/coupled elements:\n");
+      bft_printf("   Number of single vertices : %6d with %3d related ranks\n",
+                 selection->s_vertices->n_elts, selection->s_vertices->n_ranks);
+      bft_printf("   Number of coupled vertices: %6d with %3d related ranks\n",
+                 selection->c_vertices->n_elts, selection->c_vertices->n_ranks);
+      bft_printf("   Number of single edges    : %6d with %3d related ranks\n",
+                 selection->s_edges->n_elts, selection->s_edges->n_ranks);
+      bft_printf("   Number of coupled edges   : %6d with %3d related ranks\n",
+                 selection->c_edges->n_elts, selection->c_edges->n_ranks);
+    }
 
     if (verbosity > 2) {
-
-      if (selection->do_single_sync == true) {
-        bft_printf("\n Information about single/coupled elements:\n");
-        bft_printf("   Number of single vertices : %6d with %3d related ranks\n",
-                   selection->s_vertices->n_elts, selection->s_vertices->n_ranks);
-        bft_printf("   Number of coupled vertices: %6d with %3d related ranks\n",
-                   selection->c_vertices->n_elts, selection->c_vertices->n_ranks);
-        bft_printf("   Number of single edges    : %6d with %3d related ranks\n",
-                   selection->s_edges->n_elts, selection->s_edges->n_ranks);
-        bft_printf("   Number of coupled edges   : %6d with %3d related ranks\n",
-                   selection->c_edges->n_elts, selection->c_edges->n_ranks);
-      }
-
-      bft_printf(_("\n  Selected faces for the joining operation:\n"));
-      for (i = 0; i < selection->n_faces; i++)
-        bft_printf(" %9d | %9d | %10u | %10u\n",
-                   i, selection->faces[i], selection->compact_face_gnum[i],
-                   selection->cell_gnum[i]);
+      bft_printf("\n  Compact index on ranks for the selected faces:\n");
+      for (i = 0; i < n_ranks + 1; i++)
+        bft_printf(" %5d | %11u\n", i, selection->compact_rank_index[i]);
       bft_printf("\n");
 
-      bft_printf(_("\n  Select vertices for the joining operation:\n"));
-      for (i = 0; i < selection->n_vertices; i++)
-        bft_printf(" %9d | %9d\n", i, selection->vertices[i]);
-      bft_printf("\n");
-
-      if (verbosity > 3) {
-
-        bft_printf
-          (_("\n  Contiguous border faces for the joining operation:\n"));
-        for (i = 0; i < selection->n_b_adj_faces; i++)
-          bft_printf(" %9d | %9d\n", i, selection->b_adj_faces[i]);
-        bft_printf("\n");
-
-        bft_printf
-          (_("\n  Contiguous interior faces for the joining operation:\n"));
-        for (i = 0; i < selection->n_i_adj_faces; i++)
-          bft_printf(" %9d | %9d\n", i, selection->i_adj_faces[i]);
-        bft_printf("\n");
-
-      } /* End if verbosity > 3 */
-
-    } /* End if verbosity > 2 */
-
-    bft_printf_flush();
+      bft_printf_flush();
+    }
 
   } /* End if verbosity > 1 */
 
diff --git a/src/base/cs_matrix.c b/src/base/cs_matrix.c
index be67f59..e8479e1 100644
--- a/src/base/cs_matrix.c
+++ b/src/base/cs_matrix.c
@@ -82,6 +82,10 @@
 #include <mpi.h>
 #endif
 
+#if defined (HAVE_MKL)
+#include <mkl_spblas.h>
+#endif
+
 /*----------------------------------------------------------------------------
  * BFT library headers
  *----------------------------------------------------------------------------*/
@@ -317,12 +321,16 @@ const char  *cs_matrix_type_name[] = {N_("native"),
 const char  *cs_matrix_type_fullname[] = {N_("diagonal + faces"),
                                           N_("Compressed Sparse Row")};
 
+#if !defined (HAVE_MKL)
 static int _cs_glob_matrix_prefetch_rows = 2048;
+#else
+static int _cs_glob_matrix_prefetch_rows = 0;
+#endif
 
 static char _cs_glob_perio_ignore_error_str[]
   = N_("Matrix product with CS_PERIO_IGNORE rotation mode not yet\n"
-       "implemented in this case, use cs_matrix_vector_multiply_nosync\n"
-       "with an external halo synchronization, prededed by a backup and\n"
+       "implemented: in this case, use cs_matrix_vector_multiply_nosync\n"
+       "with an external halo synchronization, preceded by a backup and\n"
        "followed by a restoration of the rotation halo.");
 
 /*============================================================================
@@ -687,7 +695,7 @@ _set_coeffs_native(cs_matrix_t      *matrix,
       mc->xa = xa;
     else {
       size_t xa_n_bytes = sizeof(cs_real_t) * ms->n_faces;
-      if (symmetric)
+      if (! symmetric)
         xa_n_bytes *= 2;
       memcpy(mc->_xa, xa, xa_n_bytes);
       mc->xa = mc->_xa;
@@ -2119,6 +2127,8 @@ _get_diagonal_csr(const cs_matrix_t  *matrix,
  *   y      --> Resulting vector
  *----------------------------------------------------------------------------*/
 
+#if !defined (HAVE_MKL)
+
 static void
 _mat_vec_p_l_csr(const cs_matrix_t  *matrix,
                  const cs_real_t    *restrict x,
@@ -2159,6 +2169,32 @@ _mat_vec_p_l_csr(const cs_matrix_t  *matrix,
 
 }
 
+#else /* if defined (HAVE_MKL) */
+
+static void
+_mat_vec_p_l_csr(const cs_matrix_t  *matrix,
+                 const cs_real_t    *restrict x,
+                 cs_real_t          *restrict y)
+{
+  const cs_matrix_struct_csr_t  *ms = matrix->structure;
+  const cs_matrix_coeff_csr_t  *mc = matrix->coeffs;
+
+  int n_rows = ms->n_rows;
+  const char transa[] = "n";
+
+  assert(ms->symmetric == false);
+
+  mkl_cspblas_dcsrgemv(transa,
+                       &n_rows,
+                       mc->val,
+                       ms->row_index,
+                       ms->col_id,
+                       x,
+                       y);
+}
+
+#endif /* defined (HAVE_MKL) */
+
 /*----------------------------------------------------------------------------
  * Local matrix.vector product y = A.x with symmetric CSR matrix.
  *
@@ -2220,7 +2256,6 @@ _mat_vec_p_l_csr_sym(const cs_matrix_t   *matrix,
 
     for (jj = sym_jj_start; jj < n_cols; jj++)
       y[col_id[jj]] += (m_row[jj]*x[ii]);
-
   }
 
 }
diff --git a/src/base/cs_mesh.c b/src/base/cs_mesh.c
index 26f818a..ec5d844 100644
--- a/src/base/cs_mesh.c
+++ b/src/base/cs_mesh.c
@@ -266,7 +266,7 @@ _display_histograms(cs_int_t        n_vals,
 }
 
 /*----------------------------------------------------------------------------
- * Write a sum-up about halo features in listing
+ * Write a summary about halo features in listing
  *
  * parameters:
  *   mesh                   <-- pointer to cs_mesh_t structure
@@ -277,39 +277,186 @@ _display_histograms(cs_int_t        n_vals,
  *----------------------------------------------------------------------------*/
 
 static void
-_print_halo_info(cs_mesh_t  *mesh,
-                 double      interface_time,
-                 double      halo_time,
-                 double      ext_neighborhood_time)
+_print_halo_info(const cs_mesh_t  *mesh,
+                 double            interface_time,
+                 double            halo_time,
+                 double            ext_neighborhood_time)
 {
   cs_halo_t  *halo = mesh->halo;
 
-  cs_int_t  *rank_buffer = NULL;
-
-  /* Sum-up of the computional times */
+  /* Summary of the computional times */
 
   bft_printf(_("\n Halo creation times summary\n\n"));
 
   if (mesh->n_domains > 1 || mesh->n_init_perio > 0)
-    bft_printf(_("     Creating interface:                       %.3g s\n"),
+    bft_printf(_("     Interface creation:                       %.3g s\n"),
                interface_time);
 
   if (mesh->halo_type == CS_HALO_EXTENDED)
-    bft_printf(_("     Creating extended connectivity:            %.3g s\n"),
+    bft_printf(_("     Extended connectivity creation:            %.3g s\n"),
                ext_neighborhood_time);
 
-  bft_printf(_("     Creating halo:                             %.3g s\n\n"),
+  bft_printf(_("     Halo creation:                             %.3g s\n\n"),
              halo_time);
 
 
   bft_printf(_("     Total time for halo creation:              %.3g s\n\n"),
              halo_time + interface_time + ext_neighborhood_time);
+
   bft_printf(" ----------------------------------------------------------\n\n");
 
-  /* Sum-up ghost cell distribution */
+  bft_printf_flush();
+}
+
+/*----------------------------------------------------------------------------
+ * Write a summary about cell neighbor features in listing
+ *
+ * parameters:
+ *   mesh                   <-- pointer to cs_mesh_t structure
+ *----------------------------------------------------------------------------*/
+
+static void
+_print_cell_neighbor_info(const cs_mesh_t  *mesh)
+{
+  cs_int_t i, j, k;
+  float step;
+
+  int n_steps = CS_MESH_N_SUBS;
+  int n_min_neighbors = 0;
+  int n_max_neighbors = 0;
+
+  fvm_gnum_t  count[CS_MESH_N_SUBS];
+
+  int  *n_cell_neighbors = NULL;
+
+  /* Summary of the number of cell neighbors */
+
+  BFT_MALLOC(n_cell_neighbors, mesh->n_cells_with_ghosts, int);
+
+  for (i = 0; i < mesh->n_cells_with_ghosts; i++)
+    n_cell_neighbors[i] = 0;
+
+  for (i = 0; i < mesh->n_i_faces; i++) {
+    cs_int_t c_id_0 = mesh->i_face_cells[i*2] - 1;
+    cs_int_t c_id_1 = mesh->i_face_cells[i*2 + 1] - 1;
+    n_cell_neighbors[c_id_0] += 1;
+    n_cell_neighbors[c_id_1] += 1;
+  }
+
+  if (mesh->n_cells > 0)
+    n_min_neighbors = n_cell_neighbors[0];
+
+  for (i = 0; i < mesh->n_cells; i++) {
+    if (n_cell_neighbors[i] < n_min_neighbors)
+      n_min_neighbors = n_cell_neighbors[i];
+    else if (n_cell_neighbors[i] > n_max_neighbors)
+      n_max_neighbors = n_cell_neighbors[i];
+  }
+
+#if defined(HAVE_MPI)
+
+  if (cs_glob_n_ranks > 1) {
+
+    int n_g_min, n_g_max;
+
+    MPI_Allreduce(&n_min_neighbors, &n_g_min, 1, MPI_INT, MPI_MIN,
+                  cs_glob_mpi_comm);
+    MPI_Allreduce(&n_max_neighbors, &n_g_max, 1, MPI_INT, MPI_MAX,
+                  cs_glob_mpi_comm);
+
+    n_min_neighbors = n_g_min;
+    n_max_neighbors = n_g_max;
+  }
+
+#endif /* defined(HAVE_MPI) */
+
+  bft_printf(_("\n Histogram of the number of interior faces per cell:\n\n"));
+
+  bft_printf(_("    minimum value =         %10d\n"), n_min_neighbors);
+  bft_printf(_("    maximum value =         %10d\n\n"), n_max_neighbors);
+
+  /* Define axis subdivisions */
+
+  for (i = 0; i < CS_MESH_N_SUBS; i++)
+    count[i] = 0;
+
+  if (n_max_neighbors - n_min_neighbors > 0) {
+
+    if (n_max_neighbors - n_min_neighbors < n_steps)
+      n_steps = n_max_neighbors - n_min_neighbors;
+
+    step = (float)(n_max_neighbors - n_min_neighbors) / n_steps;
+
+    /* Loop on values */
+
+    for (i = 0; i < mesh->n_cells; i++) {
+
+      /* Associated subdivision */
+      for (j = 0, k = 1; k < n_steps; j++, k++) {
+        if (n_cell_neighbors[i] < n_min_neighbors + k*step)
+          break;
+      }
+      count[j] += 1;
+    }
+
+#if defined(HAVE_MPI)
+
+    if (cs_glob_n_ranks > 1) {
+
+      fvm_gnum_t g_count[CS_MESH_N_SUBS];
+
+      MPI_Allreduce(count, g_count, n_steps, FVM_MPI_GNUM, MPI_SUM,
+                    cs_glob_mpi_comm);
+
+      for (i = 0; i < n_steps; i++)
+        count[i] = g_count[i];
+    }
+
+#endif
+
+    for (i = 0, j = 1; i < n_steps - 1; i++, j++)
+      bft_printf("    %3d : [ %10d ; %10d [ = %10lu\n",
+                 i+1,
+                 (int)(n_min_neighbors + i*step),
+                 (int)(n_min_neighbors + j*step),
+                 (unsigned long)(count[i]));
+
+    bft_printf("    %3d : [ %10d ; %10d ] = %10lu\n",
+               n_steps,
+               (int)(n_min_neighbors + (n_steps - 1)*step),
+               n_max_neighbors,
+               (unsigned long)(count[n_steps - 1]));
+  }
+
+  else { /* if (n_min_neighbors == n_max_neighbors) */
+    bft_printf("    %3d : [ %10d ; %10d ] = %10lu\n",
+               1, n_min_neighbors, n_max_neighbors,
+               (unsigned long)mesh->n_g_cells);
+
+  }
+
+  bft_printf("\n ----------------------------------------------------------\n");
+
+  /* Cleanup */
+
+  BFT_FREE(n_cell_neighbors);
+}
+
+/*----------------------------------------------------------------------------
+ * Write a summary about mesh features in listing
+ *
+ * parameters:
+ *   mesh                   <-- pointer to cs_mesh_t structure
+ *----------------------------------------------------------------------------*/
+
+static void
+_print_mesh_info(cs_mesh_t  *mesh)
+{
+  cs_halo_t  *halo = mesh->halo;
+
+  cs_int_t  *rank_buffer = NULL;
 
-  bft_printf(_(" Number of standard cells:                             %d\n"),
-             mesh->n_cells);
+  /* Summary of cell and ghost cell distribution */
 
   if (mesh->n_domains > 1) {
 
@@ -320,17 +467,19 @@ _print_halo_info(cs_mesh_t  *mesh,
                   rank_buffer     , 1, CS_MPI_INT, cs_glob_mpi_comm);
 #endif
 
-    bft_printf(_("\n    Histogram of the number of cells per rank:\n\n"));
+    bft_printf(_("\n Histogram of the number of cells per rank:\n\n"));
 
     _display_histograms(mesh->n_domains, rank_buffer);
 
   } /* End if n_domains > 1 */
 
-  bft_printf("\n ----------------------------------------------------------\n");
-  bft_printf_flush();
+  else
+    bft_printf
+      (_(" Number of cells:                                      %d\n"),
+       mesh->n_cells);
+
 
-  bft_printf(_(" Number of cells + halo cells:                         %d\n\n"),
-             mesh->n_cells_with_ghosts);
+  bft_printf("\n ----------------------------------------------------------\n");
 
   if (mesh->n_domains > 1) {
 
@@ -339,27 +488,25 @@ _print_halo_info(cs_mesh_t  *mesh,
                   rank_buffer, 1, CS_MPI_INT, cs_glob_mpi_comm);
 #endif
 
-    bft_printf(_("\n    Histogram of number of standard + halo cells (NCELET) "
+    bft_printf(_("\n Histogram of the number of standard + halo cells "
                  "per rank:\n\n"));
 
     _display_histograms(mesh->n_domains, rank_buffer);
 
   } /* End if n_domains > 1 */
 
+  else
+    bft_printf
+      (_(" Number of cells + halo cells:                         %d\n\n"),
+       mesh->n_cells_with_ghosts);
+
+
   bft_printf("\n ----------------------------------------------------------\n");
-  bft_printf_flush();
 
   if (halo != NULL) {
 
     cs_int_t  n_std_ghost_cells = halo->n_elts[CS_HALO_STANDARD];
 
-    bft_printf(_("\n Local number of ghost cells:                    %10d\n"),
-               mesh->n_ghost_cells);
-    bft_printf(_("     in the standard neighborhood:              %10d\n"),
-               n_std_ghost_cells);
-    bft_printf(_("     in the extended neighborhood:              %10d\n"),
-               mesh->n_ghost_cells - n_std_ghost_cells);
-
     if (mesh->n_domains > 1) {
 
       cs_int_t  n_gcells = mesh->n_ghost_cells;
@@ -370,46 +517,121 @@ _print_halo_info(cs_mesh_t  *mesh,
 #endif
 
       bft_printf
-        (_("\n    Histogram of the number of ghost cells per rank:\n\n"));
+        (_("\n Histogram of the number of ghost cells per rank:\n\n"));
 
       _display_histograms(mesh->n_domains, rank_buffer);
 
+      if (mesh->halo_type == CS_HALO_EXTENDED) {
+
+#if defined(HAVE_MPI)
+        MPI_Allgather(&n_std_ghost_cells, 1, CS_MPI_INT,
+                      rank_buffer, 1, CS_MPI_INT, cs_glob_mpi_comm);
+#endif
+
+        bft_printf
+          (_("\n"
+             " Histogram of the number of ghost cells\n"
+             " in the standard neighborhood per rank:\n\n"));
+
+        _display_histograms(mesh->n_domains, rank_buffer);
+      }
+
     } /* If n_ranks > 1 */
 
+    else {
+      bft_printf(_("\n Number of ghost cells:                          %10d\n"),
+                 mesh->n_ghost_cells);
+      if (mesh->halo_type == CS_HALO_EXTENDED)
+        bft_printf(_("   in the standard neighborhood:              %10d\n"),
+                   n_std_ghost_cells);
+    }
+
     bft_printf("\n"
                " ----------------------------------------------------------\n");
-    bft_printf_flush();
 
-    /* Sum-up of the number of neighbors */
+  } /* End if halo != NULL */
 
-    bft_printf(_("\n Number of neighboring domains:       %d\n"),
-               halo->n_c_domains);
+  /* Summary of faces distribution */
 
-    if (mesh->n_domains > 1) {
+  if (mesh->n_domains > 1) {
+
+#if defined(HAVE_MPI)
+    MPI_Allgather(&(mesh->n_i_faces), 1, CS_MPI_INT,
+                  rank_buffer, 1, CS_MPI_INT, cs_glob_mpi_comm);
+#endif
 
-      cs_int_t  n_c_domains = halo->n_c_domains;
+    bft_printf
+      (_("\n Histogram of the number of interior faces per rank:\n\n"));
+
+    _display_histograms(mesh->n_domains, rank_buffer);
+
+  } /* End if n_domains > 1 */
+
+  else
+    bft_printf
+      (_(" Number of interior faces:                             %d\n"),
+       mesh->n_i_faces);
+
+
+  bft_printf("\n ----------------------------------------------------------\n");
+
+
+
+  if (mesh->n_domains > 1) {
 
 #if defined(HAVE_MPI)
-      MPI_Allgather(&n_c_domains, 1, CS_MPI_INT,
-                    rank_buffer , 1, CS_MPI_INT, cs_glob_mpi_comm);
+    MPI_Allgather(&(mesh->n_b_faces), 1, CS_MPI_INT,
+                  rank_buffer, 1, CS_MPI_INT, cs_glob_mpi_comm);
 #endif
 
-      bft_printf(_("\n    Histogram of the number of neighboring domains "
-                   "per rank:\n\n"));
+    bft_printf
+      (_("\n Histogram of the number of boundary faces per rank:\n\n"));
 
-      _display_histograms(mesh->n_domains, rank_buffer);
+    _display_histograms(mesh->n_domains, rank_buffer);
 
-    } /* If n_ranks > 1 */
+  } /* End if n_domains > 1 */
+
+  else
+    bft_printf
+      (_(" Number of boundary faces:                             %d\n"),
+       mesh->n_b_faces);
+
+
+  bft_printf("\n ----------------------------------------------------------\n");
+
+  /* Add cell neighbor info */
+
+  _print_cell_neighbor_info(mesh);
+
+#if defined(HAVE_MPI)
+
+  /* Summary of the number of neighbors */
+
+  if (mesh->n_domains > 1) {
+
+    cs_int_t  n_c_domains = halo->n_c_domains;
+
+    MPI_Allgather(&n_c_domains, 1, CS_MPI_INT,
+                  rank_buffer , 1, CS_MPI_INT, cs_glob_mpi_comm);
+
+    bft_printf(_("\n Histogram of the number of neighboring domains "
+                 "per rank:\n\n"));
+
+    _display_histograms(mesh->n_domains, rank_buffer);
 
     bft_printf("\n"
                " ----------------------------------------------------------\n");
-    bft_printf_flush();
 
-  } /* End if halo != NULL */
+  } /* If n_domains > 1 */
+
+#endif
+
+  /* Cleanup */
 
   if (mesh->n_domains > 1)
     BFT_FREE(rank_buffer);
 
+  bft_printf_flush();
 }
 
 /*============================================================================
@@ -1111,6 +1333,8 @@ cs_mesh_init_halo(cs_mesh_t  *mesh)
   else if (ivoset == 1)
     bft_printf(_("\n Extended connectivity creation (%.3g s)\n"),
                ext_neighborhood_time);
+
+  _print_mesh_info(mesh);
 }
 
 /*----------------------------------------------------------------------------
diff --git a/src/base/cs_mesh_coherency.c b/src/base/cs_mesh_coherency.c
index ae99e6c..b66fb53 100644
--- a/src/base/cs_mesh_coherency.c
+++ b/src/base/cs_mesh_coherency.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/cs_mesh_connect.c b/src/base/cs_mesh_connect.c
index c810f64..df2168d 100644
--- a/src/base/cs_mesh_connect.c
+++ b/src/base/cs_mesh_connect.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/cs_mesh_halo.c b/src/base/cs_mesh_halo.c
index 2e2ad2b..923cd10 100644
--- a/src/base/cs_mesh_halo.c
+++ b/src/base/cs_mesh_halo.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -1814,7 +1814,7 @@ _get_start_end_idx(cs_mesh_t    *mesh,
                    cs_int_t     *p_end_idx)
 {
   cs_int_t  i, n_par_gcells, n_per_gcells;
-  cs_int_t  start_idx, end_idx;
+  cs_int_t  start_idx = -1, end_idx = -1;
 
   const cs_int_t  n_c_domains = mesh->halo->n_c_domains;
 
@@ -3162,6 +3162,30 @@ _update_gcells_connect(cs_mesh_t       *mesh,
   cell_checker = _delete_table_int(cell_checker);
   cell_list = _delete_table_int(cell_list);
 
+  /* Sanity check */
+
+  for (i = 0; i < mesh->n_i_faces; i++) {
+    if (mesh->i_face_cells[2*i] < 1)
+      bft_error(__FILE__, __LINE__, 0,
+                " Error detected in interior face -> cells connectivity.\n"
+                " Face %d (%u) has an incomplete connectivity.\n"
+                " Cell1: %d - Cell2: %d (%u)",
+                i+1, mesh->global_i_face_num[i],
+                mesh->i_face_cells[2*i],
+                mesh->i_face_cells[2*i+1],
+                mesh->global_cell_num[mesh->i_face_cells[2*i+1]-1]);
+
+    if (mesh->i_face_cells[2*i+1] < 1)
+      bft_error(__FILE__, __LINE__, 0,
+                " Error detected in interior face -> cells connectivity.\n"
+                " Face %d (%u) has an incomplete connectivity.\n"
+                " Cell1: %d (%u) - Cell2: %d",
+                i+1, mesh->global_i_face_num[i],
+                mesh->i_face_cells[2*i],
+                mesh->global_cell_num[mesh->i_face_cells[2*i]-1],
+                mesh->i_face_cells[2*i+1]);
+
+  }
 }
 
 #if 0 /* TODO: check algorithm (deadlock on BG/L on one test case) */
diff --git a/src/base/cs_mesh_quality.c b/src/base/cs_mesh_quality.c
index 6a20c6c..e98d475 100644
--- a/src/base/cs_mesh_quality.c
+++ b/src/base/cs_mesh_quality.c
@@ -42,6 +42,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <assert.h>
+#include <float.h>
 
 /*----------------------------------------------------------------------------
  * BFT and FVM library headers
@@ -118,15 +119,15 @@ _compute_local_minmax(cs_int_t         n_vals,
                       cs_real_t       *max)
 {
   cs_int_t  i;
-  cs_real_t  _min = var[0], _max = var[0];
+  cs_real_t  _min = DBL_MAX, _max = -DBL_MAX;
 
-  for (i = 1; i < n_vals; i++) {
+  for (i = 0; i < n_vals; i++) {
     _min = CS_MIN(_min, var[i]);
     _max = CS_MAX(_max, var[i]);
   }
 
-  if (min != NULL)  *min = _min;
-  if (max != NULL)  *max = _max;
+  *min = _min;
+  *max = _max;
 }
 
 /*----------------------------------------------------------------------------
diff --git a/src/base/cs_mesh_quantities.c b/src/base/cs_mesh_quantities.c
index ee8e758..effc30d 100644
--- a/src/base/cs_mesh_quantities.c
+++ b/src/base/cs_mesh_quantities.c
@@ -53,6 +53,12 @@
 #include <bft_printf.h>
 
 /*----------------------------------------------------------------------------
+ * FVM library headers
+ *----------------------------------------------------------------------------*/
+
+#include <fvm_parall.h>
+
+/*----------------------------------------------------------------------------
  *  Local headers
  *----------------------------------------------------------------------------*/
 
@@ -151,10 +157,9 @@ _compute_face_normal(cs_int_t         dim,
   cs_point_t  *face_vtx_coord = NULL;
   cs_point_t  *triangle_normal = NULL;
 
-  /* Return if there is not enough data (SolCom case except radiative
-     module or Pre-processor 1.2.d without "-n" option) */
+  /* Return if there is not enough data (some SolCom meshes) */
 
-  if (face_vtx_idx == NULL && face_vtx_lst == NULL)
+  if (face_vtx_idx == NULL || face_vtx_lst == NULL)
     return;
 
   /* Checking */
@@ -316,10 +321,9 @@ _compute_face_quantities(const cs_int_t   dim,
   cs_point_t  *face_vtx_coord = NULL;
   cs_point_t  *triangle_norm = NULL;
 
-  /* Return if there is not enough data (SolCom case except radiative
-     module or Pre-processor 1.2.d without "-n" option) */
+  /* Return if there is not enough data (some SolCom meshes) */
 
-  if (face_vtx_idx == NULL && face_vtx_lst == NULL)
+  if (face_vtx_idx == NULL || face_vtx_lst == NULL)
     return;
 
   /* Checking */
@@ -578,9 +582,8 @@ _compute_cell_cen_vertex(const cs_mesh_t  *const mesh,
 
   /* Initialization */
 
-  for (j = 0; j < mesh->n_cells_with_ghosts; j++)
-    for (i = 0; i < 3; i++)
-      cell_cen[3*j + i] = 0. ;
+  for (i = 0; i < 3*mesh->n_cells_with_ghosts; i++)
+    cell_cen[i] = 0.0;
 
   /* Extract "cell -> faces" connectivity */
 
@@ -1193,6 +1196,46 @@ cs_mesh_quantities_b_faces(const cs_mesh_t   *mesh,
 }
 
 /*----------------------------------------------------------------------------
+ * Check that no negative volumes are present, and exit on error otherwise.
+ *
+ * parameters:
+ *   mesh            <-- pointer to mesh structure
+ *   mesh_quantities <-- pointer to mesh quantities structure
+ *----------------------------------------------------------------------------*/
+
+void
+cs_mesh_quantities_check_vol(const cs_mesh_t             *mesh,
+                             const cs_mesh_quantities_t  *mesh_quantities)
+{
+  cs_int_t  cell_id;
+
+  fvm_gnum_t  error_count = 0;
+
+  for (cell_id = 0; cell_id < mesh->n_cells; cell_id++) {
+    if (mesh_quantities->cell_vol[cell_id] < 0.0)
+      error_count += 1;
+  }
+
+#if defined(HAVE_MPI)
+  if (cs_glob_n_ranks > 1) {
+    fvm_gnum_t tot_error_count = 0;
+    MPI_Allreduce(&error_count, &tot_error_count, 1, FVM_MPI_GNUM, MPI_SUM,
+                  cs_glob_mpi_comm);
+    error_count = tot_error_count;
+  }
+#endif
+
+  /* Exit with error */
+
+  if (error_count > 0)
+    bft_error(__FILE__, __LINE__, 0,
+              _("  %lu cells have a Negative volume.\n"
+                " Run mesh quality check for post-processing output.\n"
+                " In case of mesh joining, this may be due to overly "
+                " agressive joining parameters."), (unsigned long)error_count);
+}
+
+/*----------------------------------------------------------------------------
  * Dump a cs_mesh_quantities_t structure
  *
  * parameters:
diff --git a/src/base/cs_multigrid.c b/src/base/cs_multigrid.c
index bc14e49..60d01bc 100644
--- a/src/base/cs_multigrid.c
+++ b/src/base/cs_multigrid.c
@@ -1104,6 +1104,8 @@ _multigrid_cycle(cs_multigrid_t     *mg,
 
   for (level = 0; level < coarsest_level; level++) {
 
+    int _poly_degree = (level == 0) ? poly_degree : 0;
+
     _rhs_level = (level == 0) ?  rhs : _rhs[level];
 
     sprintf(var_lv_name, "%s:%04d", var_name, level);
@@ -1127,7 +1129,7 @@ _multigrid_cycle(cs_multigrid_t     *mg,
                           _xa,
                           _matrix,
                           NULL,
-                          poly_degree,
+                          _poly_degree,
                           rotation_mode,
                           verbosity - 2,
                           n_max_iter[level*2],
@@ -1241,7 +1243,7 @@ _multigrid_cycle(cs_multigrid_t     *mg,
                           _xa,
                           _matrix,
                           NULL,
-                          poly_degree,
+                          0, /* poly_degree */
                           rotation_mode,
                           verbosity - 2,
                           n_max_iter[level*2],
@@ -1313,7 +1315,7 @@ _multigrid_cycle(cs_multigrid_t     *mg,
                               _xa,
                               _matrix,
                               NULL,
-                              poly_degree,
+                              0, /* poly_degree */
                               rotation_mode,
                               verbosity - 2,
                               n_max_iter[level*2 + 1],
diff --git a/src/base/cs_opts.c b/src/base/cs_opts.c
index 915635e..ac3dbe3 100644
--- a/src/base/cs_opts.c
+++ b/src/base/cs_opts.c
@@ -122,7 +122,12 @@ _arg_env_help(const char  *name)
     (e, _(" --mpi             use MPI for parallelism or coupling\n"
           "                   [appnum]: number of this application in\n"
           "                             case of code coupling (default: 0)\n"));
-
+  fprintf
+    (e, _(" --mpi-io          <mode> set parallel I/O behavior\n"
+          "                     off: do not use MPI-IO\n"
+          "                     eo:  MPI-IO with explicit offsets\n"
+          "                          (default if available)\n"
+          "                     ip:  MPI-IO with individual file pointers\n"));
 #endif
   fprintf
     (e, _(" -q, --quality     mesh quality verification mode\n"));
@@ -547,6 +552,8 @@ cs_opts_define(int         argc,
   opts->ilisr0 = 1;
   opts->ilisrp = 2;
 
+  opts->mpi_io_mode = -1;
+
   opts->verif = false;
   opts->benchmark = 0;
 
@@ -580,6 +587,24 @@ cs_opts_define(int         argc,
       }
     }
 
+    else if (strcmp(s, "--mpi-io") == 0) {
+      if (arg_id + 1 < argc) {
+        const char *s_n = argv[arg_id + 1];
+        if (strcmp(s_n, "off") == 0)
+          opts->mpi_io_mode = 0;
+        else if (strcmp(s_n, "eo") == 0)
+          opts->mpi_io_mode = 1;
+        else if (strcmp(s_n, "ip") == 0)
+          opts->mpi_io_mode = 2;
+        else
+          argerr = 1;
+        if (argerr == 0)
+          arg_id++;
+      }
+      else
+        argerr = 1;
+    }
+
 #endif /* defined(HAVE_MPI) */
 
     else if (strcmp(s, "-q") == 0 || strcmp(s, "--quality") == 0)
diff --git a/src/base/cs_parall.c b/src/base/cs_parall.c
index a3a2cc5..5965117 100644
--- a/src/base/cs_parall.c
+++ b/src/base/cs_parall.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -995,6 +995,8 @@ CS_PROCF (parfpt, PARFPT)(cs_int_t   *node,
 {
 #if defined(HAVE_MPI)
 
+  cs_int_t buf[2];
+
   _mpi_double_int_t  val_in, val_min;
 
   assert(sizeof(double) == sizeof(cs_real_t));
@@ -1007,8 +1009,13 @@ CS_PROCF (parfpt, PARFPT)(cs_int_t   *node,
 
   *ndrang = cs_glob_rank_id;
 
-  MPI_Bcast(node,   1, CS_MPI_INT, val_min.rank, cs_glob_mpi_comm);
-  MPI_Bcast(ndrang, 1, CS_MPI_INT, val_min.rank, cs_glob_mpi_comm);
+  buf[0] = *node;
+  buf[1] = *ndrang;
+
+  MPI_Bcast(buf, 2, CS_MPI_INT, val_min.rank, cs_glob_mpi_comm);
+
+  *node = buf[0];
+  *ndrang = buf[1];
 
 #endif
 
@@ -1366,6 +1373,28 @@ cs_parall_interface_sr(fvm_interface_set_t  *interfaces,
 
 }
 
+/*----------------------------------------------------------------------------
+ * Call a barrier in case of parallelism
+ *
+ * This function should not be necessary in production code,
+ * but it may be useful for debugging purposes.
+ *
+ * Fortran interface :
+ *
+ * SUBROUTINE PARBAR
+ * *****************
+ *----------------------------------------------------------------------------*/
+
+void
+CS_PROCF (parbar, PARBAR)(void)
+{
+#if defined(HAVE_MPI)
+
+  MPI_Barrier(cs_glob_mpi_comm);
+
+#endif
+}
+
 /*----------------------------------------------------------------------------*/
 
 END_C_DECLS
diff --git a/src/base/cs_perio.c b/src/base/cs_perio.c
index 9977bec..6bb9d27 100644
--- a/src/base/cs_perio.c
+++ b/src/base/cs_perio.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/cs_post.c b/src/base/cs_post.c
index bf64170..6dc54d5 100644
--- a/src/base/cs_post.c
+++ b/src/base/cs_post.c
@@ -97,7 +97,7 @@ typedef enum {
 /*------------------*/
 
 /* This object is based on a choice of a case, directory, and format,
-   as well as a flag for associated meshe's time dependency, and the default
+   as well as a flag for associated mesh's time dependency, and the default
    output frequency for associated variables. */
 
 typedef struct {
@@ -799,7 +799,7 @@ _cs_post_write_mesh(cs_post_mesh_t  *post_mesh,
 {
   int  j;
   cs_bool_t  write_mesh;
-  fvm_writer_time_dep_t  dep_temps;
+  fvm_writer_time_dep_t  time_dep;
 
   cs_post_writer_t *writer = NULL;
 
@@ -809,11 +809,11 @@ _cs_post_write_mesh(cs_post_mesh_t  *post_mesh,
 
     writer = _cs_post_writers + post_mesh->writer_id[j];
 
-    dep_temps = fvm_writer_get_time_dep(writer->writer);
+    time_dep = fvm_writer_get_time_dep(writer->writer);
 
     write_mesh = false;
 
-    if (dep_temps == FVM_WRITER_FIXED_MESH) {
+    if (time_dep == FVM_WRITER_FIXED_MESH) {
       if (post_mesh->nt_last < 0)
         write_mesh = true;
     }
@@ -822,7 +822,10 @@ _cs_post_write_mesh(cs_post_mesh_t  *post_mesh,
         write_mesh = true;
     }
 
-    if (write_mesh == true) {
+    /* Mesh has already been output when associated with writers
+       allowing only fixed meshes; for other writers, output it */
+
+    if (write_mesh == true && time_dep != FVM_WRITER_FIXED_MESH) {
       fvm_writer_set_mesh_time(writer->writer, nt_cur_abs, t_cur_abs);
       fvm_writer_export_nodal(writer->writer, post_mesh->exp_mesh);
     }
@@ -974,7 +977,7 @@ _cs_post_write_displacements(int     nt_cur_abs,
 /*----------------------------------------------------------------------------
  * Create a writer based on Fortran data; this object is based on a choice
  * of a case, directory, and format, as well as indicator for associated
- * meshe's time dependency, and the default output frequency for associated
+ * mesh's time dependency, and the default output frequency for associated
  * variables.
  *
  * Fortran Interface: use PSTCWR (see cs_post_util.F)
@@ -1156,13 +1159,13 @@ void CS_PROCF (pstedg, PSTEDG)
  * The automatic variables output associated with the main volume and
  * boundary meshes will also be applied to meshes of the same categories
  * (i.e. -1 and -2 respectively, whether meshes -1 and -2 are actually
- * defined or not), so setting a user meshe's category to one of these
+ * defined or not), so setting a user mesh's category to one of these
  * values will automatically provide the same automatic variable output to
  * the user mesh.
  *
  * Fortran interface:
  *
- * SUBROUTINE PSTCAT (NUMMAI, NUMWRI)
+ * SUBROUTINE PSTCAT (NUMMAI, NUMCAT)
  * *****************
  *
  * INTEGER          NUMMAI      : <-- : Number of the alias to create
@@ -1868,8 +1871,8 @@ void CS_PROCF (pstev1, PSTEV1)
                                          by many Fortran compilers) */
 )
 {
-  cs_bool_t  use_parent;
-  cs_bool_t  interlace;
+  cs_bool_t  use_parent = false;
+  cs_bool_t  interlace = false;
 
   char  *var_name = NULL;
 
@@ -1921,7 +1924,7 @@ void CS_PROCF (pstev1, PSTEV1)
 
 /*----------------------------------------------------------------------------
  * Create a writer; this objects manages a case's name, directory, and format,
- * as well as associated meshe's time dependency, and the default output
+ * as well as associated mesh's time dependency, and the default output
  * frequency for associated variables.
  *
  * parameters:
@@ -1949,7 +1952,7 @@ cs_post_add_writer(int          writer_id,
   int    i;
 
   cs_post_writer_t  *writer = NULL;
-  fvm_writer_time_dep_t  dep_temps = FVM_WRITER_FIXED_MESH;
+  fvm_writer_time_dep_t  time_dep = FVM_WRITER_FIXED_MESH;
 
   /* Check that the required mesh is available */
 
@@ -2000,15 +2003,15 @@ cs_post_add_writer(int          writer_id,
   }
 
   if (mod_flag == 1)
-    dep_temps = FVM_WRITER_TRANSIENT_COORDS;
+    time_dep = FVM_WRITER_TRANSIENT_COORDS;
   else if (mod_flag >= 2)
-    dep_temps = FVM_WRITER_TRANSIENT_CONNECT;
+    time_dep = FVM_WRITER_TRANSIENT_CONNECT;
 
   writer->writer = fvm_writer_init(case_name,
                                    dir_name,
                                    fmt_name,
                                    fmt_opts,
-                                   dep_temps);
+                                   time_dep);
 }
 
 /*----------------------------------------------------------------------------
@@ -2188,13 +2191,63 @@ cs_post_add_existing_mesh(int           mesh_id,
 }
 
 /*----------------------------------------------------------------------------
+ * Create a mesh based upon the extraction of edges from an existing mesh.
+ *
+ * The newly created edges have no link to their parent elements, so
+ * no variable referencing parent elements may be output to this mesh,
+ * whose main use is to visualize "true" face edges when polygonal faces
+ * are subdivided by the writer. In this way, even highly non-convex
+ * faces may be visualized correctly if their edges are overlaid on
+ * the surface mesh with subdivided polygons.
+ *
+ * parameters:
+ *   edges_id <-- id of edges mesh to create (< 0 reserved, > 0 for user)
+ *   base_id  <-- id of existing mesh (< 0 reserved, > 0 for user)
+ *----------------------------------------------------------------------------*/
+
+void
+cs_post_add_mesh_edges(int  edges_id,
+                       int  base_id)
+{
+  /* local variables */
+
+  char *edges_name = NULL;
+  cs_post_mesh_t *post_edges = NULL;
+  fvm_nodal_t *exp_edges = NULL;
+
+  const cs_post_mesh_t *post_base = _cs_post_meshes +_cs_post_mesh_id(base_id);
+  const fvm_nodal_t *exp_mesh = post_base->exp_mesh;
+  const char *exp_name = fvm_nodal_get_name(exp_mesh);
+
+  /* Add and initialize base structure */
+
+  post_edges = _cs_post_add_mesh(edges_id);
+
+  /* Copy mesh edges to new mesh structure */
+
+  BFT_MALLOC(edges_name, strlen(exp_name) + strlen(_(" edges")) + 1, char);
+
+  strcpy(edges_name, exp_name);
+  strcat(edges_name, _(" edges"));
+
+  exp_edges = fvm_nodal_copy_edges(edges_name, exp_mesh);
+
+  BFT_FREE(edges_name);
+
+  /* Create mesh and assign to structure */
+
+  post_edges->exp_mesh = exp_edges;
+  post_edges->_exp_mesh = exp_edges;
+}
+
+/*----------------------------------------------------------------------------
  * Assign a category to a post-processing mesh.
  *
  * By default, each mesh is assigned a category id identical to its id.
  * The automatic variables output associated with the main volume and
  * boundary meshes will also be applied to meshes of the same categories
  * (i.e. -1 and -2 respectively, whether meshes -1 and -2 are actually
- * defined or not), so setting a user meshe's category to one of these
+ * defined or not), so setting a user mesh's category to one of these
  * values will automatically provide the same automatic variable output to
  * the user mesh.
  *
@@ -2295,56 +2348,6 @@ cs_post_alias_mesh(int  alias_id,
 }
 
 /*----------------------------------------------------------------------------
- * Create a mesh based upon the extraction of edges from an existing mesh.
- *
- * The newly created edges have no link to their parent elements, so
- * no variable referencing parent elements may be output to this mesh,
- * whose main use is to visualize "true" face edges when polygonal faces
- * are subdivided by the writer. In this way, even highly non-convex
- * faces may be visualized correctly if their edges are overlaid on
- * the surface mesh with subdivided polygons.
- *
- * parameters:
- *   edges_id <-- id of edges mesh to create (< 0 reserved, > 0 for user)
- *   base_id  <-- id of existing mesh (< 0 reserved, > 0 for user)
- *----------------------------------------------------------------------------*/
-
-void
-cs_post_add_mesh_edges(int  edges_id,
-                       int  base_id)
-{
-  /* local variables */
-
-  char *edges_name = NULL;
-  cs_post_mesh_t *post_edges = NULL;
-  fvm_nodal_t *exp_edges = NULL;
-
-  const cs_post_mesh_t *post_base = _cs_post_meshes +_cs_post_mesh_id(base_id);
-  const fvm_nodal_t *exp_mesh = post_base->exp_mesh;
-  const char *exp_name = fvm_nodal_get_name(exp_mesh);
-
-  /* Add and initialize base structure */
-
-  post_edges = _cs_post_add_mesh(edges_id);
-
-  /* Copy mesh edges to new mesh structure */
-
-  BFT_MALLOC(edges_name, strlen(exp_name) + strlen(_(" edges")) + 1, char);
-
-  strcpy(edges_name, exp_name);
-  strcat(edges_name, _(" edges"));
-
-  exp_edges = fvm_nodal_copy_edges(edges_name, exp_mesh);
-
-  BFT_FREE(edges_name);
-
-  /* Create mesh and assign to structure */
-
-  post_edges->exp_mesh = exp_edges;
-  post_edges->_exp_mesh = exp_edges;
-}
-
-/*----------------------------------------------------------------------------
  * Check for the existence of a writer of the given id.
  *
  * parameters:
@@ -2511,6 +2514,10 @@ cs_post_get_free_mesh_id(void)
 /*----------------------------------------------------------------------------
  * Associate a writer with a post-processing mesh.
  *
+ * If the writer only allows fixed (i.e. time-independent) meshes, the
+ * mesh is exported immediately. Otherwise, output is delayed until
+ * cs_post_write_meshes() is called for an active time step.
+ *
  * parameters:
  *   mesh_id   <-- id of associated mesh
  *   writer_id <-- id of associated writer
@@ -2590,6 +2597,14 @@ cs_post_associate(int  mesh_id,
     /* Divide polygons or polyhedra into simple elements */
 
     _cs_post_divide_poly(post_mesh, writer);
+
+    /* If the writer only allows fixed (i.e. time-independent) meshes,
+       output mesh immediately */
+
+    if (mod_flag == FVM_WRITER_FIXED_MESH) {
+      fvm_writer_set_mesh_time(writer->writer, 0, 0.0);
+      fvm_writer_export_nodal(writer->writer, post_mesh->exp_mesh);
+    }
   }
 
 }
diff --git a/src/base/cs_post_f2c.f90 b/src/base/cs_post_f2c.f90
index b0a64c6..e85efc5 100644
--- a/src/base/cs_post_f2c.f90
+++ b/src/base/cs_post_f2c.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,7 +47,7 @@ subroutine pstcwr &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! numgep           ! e  ! <-- ! identificateur du gestionnaire                 !
 !                  !    !     ! (< 0 pour gestionnaire reserve,                !
@@ -73,7 +73,7 @@ implicit none
 !===============================================================================
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -84,7 +84,7 @@ character*32     nomcas , nomfmt
 character*96     nomrep , optfmt
 integer          numgep , indmod , ntchr
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          lnmcas , lnmrep , lnmfmt , lopfmt
 
@@ -102,7 +102,7 @@ call pstcw1 (numgep, nomcas, nomrep, nomfmt, optfmt,              &
 
 return
 
-end
+end subroutine
 subroutine pstcma &
 !=================
 
@@ -134,7 +134,7 @@ subroutine pstcma &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nummai           ! e  ! <-- ! identificateur du maillage                     !
 !                  !    !     ! (< 0 pour maillage reserve,   ,                !
@@ -162,7 +162,7 @@ implicit none
 !===============================================================================
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -174,7 +174,7 @@ integer          nummai, nbrcel, nbrfac, nbrfbr
 
 integer          lstcel(nbrcel), lstfac(nbrfac), lstfbr(nbrfbr)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          lnmmai
 
@@ -188,7 +188,7 @@ call pstcm1 (nummai, nommai, lnmmai,                              &
 
 return
 
-end
+end subroutine
 subroutine psteva &
 !================
 
@@ -208,7 +208,7 @@ subroutine psteva &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nummai           ! a  ! <-- ! numero du maillage associe                     !
 ! nomvar           ! e  ! <-- ! nom de la variable associee                    !
@@ -238,7 +238,7 @@ implicit none
 !===============================================================================
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -249,7 +249,7 @@ character*32     nomvar
 integer          nummai, dimvar, ientla, ivarpr, ntcabs
 double precision ttcabs, varcel(*), varfac(*), varfbo(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          lnmvar
 
@@ -263,7 +263,7 @@ call pstev1 (nummai, nomvar, lnmvar, dimvar, ientla, ivarpr,      &
 
 return
 
-end
+end subroutine
 subroutine pstsnv &
 !================
 
@@ -280,7 +280,7 @@ subroutine pstsnv &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nomvar           ! e  ! <-- ! nom de la variable associee                    !
 ! nomva2           ! e  ! <-- ! nom de la variable 2 associee                  !
@@ -298,7 +298,7 @@ implicit none
 !===============================================================================
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -307,7 +307,7 @@ implicit none
 
 character*32     nomvar, nomva2, nomva3
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj
 integer          lnmvar, lnmva2, lnmva3
@@ -374,5 +374,5 @@ endif
 
 return
 
-end
+end subroutine
 
diff --git a/src/base/cs_preprocessor_data.c b/src/base/cs_preprocessor_data.c
index e2e9d0f..55b70b9 100644
--- a/src/base/cs_preprocessor_data.c
+++ b/src/base/cs_preprocessor_data.c
@@ -34,10 +34,6 @@
 #include "cs_config.h"
 #endif
 
-/* To use Space-filling curve (Morton) for decomposition, define USE_SFC */
-#undef USE_SFC
-/* #define USE_SFC 1 */
-
 /*----------------------------------------------------------------------------
  * Standard C library headers
  *----------------------------------------------------------------------------*/
@@ -141,6 +137,8 @@ typedef struct {
  *  Global variables
  *============================================================================*/
 
+static cs_bool_t  _use_sfc = true;
+
 static _mesh_reader_t *_cs_glob_mesh_reader = NULL;
 
 /*=============================================================================
@@ -291,22 +289,27 @@ _set_block_ranges(cs_mesh_t       *mesh,
   mr->cell_bi = fvm_block_to_part_compute_sizes(rank_id,
                                                 n_ranks,
                                                 0,
+                                                0,
                                                 mesh->n_g_cells);
 
   mr->face_bi = fvm_block_to_part_compute_sizes(rank_id,
                                                 n_ranks,
                                                 0,
+                                                0,
                                                 mr->n_g_faces);
 
   mr->vertex_bi = fvm_block_to_part_compute_sizes(rank_id,
                                                   n_ranks,
                                                   0,
+                                                  0,
                                                   mesh->n_g_vertices);
+
   for (i = 0; i < mr->n_perio; i++)
     mr->per_face_bi[i]
       = fvm_block_to_part_compute_sizes(rank_id,
                                         n_ranks,
                                         0,
+                                        0,
                                         mr->n_g_per_face_couples[i]);
 }
 
@@ -349,9 +352,11 @@ _read_cell_rank(cs_mesh_t       *mesh,
   /* Test if file exists */
 
   if (! bft_file_isreg(file_name)) {
-    bft_printf(_(" No \"%s\" file available;\n"
-                 "   an unoptimized domain partitioning will be used.\n"),
-               file_name);
+    bft_printf(_(" No \"%s\" file available;\n"), file_name);
+    if (_use_sfc == false)
+      bft_printf(_("   an unoptimized domain partitioning will be used.\n"));
+    else
+      bft_printf(_("   domain partitioning will use a space-filling curve.\n"));
     return;
   }
 
@@ -1278,8 +1283,6 @@ _extract_periodic_faces_l(cs_mesh_builder_t        *mb,
 
 #if defined(HAVE_MPI)
 
-#if defined(USE_SFC)
-
 /*----------------------------------------------------------------------------
  * Compute cell centers using minimal local data.
  *
@@ -1668,8 +1671,6 @@ _cell_rank_by_sfc(const _mesh_reader_t     *mr,
   cell_io_num = fvm_io_num_destroy(cell_io_num);
 }
 
-#endif /* defined(USE_SFC) */
-
 /*----------------------------------------------------------------------------
  * Organize data read by blocks in parallel and build most mesh structures.
  *
@@ -1722,8 +1723,7 @@ _decompose_data_g(cs_mesh_t          *mesh,
   if (mr->read_cell_rank != 0)
     use_cell_rank = 1;
 
-#if defined(USE_SFC)
-  else if (mr->read_cell_rank == 0) {
+  else if (_use_sfc == true && mr->read_cell_rank == 0) {
 
     fvm_lnum_t _n_cells = mr->cell_bi.gnum_range[1] - mr->cell_bi.gnum_range[0];
 
@@ -1733,7 +1733,6 @@ _decompose_data_g(cs_mesh_t          *mesh,
 
     use_cell_rank = 1;
   }
-#endif
 
   if (use_cell_rank != 0) {
 
@@ -2088,10 +2087,33 @@ _decompose_data_l(cs_mesh_t          *mesh,
 }
 
 /*============================================================================
- *  Public functions definition for API Fortran
+ *  Public functions definition for Fortran API
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
+ * Query or modification of the option for domain partitioning when no
+ * partitioning file is present.
+ *
+ * This function returns 1 or 2 according to the selected algorithm.
+ *
+ * Fortran interface :
+ *
+ * SUBROUTINE ALGDOM (IOPT)
+ * *****************
+ *
+ * INTEGER          IOPT        : <-> : Choice of the partitioning base
+ *                                        0: query
+ *                                        1: initial numbering
+ *                                        2: space-filling curve (default)
+ *----------------------------------------------------------------------------*/
+
+void
+CS_PROCF(algdom, ALGDOM)(cs_int_t  *iopt)
+{
+  *iopt = cs_preprocessor_data_part_choice(*iopt);
+}
+
+/*----------------------------------------------------------------------------
  * Receive messages from the pre-processor about the dimensions of mesh
  * parameters
  *
@@ -2107,14 +2129,12 @@ _decompose_data_l(cs_mesh_t          *mesh,
  * INTEGER          IPEROT      : <-- : Number of rotation periodicities
  *----------------------------------------------------------------------------*/
 
-void CS_PROCF(ledevi, LEDEVI)
-(
- cs_int_t   *ndim,
- cs_int_t   *nfml,
- cs_int_t   *nprfml,
- cs_int_t   *iperio,
- cs_int_t   *iperot
-)
+void
+CS_PROCF(ledevi, LEDEVI)(cs_int_t   *ndim,
+                         cs_int_t   *nfml,
+                         cs_int_t   *nprfml,
+                         cs_int_t   *iperio,
+                         cs_int_t   *iperot)
 {
   cs_int_t  i;
   cs_io_sec_header_t  header;
@@ -2122,13 +2142,32 @@ void CS_PROCF(ledevi, LEDEVI)
   fvm_gnum_t n_elts = 0;
   cs_bool_t  dim_read = false;
   cs_bool_t  end_read = false;
-  cs_io_t  *pp_in = cs_glob_pp_io;
+  cs_io_t  *pp_in = NULL;
   cs_mesh_t  *mesh = cs_glob_mesh;
   _mesh_reader_t *mr = NULL;
 
   const char  *unexpected_msg = N_("Message of type <%s> on <%s>\n"
                                    "unexpected or of incorrect size");
 
+  /* Initialize reading of Preprocessor output */
+
+#if defined(FVM_HAVE_MPI)
+  cs_glob_pp_io = cs_io_initialize("preprocessor_output",
+                                   "Face-based mesh definition, R0",
+                                   CS_IO_MODE_READ,
+                                   cs_glob_io_hints,
+                                   CS_IO_ECHO_OPEN_CLOSE,
+                                   cs_glob_mpi_comm);
+#else
+  cs_glob_pp_io = cs_io_initialize("preprocessor_output",
+                                   "Face-based mesh definition, R0",
+                                   CS_IO_MODE_READ,
+                                   CS_IO_ECHO_OPEN_CLOSE,
+                                   -1);
+#endif
+
+  pp_in = cs_glob_pp_io;
+
   /* Initialize parameter values */
 
   *ndim = 3;
@@ -2401,6 +2440,46 @@ void CS_PROCF(ledevi, LEDEVI)
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
+ * Query or modification of the option for domain partitioning when no
+ * partitioning file is present.
+ *
+ *  0 : query
+ *  1 : partition based on initial numbering
+ *  2 : partition based on space-filling curve (default)
+ *
+ * choice <-- of partitioning algorithm.
+ *
+ * returns:
+ *   1 or 2 according to the selected algorithm.
+ *----------------------------------------------------------------------------*/
+
+int
+cs_preprocessor_data_part_choice(int choice)
+{
+  int retval = 0;
+
+  if (choice < 0 || choice > 2)
+    bft_error(__FILE__, __LINE__,0,
+              _("The algorithm selection indicator for domain partitioning\n"
+                "can take the following values:\n"
+                "  1: partition based on initial numbering\n"
+                "  2: partition based on space-filling curve\n"
+                "and not %d."), choice);
+
+  if (choice == 1)
+    _use_sfc = false;
+  else if (choice == 2)
+    _use_sfc = true;
+
+  if (_use_sfc == true)
+    retval = 2;
+  else
+    retval = 1;
+
+  return retval;
+}
+
+/*----------------------------------------------------------------------------
  * Read pre-processor mesh data and finalize input.
  *
  * parameters:
diff --git a/src/base/cs_proxy_comm.c b/src/base/cs_proxy_comm.c
index 96b57ed..47d77ac 100644
--- a/src/base/cs_proxy_comm.c
+++ b/src/base/cs_proxy_comm.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/cs_restart.c b/src/base/cs_restart.c
index cdbca41..6ea7aaa 100644
--- a/src/base/cs_restart.c
+++ b/src/base/cs_restart.c
@@ -433,6 +433,7 @@ _read_ent_values(cs_restart_t        *r,
 
   bi = fvm_block_to_part_compute_sizes(cs_glob_rank_id,
                                        cs_glob_n_ranks,
+                                       0,
                                        cs_restart_def_buf_size / nbr_byte_ent,
                                        n_glob_ents);
 
@@ -523,6 +524,7 @@ _write_ent_values(const cs_restart_t  *r,
 
   bi = fvm_part_to_block_compute_sizes(cs_glob_rank_id,
                                        cs_glob_n_ranks,
+                                       0,
                                        cs_restart_def_buf_size / nbr_byte_ent,
                                        n_glob_ents);
 
@@ -885,23 +887,19 @@ void CS_PROCF (opnsui, OPNSUI)
   if (*ierror == CS_RESTART_SUCCES) {
 
     id = _new_restart_id();
-
     _restart_pointer[id] = cs_restart_create(bufname, restart_mode);
-  }
 
-  /* Free memory if necessary */
+    /* Return the position of the handle in the array
+     * (id + 1 to have a 1 to n numbering, more conventional in Fortran) */
 
-  cs_base_string_f_to_c_free(&bufname);
-
-  /*
-   * Return the position of the handle in the array
-   * (id + 1 to have a 1 to n numbering, more conventional in F77)
-  */
-
-  if (*ierror == CS_RESTART_SUCCES)
     *numsui = id + 1;
+  }
   else
     *numsui = -1;
+
+  /* Free memory if necessary */
+
+  cs_base_string_f_to_c_free(&bufname);
 }
 
 /*----------------------------------------------------------------------------
@@ -1532,10 +1530,12 @@ cs_restart_read_section(cs_restart_t  *restart,
 {
   double timing[2];
 
-  cs_int_t   n_glob_ents, n_ents;
+  cs_int_t   n_ents;
+  fvm_gnum_t n_glob_ents;
+
   const fvm_gnum_t  *ent_global_num;
 
-  size_t rec_id;
+  size_t rec_id, rec_id_tmp;
   cs_io_sec_header_t header;
 
   cs_int_t _n_location_vals = n_location_vals;
@@ -1557,12 +1557,20 @@ cs_restart_read_section(cs_restart_t  *restart,
   }
 
   else {
-    if (location_id < 0 || location_id > (int)(restart->n_locations))
-      return CS_RESTART_ERR_LOCATION;
-    if (   (restart->location[location_id-1]).n_glob_ents_f
-        != (restart->location[location_id-1]).n_glob_ents)
+    if (location_id < 0 || location_id > (int)(restart->n_locations)) {
+      bft_printf(_("  %s: location id %d for \"%s\" does not exist.\n"),
+                 restart->name, location_id, sec_name);
       return CS_RESTART_ERR_LOCATION;
+    }
     n_glob_ents = (restart->location[location_id-1]).n_glob_ents;
+    if ((restart->location[location_id-1]).n_glob_ents_f != n_glob_ents) {
+      bft_printf(_("  %s: location id %d for \"%s\" has "
+                   "size %lu, but %lu is expected.\n"),
+                 restart->name, location_id, sec_name,
+                 (unsigned long)(restart->location[location_id-1]).n_glob_ents_f,
+                 (unsigned long)n_glob_ents);
+      return CS_RESTART_ERR_LOCATION;
+    }
     n_ents  = (restart->location[location_id-1]).n_ents;
     ent_global_num = (restart->location[location_id-1]).ent_global_num;
   }
@@ -1577,8 +1585,11 @@ cs_restart_read_section(cs_restart_t  *restart,
 
   /* If the record was not found */
 
-  if (rec_id >= index_size)
+  if (rec_id >= index_size) {
+    bft_printf(_("  %s: section \"%s\" not present.\n"),
+               restart->name, sec_name);
     return CS_RESTART_ERR_EXISTS;
+  }
 
   /*
     If the location does not fit: we search for a location of same
@@ -1589,6 +1600,7 @@ cs_restart_read_section(cs_restart_t  *restart,
 
   if (header.location_id != (size_t)location_id) {
 
+    rec_id_tmp = rec_id;
     rec_id++;
 
     while (rec_id < index_size) {
@@ -1599,23 +1611,39 @@ cs_restart_read_section(cs_restart_t  *restart,
       rec_id++;
     }
 
-    if (rec_id >= index_size)
+    if (rec_id >= index_size) {
+      header = cs_io_get_indexed_sec_header(restart->fh, rec_id_tmp);
+      bft_printf(_("  %s: section \"%s\" at location id %d but not at %d.\n"),
+                 restart->name, sec_name, header.location_id, location_id);
       return CS_RESTART_ERR_LOCATION;
+    }
   }
 
   /* If the number of values per location does not match */
 
-  if (   (   header.location_id > 0
-          && header.n_location_vals != (size_t)n_location_vals)
-      || (   header.location_id == 0 && header.n_vals != n_ents))
+  if (   header.location_id > 0
+      && header.n_location_vals != (size_t)n_location_vals) {
+    bft_printf(_("  %s: section \"%s\" has %d values per location and "
+                 " not %d.\n"),
+               restart->name, sec_name,
+               (int)header.n_location_vals, (int)n_location_vals);
+    return CS_RESTART_ERR_N_VALS;
+  }
+  else if (header.location_id == 0 && header.n_vals != n_ents) {
+    bft_printf(_("  %s: section \"%s\" has %d values and not %d.\n"),
+               restart->name, sec_name, (int)header.n_vals, (int)n_ents);
     return CS_RESTART_ERR_N_VALS;
+  }
 
   /* If the type of value does not match */
 
   if (header.elt_type == FVM_INT32 || header.elt_type == FVM_INT64) {
     cs_io_set_fvm_lnum(&header, restart->fh);
-    if (val_type != CS_TYPE_cs_int_t)
+    if (val_type != CS_TYPE_cs_int_t) {
+      bft_printf(_("  %s: section \"%s\" is not of integer type.\n"),
+                 restart->name, sec_name);
       return CS_RESTART_ERR_VAL_TYPE;
+    }
   }
   else if (header.elt_type == FVM_FLOAT || header.elt_type == FVM_DOUBLE) {
     if (sizeof(cs_real_t) != fvm_datatype_size[header.elt_type]) {
@@ -1624,8 +1652,11 @@ cs_restart_read_section(cs_restart_t  *restart,
       else
         header.elt_type = FVM_DOUBLE;
     }
-    if (val_type != CS_TYPE_cs_real_t)
+    if (val_type != CS_TYPE_cs_real_t) {
+      bft_printf(_("  %s: section \"%s\" is not of floating-point type.\n"),
+                 restart->name, sec_name);
       return CS_RESTART_ERR_VAL_TYPE;
+    }
   }
 
   /* Now set position in file to read data */
@@ -1696,7 +1727,7 @@ cs_restart_write_section(cs_restart_t  *restart,
   double timing[2];
 
   cs_int_t         n_tot_vals, n_glob_ents, n_ents;
-  fvm_datatype_t   elt_type;
+  fvm_datatype_t   elt_type = FVM_DATATYPE_NULL;
 
   const fvm_gnum_t  *ent_global_num;
 
diff --git a/src/base/cs_sat_coupling.c b/src/base/cs_sat_coupling.c
index 226e94f..40cc965 100644
--- a/src/base/cs_sat_coupling.c
+++ b/src/base/cs_sat_coupling.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -66,9 +66,11 @@
  *----------------------------------------------------------------------------*/
 
 #include "cs_base.h"
+#include "cs_coupling.h"
 #include "cs_mesh.h"
 #include "cs_mesh_quantities.h"
 #include "cs_mesh_connect.h"
+#include "cs_selector.h"
 
 /*----------------------------------------------------------------------------
  *  Header for the current file
@@ -84,13 +86,38 @@ BEGIN_C_DECLS
  * Local Structure Definitions
  *============================================================================*/
 
+/* Structure associated with Code_Saturne coupling */
+
+typedef struct {
+
+  int      match_id;        /* Id of matched application, -1 initially */
+  int      app_num;         /* Application number, or -1 */
+  char    *app_name;        /* Application name, or -1 */
+  char    *face_cpl_sel_c;  /* Face selection criteria */
+  char    *cell_cpl_sel_c;  /* Cell selection criteria */
+  char    *face_sup_sel_c;  /* Face selection criteria */
+  char    *cell_sup_sel_c;  /* Cell selection criteria */
+  int      verbosity;       /* Verbosity level */
+
+} _cs_sat_coupling_builder_t;
+
+
 struct _cs_sat_coupling_t {
 
+  int                      sat_num;  /* Application number, or -1 */
+  char                    *sat_name; /* Application name, or -1 */
+
+  char                    *face_cpl_sel; /* Face selection criteria */
+  char                    *cell_cpl_sel; /* Face selection criteria */
+  char                    *face_sup_sel; /* Face selection criteria */
+  char                    *cell_sup_sel; /* Face selection criteria */
+
   fvm_locator_t   *localis_cel;  /* Locator associated with cells */
   fvm_locator_t   *localis_fbr;  /* Locator associated with boundary faces */
 
   cs_int_t         nbr_cel_sup;  /* Number of associated cell locations */
   cs_int_t         nbr_fbr_sup;  /* Number of associated face locations */
+
   fvm_nodal_t     *cells_sup;    /* Local cells at which distant values are
                                     interpolated*/
   fvm_nodal_t     *faces_sup;    /* Local faces at which distant values are
@@ -102,12 +129,16 @@ struct _cs_sat_coupling_t {
   cs_real_t       *distant_pond_fbr; /* Distant weighting coefficient */
   cs_real_t       *local_pond_fbr;   /* Local weighting coefficient */
 
+  int              verbosity; /* Verbosity level */
+
+  /* Communication-related members */
+
 #if defined(HAVE_MPI)
 
-  MPI_Comm         comm;         /* Associated MPI communicator */
+  MPI_Comm         comm;           /* Associated MPI communicator */
 
-  cs_int_t         n_dist_ranks;    /* Number of associated distant ranks */
-  cs_int_t         dist_root_rank;  /* First associated distant rank */
+  int              n_sat_ranks;    /* Number of associated Code_Saturne ranks */
+  int              sat_root_rank;  /* First associated Code_Saturne rank */
 
 #endif
 
@@ -119,151 +150,391 @@ struct _cs_sat_coupling_t {
 
 /* Array of couplings */
 
-static int                  cs_glob_nbr_couplages = 0;
-static int                  cs_glob_nbr_couplages_max = 0;
-static cs_sat_coupling_t  **cs_glob_couplages = NULL;
+static int _cs_glob_n_sat_cp = -1;
+
+static int                         _sat_coupling_builder_size = 0;
+static _cs_sat_coupling_builder_t *_sat_coupling_builder = NULL;
+
+static int                  cs_glob_sat_n_couplings = 0;
+static cs_sat_coupling_t  **cs_glob_sat_couplings = NULL;
 
 /*============================================================================
  * Private function definitions
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
- * Create a coupling.
- *
- * Couplings are allowed either with process totally distinct from the
- * application communicator (cs_glob_mpi_comm), or within this same
- * communicator.
+ * Remove matched builder entries from the coupling builder.
+ *----------------------------------------------------------------------------*/
+
+static void
+_remove_matched_builder_entries(void)
+{
+  int i;
+  int n_unmatched_entries = 0;
+
+  /* First, free arrays associated with marked entries */
+
+  for (i = 0; i < _sat_coupling_builder_size; i++) {
+
+    _cs_sat_coupling_builder_t *scb = _sat_coupling_builder + i;
+
+    if (scb->match_id > -1) {
+      if (scb->face_cpl_sel_c != NULL) BFT_FREE(scb->face_cpl_sel_c);
+      if (scb->cell_cpl_sel_c != NULL) BFT_FREE(scb->cell_cpl_sel_c);
+      if (scb->face_sup_sel_c != NULL) BFT_FREE(scb->face_sup_sel_c);
+      if (scb->cell_sup_sel_c != NULL) BFT_FREE(scb->cell_sup_sel_c);
+      if (scb->app_name != NULL) BFT_FREE(scb->app_name);
+    }
+  }
+
+  /* Now, remove marked entries and resize */
+
+  for (i = 0; i < _sat_coupling_builder_size; i++) {
+    _cs_sat_coupling_builder_t *scb = _sat_coupling_builder + i;
+    if (scb->match_id < 0) {
+      *(_sat_coupling_builder + n_unmatched_entries) = *scb;
+      n_unmatched_entries += 1;
+    }
+  }
+
+  _sat_coupling_builder_size = n_unmatched_entries;
+
+  BFT_REALLOC(_sat_coupling_builder,
+              _sat_coupling_builder_size,
+              _cs_sat_coupling_builder_t);
+}
+
+/*----------------------------------------------------------------------------
+ * Print information on yet unmatched Code_Saturne couplings.
+ *----------------------------------------------------------------------------*/
+
+static void
+_print_all_unmatched_sat(void)
+{
+  int i;
+
+  const char empty_string[] = "";
+
+  /* Loop on defined Code_Saturne instances */
+
+  for (i = 0; i < _sat_coupling_builder_size; i++) {
+
+    _cs_sat_coupling_builder_t *scb = _sat_coupling_builder + i;
+
+    if (scb->match_id < 0) {
+
+      const char *local_name = empty_string;
+
+      if (scb->app_name != NULL)
+        local_name = scb->app_name;
+
+      bft_printf(_(" Code_Saturne coupling:\n"
+                   "   coupling id:              %d\n"
+                   "   local name:               \"%s\"\n"
+                   "   local number:             %d\n\n"),
+                 i, local_name, scb->app_num);
+    }
+  }
+
+  bft_printf_flush();
+}
+
+/*----------------------------------------------------------------------------
+ * Initialize communicator for Code_Saturne coupling
  *
  * parameters:
- *   root_rank <-- root rank of distant process leader in MPI_COMM_WORLD
- *
- * returns:
- *   pointer to new coupling structure
+ *   sat_coupling  <-> Code_Saturne coupling structure
+ *   coupling_id   <-- id of this coupling (for log file message)
  *----------------------------------------------------------------------------*/
 
-static cs_sat_coupling_t *
-_sat_coupling_create(cs_int_t  root_rank)
+static void
+_init_comm(cs_sat_coupling_t *sat_coupling,
+           int                coupling_id)
+
 {
+#if defined(HAVE_MPI)
+
   int  mpi_flag = 0;
-  int  n_dist_ranks = 0;
-  int  dist_root_rank = 0;
-  cs_sat_coupling_t  *couplage = NULL;
+  int local_range[2] = {-1, -1};
+  int distant_range[2] = {-1, -1};
 
-  const double  tolerance = 0.1;
+  MPI_Initialized(&mpi_flag);
+
+  if (mpi_flag == 0)
+    return;
+
+  bft_printf(_(" Code_Saturne coupling %d: initializing MPI communication ... "),
+             coupling_id);
+  bft_printf_flush();
+
+  fvm_coupling_mpi_intracomm_create(cs_glob_mpi_comm,
+                                    sat_coupling->sat_root_rank,
+                                    &(sat_coupling->comm),
+                                    local_range,
+                                    distant_range);
 
-  /* Create associated structure and MPI communicator */
+  bft_printf(_("[ok]\n"));
+  bft_printf(_("  Local ranks = [%d..%d], distant ranks = [%d..%d].\n\n"),
+             local_range[0], local_range[1] - 1,
+             distant_range[0], distant_range[1] - 1);
+  bft_printf_flush();
 
-  BFT_MALLOC(couplage, 1, cs_sat_coupling_t);
+  sat_coupling->n_sat_ranks = distant_range[1] - distant_range[0];
+  sat_coupling->sat_root_rank = distant_range[0];
+
+#endif
+}
 
 #if defined(HAVE_MPI)
 
-  MPI_Initialized(&mpi_flag);
+/*----------------------------------------------------------------------------
+ * Add a Code_Saturne coupling using MPI.
+ *
+ * parameters:
+ *   builder_id    <-- Code_Saturne application id in coupling builder
+ *   sat_root_rank <-- root rank associated with Code_Saturne
+ *   n_sat_ranks   <-- number of ranks associated with Code_Saturne
+ *----------------------------------------------------------------------------*/
 
-  if (mpi_flag == 0)
-    couplage->comm = MPI_COMM_NULL;
+static void
+_sat_add_mpi(int builder_id,
+             int sat_root_rank,
+             int n_sat_ranks)
+{
+  cs_sat_coupling_t *sat_coupling = NULL;
+  _cs_sat_coupling_builder_t *scb = _sat_coupling_builder + builder_id;
 
-  else {
+  /* Similarly to SYRTHES 4, we might be able to add
+     Code_Saturne couplings directly (without resorting
+     to a temporary builder), then match communications */
+
+  cs_sat_coupling_add(scb->face_cpl_sel_c,
+                      scb->cell_cpl_sel_c,
+                      scb->face_sup_sel_c,
+                      scb->cell_sup_sel_c,
+                      scb->app_num,
+                      scb->app_name,
+                      scb->verbosity);
+
+  sat_coupling = cs_sat_coupling_by_id(cs_sat_coupling_n_couplings() - 1);
 
-    int  n_loc_ranks, n_glob_ranks, r_glob, r_loc_min, r_loc_max;
-
-    /* Check that coupled processes overlap exactly or not at all */
-
-    MPI_Comm_rank(MPI_COMM_WORLD, &r_glob);
-    MPI_Comm_size(MPI_COMM_WORLD, &n_glob_ranks);
-    MPI_Comm_size(cs_glob_mpi_comm, &n_loc_ranks);
-
-    MPI_Allreduce(&r_glob, &r_loc_min, 1, MPI_INT, MPI_MIN,
-                  cs_glob_mpi_comm);
-    MPI_Allreduce(&r_glob, &r_loc_max, 1, MPI_INT, MPI_MAX,
-                  cs_glob_mpi_comm);
-
-    if (root_rank > r_loc_min && root_rank <= r_loc_max)
-      bft_error(__FILE__, __LINE__, 0,
-                _("Coupling definition is impossible: a distant root rank equal to\n"
-                  "%d is required, whereas the local group corresponds to\n"
-                  "rank %d to %d\n"),
-                (int)root_rank, r_loc_min, r_loc_max);
-
-    else if (root_rank < 0 || root_rank >= n_glob_ranks)
-      bft_error(__FILE__, __LINE__, 0,
-                _("Coupling definition is impossible: a distant root rank equal to\n"
-                  "%d is required, whereas the global ranks (MPI_COMM_WORLD)\n"
-                  "range from to 0 to %d\n"),
-                (int)root_rank, n_glob_ranks - 1);
-
-    /* Case for a coupling internal to the process group */
-
-    if (root_rank == r_loc_min) {
-      if (n_loc_ranks == 1)
-        couplage->comm = MPI_COMM_NULL;
-      else
-        couplage->comm = cs_glob_mpi_comm;
-      n_dist_ranks = n_loc_ranks;
+  sat_coupling->sat_root_rank = sat_root_rank;
+  sat_coupling->n_sat_ranks = n_sat_ranks;
+
+  _init_comm(sat_coupling,
+             builder_id);
+}
+
+/*----------------------------------------------------------------------------
+ * Print information on identified Code_Saturne couplings using MPI.
+ *
+ * This function requires coupling_builder information, and must thus
+ * be called before removing matched builder entries.
+ *----------------------------------------------------------------------------*/
+
+static void
+_print_all_mpi_sat(void)
+{
+  int i;
+
+  const fvm_coupling_mpi_world_t *mpi_apps = cs_coupling_get_mpi_apps();
+  const char empty_string[] = "";
+
+  /* Loop on defined Code_Saturne instances */
+
+  for (i = 0; i < _sat_coupling_builder_size; i++) {
+
+    _cs_sat_coupling_builder_t *scb = _sat_coupling_builder + i;
+
+    if (scb->match_id > -1) {
+
+      const char *local_name = empty_string;
+      const char *distant_name = empty_string;
+
+      const fvm_coupling_mpi_world_info_t
+        ai = fvm_coupling_mpi_world_get_info(mpi_apps, scb->match_id);
+
+      if (scb->app_name != NULL)
+        local_name = scb->app_name;
+      if (ai.app_name != NULL)
+        distant_name = ai.app_name;
+
+      bft_printf(_(" Code_Saturne coupling:\n"
+                   "   coupling id:              %d\n"
+                   "   local name:               \"%s\"\n"
+                   "   distant application name: \"%s\"\n"
+                   "   local number:             %d\n"
+                   "   MPI application number:   %d\n"
+                   "   MPI root rank:            %d\n"
+                   "   number of MPI ranks:      %d\n\n"),
+                 i, local_name, distant_name,
+                 scb->app_num, ai.app_num, ai.root_rank, ai.n_ranks);
     }
+  }
 
-    /* Case for a coupling external to the process group */
+  bft_printf_flush();
+}
+
+/*----------------------------------------------------------------------------
+ * Initialize MPI Code_Saturne couplings using MPI.
+ *
+ * This function may be called once all couplings have been defined,
+ * and it will match defined couplings with available applications.
+ *----------------------------------------------------------------------------*/
 
-    else {
+static void
+_init_all_mpi_sat(void)
+{
+  int i;
+
+  int n_apps = 0;
+  int n_matched_apps = 0;
+  int n_sat_apps = 0;
+  int sat_app_id = -1;
 
-      int local_range[2] = {-1, -1};
-      int distant_range[2] = {-1, -1};
+  const fvm_coupling_mpi_world_t *mpi_apps = cs_coupling_get_mpi_apps();
 
-      fvm_coupling_mpi_intracomm_create(cs_glob_mpi_comm,
-                                        root_rank,
-                                        &(couplage->comm),
-                                        local_range,
-                                        distant_range);
+  if (mpi_apps == NULL)
+    return;
 
-      bft_printf(_("coupling: local_ranks = [%d..%d], distant ranks = [%d..%d]\n"),
-                 local_range[0], local_range[1] - 1,
-                 distant_range[0], distant_range[1] - 1);
+  n_apps = fvm_coupling_mpi_world_n_apps(mpi_apps);
 
-      n_dist_ranks = distant_range[1] - distant_range[0];
-      dist_root_rank = distant_range[0];
+  /* First pass to count available Code_Saturne couplings */
+
+  for (i = 0; i < n_apps; i++) {
+    const fvm_coupling_mpi_world_info_t
+      ai = fvm_coupling_mpi_world_get_info(mpi_apps, i);
+    if (strncmp(ai.app_type, "Code_Saturne", 12) == 0) {
+      n_sat_apps += 1;
+      sat_app_id = i;
     }
+  }
+
+  /* In single-coupling mode, no identification necessary */
+
+  if (n_sat_apps == 2 && _sat_coupling_builder_size == 1) {
+
+    const int local_app_id = fvm_coupling_mpi_world_get_app_id(mpi_apps);
+
+    for (i = 0; i < n_apps; i++) {
+      const fvm_coupling_mpi_world_info_t
+        ai = fvm_coupling_mpi_world_get_info(mpi_apps, i);
+      if (   strncmp(ai.app_type, "Code_Saturne", 12) == 0
+          && ai.app_num != local_app_id) {
+        _sat_coupling_builder->match_id = i;
+      }
+    }
+
+    n_matched_apps += 1;
 
   }
 
-  couplage->n_dist_ranks = n_dist_ranks;
-  couplage->dist_root_rank = dist_root_rank;
+  /* In multiple-coupling mode, identification is necessary */
 
-#endif
+  else {
 
-  /* Creation of the localization structures */
+    int j;
+    fvm_coupling_mpi_world_info_t ai;
 
-#if defined(FVM_HAVE_MPI)
+    int *sat_appinfo = NULL;
 
-  couplage->localis_cel = fvm_locator_create(tolerance,
-                                             couplage->comm,
-                                             n_dist_ranks,
-                                             dist_root_rank);
+    /* First, build an array of matched/unmatched Code_Saturne applications, with
+       2 entries per instance: matched indicator, app_id */
 
-  couplage->localis_fbr = fvm_locator_create(tolerance,
-                                             couplage->comm,
-                                             n_dist_ranks,
-                                             dist_root_rank);
+    BFT_MALLOC(sat_appinfo, n_sat_apps*2, int);
 
-#else
+    n_sat_apps = 0;
 
-  couplage->localis_cel = fvm_locator_create(tolerance);
-  couplage->localis_fbr = fvm_locator_create(tolerance);
+    for (i = 0; i < n_apps; i++) {
+      ai = fvm_coupling_mpi_world_get_info(mpi_apps, i);
+      if (strncmp(ai.app_type, "Code_Saturne", 12) == 0) {
+        sat_appinfo[n_sat_apps*2] = 0;
+        sat_appinfo[n_sat_apps*2 + 1] = i;
+        n_sat_apps += 1;
+      }
+    }
 
-#endif
+    /* Loop on defined Code_Saturne instances */
 
-  couplage->nbr_cel_sup = 0;
-  couplage->nbr_fbr_sup = 0;
-  couplage->cells_sup = NULL;
-  couplage->faces_sup = NULL;
+    for (i = 0; i < _sat_coupling_builder_size; i++) {
 
-  couplage->distant_dist_fbr = NULL;
-  couplage->distant_of       = NULL;
-  couplage->local_of         = NULL;
-  couplage->distant_pond_fbr = NULL;
-  couplage->local_pond_fbr   = NULL;
+      _cs_sat_coupling_builder_t *scb = _sat_coupling_builder + i;
 
-  return couplage;
+      /* First loop on available Code_Saturne instances to match app_names */
+
+      if (scb->app_name != NULL) {
+
+        for (j = 0; j < n_sat_apps; j++) {
+
+          if (sat_appinfo[j*2] != 0) /* Consider only unmatched applications */
+            continue;
+
+          ai = fvm_coupling_mpi_world_get_info(mpi_apps, sat_appinfo[j*2 + 1]);
+          if (ai.app_name != NULL) {
+            if (strcmp(ai.app_name, scb->app_name) == 0) {
+              scb->match_id = sat_appinfo[j*2 + 1];
+              sat_appinfo[j*2] = i;
+              n_matched_apps += 1;
+              break;
+            }
+          }
+        }
+
+      }
+
+      /* Second loop on available Code_Saturne instances to match app_nums */
+
+      if (scb->match_id < 0 && scb->app_num > -1) {
+
+        for (j = 0; j < n_sat_apps; j++) {
+
+          if (sat_appinfo[j*2] != 0) /* Consider only unmatched applications */
+            continue;
+
+          ai = fvm_coupling_mpi_world_get_info(mpi_apps, sat_appinfo[j*2 + 1]);
+          if (ai.app_num == scb->app_num) {
+            scb->match_id = sat_appinfo[j*2 + 1];
+            sat_appinfo[j*2] = i;
+            n_matched_apps += 1;
+            break;
+          }
+        }
+      }
+
+    } /* End of loop on defined Code_Saturne instances */
+
+    BFT_FREE(sat_appinfo);
+
+  } /* End of test on single or multiple Code_Saturne matching algorithm */
+
+  /* Print matching info */
+
+  _print_all_mpi_sat();
+
+  /* Now initialize matched couplings */
+  /*----------------------------------*/
+
+  for (i = 0; i < _sat_coupling_builder_size; i++) {
+
+    _cs_sat_coupling_builder_t *scb = _sat_coupling_builder + i;
+
+    if (scb->match_id > -1) {
+      const fvm_coupling_mpi_world_info_t
+        ai = fvm_coupling_mpi_world_get_info(mpi_apps, scb->match_id);
+
+      if (strncmp(ai.app_type, "Code_Saturne", 12) == 0)
+        _sat_add_mpi(i, ai.root_rank, ai.n_ranks);
+    }
+
+  }
+
+  /* Cleanup */
+
+  _remove_matched_builder_entries();
 }
 
+#endif /* defined(HAVE_MPI) */
+
 /*----------------------------------------------------------------------------
  * Destroy a coupling structure
  *
@@ -523,8 +794,6 @@ _sat_coupling_interpolate(cs_sat_coupling_t  *couplage)
 
   for (ind = 0 ; ind < n_fbr_loc ; ind++) {
 
-    cs_real_t pond = couplage->local_pond_fbr[ind];
-
     ifac = lstfbr[ind] - 1;
     iel  = mesh->b_face_cells[ifac] - 1;
 
@@ -581,6 +850,95 @@ _sat_coupling_interpolate(cs_sat_coupling_t  *couplage)
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
+ * Define new Code_Saturne coupling.
+ *
+ * Fortran Interface:
+ *
+ * SUBROUTINE DEFSA1
+ * *****************
+ *
+ * INTEGER        saturne_app_num   : <-- : application number of coupled
+ *                                  :     : Code_Saturne instance, or -1
+ * CHARACTER*     saturne_name      : <-- : name of coupled Code_Saturne instance
+ * CHARACTER*     boundary_criteria : <-- : boundary face selection criteria,
+ *                                  :     : empty if no boundary coupling
+ * CHARACTER*     volume_criteria   : <-- : volume cell selection criteria,
+ *                                  :     : empty if no volume coupling
+ * INTEGER        verbosity         : <-- : verbosity level
+ * INTEGER        saturne_n_len     : <-- : length of saturne_name
+ * INTEGER        boundary_c_len    : <-- : length of boundary_criteria
+ * INTEGER        volume_c_len      : <-- : length of volume_criteria
+ *----------------------------------------------------------------------------*/
+
+void CS_PROCF(defsa1, DEFSA1)
+(
+ cs_int_t    *saturne_app_num,
+ const char  *saturne_name,
+ const char  *volume_sup_criteria,
+ const char  *boundary_sup_criteria,
+ const char  *volume_cpl_criteria,
+ const char  *boundary_cpl_criteria,
+ cs_int_t    *saturne_n_len,
+ cs_int_t    *volume_sup_c_len,
+ cs_int_t    *boundary_sup_c_len,
+ cs_int_t    *volume_cpl_c_len,
+ cs_int_t    *boundary_cpl_c_len,
+ cs_int_t    *verbosity
+ CS_ARGF_SUPP_CHAINE
+)
+{
+  char *_saturne_name = NULL;
+  char *_boundary_cpl_criteria = NULL, *_volume_cpl_criteria = NULL;
+  char *_boundary_sup_criteria = NULL, *_volume_sup_criteria = NULL;
+
+  if (saturne_name != NULL && *saturne_n_len > 0)
+    _saturne_name = cs_base_string_f_to_c_create(saturne_name, *saturne_n_len);
+
+  if (boundary_cpl_criteria != NULL && *boundary_cpl_c_len > 0)
+    _boundary_cpl_criteria = cs_base_string_f_to_c_create(boundary_cpl_criteria,
+                                                          *boundary_cpl_c_len);
+  if (_boundary_cpl_criteria != NULL && strlen(_boundary_cpl_criteria) == 0)
+    cs_base_string_f_to_c_free(&_boundary_cpl_criteria);
+
+  if (volume_cpl_criteria != NULL && *volume_cpl_c_len > 0)
+    _volume_cpl_criteria = cs_base_string_f_to_c_create(volume_cpl_criteria,
+                                                        *volume_cpl_c_len);
+  if (_volume_cpl_criteria != NULL && strlen(_volume_cpl_criteria) == 0)
+    cs_base_string_f_to_c_free(&_volume_cpl_criteria);
+
+  if (boundary_sup_criteria != NULL && *boundary_sup_c_len > 0)
+    _boundary_sup_criteria = cs_base_string_f_to_c_create(boundary_sup_criteria,
+                                                          *boundary_sup_c_len);
+  if (_boundary_sup_criteria != NULL && strlen(_boundary_sup_criteria) == 0)
+    cs_base_string_f_to_c_free(&_boundary_sup_criteria);
+
+  if (volume_sup_criteria != NULL && *volume_sup_c_len > 0)
+    _volume_sup_criteria = cs_base_string_f_to_c_create(volume_sup_criteria,
+                                                        *volume_sup_c_len);
+  if (_volume_sup_criteria != NULL && strlen(_volume_sup_criteria) == 0)
+    cs_base_string_f_to_c_free(&_volume_sup_criteria);
+
+  cs_sat_coupling_define(*saturne_app_num,
+                         _saturne_name,
+                         _boundary_cpl_criteria,
+                         _volume_cpl_criteria,
+                         _boundary_sup_criteria,
+                         _volume_sup_criteria,
+                         *verbosity);
+
+  if (_saturne_name != NULL)
+    cs_base_string_f_to_c_free(&_saturne_name);
+  if (_boundary_cpl_criteria != NULL)
+    cs_base_string_f_to_c_free(&_boundary_cpl_criteria);
+  if (_volume_cpl_criteria != NULL)
+    cs_base_string_f_to_c_free(&_volume_cpl_criteria);
+  if (_boundary_sup_criteria != NULL)
+    cs_base_string_f_to_c_free(&_boundary_sup_criteria);
+  if (_volume_sup_criteria != NULL)
+    cs_base_string_f_to_c_free(&_volume_sup_criteria);
+}
+
+/*----------------------------------------------------------------------------
  * Get number of code coupling
  *
  * Fortran interface:
@@ -593,12 +951,18 @@ _sat_coupling_interpolate(cs_sat_coupling_t  *couplage)
 
 void CS_PROCF (nbccpl, NBCCPL)
 (
- cs_int_t  *nbrcpl
+ fvm_lnum_t  *n_couplings
 )
 {
-  *nbrcpl = cs_glob_nbr_couplages;
-}
+  if (_cs_glob_n_sat_cp < 0) {
+    if (_sat_coupling_builder_size > 0)
+      _cs_glob_n_sat_cp = _sat_coupling_builder_size;
+    else
+      _cs_glob_n_sat_cp = cs_sat_coupling_n_couplings();
+  }
 
+  *n_couplings = _cs_glob_n_sat_cp;
+}
 
 /*----------------------------------------------------------------------------
  * Set the list of cells and boundary faces associated to a coupling
@@ -619,70 +983,90 @@ void CS_PROCF (nbccpl, NBCCPL)
  *
  * Fortran interface:
  *
- * SUBROUTINE DEFCPL
+ * SUBROUTINE DEFLOC
  * *****************
  *
  * INTEGER          NUMCPL         : --> : coupling number
- * INTEGER          NCESUP         : --> : number of "support" cells
- * INTEGER          NFBSUP         : --> : number of "support" boundary faces
- * INTEGER          NCECPL         : --> : number of coupled cells
- * INTEGER          NFBCPL         : --> : number of coupled boundary faces
- * INTEGER          LCESUP(NCESUP) : <-> : list of "support" cells
- * INTEGER          LFBSUP(NFBSUP) : <-> : list of "support" boundary faces
- * INTEGER          LCECPL(NCECPL) : --> : list of coupled cells
- * INTEGER          LFBCPL(NFBCPL) : --> : list of coupled boundary faces
  *----------------------------------------------------------------------------*/
 
-void CS_PROCF (defcpl, DEFCPL)
+void CS_PROCF (defloc, DEFLOC)
 (
- const cs_int_t  *numcpl,
- const cs_int_t  *ncesup,
- const cs_int_t  *nfbsup,
- const cs_int_t  *ncecpl,
- const cs_int_t  *nfbcpl,
-       cs_int_t   lcesup[],
-       cs_int_t   lfbsup[],
- const cs_int_t   lcecpl[],
- const cs_int_t   lfbcpl[]
+ const cs_int_t  *numcpl
 )
 {
   cs_int_t  ind;
+  cs_int_t  nbr_fbr_cpl, nbr_cel_cpl;
 
   int  indic_glob[2] = {0, 0};
   int  indic_loc[2] = {0, 0};
 
+  char coupled_mesh_name[64];
+  fvm_lnum_t *elt_list = NULL;
   cs_sat_coupling_t  *coupl = NULL;
   fvm_nodal_t  *support_fbr = NULL;
   cs_mesh_quantities_t  *mesh_quantities = cs_glob_mesh_quantities;
 
+  const double tolerance = 0.1;
+
   /* Initializations and verifications */
 
-  if (*numcpl < 1 || *numcpl > cs_glob_nbr_couplages)
+  if (*numcpl < 1 || *numcpl > cs_glob_sat_n_couplings)
     bft_error(__FILE__, __LINE__, 0,
               _("Impossible coupling number %d; there are %d couplings"),
-              *numcpl, cs_glob_nbr_couplages);
+              *numcpl, cs_glob_sat_n_couplings);
   else
-    coupl = cs_glob_couplages[*numcpl - 1];
+    coupl = cs_glob_sat_couplings[*numcpl - 1];
 
   /* Removing the connectivity and localization informations in case of
      coupling update */
 
-  if (coupl->cells_sup != NULL)
-    fvm_nodal_destroy(coupl->cells_sup);
-  if (coupl->faces_sup != NULL)
-    fvm_nodal_destroy(coupl->faces_sup);
+  if (coupl->cells_sup != NULL) fvm_nodal_destroy(coupl->cells_sup);
+  if (coupl->faces_sup != NULL) fvm_nodal_destroy(coupl->faces_sup);
 
   /* Create the local lists */
 
-  coupl->nbr_cel_sup = *ncesup;
-  coupl->nbr_fbr_sup = *nfbsup;
+  if (coupl->cell_sup_sel != NULL) {
+
+    sprintf(coupled_mesh_name, _("coupled_cells_%d"), *numcpl);
+
+    BFT_MALLOC(elt_list, cs_glob_mesh->n_cells, fvm_lnum_t);
+
+    cs_selector_get_cell_list(coupl->cell_sup_sel,
+                              &(coupl->nbr_cel_sup),
+                              elt_list);
+
+    coupl->cells_sup = cs_mesh_connect_cells_to_nodal(cs_glob_mesh,
+                                                      coupled_mesh_name,
+                                                      coupl->nbr_cel_sup,
+                                                      elt_list);
+
+    BFT_FREE(elt_list);
+
+  }
+
+  if (coupl->face_sup_sel != NULL) {
+
+    sprintf(coupled_mesh_name, _("coupled_faces_%d"), *numcpl);
+
+    BFT_MALLOC(elt_list, cs_glob_mesh->n_b_faces, fvm_lnum_t);
+
+    cs_selector_get_b_face_list(coupl->face_sup_sel,
+                                &(coupl->nbr_fbr_sup),
+                                elt_list);
+
+    coupl->faces_sup = cs_mesh_connect_faces_to_nodal(cs_glob_mesh,
+                                                      coupled_mesh_name,
+                                                      0,
+                                                      coupl->nbr_fbr_sup,
+                                                      NULL,
+                                                      elt_list);
+
+    BFT_FREE(elt_list);
 
-  /* Create the corresponding FVM structures */
+  }
 
-  if (*ncesup > 0)
-    indic_loc[0] = 1;
-  if (*nfbsup > 0)
-    indic_loc[1] = 1;
+  if (coupl->nbr_cel_sup > 0) indic_loc[0] = 1;
+  if (coupl->nbr_fbr_sup > 0) indic_loc[1] = 1;
 
   for (ind = 0 ; ind < 2 ; ind++)
     indic_glob[ind] = indic_loc[ind];
@@ -693,42 +1077,74 @@ void CS_PROCF (defcpl, DEFCPL)
                    cs_glob_mpi_comm);
 #endif
 
-  if (indic_glob[0] > 0)
-    coupl->cells_sup = cs_mesh_connect_cells_to_nodal(cs_glob_mesh,
-                                                      "coupled_cells",
-                                                      *ncesup,
-                                                      lcesup);
-  if (indic_glob[1] > 0)
-    coupl->faces_sup = cs_mesh_connect_faces_to_nodal(cs_glob_mesh,
-                                                      "coupled_boundary_faces",
-                                                      0,
-                                                      *nfbsup,
-                                                      NULL,
-                                                      lfbsup);
+  /* Build and initialize associated locator */
+
+#if defined(FVM_HAVE_MPI)
+
+  coupl->localis_cel = fvm_locator_create(tolerance,
+                                          coupl->comm,
+                                          coupl->n_sat_ranks,
+                                          coupl->sat_root_rank);
+
+  coupl->localis_fbr = fvm_locator_create(tolerance,
+                                          coupl->comm,
+                                          coupl->n_sat_ranks,
+                                          coupl->sat_root_rank);
+
+#else
+
+  coupl->localis_cel = fvm_locator_create(tolerance);
+  coupl->localis_fbr = fvm_locator_create(tolerance);
+
+#endif
 
   /* Initialization of the distant point localization */
 
-  fvm_locator_set_nodal(coupl->localis_cel,
-                        coupl->cells_sup,
-                        1,
-                        3,
-                        *ncecpl,
-                        lcecpl,
-                        mesh_quantities->cell_cen);
+  if (coupl->cell_cpl_sel != NULL) {
 
-  if (indic_glob[1] > 0)
-    support_fbr = coupl->faces_sup;
-  else
-    support_fbr = coupl->cells_sup;
+    BFT_MALLOC(elt_list, cs_glob_mesh->n_cells, fvm_lnum_t);
+
+    cs_selector_get_cell_list(coupl->cell_cpl_sel,
+                              &nbr_cel_cpl,
+                              elt_list);
 
-  fvm_locator_set_nodal(coupl->localis_fbr,
-                        support_fbr,
-                        1,
-                        3,
-                        *nfbcpl,
-                        lfbcpl,
-                        mesh_quantities->b_face_cog);
+    fvm_locator_set_nodal(coupl->localis_cel,
+                          coupl->cells_sup,
+                          1,
+                          3,
+                          nbr_cel_cpl,
+                          elt_list,
+                          mesh_quantities->cell_cen);
 
+    BFT_FREE(elt_list);
+
+  }
+
+
+  if (coupl->face_cpl_sel != NULL) {
+
+    if (indic_glob[1] > 0)
+      support_fbr = coupl->faces_sup;
+    else
+      support_fbr = coupl->cells_sup;
+
+    BFT_MALLOC(elt_list, cs_glob_mesh->n_b_faces, fvm_lnum_t);
+
+    cs_selector_get_b_face_list(coupl->face_cpl_sel,
+                                &nbr_fbr_cpl,
+                                elt_list);
+
+    fvm_locator_set_nodal(coupl->localis_fbr,
+                          support_fbr,
+                          1,
+                          3,
+                          nbr_fbr_cpl,
+                          elt_list,
+                          mesh_quantities->b_face_cog);
+
+    BFT_FREE(elt_list);
+
+  }
 
   /* Computed some quantities needed for a centred-like interpolation */
 
@@ -764,7 +1180,6 @@ void CS_PROCF (defcpl, DEFCPL)
   fvm_locator_dump(coupl->localis_cel);
   fvm_locator_dump(coupl->localis_fbr);
 #endif
-
 }
 
 /*----------------------------------------------------------------------------
@@ -802,12 +1217,12 @@ void CS_PROCF (nbecpl, NBECPL)
 
   /* Initializations and verifications */
 
-  if (*numcpl < 1 || *numcpl > cs_glob_nbr_couplages)
+  if (*numcpl < 1 || *numcpl > cs_glob_sat_n_couplings)
     bft_error(__FILE__, __LINE__, 0,
               _("Impossible coupling number %d; there are %d couplings"),
-              *numcpl, cs_glob_nbr_couplages);
+              *numcpl, cs_glob_sat_n_couplings);
   else
-    coupl = cs_glob_couplages[*numcpl - 1];
+    coupl = cs_glob_sat_couplings[*numcpl - 1];
 
   *ncesup = coupl->nbr_cel_sup;
   *nfbsup = coupl->nbr_fbr_sup;
@@ -869,12 +1284,12 @@ void CS_PROCF (lelcpl, LELCPL)
 
   /* Initializations and verifications */
 
-  if (*numcpl < 1 || *numcpl > cs_glob_nbr_couplages)
+  if (*numcpl < 1 || *numcpl > cs_glob_sat_n_couplings)
     bft_error(__FILE__, __LINE__, 0,
               _("Impossible coupling number %d; there are %d couplings"),
-              *numcpl, cs_glob_nbr_couplages);
+              *numcpl, cs_glob_sat_n_couplings);
   else
-    coupl = cs_glob_couplages[*numcpl - 1];
+    coupl = cs_glob_sat_couplings[*numcpl - 1];
 
   if (coupl->localis_cel != NULL)
     _ncecpl = fvm_locator_get_n_interior(coupl->localis_cel);
@@ -944,12 +1359,12 @@ void CS_PROCF (lencpl, LENCPL)
 
   /* Initializations and verifications */
 
-  if (*numcpl < 1 || *numcpl > cs_glob_nbr_couplages)
+  if (*numcpl < 1 || *numcpl > cs_glob_sat_n_couplings)
     bft_error(__FILE__, __LINE__, 0,
               _("Impossible coupling number %d; there are %d couplings"),
-              *numcpl, cs_glob_nbr_couplages);
+              *numcpl, cs_glob_sat_n_couplings);
   else
-    coupl = cs_glob_couplages[*numcpl - 1];
+    coupl = cs_glob_sat_couplings[*numcpl - 1];
 
   if (coupl->localis_cel != NULL)
     _ncencp = fvm_locator_get_n_exterior(coupl->localis_cel);
@@ -1005,12 +1420,12 @@ void CS_PROCF (npdcpl, NPDCPL)
 
   /* Verifications */
 
-  if (*numcpl < 1 || *numcpl > cs_glob_nbr_couplages)
+  if (*numcpl < 1 || *numcpl > cs_glob_sat_n_couplings)
     bft_error(__FILE__, __LINE__, 0,
               _("Impossible coupling number %d; there are %d couplings"),
-              *numcpl, cs_glob_nbr_couplages);
+              *numcpl, cs_glob_sat_n_couplings);
   else
-    coupl = cs_glob_couplages[*numcpl - 1];
+    coupl = cs_glob_sat_couplings[*numcpl - 1];
 
   /* Get the number of points */
 
@@ -1075,12 +1490,12 @@ void CS_PROCF (coocpl, COOCPL)
 
   /* Initializations and verifications */
 
-  if (*numcpl < 1 || *numcpl > cs_glob_nbr_couplages)
+  if (*numcpl < 1 || *numcpl > cs_glob_sat_n_couplings)
     bft_error(__FILE__, __LINE__, 0,
               _("Impossible coupling number %d; there are %d couplings"),
-              *numcpl, cs_glob_nbr_couplages);
+              *numcpl, cs_glob_sat_n_couplings);
   else
-    coupl = cs_glob_couplages[*numcpl - 1];
+    coupl = cs_glob_sat_couplings[*numcpl - 1];
 
   *ityloc = 0;
 
@@ -1173,12 +1588,12 @@ void CS_PROCF (pndcpl, PNDCPL)
 
   /* Initializations and verifications */
 
-  if (*numcpl < 1 || *numcpl > cs_glob_nbr_couplages)
+  if (*numcpl < 1 || *numcpl > cs_glob_sat_n_couplings)
     bft_error(__FILE__, __LINE__, 0,
               _("Impossible coupling number %d; there are %d couplings"),
-              *numcpl, cs_glob_nbr_couplages);
+              *numcpl, cs_glob_sat_n_couplings);
   else
-    coupl = cs_glob_couplages[*numcpl - 1];
+    coupl = cs_glob_sat_couplings[*numcpl - 1];
 
   if (*ityloc == 1)
     bft_error(__FILE__, __LINE__, 0,
@@ -1252,12 +1667,12 @@ void CS_PROCF (varcpl, VARCPL)
 
   /* Initializations and verifications */
 
-  if (*numcpl < 1 || *numcpl > cs_glob_nbr_couplages)
+  if (*numcpl < 1 || *numcpl > cs_glob_sat_n_couplings)
     bft_error(__FILE__, __LINE__, 0,
               _("Impossible coupling number %d; there are %d couplings"),
-              *numcpl, cs_glob_nbr_couplages);
+              *numcpl, cs_glob_sat_n_couplings);
   else
-    coupl = cs_glob_couplages[*numcpl - 1];
+    coupl = cs_glob_sat_couplings[*numcpl - 1];
 
   if (*ityvar == 1)
     localis = coupl->localis_cel;
@@ -1343,12 +1758,12 @@ void CS_PROCF (tbicpl, TBICPL)
 
   /* Initializations and verifications */
 
-  if (*numcpl < 1 || *numcpl > cs_glob_nbr_couplages)
+  if (*numcpl < 1 || *numcpl > cs_glob_sat_n_couplings)
     bft_error(__FILE__, __LINE__, 0,
               _("Impossible coupling number %d; there are %d couplings"),
-              *numcpl, cs_glob_nbr_couplages);
+              *numcpl, cs_glob_sat_n_couplings);
   else
-    coupl = cs_glob_couplages[*numcpl - 1];
+    coupl = cs_glob_sat_couplings[*numcpl - 1];
 
   if (coupl->comm != MPI_COMM_NULL) {
 
@@ -1357,8 +1772,8 @@ void CS_PROCF (tbicpl, TBICPL)
     /* Exchange between the groups master node */
 
     if (cs_glob_rank_id < 1)
-      MPI_Sendrecv(vardis, *nbrdis, CS_MPI_INT, coupl->dist_root_rank, 0,
-                   varloc, *nbrloc, CS_MPI_INT, coupl->dist_root_rank, 0,
+      MPI_Sendrecv(vardis, *nbrdis, CS_MPI_INT, coupl->sat_root_rank, 0,
+                   varloc, *nbrloc, CS_MPI_INT, coupl->sat_root_rank, 0,
                    coupl->comm, &status);
 
     /* Synchronization inside a group */
@@ -1419,12 +1834,12 @@ void CS_PROCF (tbrcpl, TBRCPL)
 
   /* Initializations and verifications */
 
-  if (*numcpl < 1 || *numcpl > cs_glob_nbr_couplages)
+  if (*numcpl < 1 || *numcpl > cs_glob_sat_n_couplings)
     bft_error(__FILE__, __LINE__, 0,
               _("Impossible coupling number %d; there are %d couplings"),
-              *numcpl, cs_glob_nbr_couplages);
+              *numcpl, cs_glob_sat_n_couplings);
   else
-    coupl = cs_glob_couplages[*numcpl - 1];
+    coupl = cs_glob_sat_couplings[*numcpl - 1];
 
   if (coupl->comm != MPI_COMM_NULL) {
 
@@ -1433,8 +1848,8 @@ void CS_PROCF (tbrcpl, TBRCPL)
     /* Exchange between the groups master node */
 
     if (cs_glob_rank_id < 1)
-      MPI_Sendrecv(vardis, *nbrdis, CS_MPI_REAL, coupl->dist_root_rank, 0,
-                   varloc, *nbrloc, CS_MPI_REAL, coupl->dist_root_rank, 0,
+      MPI_Sendrecv(vardis, *nbrdis, CS_MPI_REAL, coupl->sat_root_rank, 0,
+                   varloc, *nbrloc, CS_MPI_REAL, coupl->sat_root_rank, 0,
                    coupl->comm, &status);
 
     /* Synchronization inside a group */
@@ -1481,18 +1896,18 @@ void CS_PROCF (mxicpl, MXICPL)
 {
   cs_bool_t  distant = false;
 
-#if defined(_CS_HAVE_MPI)
+#if defined(HAVE_MPI)
 
   cs_sat_coupling_t  *coupl = NULL;
 
   /* Initializations and verifications */
 
-  if (*numcpl < 1 || *numcpl > cs_glob_nbr_couplages)
+  if (*numcpl < 1 || *numcpl > cs_glob_sat_n_couplings)
     bft_error(__FILE__, __LINE__, 0,
               _("Impossible coupling number %d; there are %d couplings"),
-              *numcpl, cs_glob_nbr_couplages);
+              *numcpl, cs_glob_sat_n_couplings);
   else
-    coupl = cs_glob_couplages[*numcpl - 1];
+    coupl = cs_glob_sat_couplings[*numcpl - 1];
 
   if (coupl->comm != MPI_COMM_NULL) {
 
@@ -1502,7 +1917,7 @@ void CS_PROCF (mxicpl, MXICPL)
 
   }
 
-#endif /* defined(_CS_HAVE_MPI) */
+#endif /* defined(HAVE_MPI) */
 
   if (distant == false) {
 
@@ -1516,48 +1931,240 @@ void CS_PROCF (mxicpl, MXICPL)
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
- * Add a coupling.
+ * Define new Code_Saturne coupling.
  *
- * Couplings are allowed either with process totally distinct from the
- * application communicator (cs_glob_mpi_comm), or within this same
- * communicator.
+ * arguments:
+ *   saturne_app_num   <-- number of Code_Saturne application, or -1
+ *   saturne_name      <-- name of Code_Saturne instance, or NULL
+ *   boundary_criteria <-- boundary face selection criteria, or NULL
+ *   volume_criteria   <-- volume cell selection criteria, or NULL
+ *   projection_axis   <-- 'x', 'y', or 'y' for 2D projection axis (case
+ *                         independent), or ' ' for standard 3D coupling
+ *   verbosity         <-- verbosity level
+ *----------------------------------------------------------------------------*/
+
+void
+cs_sat_coupling_define(int          saturne_app_num,
+                       const char  *saturne_name,
+                       const char  *boundary_cpl_criteria,
+                       const char  *volume_cpl_criteria,
+                       const char  *boundary_sup_criteria,
+                       const char  *volume_sup_criteria,
+                       int          verbosity)
+{
+  _cs_sat_coupling_builder_t *scb = NULL;
+
+  /* Add corresponding coupling to temporary Code_Saturne couplings array */
+
+  BFT_REALLOC(_sat_coupling_builder,
+              _sat_coupling_builder_size + 1,
+              _cs_sat_coupling_builder_t);
+
+  scb = &(_sat_coupling_builder[_sat_coupling_builder_size]);
+
+  scb->match_id = -1;
+
+  scb->app_num = saturne_app_num;
+
+  scb->app_name = NULL;
+  if (saturne_name != NULL) {
+    BFT_MALLOC(scb->app_name, strlen(saturne_name) + 1, char);
+    strcpy(scb->app_name, saturne_name);
+  }
+
+  scb->face_cpl_sel_c = NULL;
+  if (boundary_cpl_criteria != NULL) {
+    BFT_MALLOC(scb->face_cpl_sel_c, strlen(boundary_cpl_criteria) + 1, char);
+    strcpy(scb->face_cpl_sel_c, boundary_cpl_criteria);
+  }
+
+  scb->cell_cpl_sel_c = NULL;
+  if (volume_cpl_criteria != NULL) {
+    BFT_MALLOC(scb->cell_cpl_sel_c, strlen(volume_cpl_criteria) + 1, char);
+    strcpy(scb->cell_cpl_sel_c, volume_cpl_criteria);
+  }
+
+  scb->face_sup_sel_c = NULL;
+  if (boundary_sup_criteria != NULL) {
+    BFT_MALLOC(scb->face_sup_sel_c, strlen(boundary_sup_criteria) + 1, char);
+    strcpy(scb->face_sup_sel_c, boundary_sup_criteria);
+  }
+
+  scb->cell_sup_sel_c = NULL;
+  if (volume_sup_criteria != NULL) {
+    BFT_MALLOC(scb->cell_sup_sel_c, strlen(volume_sup_criteria) + 1, char);
+    strcpy(scb->cell_sup_sel_c, volume_sup_criteria);
+  }
+
+  scb->verbosity = verbosity;
+
+  _sat_coupling_builder_size += 1;
+}
+
+/*----------------------------------------------------------------------------
+ * Get number of Code_Saturne couplings.
+ *
+ * returns:
+ *   number of Code_Saturne couplings
+ *----------------------------------------------------------------------------*/
+
+fvm_lnum_t
+cs_sat_coupling_n_couplings(void)
+{
+  return cs_glob_sat_n_couplings;
+}
+
+/*----------------------------------------------------------------------------
+ * Get pointer to Code_Saturne coupling.
  *
  * parameters:
- *   rang_deb <-- root rank of distant process leader in MPI_COMM_WORLD
+ *   coupling_id <-- Id (0 to n-1) of Code_Saturne coupling
+ *
+ * returns:
+ *   pointer to Code_Saturne coupling structure
+ *----------------------------------------------------------------------------*/
+
+cs_sat_coupling_t *
+cs_sat_coupling_by_id(fvm_lnum_t coupling_id)
+{
+  cs_sat_coupling_t  *retval = NULL;
+
+  if (   coupling_id > -1
+      && coupling_id < cs_glob_sat_n_couplings)
+    retval = cs_glob_sat_couplings[coupling_id];
+
+  return retval;
+}
+
+/*----------------------------------------------------------------------------
+ * Initialize Code_Saturne couplings.
+ *
+ * This function may be called once all couplings have been defined,
+ * and it will match defined couplings with available applications.
  *----------------------------------------------------------------------------*/
 
 void
-cs_sat_coupling_add(cs_int_t   rang_deb)
+cs_sat_coupling_all_init(void)
 {
-  cs_sat_coupling_t  *couplage = NULL;
+  /* First try using MPI */
 
-  /* Create the associated structure */
+#if defined(HAVE_MPI)
 
-  couplage = _sat_coupling_create(rang_deb);
+  if (_sat_coupling_builder_size > 0)
+    _init_all_mpi_sat();
 
-  /* Increase the couplings global array if necessary */
+#endif
 
-  if (cs_glob_nbr_couplages == cs_glob_nbr_couplages_max) {
+  /* Print unmatched instances */
 
-    if (cs_glob_nbr_couplages_max == 0)
-      cs_glob_nbr_couplages_max = 2;
-    else
-      cs_glob_nbr_couplages_max *= 2;
+  if (_sat_coupling_builder_size > 0) {
+
+    bft_printf("Unmatched Code_Saturne couplings:\n"
+               "---------------------------------\n\n");
 
-    BFT_REALLOC(cs_glob_couplages,
-                cs_glob_nbr_couplages_max,
-                cs_sat_coupling_t *);
+    _print_all_unmatched_sat();
 
+    bft_error(__FILE__, __LINE__, 0,
+              _("At least 1 Code_Saturne coupling was defined for which\n"
+                "no communication with a Code_Saturne instance is possible."));
   }
+}
 
-  /* Associate the new coupling to the structure */
+/*----------------------------------------------------------------------------
+ * Create a sat_coupling_t structure.
+ *
+ * parameters:
+ *   ref_axis           <-- reference axis
+ *   face_sel_criterion <-- criterion for selection of boundary faces
+ *   cell_sel_criterion <-- criterion for selection of cells
+ *   sat_num            <-- Code_Saturne application number, or -1
+ *   sat_name           <-- Code_Saturne application name, or NULL
+ *   verbosity          <-- verbosity level
+ *----------------------------------------------------------------------------*/
+
+void
+cs_sat_coupling_add(const char  *face_cpl_sel_c,
+                    const char  *cell_cpl_sel_c,
+                    const char  *face_sup_sel_c,
+                    const char  *cell_sup_sel_c,
+                    int          sat_num,
+                    const char  *sat_name,
+                    int          verbosity)
+{
+  cs_sat_coupling_t *sat_coupling = NULL;
+
+  /* Allocate _cs_sat_coupling_t structure */
+
+  BFT_REALLOC(cs_glob_sat_couplings,
+              cs_glob_sat_n_couplings + 1, cs_sat_coupling_t*);
+  BFT_MALLOC(sat_coupling, 1, cs_sat_coupling_t);
+
+  sat_coupling->sat_num = sat_num;
+  sat_coupling->sat_name = NULL;
+
+  if (sat_name != NULL) {
+    BFT_MALLOC(sat_coupling->sat_name, strlen(sat_name) + 1, char);
+    strcpy(sat_coupling->sat_name, sat_name);
+  }
 
-  cs_glob_couplages[cs_glob_nbr_couplages] = couplage;
+  /* Selection criteria  */
 
-  cs_glob_nbr_couplages += 1;
+  sat_coupling->face_cpl_sel = NULL;
+  sat_coupling->cell_cpl_sel = NULL;
+  sat_coupling->face_sup_sel = NULL;
+  sat_coupling->cell_sup_sel = NULL;
+
+  if (face_cpl_sel_c != NULL) {
+    BFT_MALLOC(sat_coupling->face_cpl_sel, strlen(face_cpl_sel_c) + 1, char);
+    strcpy(sat_coupling->face_cpl_sel, face_cpl_sel_c);
+  }
+  if (cell_cpl_sel_c != NULL) {
+    BFT_MALLOC(sat_coupling->cell_cpl_sel, strlen(cell_cpl_sel_c) + 1, char);
+    strcpy(sat_coupling->cell_cpl_sel, cell_cpl_sel_c);
+  }
+
+  if (face_sup_sel_c != NULL) {
+    BFT_MALLOC(sat_coupling->face_sup_sel, strlen(face_sup_sel_c) + 1, char);
+    strcpy(sat_coupling->face_sup_sel, face_sup_sel_c);
+  }
+  if (cell_sup_sel_c != NULL) {
+    BFT_MALLOC(sat_coupling->cell_sup_sel, strlen(cell_sup_sel_c) + 1, char);
+    strcpy(sat_coupling->cell_sup_sel, cell_sup_sel_c);
+  }
+
+  sat_coupling->faces_sup = NULL;
+  sat_coupling->cells_sup = NULL;
+
+  sat_coupling->localis_fbr = NULL;
+  sat_coupling->localis_cel = NULL;
+
+  sat_coupling->nbr_fbr_sup = 0;
+  sat_coupling->nbr_cel_sup = 0;
+
+  sat_coupling->verbosity = verbosity;
+
+  /* Geometric quantities arrays for interpolation */
+
+  sat_coupling->distant_dist_fbr = NULL;
+  sat_coupling->distant_of = NULL;
+  sat_coupling->local_of = NULL;
+  sat_coupling->distant_pond_fbr = NULL;
+  sat_coupling->local_pond_fbr = NULL;
+
+  /* Initialize communicators */
+
+#if defined(HAVE_MPI)
+
+  sat_coupling->comm = MPI_COMM_NULL;
+  sat_coupling->n_sat_ranks = 0;
+  sat_coupling->sat_root_rank = -1;
+
+#endif
 
-  return;
+  /* Update coupling array and return */
 
+  cs_glob_sat_couplings[cs_glob_sat_n_couplings] = sat_coupling;
+  cs_glob_sat_n_couplings++;
 }
 
 /*----------------------------------------------------------------------------
@@ -1569,13 +2176,12 @@ cs_sat_coupling_all_finalize(void)
 {
   int  i;
 
-  for (i = 0 ; i < cs_glob_nbr_couplages ; i++)
-    _sat_coupling_destroy(cs_glob_couplages[i]);
+  for (i = 0 ; i < cs_glob_sat_n_couplings ; i++)
+    _sat_coupling_destroy(cs_glob_sat_couplings[i]);
 
-  BFT_FREE(cs_glob_couplages);
+  BFT_FREE(cs_glob_sat_couplings);
 
-  cs_glob_nbr_couplages = 0;
-  cs_glob_nbr_couplages_max = 0;
+  cs_glob_sat_n_couplings = 0;
 }
 
 /*----------------------------------------------------------------------------*/
diff --git a/src/base/cs_syr_f2c.f90 b/src/base/cs_sat_f2c.f90
similarity index 68%
copy from src/base/cs_syr_f2c.f90
copy to src/base/cs_sat_f2c.f90
index 3aa634b..f8e4633 100644
--- a/src/base/cs_syr_f2c.f90
+++ b/src/base/cs_sat_f2c.f90
@@ -25,31 +25,32 @@
 
 !-------------------------------------------------------------------------------
 
-subroutine defsyr &
+subroutine defsat &
 !================
 
- ( numsyr, nomsyr , cproj, critbo, critvl, iwarni )
+ ( numsat, nomsat, ccesup, cfbsup, ccecpl, cfbcpl, iwarni )
 
 !===============================================================================
 ! FONCTION :
 ! ----------
 
-!     DEFINITION DE COUPLAGE(S) AVEC LE CODE SYRTHES
+!     DEFINITION DE COUPLAGE(S) AVEC CODE_SATURNE
 
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! numsyr           ! a  ! <-- ! numero du cas syrthes associe                  !
-! nomsyr           ! a  ! <-- ! nom du cas syrthes associe                     !
-! cproj            ! c  ! <-- ! direction de projection (' ' pour              !
-!                  !    !     ! 3d, 'x', 'y', ou 'z' pour 2d)                  !
-! critbo           ! a  ! <-- ! critere de selection des faces de              !
+! numsat           ! a  ! <-- ! numero du cas saturne associe                  !
+! nomsat           ! a  ! <-- ! nom du cas satthes associe                     !
+! ccesup           ! a  ! <-- ! critere de selection des cellules              !
+!                  !    !     ! support (ou vide)                              !
+! cfbsup           ! a  ! <-- ! critere de selection des faces de              !
+!                  !    !     ! bord suppport (ou vide)                        !
+! ccecpl           ! a  ! <-- ! critere de selection des cellulces             !
+!                  !    !     ! couplees (ou vide)                             !
+! cfbcpl           ! a  ! <-- ! critere de selection des faces de              !
 !                  !    !     ! bord couplees (ou vide)                        !
-! critvl           ! a  ! <-- ! critere de selection des cellules              !
-!                  !    !     ! volumiques couplees (ou vide)                  !
-! iwarni           ! e  ! <-- ! niveau d'impression                            !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -62,33 +63,32 @@ subroutine defsyr &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
 
 ! Arguments
 
-character*(*) nomsyr, critbo, critvl
-character     cproj
-integer       numsyr, iwarni
+character*(*) nomsat, ccesup, cfbsup, ccecpl, cfbcpl
+integer       numsat, iwarni
 
 ! Variables locales
 
-integer       lnomsy, lcritb, lcritv
+integer       lnomsa, lccesu, lcfbsu, lccecp, lcfbcp
 
 !===============================================================================
 
-lnomsy = len(nomsyr)
-lcritb = len(critbo)
-lcritv = len(critvl)
+lnomsa = len(nomsat)
+lcfbcp = len(cfbcpl)
+lccecp = len(ccecpl)
+lcfbsu = len(cfbsup)
+lccesu = len(ccesup)
 
-call defsy1(numsyr, nomsyr, cproj,  critbo, critvl, iwarni,       &
+call defsa1(numsat, nomsat, ccesup, cfbsup, ccecpl, cfbcpl, &
 !==========
-            lnomsy, lcritb, lcritv)
+            lnomsa, lccesu, lcfbsu, lccecp, lcfbcp, iwarni)
 
 
 return
-
-end
-
+end subroutine
diff --git a/src/base/cs_selector.c b/src/base/cs_selector.c
index d6563fe..98a866d 100644
--- a/src/base/cs_selector.c
+++ b/src/base/cs_selector.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/cs_selector_f2c.f90 b/src/base/cs_selector_f2c.f90
index 071b150..357ea99 100644
--- a/src/base/cs_selector_f2c.f90
+++ b/src/base/cs_selector_f2c.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine getfbr &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! fstr             ! a  ! <-- ! chaine a interpreter                           !
 ! faces            ! e  !  <- ! faces selectionnees                            !
@@ -59,7 +59,7 @@ implicit none
 !===============================================================================
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -69,7 +69,7 @@ implicit none
 character*(*)    fstr
 integer      faces(*), facnb
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          lenstr
 
@@ -80,7 +80,7 @@ call csgfbr(fstr, lenstr, facnb, faces)
 
 return
 
-end
+end subroutine
 subroutine getcel &
 !=================
 
@@ -97,7 +97,7 @@ subroutine getcel &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! fstr             ! a  ! <-- ! chaine a interpreter                           !
 ! cells            ! e  !  <- ! faces selectionnees                            !
@@ -115,7 +115,7 @@ implicit none
 !===============================================================================
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -125,7 +125,7 @@ implicit none
 character*(*) fstr
 integer       cells(*), cellnb
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          lenstr
 
@@ -136,7 +136,7 @@ call csgcel(fstr, lenstr, cellnb, cells)
 
 return
 
-end
+end subroutine
 subroutine getfac &
 !=================
 
@@ -153,7 +153,7 @@ subroutine getfac &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! fstr             ! a  ! <-- ! chaine a interpreter                           !
 ! cells            ! e  !  <- ! faces selectionnees                            !
@@ -171,7 +171,7 @@ implicit none
 !===============================================================================
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -181,7 +181,7 @@ implicit none
 character*(*) fstr
 integer       faces(*), facnb
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          lenstr
 
@@ -192,4 +192,4 @@ call csgfac(fstr, lenstr, facnb, faces)
 
 return
 
-end
+end subroutine
diff --git a/src/base/cs_sles.c b/src/base/cs_sles.c
index 205e362..109790f 100644
--- a/src/base/cs_sles.c
+++ b/src/base/cs_sles.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -546,9 +546,7 @@ _dot_products_2(cs_int_t          n_elts,
 
   if (x1 == x2 || x1 == y2 || y1 == x2 || y1 == y2) {
 
-#if ((defined(__INTEL_COMPILER) && defined(__ia64__)) || defined(__uxpvp__))
-
-    /* Use temporary variables to help compiler optimize */
+    /* Use temporary variables to help some compilers optimize */
     double _s0 = 0.0, _s1 = 0.0;
     for (ii = 0; ii < n_elts; ii++) {
       _s0 += x1[ii] * y1[ii];
@@ -556,16 +554,6 @@ _dot_products_2(cs_int_t          n_elts,
     }
     s[0] = _s0; s[1] = _s1;
 
-#else
-
-    s[0] = 0.0; s[1] = 0.0;
-    for (ii = 0; ii < n_elts; ii++) {
-      s[0] += x1[ii] * y1[ii];
-      s[1] += x2[ii] * y2[ii];
-    }
-
-#endif
-
   }
   else {
 
@@ -1263,7 +1251,7 @@ _bi_cgstab(const char             *var_name,
   const char *sles_name;
   int cvg;
   cs_int_t  n_cols, n_rows, ii;
-  double  _epzero = EPZERO*EPZERO; /* smaller than epzero */
+  double  _epzero = 1.e-30; /* smaller than epzero */
   double  ro_0, ro_1, alpha, beta, betam1, gamma, omega, ukres0;
   double  residue;
   cs_real_t  *_aux_vectors;
@@ -1347,9 +1335,12 @@ _bi_cgstab(const char             *var_name,
        group dot products for new iteration's beta
        and previous iteration's residue to reduce total latency */
 
-    if (n_iter == 0)
+    if (n_iter == 0) {
+
       beta = _dot_product(n_rows, res0, rk);
+      residue = sqrt(beta);
 
+    }
     else {
 
       _dot_products_2(n_rows, res0, rk, rk, rk, &beta, &residue);
@@ -1360,6 +1351,7 @@ _bi_cgstab(const char             *var_name,
                               n_iter, residue, convergence);
       if (cvg != 0)
         break;
+
     }
 
     n_iter += 1;
@@ -1396,9 +1388,8 @@ _bi_cgstab(const char             *var_name,
 
     /* Compute pk */
 
-    for (ii = 0; ii < n_rows; ii++) {
+    for (ii = 0; ii < n_rows; ii++)
       pk[ii] = rk[ii] + omega*(pk[ii] - alpha*uk[ii]);
-    }
 
     /* Compute zk = c.pk */
 
diff --git a/src/base/cs_syr3_comm.c b/src/base/cs_syr3_comm.c
index 984a78c..2a4189d 100644
--- a/src/base/cs_syr3_comm.c
+++ b/src/base/cs_syr3_comm.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/cs_syr3_messages.c b/src/base/cs_syr3_messages.c
index ca7b4be..baa09a1 100644
--- a/src/base/cs_syr3_messages.c
+++ b/src/base/cs_syr3_messages.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/cs_syr4_coupling.c b/src/base/cs_syr4_coupling.c
index 2b9699b..80e3205 100644
--- a/src/base/cs_syr4_coupling.c
+++ b/src/base/cs_syr4_coupling.c
@@ -329,7 +329,6 @@ _create_coupled_ent(cs_syr4_coupling_t  *syr_coupling,
   cs_syr4_coupling_ent_t *coupling_ent = NULL;
 
   assert(syr_coupling != NULL);
-  assert(coupling_number > 0);
 
   /* Initialization */
 
@@ -1132,7 +1131,7 @@ cs_syr4_coupling_send_tf_hwall(cs_syr4_coupling_t  *syr_coupling,
 
   /* Prepare and send data */
 
-  BFT_MALLOC(send_var, coupling_ent->n_elts*2, double);
+  BFT_MALLOC(send_var, n_dist*2, double);
 
   for (ii = 0; ii < n_dist; ii++) {
     send_var[ii*2]     = tf[dist_loc[ii] - 1];
diff --git a/src/base/cs_syr_coupling.c b/src/base/cs_syr_coupling.c
index 9fb1aa2..064857f 100644
--- a/src/base/cs_syr_coupling.c
+++ b/src/base/cs_syr_coupling.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -92,7 +92,7 @@ BEGIN_C_DECLS
  * Local Structure Definitions
  *============================================================================*/
 
-/* Structure associated with Syrthes coupling */
+/* Structure associated with SYRTHES coupling */
 
 typedef struct {
 
@@ -102,7 +102,7 @@ typedef struct {
   int      app_num;     /* Application number, or -1 */
   char    *app_name;    /* Application name, or -1 */
   char    *face_sel_c;  /* Face selection criteria */
-  char    *cell_sel_c;  /* Face selection criteria */
+  char    *cell_sel_c;  /* Cell selection criteria */
   int      verbosity;   /* Verbosity level */
 
 } _cs_syr_coupling_builder_t;
diff --git a/src/base/cs_syr_f2c.f90 b/src/base/cs_syr_f2c.f90
index 3aa634b..1f543a5 100644
--- a/src/base/cs_syr_f2c.f90
+++ b/src/base/cs_syr_f2c.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,7 +39,7 @@ subroutine defsyr &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! numsyr           ! a  ! <-- ! numero du cas syrthes associe                  !
 ! nomsyr           ! a  ! <-- ! nom du cas syrthes associe                     !
@@ -62,7 +62,7 @@ subroutine defsyr &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -90,5 +90,5 @@ call defsy1(numsyr, nomsyr, cproj,  critbo, critvl, iwarni,       &
 
 return
 
-end
+end subroutine
 
diff --git a/src/base/cs_tpar1d.c b/src/base/cs_tpar1d.c
index fd6d51f..056665a 100644
--- a/src/base/cs_tpar1d.c
+++ b/src/base/cs_tpar1d.c
@@ -264,7 +264,7 @@ void CS_PROCF (mait1d,MAIT1D)
  *                         :     : interface
  *----------------------------------------------------------------------------*/
 
-void CS_PROCF (tpar1d,TPAR1D)
+void CS_PROCF (tpar1d, TPAR1D)
 (
  cs_int_t *ii,
  cs_int_t *icdcle,
@@ -285,8 +285,9 @@ void CS_PROCF (tpar1d,TPAR1D)
   cs_real_t h2; /* thermal exchange coefficient on T(1) */
   cs_real_t f3; /* thermal flux on Tfluide */
   cs_real_t a4; /* extrapolation coefficient for temperature4 */
-  cs_real_t h5; /* thermal exchange coefficient on T(n) */
-  cs_real_t f6; /* thermal flux on Text */
+
+  cs_real_t h5 = 0.; /* thermal exchange coefficient on T(n) */
+  cs_real_t f6 = 0.; /* thermal flux on Text */
 
   cs_real_t m;
 
diff --git a/src/base/cs_ventil.c b/src/base/cs_ventil.c
index 1764052..ecce660 100644
--- a/src/base/cs_ventil.c
+++ b/src/base/cs_ventil.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/csc2cl.f90 b/src/base/csc2cl.f90
index 66fb379..cfeb714 100644
--- a/src/base/csc2cl.f90
+++ b/src/base/csc2cl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine csc2cl                               &
+subroutine csc2cl &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -55,45 +55,36 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -107,38 +98,34 @@
 !                  !    !     !  prescrire une valeur de dirichlet en          !
 !                  !    !     !  prevision pour les scalaires k, eps,          !
 !                  !    !     !  scal en plus du neumann usuel                 !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -150,11 +137,11 @@
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -166,7 +153,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -221,7 +208,7 @@ double precision dofcpl(3,nfbcpl)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 
 integer          idebia, idebra
@@ -238,7 +225,7 @@ double precision xjp
 double precision xipf, yipf, zipf, ipf
 
 double precision xif, yif, zif, xopf, yopf, zopf
-double precision gradi
+double precision gradi, pondj, flumab
 
 !===============================================================================
 
@@ -293,66 +280,209 @@ do ivar = 1, nvcp
    w4     , w5     , w6     ,                                     &
    rdevel , rtuser , ra     )
 
+
+  ! For a specific face to face coupling, geometric assumptions are made
+
+  if (ifaccp.eq.1) then
+
+
+    do ipt = 1, nfbcpl
+
+      ifac = lfbcpl(ipt)
+      iel  = ifabor(ifac)
+
+!         Information de l'instance en cours interpol�e en I'
+      iii = idiipb-1+3*(ifac-1)
+      xiip = ra(iii+1)
+      yiip = ra(iii+2)
+      ziip = ra(iii+3)
+
+      xif = cdgfbo(1,ifac) -xyzcen(1,iel)
+      yif = cdgfbo(2,ifac) -xyzcen(2,iel)
+      zif = cdgfbo(3,ifac) -xyzcen(3,iel)
+
+      xipf = cdgfbo(1,ifac)-xiip - xyzcen(1,iel)
+      yipf = cdgfbo(2,ifac)-yiip - xyzcen(2,iel)
+      zipf = cdgfbo(3,ifac)-ziip - xyzcen(3,iel)
+
+      ipf = sqrt(xipf**2+yipf**2+zipf**2)
+
+
+      iii = idiipb-1+3*(ifac-1)
+      xiip = ra(iii+1)
+      yiip = ra(iii+2)
+      ziip = ra(iii+3)
+
+      xopf = dofcpl(1,ipt)
+      yopf = dofcpl(2,ipt)
+      zopf = dofcpl(3,ipt)
+
+      if (ivar.eq.ipr(1)) then
+
+! --- On veut imposer un dirichlet de pression de mani�re � conserver
+!     le gradient de pression � la travers�e du couplage et �tre consistant
+!     avec la r�solution du gradient de pression sur maillage orthogonal
+
+        xip = rtp(iel,ivar) + (w1(iel)*xiip + w2(iel)*yiip + w3(iel)*ziip)
+
+      else if (ivar.eq.iu(1).or.ivar.eq.iv(1).or.ivar.eq.iw(1)) then
+
+! --- Pour toutes les autres variables, on veut imposer un dirichlet
+!     en accord avec les flux convectifs au centre. On se laisse le choix
+!     entre UPWIND, SOLU et CENTRE. Seul le centr� respecte la diffusion
+!     des faces internes du somaine. Pour l'UPWIND et le SOLU, le d�centrement
+!     est r�alis� ici et plus dans bilsc2.F pour les faces coupl�es.
+
+! -- UPWIND
+
+!        xip =  rtp(iel,ivar)
+
+! -- SOLU
+
+!        xip =  rtp(iel,ivar) + (w1(iel)*xif + w2(iel)*yif + w3(iel)*zif)
+
+! -- CENTRE
+
+        xip =  rtp(iel,ivar) + w1(iel)*xiip + w2(iel)*yiip + w3(iel)*ziip
+
+      else
+
+! -- UPWIND
+
+!        xip =  rtp(iel,ivar)
+
+! -- SOLU
+
+!        xip =  rtp(iel,ivar) + (w1(iel)*xif + w2(iel)*yif + w3(iel)*zif)
+
+! -- CENTRE
+
+        xip =  rtp(iel,ivar) + (w1(iel)*xiip + w2(iel)*yiip + w3(iel)*ziip)
+
+      endif
+
+! -- on a besoin de alpha_ij pour interpolation centr�e et du flumab
+!    pour le d�centrement
+
+      pondj = pndcpl(ipt)
+      flumab = propfb(ifac,ipprob(ifluma(iu(1))))
+
+!         Informations recues de l'instance distante en J'/O'
+      xjp = rvcpfb(ipt,ivar)
+
+
+      do iphas = 1, nphas
+        itypfb(ifac,iphas)  = icscpl
+      enddo
+
+      if (ivar.eq.ipr(1)) then
+
+        icodcl(ifac,ivar  ) = 1
+        rcodcl(ifac,ivar,1) = (1.d0-pondj)*xjp + pondj*xip + p0(1)
+
+      else if (ivar.eq.iu(1).or.ivar.eq.iv(1).or.ivar.eq.iw(1)) then
+
+        icodcl(ifac,ivar  ) = 1
+
+! -- DECENTRE (SOLU ou UPWIND)
+
+!        if (flumab.ge.0.d0) then
+!          rcodcl(ifac,ivar,1) = xip
+!        else
+!          rcodcl(ifac,ivar,1) = xjp
+!        endif
+
+! -- CENTRE
+
+        rcodcl(ifac,ivar,1) = (1.d0-pondj)*xjp + pondj*xip
+
+      else
+
+        icodcl(ifac,ivar  ) = 1
+
+! -- DECENTRE (SOLU ou UPWIND)
+
+        if(flumab.ge.0.d0) then
+          rcodcl(ifac,ivar,1) = xip
+        else
+          rcodcl(ifac,ivar,1) = xjp
+        endif
+
+! -- CENTRE
+
+!        rcodcl(ifac,ivar,1) = (1.d0-pondj)*xjp + pondj*xip
+
+      endif
+
+    enddo
+
+  ! For a generic coupling, no assumption can be made
+
+  else
+
+
 !   --- Traduction en termes de condition limite pour les faces de bord localis�es
 !         --> CL type Dirichlet
 
-  do ipt = 1, nfbcpl
+    do ipt = 1, nfbcpl
 
-    ifac = lfbcpl(ipt)
-    iel  = ifabor(ifac)
+      ifac = lfbcpl(ipt)
+      iel  = ifabor(ifac)
 
 !         Information de l'instance en cours interpol�e en I'
-    iii = idiipb-1+3*(ifac-1)
-    xiip = ra(iii+1)
-    yiip = ra(iii+2)
-    ziip = ra(iii+3)
+      iii = idiipb-1+3*(ifac-1)
+      xiip = ra(iii+1)
+      yiip = ra(iii+2)
+      ziip = ra(iii+3)
 
-    xif = cdgfbo(1,ifac) -xyzcen(1,iel)
-    yif = cdgfbo(2,ifac) -xyzcen(2,iel)
-    zif = cdgfbo(3,ifac) -xyzcen(3,iel)
+      xif = cdgfbo(1,ifac) -xyzcen(1,iel)
+      yif = cdgfbo(2,ifac) -xyzcen(2,iel)
+      zif = cdgfbo(3,ifac) -xyzcen(3,iel)
 
-    xipf = cdgfbo(1,ifac)-xiip - xyzcen(1,iel)
-    yipf = cdgfbo(2,ifac)-yiip - xyzcen(2,iel)
-    zipf = cdgfbo(3,ifac)-ziip - xyzcen(3,iel)
+      xipf = cdgfbo(1,ifac)-xiip - xyzcen(1,iel)
+      yipf = cdgfbo(2,ifac)-yiip - xyzcen(2,iel)
+      zipf = cdgfbo(3,ifac)-ziip - xyzcen(3,iel)
 
-    ipf = sqrt(xipf**2+yipf**2+zipf**2)
+      ipf = sqrt(xipf**2+yipf**2+zipf**2)
 
 
-    iii = idiipb-1+3*(ifac-1)
-    xiip = ra(iii+1)
-    yiip = ra(iii+2)
-    ziip = ra(iii+3)
+      iii = idiipb-1+3*(ifac-1)
+      xiip = ra(iii+1)
+      yiip = ra(iii+2)
+      ziip = ra(iii+3)
 
-    xopf = dofcpl(1,ipt)
-    yopf = dofcpl(2,ipt)
-    zopf = dofcpl(3,ipt)
+      xopf = dofcpl(1,ipt)
+      yopf = dofcpl(2,ipt)
+      zopf = dofcpl(3,ipt)
 
 !         Informations locales interpolees en I'/O'
 
-    xip =  rtp(iel,ivar)                                          &
-      + (w1(iel)*(xiip+xopf) + w2(iel)*(yiip+yopf) +              &
-         w3(iel)*(ziip+zopf))
+      xip =  rtp(iel,ivar)                                          &
+        + (w1(iel)*(xiip+xopf) + w2(iel)*(yiip+yopf) +              &
+           w3(iel)*(ziip+zopf))
 
 !         Informations recues de l'instance distante en J'/O'
-    xjp = rvcpfb(ipt,ivar)
+      xjp = rvcpfb(ipt,ivar)
 
 
-    gradi = (w1(iel)*xipf+w2(iel)*yipf+w3(iel)*zipf)/ipf
+      gradi = (w1(iel)*xipf+w2(iel)*yipf+w3(iel)*zipf)/ipf
 
-    do iphas = 1, nphas
-      itypfb(ifac,iphas)  = icscpl
-    enddo
+      do iphas = 1, nphas
+        itypfb(ifac,iphas)  = icscpl
+      enddo
 
-    if(ivar.ne.ipr(1)) then
-      icodcl(ifac,ivar  ) = 1
-      rcodcl(ifac,ivar,1) = 0.5d0*(xip+xjp)
-    else
-      icodcl(ifac,ivar  ) = 3
-      rcodcl(ifac,ivar,3) = -0.5d0*dt(iel)*(gradi+xjp)
-    endif
+      if(ivar.ne.ipr(1)) then
+        icodcl(ifac,ivar  ) = 1
+        rcodcl(ifac,ivar,1) = 0.5d0*(xip+xjp)
+      else
+        icodcl(ifac,ivar  ) = 3
+        rcodcl(ifac,ivar,3) = -0.5d0*dt(iel)*(gradi+xjp)
+      endif
 
 
-  enddo
+    enddo
+
+  endif
 
 ! --- Faces de bord non localis�es
 !       --> CL type Neumann homog�ne
@@ -382,4 +512,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/csc2ts.f90 b/src/base/csc2ts.f90
index 781dcd6..db035bd 100644
--- a/src/base/csc2ts.f90
+++ b/src/base/csc2ts.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine csc2ts                               &
+subroutine csc2ts &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -55,83 +55,70 @@
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ivar             ! e  ! <-- ! numero de variable                             !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ivar             ! i  ! <-- ! variable number                                !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant            prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! crvexp(ncelet    ! tr ! --> ! tableau de travail pour part explicit          !
 ! crvimp(ncelet    ! tr ! --> ! tableau de travail pour part implicit          !
 ! dam(ncelet       ! tr ! --- ! tableau de travail pour matrice                !
 ! xam(nfac,*)      ! tr ! --- ! tableau de travail pour matrice                !
 ! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -144,7 +131,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -193,7 +180,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 double precision rvcpce(ncecpl)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra , ifinia , ifinra
 integer          iel
@@ -229,4 +216,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/csccel.f90 b/src/base/csccel.f90
index 80be7f2..7197e3e 100644
--- a/src/base/csccel.f90
+++ b/src/base/csccel.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,83 +55,70 @@ subroutine csccel &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ivar             ! e  ! <-- ! numero de variable                             !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ivar             ! i  ! <-- ! variable number                                !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant            prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! crvexp(ncelet    ! tr ! --> ! tableau de travail pour part explicit          !
 ! crvimp(ncelet    ! tr ! --> ! tableau de travail pour part implicit          !
 ! dam(ncelet       ! tr ! --- ! tableau de travail pour matrice                !
 ! xam(nfac,*)      ! tr ! --- ! tableau de travail pour matrice                !
 ! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -144,7 +131,7 @@ subroutine csccel &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -191,7 +178,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra , ifinia , ifinra
 integer          numcpl , iun
@@ -376,4 +363,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/cscfbr.f90 b/src/base/cscfbr.f90
index 9017d69..167d6ae 100644
--- a/src/base/cscfbr.f90
+++ b/src/base/cscfbr.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -53,82 +53,69 @@ subroutine cscfbr &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ivar             ! e  ! <-- ! numero de variable                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ivar             ! i  ! <-- ! variable number                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant            prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! crvexp(ncelet    ! tr ! --> ! tableau de travail pour part explicit          !
 ! crvimp(ncelet    ! tr ! --> ! tableau de travail pour part implicit          !
 ! dam(ncelet       ! tr ! --- ! tableau de travail pour matrice                !
 ! xam(nfac,*)      ! tr ! --- ! tableau de travail pour matrice                !
 ! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -141,7 +128,7 @@ subroutine cscfbr &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -189,7 +176,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra , ifinia , ifinra
 integer          numcpl , ivarcp
@@ -385,4 +372,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/cscini.f90 b/src/base/cscini.f90
index 81f90cb..6e37ef4 100644
--- a/src/base/cscini.f90
+++ b/src/base/cscini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -49,7 +49,7 @@ subroutine cscini &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -62,7 +62,7 @@ subroutine cscini &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -101,24 +101,33 @@ double precision cdgfac(ndim,nfac), cdgfbo(ndim,nfabor)
 double precision xyznod(ndim,nnod)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra , ifinia , ifinra
 integer          iphas
 integer          numcpl
-integer          imobmx , ialemx , nvcpmx
+integer          imobmx , ialemx , nvcpmx, ifcpmx
 
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
-!     R�cup�ration du nombre de couplage
+do numcpl = 1, nbrcpl
 
-call nbccpl(nbrcpl)
-!==========
+!       L'interpolation face/face doit �tre d�finie pour tous les couplages
+!       de mani�re identique.
 
-do numcpl = 1, nbrcpl
+  call mxicpl(numcpl, ifaccp, ifcpmx)
+  !==========
+
+  ifaccp = ifcpmx
+
+!       Si l'un des maillages est mobiles,
+!       on doit mettre � jour la localisation.
+
+  call mxicpl(numcpl, imobil, imobmx)
+  !==========
 
 !       De la m�me mani�re, si l'on a une approche ALE sur l'un des
 !       maillages, on doit mettre � jour la localisation.
@@ -126,7 +135,7 @@ do numcpl = 1, nbrcpl
   call mxicpl(numcpl, iale  , ialemx)
   !==========
 
-  if (ialemx.eq.1) then
+  if (ialemx.eq.1.or.imobmx.eq.1) then
     imajcp(numcpl) = 1
   else
     imajcp(numcpl) = 0
@@ -216,4 +225,4 @@ enddo
 '@                                                            ',/)
 
 return
-end
+end subroutine
diff --git a/src/base/csclli.f90 b/src/base/csclli.f90
index 628dbf3..20d79cc 100644
--- a/src/base/csclli.f90
+++ b/src/base/csclli.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine csclli
+subroutine csclli
 !================
 
 !===============================================================================
@@ -37,7 +37,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -50,7 +50,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -70,4 +70,4 @@ if (nfecra.ne.6) then
 endif
 
 return
-end
+end subroutine
diff --git a/src/base/cscloc.f90 b/src/base/cscloc.f90
index 19ad063..264cfa1 100644
--- a/src/base/cscloc.f90
+++ b/src/base/cscloc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,15 +28,7 @@
 subroutine cscloc &
 !================
 
- ( idbia0 , idbra0 ,                                              &
-   ndim   , ncelet , ncel   , nfac   , nfabor , nfml   , nprfml , &
-   nnod   , lndfac , lndfbr , ncelbr ,                            &
-   nideve , nrdeve , nituse , nrtuse ,                            &
-   ifacel , ifabor , ifmfbr , ifmcel , iprfml ,                   &
-   ipnfac , nodfac , ipnfbr , nodfbr ,                            &
-   idevel , ituser , ia     ,                                     &
-   xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod ,          &
-   rdevel , rtuser , ra     )
+( )
 
 !===============================================================================
 ! FONCTION :
@@ -47,7 +39,7 @@ subroutine cscloc &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -60,12 +52,10 @@ subroutine cscloc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
-include "pointe.h"
-include "numvar.h"
 include "optcal.h"
 include "cstphy.h"
 include "cstnum.h"
@@ -78,34 +68,9 @@ include "cplsat.h"
 
 ! Arguments
 
-integer          idbia0 , idbra0
-integer          ndim   , ncelet , ncel   , nfac   , nfabor
-integer          nfml   , nprfml
-integer          nnod   , lndfac , lndfbr , ncelbr
-integer          nideve , nrdeve , nituse , nrtuse
-
-integer          ifacel(2,nfac) , ifabor(nfabor)
-integer          ifmfbr(nfabor) , ifmcel(ncelet)
-integer          iprfml(nfml,nprfml)
-integer          ipnfac(nfac+1), nodfac(lndfac)
-integer          ipnfbr(nfabor+1), nodfbr(lndfbr)
-integer          idevel(nideve), ituser(nituse), ia(*)
-
-double precision xyzcen(ndim,ncelet)
-double precision surfac(ndim,nfac), surfbo(ndim,nfabor)
-double precision cdgfac(ndim,nfac), cdgfbo(ndim,nfabor)
-double precision xyznod(ndim,nnod)
-double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
-
-! VARIABLES LOCALES
-
-integer          idebia , idebra , ifinia , ifinra
-integer          maxelt , ils    , ifnia1
+! Local variables
+
 integer          numcpl
-integer          ncesup , nfbsup
-integer          ncecpl , nfbcpl , ncencp , nfbncp
-integer          ilfbsu , ilcesu
-integer          ilcecp , ilfbcp , ilcenc , ilfbnc
 
 integer          ipass
 data             ipass /0/
@@ -115,62 +80,15 @@ save             ipass
 
 ipass  = ipass + 1
 
-idebia = idbia0
-idebra = idbra0
-
-!     On surdimensionne les tableaux � NCEL et NFABOR
-ncesup = ncel
-nfbsup = nfabor
-ncecpl = ncel
-nfbcpl = nfabor
-ncencp = 0
-nfbncp = 0
-
-call memcs1                                                       &
-!==========
- ( idebia , idebra ,                                              &
-   ncesup , nfbsup , ncecpl , nfbcpl , ncencp , nfbncp ,          &
-   ilcesu , ilfbsu , ilcecp , ilfbcp , ilcenc , ilfbnc ,          &
-   ifinia , ifinra )
-
 do numcpl = 1, nbrcpl
 
-!       On localise au premier passage ou si l'un des maillages
-!         du couplage est mobile ou avec ALE (cf CSCINI).
+  ! On localise au premier passage ou si l'un des maillages
+  ! du couplage est mobile ou avec ALE (cf CSCINI).
   if (ipass.eq.1.or.imajcp(numcpl).eq.1) then
 
-    maxelt = max(ncelet, nfac, nfabor)
-
-    ils    = ifinia
-    ifnia1 = ils + maxelt
-    CALL IASIZE('CSCLOC',IFNIA1)
-
-    call ussatc                                                   &
-    !==========
-  ( ifnia1 , ifinra , numcpl ,                                    &
-    ndim   , ncelet , ncel   , nfac   , nfabor , nfml   , nprfml ,&
-    nnod   , lndfac , lndfbr , ncelbr ,                           &
-    nituse , nrtuse ,                                             &
-    ifacel , ifabor , ifmfbr , ifmcel , iprfml , maxelt , ia(ils),&
-    ipnfac , nodfac , ipnfbr , nodfbr ,                           &
-    ia(ilcesu) , ia(ilfbsu) ,                                     &
-    ia(ilcecp) , ia(ilfbcp) ,                                     &
-    ncesup , nfbsup , ncecpl , nfbcpl ,                           &
-    xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod )
-
-    if (nfbsup.gt.0) then
-      write(nfecra,1000)
-      call csexit(1)
-      !==========
-    endif
-
-!         Localisation proprement dite
-    call  defcpl                                                  &
-!         ============
-  ( numcpl ,                                                      &
-    ncesup , nfbsup , ncecpl , nfbcpl ,                           &
-    ia(ilcesu)      , ia(ilfbsu)      ,                           &
-    ia(ilcecp)      , ia(ilfbcp)      )
+    ! Localisation proprement dite
+    call  defloc ( numcpl )
+    !===========
 
   endif
 
@@ -181,23 +99,9 @@ enddo
 ! FORMAT
 !--------
 
- 1000 format(                                                           &
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION :                                             ',/,&
-'@    =========                                               ',/,&
-'@    LE COUPLAGE VIA LES FACES EN TANT QU''ELEMENTS          ',/,&
-'@    SUPPORTS N''EST PAS ENCORE GERE PAR LE NOYAU.           ',/,&
-'@                                                            ',/,&
-'@  Le calcul ne peut etre execute.                           ',/,&
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
 !----
 ! FIN
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/cscpce.f90 b/src/base/cscpce.f90
index d608fe2..4587f59 100644
--- a/src/base/cscpce.f90
+++ b/src/base/cscpce.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,7 +59,7 @@ subroutine cscpce &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -72,7 +72,7 @@ subroutine cscpce &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -122,13 +122,12 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision coopts(3,nptdis), rvdis(nptdis)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra , ifinia , ifinra
 integer          ipt    , iel
 integer          inc    , iccocg , iphydp , iclvar, nswrgp
 integer          iwarnp , imligp , idimte , itenso
-integer          iuiph  , iviph  , iwiph
 
 double precision epsrgp , climgp , extrap
 double precision dx     , dy     , dz
@@ -139,24 +138,20 @@ idebia = idbia0
 idebra = idbra0
 
 
-iuiph = iu(iphas)
-iviph = iv(iphas)
-iwiph = iw(iphas)
-
 if(irangp.ge.0) then
   call parcom(rtpa(1,ivar))
   !==========
 endif
 
 if(iperio.eq.1) then
-  idimte = 1
+  idimte = 0
   itenso = 0
-  call percom                                                     &
+  call percom                                                  &
   !==========
- ( idimte, itenso ,                                               &
-   rtpa(1,iuiph), rtpa(1,iuiph), rtpa(1,iuiph) ,                  &
-   rtpa(1,iviph), rtpa(1,iviph), rtpa(1,iviph) ,                  &
-   rtpa(1,iwiph), rtpa(1,iwiph), rtpa(1,iwiph) )
+ ( idimte, itenso ,                                            &
+   rtpa(1,ivar), rtpa(1,ivar), rtpa(1,ivar) ,                  &
+   rtpa(1,ivar), rtpa(1,ivar), rtpa(1,ivar) ,                  &
+   rtpa(1,ivar), rtpa(1,ivar), rtpa(1,ivar) )
 endif
 
 inc    = 1
@@ -214,4 +209,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/cscpfb.f90 b/src/base/cscpfb.f90
index 6b6be3e..5969a06 100644
--- a/src/base/cscpfb.f90
+++ b/src/base/cscpfb.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,7 +59,7 @@ subroutine cscpfb &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -72,7 +72,7 @@ subroutine cscpfb &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -123,7 +123,7 @@ double precision pndpts(nptdis), dofpts(3,nptdis)
 double precision rvdis(nptdis,nvcpto)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra , ifinia , ifinra
 
@@ -131,20 +131,25 @@ integer          itrav1 , itrav2 , itrav3 , itrav4 , itrav5
 integer          itrav6 , itrav7 , itrav8 , itrav
 
 integer          ipt    , ifac   , iel    , isou
-integer          ivar   , iscal  , iphas
+integer          ivar   , iscal  , iphas  , ipcrom
 integer          ipriph , iuiph  , iviph  , iwiph
 integer          ikiph  , iepiph , ifbiph , iomiph , iphiph
+integer          ir11ip , ir22ip , ir33ip , ir12ip , ir13ip , ir23ip
 integer          itravx , itravy , itravz
 integer          igradx , igrady , igradz
 integer          inc    , iccocg , iphydp , iclvar, nswrgp
 integer          iwarnp , imligp , idimte , itenso
 integer          ipos
 integer          itytu0
+integer          icormx
 
 double precision epsrgp , climgp , extrap
 double precision xjjp   , yjjp   , zjjp
 double precision d2s3
 double precision xjpf,yjpf,zjpf,jpf
+double precision xx, yy, zz
+double precision omegal(3), omegad(3), omegar(3), omgnrl, omgnrd, omgnrr
+double precision vitent, daxis2
 
 !===============================================================================
 
@@ -170,6 +175,26 @@ CALL RASIZE('CSCPFB',IFINRA)
 
 d2s3 = 2.d0/3.d0
 
+iphas = 1
+ipcrom = ipproc(irom(iphas))
+
+! On v�rifie si l'une des instances est en r�solution en rep�re relatif
+call mxicpl(numcpl,icorio,icormx)
+
+! On r�cup�re dans tous les cas le vecteur rotation de l'autre instance
+omegal(1) = omegax
+omegal(2) = omegay
+omegal(3) = omegaz
+call tbrcpl(numcpl,3,3,omegal,omegad)
+
+! Vecteur vitesse relatif d'une instance a l'autre
+omegar(1) = omegal(1) - omegad(1)
+omegar(2) = omegal(2) - omegad(2)
+omegar(3) = omegal(3) - omegad(3)
+
+omgnrl = sqrt(omegal(1)**2 + omegal(2)**2 + omegal(3)**2)
+omgnrd = sqrt(omegad(1)**2 + omegad(2)**2 + omegad(3)**2)
+omgnrr = sqrt(omegar(1)**2 + omegar(2)**2 + omegar(3)**2)
 
 ! On part du principe que l'on envoie les bonnes variables �
 ! l'instance distante et uniquement celles-l�.
@@ -250,25 +275,72 @@ do iphas = 1, nphas
     w4     , w5     , w6     ,                                    &
     rdevel , rtuser , ra     )
 
+    ! For a specific face to face coupling, geometric assumptions are made
 
-    do ipt = 1, nptdis
+    if (ifaccp.eq.1) then
 
-      iel = locpts(ipt)
+      do ipt = 1, nptdis
 
-      xjpf = coopts(1,ipt) - xyzcen(1,iel)- djppts(1,ipt)
-      yjpf = coopts(2,ipt) - xyzcen(2,iel)- djppts(2,ipt)
-      zjpf = coopts(3,ipt) - xyzcen(3,iel)- djppts(3,ipt)
+        iel = locpts(ipt)
 
-      if(pndpts(ipt).ge.0.d0.and.pndpts(ipt).le.1.d0) then
-        jpf = -1.d0*sqrt(xjpf**2+yjpf**2+zjpf**2)
-      else
-        jpf =       sqrt(xjpf**2+yjpf**2+zjpf**2)
-      endif
+! --- Pour la pression on veut imposer un dirichlet tel que le gradient
+!     de pression se conserve entre les deux domaines coupl�s Pour cela
+!     on impose une interpolation centr�e
 
-      rvdis(ipt,ipos) = (xjpf*w1(iel)+yjpf*w2(iel)+zjpf*w3(iel))  &
-                     /jpf
+        xjjp = djppts(1,ipt)
+        yjjp = djppts(2,ipt)
+        zjjp = djppts(3,ipt)
 
-    enddo
+        rvdis(ipt,ipos) = rtp(iel,ipriph) &
+          + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+
+        ! On prend en compte le potentiel centrifuge en rep�re relatif
+        if (icormx.eq.1) then
+
+          ! Calcul de la distance a l'axe de rotation
+          ! On suppose que les axes sont confondus...
+
+          xx = xyzcen(1,iel) + xjjp
+          yy = xyzcen(2,iel) + yjjp
+          zz = xyzcen(3,iel) + zjjp
+
+          daxis2 =   (omegar(2)*zz - omegar(3)*yy)**2 &
+                   + (omegar(3)*xx - omegar(1)*zz)**2 &
+                   + (omegar(1)*yy - omegar(2)*xx)**2
+
+          daxis2 = daxis2 / omgnrr**2
+
+          rvdis(ipt,ipos) = rvdis(ipt,ipos)                         &
+            + 0.5d0*propce(iel,ipcrom)*(omgnrl**2 - omgnrd**2)*daxis2
+
+        endif
+
+      enddo
+
+    ! For a generic coupling, no assumption can be made
+
+    else
+
+      do ipt = 1, nptdis
+
+        iel = locpts(ipt)
+
+        xjpf = coopts(1,ipt) - xyzcen(1,iel)- djppts(1,ipt)
+        yjpf = coopts(2,ipt) - xyzcen(2,iel)- djppts(2,ipt)
+        zjpf = coopts(3,ipt) - xyzcen(3,iel)- djppts(3,ipt)
+
+        if(pndpts(ipt).ge.0.d0.and.pndpts(ipt).le.1.d0) then
+          jpf = -1.d0*sqrt(xjpf**2+yjpf**2+zjpf**2)
+        else
+          jpf =       sqrt(xjpf**2+yjpf**2+zjpf**2)
+        endif
+
+        rvdis(ipt,ipos) = (xjpf*w1(iel)+yjpf*w2(iel)+zjpf*w3(iel))  &
+                       /jpf
+
+      enddo
+
+    endif
 
   endif
 !       FIn pour la pression de la phase 1
@@ -345,19 +417,85 @@ do iphas = 1, nphas
     rdevel , rtuser , ra     )
 
 
-    do ipt = 1, nptdis
+    ! For a specific face to face coupling, geometric assumptions are made
 
-      iel = locpts(ipt)
+    if (ifaccp.eq.1) then
 
-      xjjp = dofpts(1,ipt) + djppts(1,ipt)
-      yjjp = dofpts(2,ipt) + djppts(2,ipt)
-      zjjp = dofpts(3,ipt) + djppts(3,ipt)
+      do ipt = 1, nptdis
 
+        iel = locpts(ipt)
 
-      rvdis(ipt,ipos) = rtp(iel,ivar)                             &
-        + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+! --- Pour la vitesse on veut imposer un dirichlet de vitesse qui "imite"
+!     ce qui se passe pour une face interne. On se donne le choix entre
+!     UPWIND, SOLU et CENTRE (parties comment�es selon le choix retenu).
+!     Pour l'instant seul le CENTRE respecte ce qui se passerait pour la
+!     diffusion si on avait un seul domaine
 
-    enddo
+! -- UPWIND
+
+!        xjpf = coopts(1,ipt) - xyzcen(1,iel)- djppts(1,ipt)
+!        yjpf = coopts(2,ipt) - xyzcen(2,iel)- djppts(2,ipt)
+!        zjpf = coopts(3,ipt) - xyzcen(3,iel)- djppts(3,ipt)
+
+!        rvdis(ipt,ipos) = rtp(iel,ivar)
+
+! -- SOLU
+
+!        xjf = coopts(1,ipt) - xyzcen(1,iel)
+!        yjf = coopts(2,ipt) - xyzcen(2,iel)
+!        zjf = coopts(3,ipt) - xyzcen(3,iel)
+
+!        rvdis(ipt,ipos) = rtp(iel,ivar) &
+!          + xjf*w1(iel) + yjf*w2(iel) + zjf*W3(iel)
+
+! -- CENTRE
+
+        xjjp = djppts(1,ipt)
+        yjjp = djppts(2,ipt)
+        zjjp = djppts(3,ipt)
+
+        rvdis(ipt,ipos) = rtp(iel,ivar) &
+          + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+
+        ! On prend en compte la vitesse d'entrainement en rep�re relatif
+        if (icormx.eq.1) then
+
+          if (isou.eq.1) then
+            vitent =   (omegal(2)-omegad(2))*(xyzcen(3,iel)-zjjp) &
+                     - (omegal(3)-omegad(3))*(xyzcen(2,iel)-yjjp)
+          elseif (isou.eq.2) then
+            vitent =   (omegal(3)-omegad(3))*(xyzcen(1,iel)-xjjp) &
+                     - (omegal(1)-omegad(1))*(xyzcen(3,iel)-zjjp)
+          elseif (isou.eq.3) then
+            vitent =   (omegal(1)-omegad(1))*(xyzcen(2,iel)-yjjp) &
+                     - (omegal(2)-omegad(2))*(xyzcen(1,iel)-xjjp)
+          endif
+
+          rvdis(ipt,ipos) = rvdis(ipt,ipos) + vitent
+
+        endif
+
+      enddo
+
+    ! For a generic coupling, no assumption can be made
+
+    else
+
+      do ipt = 1, nptdis
+
+        iel = locpts(ipt)
+
+        xjjp = dofpts(1,ipt) + djppts(1,ipt)
+        yjjp = dofpts(2,ipt) + djppts(2,ipt)
+        zjjp = dofpts(3,ipt) + djppts(3,ipt)
+
+
+        rvdis(ipt,ipos) = rtp(iel,ivar)                             &
+          + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+
+      enddo
+
+    endif
 
   enddo
 !       Fin de la boucle sur les composantes de la vitesse
@@ -431,18 +569,41 @@ do iphas = 1, nphas
     rdevel , rtuser , ra     )
 
 
-    do ipt = 1, nptdis
+    ! For a specific face to face coupling, geometric assumptions are made
 
-      iel = locpts(ipt)
+    if (ifaccp.eq.1) then
 
-      xjjp = djppts(1,ipt)
-      yjjp = djppts(2,ipt)
-      zjjp = djppts(3,ipt)
+      do ipt = 1, nptdis
 
-      ra(itrav1 + ipt-1) = rtp(iel,ikiph)                         &
-        + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+        iel = locpts(ipt)
 
-    enddo
+        xjjp = djppts(1,ipt)
+        yjjp = djppts(2,ipt)
+        zjjp = djppts(3,ipt)
+
+        ra(itrav1 + ipt-1) = rtp(iel,ikiph)                         &
+          + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+
+      enddo
+
+    ! For a generic coupling, no assumption can be made
+
+    else
+
+      do ipt = 1, nptdis
+
+        iel = locpts(ipt)
+
+        xjjp = djppts(1,ipt)
+        yjjp = djppts(2,ipt)
+        zjjp = djppts(3,ipt)
+
+        ra(itrav1 + ipt-1) = rtp(iel,ikiph)                         &
+          + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+
+      enddo
+
+    endif
 
 !         Pr�paration des donn�es: interpolation de epsilon en J'
 
@@ -496,18 +657,40 @@ do iphas = 1, nphas
     rdevel , rtuser , ra     )
 
 
-    do ipt = 1, nptdis
+    ! For a specific face to face coupling, geometric assumptions are made
 
-      iel = locpts(ipt)
+    if (ifaccp.eq.1) then
 
-      xjjp = djppts(1,ipt)
-      yjjp = djppts(2,ipt)
-      zjjp = djppts(3,ipt)
+      do ipt = 1, nptdis
 
-      ra(itrav2 + ipt-1) = rtp(iel,iepiph)                        &
-        + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+        iel = locpts(ipt)
 
-    enddo
+        xjjp = djppts(1,ipt)
+        yjjp = djppts(2,ipt)
+        zjjp = djppts(3,ipt)
+
+        ra(itrav2 + ipt-1) = rtp(iel,iepiph)
+
+      enddo
+
+    ! For a generic coupling, no assumption can be made
+
+    else
+
+      do ipt = 1, nptdis
+
+        iel = locpts(ipt)
+
+        xjjp = djppts(1,ipt)
+        yjjp = djppts(2,ipt)
+        zjjp = djppts(3,ipt)
+
+        ra(itrav2 + ipt-1) = rtp(iel,iepiph)                        &
+          + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+
+      enddo
+
+    endif
 
 
 !=======================================================================
@@ -704,6 +887,37 @@ do iphas = 1, nphas
 
 !         Pr�paration des donn�es: interpolation des Rij en J'
 
+    if (irangp.ge.0) then
+      do isou = 1, 6
+        if (isou.eq.1) ivar = ir11(iphas)
+        if (isou.eq.2) ivar = ir22(iphas)
+        if (isou.eq.3) ivar = ir33(iphas)
+        if (isou.eq.4) ivar = ir12(iphas)
+        if (isou.eq.5) ivar = ir13(iphas)
+        if (isou.eq.6) ivar = ir23(iphas)
+        call parcom ( rtp(1,ivar) )
+        !==========
+      enddo
+    endif
+
+    if (iperio.eq.1) then
+      idimte = 2
+      itenso = 0
+      ir11ip = ir11(iphas)
+      ir22ip = ir22(iphas)
+      ir33ip = ir33(iphas)
+      ir12ip = ir12(iphas)
+      ir13ip = ir13(iphas)
+      ir23ip = ir23(iphas)
+      call percom                                               &
+      !==========
+    ( idimte , itenso ,                                         &
+      rtp(1,ir11ip), rtp(1,ir12ip), rtp(1,ir13ip),              &
+      rtp(1,ir12ip), rtp(1,ir22ip), rtp(1,ir23ip),              &
+      rtp(1,ir13ip), rtp(1,ir23ip), rtp(1,ir33ip) )
+    endif
+
+
     do isou = 1, 6
 
       if (isou.eq.1) ivar = ir11(iphas)
@@ -713,22 +927,6 @@ do iphas = 1, nphas
       if (isou.eq.5) ivar = ir13(iphas)
       if (isou.eq.6) ivar = ir23(iphas)
 
-      if (irangp.ge.0) then
-        call parcom ( rtp(1,ivar) )
-        !==========
-      endif
-
-      if (iperio.eq.1) then
-        idimte = 0
-        itenso = 0
-        call percom                                               &
-        !==========
-      ( idimte , itenso ,                                         &
-        rtp(1,ivar) , rtp(1,ivar) , rtp(1,ivar) ,                 &
-        rtp(1,ivar) , rtp(1,ivar) , rtp(1,ivar) ,                 &
-        rtp(1,ivar) , rtp(1,ivar) , rtp(1,ivar) )
-      endif
-
       inc    = 1
       iccocg = 1
       iphydp = 0
@@ -1648,18 +1846,60 @@ if (nscal.gt.0) then
     w4     , w5     , w6     ,                                    &
     rdevel , rtuser , ra     )
 
-    do ipt = 1, nptdis
+    ! For a specific face to face coupling, geometric assumptions are made
 
-      iel = locpts(ipt)
+    if (ifaccp.eq.1) then
 
-      xjjp = djppts(1,ipt)
-      yjjp = djppts(2,ipt)
-      zjjp = djppts(3,ipt)
+      do ipt = 1, nptdis
 
-      rvdis(ipt,ipos) = rtp(iel,ivar)                             &
-        + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+        iel = locpts(ipt)
 
-    enddo
+! --- Pour les scalaires on veut imposer un dirichlet. On se laisse
+!     le choix entre UPWIND, SOLU ou CENTRE. Seul le centr� respecte
+!     la diffusion si il n'y avait qu'un seul domaine
+
+! -- UPWIND
+
+        rvdis(ipt,ipos) = rtp(iel,ivar)
+
+! -- SOLU
+
+!        xjf = coopts(1,ipt) - xyzcen(1,iel)
+!        yjf = coopts(2,ipt) - xyzcen(2,iel)
+!        zjf = coopts(3,ipt) - xyzcen(3,iel)
+
+!        rvdis(ipt,ipos) = rtp(iel,ivar) &
+!          + xjf*w1(iel) + yjf*w2(iel) + zjf*w3(iel)
+
+! -- CENTRE
+
+!        xjjp = djppts(1,ipt)
+!        yjjp = djppts(2,ipt)
+!        zjjp = djppts(3,ipt)
+
+!        rvdis(ipt,ipos) = rtp(iel,ivar) &
+!          + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+
+      enddo
+
+    ! For a generic coupling, no assumption can be made
+
+    else
+
+      do ipt = 1, nptdis
+
+        iel = locpts(ipt)
+
+        xjjp = djppts(1,ipt)
+        yjjp = djppts(2,ipt)
+        zjjp = djppts(3,ipt)
+
+        rvdis(ipt,ipos) = rtp(iel,ivar)                             &
+          + xjjp*w1(iel) + yjjp*w2(iel) + zjjp*w3(iel)
+
+      enddo
+
+    endif
 
   enddo
 
@@ -1667,4 +1907,4 @@ endif
 
 
 return
-end
+end subroutine
diff --git a/src/base/csflsh.f90 b/src/base/csflsh.f90
index 079ebbb..5cc94ee 100644
--- a/src/base/csflsh.f90
+++ b/src/base/csflsh.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,31 +25,31 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine csflsh
+subroutine csflsh
 !================
+
 !===============================================================================
-!  FONCTION  :
-!  ---------
+! Purpose:
+! -------
 
-! VIDAGE DU TAMPON DU FICHIER D'IMPRESSION
+!    Flush output buffer
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -57,8 +57,16 @@ include "entsor.h"
 
 !===============================================================================
 
-call flush (nfecra)
+#if defined(_CS_FC_HAVE_FLUSH)
+
+flush (nfecra)        ! Fortran 2003 statement
+
+#else
+
+call flush (nfecra)   ! Common intrinsic but not guaranteed to be portable
+
+#endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/csinit.f90 b/src/base/csinit.f90
index abff9f2..a11c214 100644
--- a/src/base/csinit.f90
+++ b/src/base/csinit.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,7 +39,7 @@ subroutine csinit &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! argifo           ! e  ! <-- ! valeur de ifoenv ;                             !
 !                  !    !     ! format de communication avec                   !
@@ -70,7 +70,7 @@ subroutine csinit &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -115,12 +115,16 @@ nfecra = 6
 if (irangp.le.0) then
   if (ilisr0.eq.1) then
     nfecra = 9
-    NAME = 'listing'
+    name = 'listing'
   endif
 else
   if (ilisrp.eq.1) then
     nfecra = 9
-    WRITE (NAME,'(A9,I4.4)') 'listing_n', IRANGP + 1
+    if (nrangp.ge.10000) then
+      write (name,'(A9,I7.4)') 'listing_n', irangp + 1
+    else
+      write (name,'(A9,I4.4)') 'listing_n', irangp + 1
+    endif
   else if (ilisrp.eq.2) then
     nfecra = 9
     NAME = '/dev/null'
@@ -129,7 +133,7 @@ endif
 
 if (nfecra.eq.9) then
    open (file=name, unit=nfecra,                                  &
-         FORM='FORMATTED', STATUS='UNKNOWN', ERR=900)
+         form='FORMATTED', status='UNKNOWN', err=900)
 endif
 
 goto 950
@@ -154,4 +158,4 @@ call csexit (1)
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/csprnt.f90 b/src/base/csprnt.f90
index 3c86f97..7b2d8a5 100644
--- a/src/base/csprnt.f90
+++ b/src/base/csprnt.f90
@@ -39,7 +39,7 @@ subroutine csprnt &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! chaine           ! c  ! <-- ! chaine a imprimer (tableau)                    !
 ! taille           ! e  ! <-- ! nombre de caracteres                           !
@@ -54,7 +54,7 @@ subroutine csprnt &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -82,4 +82,4 @@ write(nfecra, '(a)', advance='no') chloc(1:taille)
 
 return
 
-end
+end subroutine
diff --git a/src/base/distpr.f90 b/src/base/distpr.f90
index 266f2fa..1a351b8 100644
--- a/src/base/distpr.f90
+++ b/src/base/distpr.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -65,62 +65,53 @@ subroutine distpr &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
 ! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
 ! (ncelet)         !    !     !                                                !
 ! distpa(ncelet    ! tr ! --> ! tab des distances a la paroi                   !
@@ -135,9 +126,9 @@ subroutine distpr &
 ! coefad,coefbd    ! tr ! --- ! conditions aux limites aux                     !
 !  (nfabor)        !    !     ! faces de bord du scalaire diffuse              !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -149,7 +140,7 @@ subroutine distpr &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -199,7 +190,7 @@ double precision w7    (ncelet), w8    (ncelet), w9    (ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 
 integer          idebia, idebra
@@ -553,4 +544,4 @@ enddo
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/distyp.f90 b/src/base/distyp.f90
index f8a1126..fd393ee 100644
--- a/src/base/distyp.f90
+++ b/src/base/distyp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -69,70 +69,60 @@ subroutine distyp &
 
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! iphas            ! e  ! <-- ! numero de la phase courante                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! iphas            ! i  ! <-- ! phase number                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! isympa           ! te ! <-- ! zero pour annuler le flux de masse             !
 ! (nfabor     )    !    !     ! (transmis mais non utilise)                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
 ! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
 ! (ncelet)         !    !     !                                                !
 ! distpa(ncelet    ! tr ! <-- ! tab des distances a la paroi                   !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! uetbor           ! tr ! <-- ! vitesse de frottement au bord                  !
 ! (nfabor,nphas    !    !     !  pour van driest en les                        !
 ! disty(ncelet)    ! tr ! --> ! distance y+                                    !
@@ -154,9 +144,9 @@ subroutine distyp &
 ! coefax,y,z, b    ! tr ! --- ! tableaux des cond lim pour qx, qy, qz          !
 !   (nfabor)       !    !     !  sur la normale a la face de bord              !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -168,7 +158,7 @@ subroutine distyp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -225,7 +215,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          idimte, itenso
@@ -907,4 +897,4 @@ endif
 
 
 return
-end
+end subroutine
diff --git a/src/base/divmas.f90 b/src/base/divmas.f90
index 76b4c16..9f0ede6 100644
--- a/src/base/divmas.f90
+++ b/src/base/divmas.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -48,12 +48,12 @@ subroutine divmas &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! init             ! e  ! <-- ! indicateur > 0 remise a 0 de diverg            !
 ! ifacel(2,nfac    ! te ! <-- ! no des elts voisins d'une face intern          !
 ! ifabor(nfabor    ! te ! <-- ! no de l'elt voisin d'une face de bord          !
@@ -71,7 +71,7 @@ subroutine divmas &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "vector.h"
@@ -86,7 +86,7 @@ integer          ifacel(2,nfac), ifabor(nfabor)
 double precision flumas(nfac), flumab(nfabor)
 double precision diverg(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel, ifac, ii, jj
 
@@ -174,4 +174,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/divrij.f90 b/src/base/divrij.f90
index 95498e4..e52678f 100644
--- a/src/base/divrij.f90
+++ b/src/base/divrij.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -61,82 +61,69 @@ subroutine divrij &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! idim             ! e  ! <-- ! composante traitee                             !
 ! ivar             ! e  ! <-- ! numero de variable courante                    !
-! iphas            ! e  ! <-- ! numero de phase courante                       !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant prec)                     !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! viscf(nfac)      ! tr ! --> ! resultat du calcul                             !
 ! viscb(nfabor)    ! tr ! --> ! resultat du calcul                             !
 ! w1-w9(ncelet)    ! tr ! --- ! tableau de travail                             !
 ! coefu(nfab,4)    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -148,7 +135,7 @@ subroutine divrij &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -194,7 +181,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision coefu(nfabor,3)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, ivar1, ivar2, ivar3, init, inc
@@ -307,4 +294,4 @@ if (ineedf.eq.1) then
 endif
 
 return
-end
+end subroutine
diff --git a/src/base/dttvar.f90 b/src/base/dttvar.f90
index 7b2be75..2677072 100644
--- a/src/base/dttvar.f90
+++ b/src/base/dttvar.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,80 +59,67 @@ subroutine dttvar &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules avec tsm                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -145,9 +132,9 @@ subroutine dttvar &
 ! w1,2,3(ncelet    ! tr ! --- ! tableaux de travail                            !
 ! graro.(ncelet    ! tr ! --- ! tableaux de travail (iptlro=1)                 !
 ! coefbr(nfabor    ! tr ! --- ! tableau de travail (iptlro=1)                  !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -159,7 +146,7 @@ subroutine dttvar &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -217,7 +204,7 @@ double precision grarox(ncelet),graroy(ncelet),graroz(ncelet)
 double precision wcf(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*8      cnom
 integer          idebia, idebra
@@ -1140,4 +1127,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/dvvpst.f90 b/src/base/dvvpst.f90
index 0ac6d52..75c80b1 100644
--- a/src/base/dvvpst.f90
+++ b/src/base/dvvpst.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,87 +52,75 @@ subroutine dvvpst &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! nummai           ! ec ! <-- ! numero du maillage post                        !
 ! numtyp           ! ec ! <-- ! numero de type de post-traitement              !
 !                  !    !     ! (-1: volume, -2: bord, nummai par defaut)      !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nvlsta           ! e  ! <-- ! nombre de variables stat. lagrangien           !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
 ! ncelps           ! e  ! <-- ! nombre de cellules du maillage post            !
 ! nfacps           ! e  ! <-- ! nombre de faces interieur post                 !
 ! nfbrps           ! e  ! <-- ! nombre de faces de bord post                   !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itypps(3)        ! te ! <-- ! indicateur de presence (0 ou 1) de             !
 !                  !    !     ! cellules (1), faces (2), ou faces de           !
 !                  !    !     ! de bord (3) dans le maillage post              !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! lstcel(ncelps    ! te ! <-- ! liste des cellules du maillage post            !
 ! lstfac(nfacps    ! te ! <-- ! liste des faces interieures post               !
 ! lstfbr(nfbrps    ! te ! <-- ! liste des faces de bord post                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
 ! ia(*)            ! te ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
 ! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
 ! (ncelet)         !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! statce           ! tr ! <-- ! statistiques cellules (lagrangien)             !
 !(ncelet,nvlsta    !    !     !                                                !
 ! stativ           ! tr ! <-- ! statistiques variance cellules                 !
@@ -142,9 +130,9 @@ subroutine dvvpst &
 ! tracel(*)        ! tr ! <-- ! tab reel valeurs cellules post                 !
 ! trafac(*)        ! tr ! <-- ! tab reel valeurs faces int. post               !
 ! trafbr(*)        ! tr ! <-- ! tab reel valeurs faces bord post               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -156,7 +144,7 @@ subroutine dvvpst &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -174,6 +162,7 @@ include "ppppar.h"
 include "ppthch.h"
 include "ppincl.h"
 include "radiat.h"
+include "cplsat.h"
 
 !===============================================================================
 
@@ -212,7 +201,7 @@ double precision trafac(nfacps*3), trafbr(nfbrps*3)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*32     namevr, namev1, namev2
 character*80     name80
@@ -231,10 +220,12 @@ integer          iii, ivarl1 , ivarlm , iflu   , ilpd1  , icla
 integer          iscal , ipcvsl, ipcvst, iflmab
 integer          idimte, itenso, ientla, ivarpr
 integer          iyplbp
-integer          ipccp
+integer          ipccp , ipcrom
+
 double precision cp0iph, xcp   , xvsl  , surfbn, distbr
 double precision visct , flumab, diipbx, diipby, diipbz
 double precision epsrgp, climgp, extrap
+double precision omgnrm, daxis2
 double precision rbid(1)
 
 
@@ -374,6 +365,123 @@ if (numtyp .eq. -1) then
 
   endif
 
+  ! Vitesse et pression absolues en cas de calcul en rep�re relatif
+
+  if (icorio.eq.1) then
+
+    iphas = 1
+    ipcrom = ipproc(irom(iphas))
+    omgnrm = sqrt(omegax**2 + omegay**2 + omegaz**2)
+
+    NAMEVR = 'Pressure'
+    idimt = 1
+    ientla = 0
+    ivarpr = 0
+
+    do iloc = 1, ncelps
+
+      iel = lstcel(iloc)
+
+      daxis2 =   (omegay*xyzcen(3,iel) - omegaz*xyzcen(2,iel))**2 &
+               + (omegaz*xyzcen(1,iel) - omegax*xyzcen(3,iel))**2 &
+               + (omegax*xyzcen(2,iel) - omegay*xyzcen(1,iel))**2
+
+      daxis2 = daxis2 / omgnrm**2
+
+      tracel(iloc) = rtp(iel,ipr(iphas))                          &
+          + 0.5d0*propce(iel,ipcrom)*omgnrm**2*daxis2
+
+    enddo
+
+    call psteva(nummai, namevr, idimt, ientla, ivarpr,        &
+    !==========
+                ntcabs, ttcabs, tracel, rbid, rbid)
+
+
+    NAMEVR = 'Velocity'
+    idimt = 3
+    ientla = 1
+    ivarpr = 0
+
+    do iloc = 1, ncelps
+
+      iel = lstcel(iloc)
+
+      tracel(1 + (iloc-1)*idimt) = rtp(iel,iu(iphas)) &
+          + (omegay*xyzcen(3,iel) - omegaz*xyzcen(2,iel))
+
+      tracel(2 + (iloc-1)*idimt) = rtp(iel,iv(iphas)) &
+          + (omegaz*xyzcen(1,iel) - omegax*xyzcen(3,iel))
+
+      tracel(3 + (iloc-1)*idimt) = rtp(iel,iw(iphas)) &
+          + (omegax*xyzcen(2,iel) - omegay*xyzcen(1,iel))
+
+    enddo
+
+    call psteva(nummai, namevr, idimt, ientla, ivarpr,        &
+    !==========
+                ntcabs, ttcabs, tracel, rbid, rbid)
+  endif
+
+  ! Vitesse et pression relatives en cas de calcul en rep�re mobile
+
+  if (imobil.eq.1) then
+
+    iphas = 1
+    ipcrom = ipproc(irom(iphas))
+    omgnrm = sqrt(omegax**2 + omegay**2 + omegaz**2)
+
+    NAMEVR = 'Rel Pressure'
+    idimt = 1
+    ientla = 0
+    ivarpr = 0
+
+    do iloc = 1, ncelps
+
+      iel = lstcel(iloc)
+
+      daxis2 =   (omegay*xyzcen(3,iel) - omegaz*xyzcen(2,iel))**2 &
+               + (omegaz*xyzcen(1,iel) - omegax*xyzcen(3,iel))**2 &
+               + (omegax*xyzcen(2,iel) - omegay*xyzcen(1,iel))**2
+
+      daxis2 = daxis2 / omgnrm**2
+
+      tracel(iloc) = rtp(iel,ipr(iphas))                          &
+          - 0.5d0*propce(iel,ipcrom)*omgnrm**2*daxis2
+
+    enddo
+
+    call psteva(nummai, namevr, idimt, ientla, ivarpr,        &
+    !==========
+                ntcabs, ttcabs, tracel, rbid, rbid)
+
+
+    NAMEVR = 'Rel Velocity'
+    idimt = 3
+    ientla = 1
+    ivarpr = 0
+
+    do iloc = 1, ncelps
+
+      iel = lstcel(iloc)
+
+      tracel(1 + (iloc-1)*idimt) = rtp(iel,iu(iphas)) &
+          - (omegay*xyzcen(3,iel) - omegaz*xyzcen(2,iel))
+
+      tracel(2 + (iloc-1)*idimt) = rtp(iel,iv(iphas)) &
+          - (omegaz*xyzcen(1,iel) - omegax*xyzcen(3,iel))
+
+      tracel(3 + (iloc-1)*idimt) = rtp(iel,iw(iphas)) &
+          - (omegax*xyzcen(2,iel) - omegay*xyzcen(1,iel))
+
+    enddo
+
+    call psteva(nummai, namevr, idimt, ientla, ivarpr,        &
+    !==========
+                ntcabs, ttcabs, tracel, rbid, rbid)
+
+  endif
+
 
 !===============================================================================
 !     1.2. TRAITEMENT POUR LE MAILLAGE DE BORD
@@ -1116,4 +1224,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/ecrava.f90 b/src/base/ecrava.f90
index 8b9b18d..71f5fe6 100644
--- a/src/base/ecrava.f90
+++ b/src/base/ecrava.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -49,39 +49,36 @@ subroutine ecrava &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! nnod             ! e  ! <-- ! nombre de noeuds                               !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant        )          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! frcxt(ncelet,    ! tr ! <-- ! force exterieure generant la pression          !
 !   3,nphas)       !    !     !  hydrostatique                                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -93,7 +90,7 @@ subroutine ecrava &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -135,7 +132,7 @@ double precision coefa(ndimfb,*), coefb(ndimfb,*)
 double precision frcxt(ncelet,3,nphas)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 
 integer          nbmom2
@@ -2029,7 +2026,7 @@ nberro=nberro+ierror
     enddo
 
 
-!     Charbon PuLVerise : type de zones de bord, ientat, ientcp, timpat
+!     Charbon PuLVerise : type de zones de bord, ientat, inmoxy, ientcp, timpat
 !       x20, pour le calcul de rho au bord en entree
 
 !       Numero des zones
@@ -2051,7 +2048,7 @@ nberro=nberro+ierror
                 ientat, ierror)
     nberro=nberro+ierror
 
-!       ientat et x20 ne servent pas pour le CP couple Lagrangien (cplphy)
+!       ientat, inmoxy et x20 ne servent pas pour le CP couple Lagrangien (cplphy)
     if ( ippmod(icp3pl).ge.0 ) then
 
       itysup = 0
@@ -2062,6 +2059,13 @@ nberro=nberro+ierror
                   ientcp, ierror)
       nberro=nberro+ierror
 
+      itysup = 0
+      nbval  = nozppm
+      irtyp  = 1
+      RUBRIQ = 'inmoxy_zone_bord_charbon_pulverise'
+      call ecrsui(impavx,rubriq,len(rubriq),itysup,nbval,irtyp,   &
+                  inmoxy, ierror)
+      nberro=nberro+ierror
 
       itysup = 0
       nbval  = nozppm
@@ -2124,7 +2128,7 @@ nberro=nberro+ierror
     nberro=0
 
 
-!     Charbon PuLVerise : type de zones de bord, ientat, ientfl, timpat
+!     Fioul : type de zones de bord, ientat, ientfl, timpat
 !       qimpat et qimpfl  pour le calcul de rho au bord en entree
 
 !       Numero des zones
@@ -2326,12 +2330,12 @@ return
 
 #if defined(_CS_LANG_FR)
 
- 1000 format(3X,'** ECRITURE DU FICHIER SUITE PRINCIPAL',/,       &
+ 1000 format(3X,'** Ecriture du fichier suite principal',/,       &
        3X,'   ----------------------------------- ',/)
  1100 format(' Debut de l''ecriture                                   ')
  1110 format('  ',A54                                                  )
  1200 format(' Fin de l''ecriture                                     ')
- 2000 format(/,3X,'** ECRITURE DU FICHIER SUITE AUXILIAIRE',/,    &
+ 2000 format(/,3X,'** Ecriture du fichier suite auxiliaire',/,    &
          3X,'   ------------------------------------ ',/)
 
  7000 format(                                                           &
@@ -2546,14 +2550,14 @@ return
 
 #else
 
- 1000 format(3X,'** WRITING THE MAIN RESTART FILE',/,             &
+ 1000 format(3X,'** Writing the main restart file',/,             &
        3X,'   -----------------------------',/)
  1010 format(3X,'   Opening a binary file',/)
  1020 format(3X,'   Opening an ASCII file',/)
  1100 format(' Start writing'                                          )
  1110 format('  ',A54                                                  )
  1200 format(' End writing'                                            )
- 2000 format(/,3X,'** WRITING THE AUXILLIARY RESTART FILE',/,     &
+ 2000 format(/,3X,'** Writing the auxilliary restart file',/,     &
          3X,'   -----------------------------------',/)
 
  7000 format(                                                           &
@@ -2764,4 +2768,4 @@ return
 #endif
 
 
-end
+end subroutine
diff --git a/src/base/ecrhis.f90 b/src/base/ecrhis.f90
index dec5d8c..7e82d52 100644
--- a/src/base/ecrhis.f90
+++ b/src/base/ecrhis.f90
@@ -42,24 +42,24 @@ subroutine ecrhis &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! modhis           ! e  ! <-- ! indicateur valant 0,1 ou 2                     !
 !                  !    !     ! 1,2 = ecriture intermediaire, finale           !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
 ! (ndim,ncelet)    !    !     !                                                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
 ! ra               ! tr !  -- ! tableau des reels                              !
 !__________________!____!_____!________________________________________________!
 
@@ -72,7 +72,7 @@ subroutine ecrhis &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -94,7 +94,7 @@ integer          idevel(nideve), ituser(nituse), ia(*)
 double precision xyzcen(ndim,ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character        nomfic*300, nenvar*300
 integer          ii, ii1, ii2, lpos, inam1, inam2, lng
@@ -151,8 +151,8 @@ if(ipass.eq.1 .and. irangp.le.0) then
   nomfic(ii2+1:ii2+8) = 'hist.tmp'
   ii2 = ii2+8
   open (unit=imphis(1), file=nomfic(ii1:ii2), &
-        status='UNKNOWN', form='UNFORMATTED', &
-        access='SEQUENTIAL')
+        status='unknown', form='unformatted', &
+        access='sequential')
 endif
 
 !===============================================================================
@@ -411,4 +411,4 @@ endif
  1000 format ( 1(1x,i7,1x),101(1x,e14.7))
 
 return
-end
+end subroutine
diff --git a/src/base/ecrlis.f90 b/src/base/ecrlis.f90
index 2f66bc6..0454ceb 100644
--- a/src/base/ecrlis.f90
+++ b/src/base/ecrlis.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,21 +44,21 @@ subroutine ecrlis &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! nvar             ! e  ! <-- ! nombre de variables                            !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! irtp             ! e  ! <-- ! indice de rtp dans ra                          !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! rtp              ! tr ! <-- ! tableaux des variables au pdt courant          !
 ! (ncelet,nvar)    !    !     !                                                !
 ! rtpa             ! tr ! <-- ! tableaux des variables au pdt prec             !
@@ -66,11 +66,11 @@ subroutine ecrlis &
 ! dt   (ncelet)    ! tr ! <-- ! valeur du pas de temps                         !
 ! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
 ! (ncelet)         !    !     !                                                !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -82,7 +82,7 @@ subroutine ecrlis &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -109,7 +109,7 @@ double precision dt(ncelet), volume(ncelet)
 double precision xyzcen(ndim,ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj, ic, icel, ipp, ira, ivrtp, iok
 integer          iphas, kphas, iprnew, ipuvw
@@ -616,4 +616,4 @@ endif
 
 #endif
 return
-end
+end subroutine
diff --git a/src/base/findpt.f90 b/src/base/findpt.f90
index d8d5b0f..c85bf2b 100644
--- a/src/base/findpt.f90
+++ b/src/base/findpt.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,10 +40,10 @@ subroutine findpt &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! xyzcen(ndim      ! tr !  -->! table des coordonnees du                       !
 !        ncelet    !    !     !           centre des volumes                   !
 ! xx,yy,zz         ! tr !  -->! coordonnees du noeud cherche                   !
@@ -61,7 +61,7 @@ subroutine findpt &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -107,4 +107,4 @@ else
 endif
 
 return
-end
+end subroutine
diff --git a/src/base/gradmc.f90 b/src/base/gradmc.f90
index ea3ec64..4df69ca 100644
--- a/src/base/gradmc.f90
+++ b/src/base/gradmc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,14 +52,13 @@ subroutine gradmc &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! ncelbr           ! e  ! <-- ! nombre d'elements ayant au  moins              !
-!                  !    !     ! face de bord                                   !
 ! inc              ! e  ! <-- ! indicateur = 0 resol sur increment             !
 !                  !    !     !              1 sinon                           !
 ! iccocg           ! e  ! <-- ! indicateur = 1 pour recalcul de cocg           !
@@ -90,7 +89,7 @@ subroutine gradmc &
 !                  !    !     !  2 moindre carre support etendu                !
 !                  !    !     !  3 moindre carre support etendu redui          !
 !                  !    !     !  4 reconstr avec init moindres carres          !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! nfecra           ! e  ! <-- ! unite du fichier sortie std                    !
 ! epsrgp           ! r  ! <-- ! precision relative pour la                     !
 !                  !    !     !  reconstruction des gradients 97               !
@@ -150,7 +149,7 @@ subroutine gradmc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -182,7 +181,7 @@ double precision cocgb(ncelbr,3,3), cocg(ncelet,3,3)
 double precision dpdx (ncelet),dpdy (ncelet),dpdz (ncelet)
 double precision bx(ncelet),by(ncelet),bz(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          lbloc
 parameter       (lbloc = 1024)
@@ -1396,4 +1395,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/gradrc.f90 b/src/base/gradrc.f90
index 55a7ccc..001bc69 100644
--- a/src/base/gradrc.f90
+++ b/src/base/gradrc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -53,14 +53,13 @@ subroutine gradrc &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! ncelbr           ! e  ! <-- ! nombre d'elements ayant au  moins              !
-!                  !    !     ! face de bord                                   !
 ! imrgra           ! e  ! <-- ! methode de calcul du gradient                  !
 ! inc              ! e  ! <-- ! indicateur = 0 resol sur increment             !
 !                  !    !     !              1 sinon                           !
@@ -86,7 +85,7 @@ subroutine gradrc &
 !                  !    !     !     implicite pour la translation              !
 ! ivar             ! e  ! <-- ! indicateur du numero de la variable            !
 !                  !    !     ! (ou 0 si variable non resolue)                 !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! iphydp           ! e  ! <-- ! indicateur de prise en compte de la            !
 !                  !    !     ! pression hydrostatique                         !
 ! nfecra           ! e  ! <-- ! unite du fichier sortie std                    !
@@ -141,7 +140,7 @@ subroutine gradrc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -149,6 +148,7 @@ include "cstphy.h"
 include "cstnum.h"
 include "vector.h"
 include "albase.h"
+include "cplsat.h"
 include "period.h"
 include "parall.h"
 
@@ -177,7 +177,7 @@ double precision bx   (ncelet),by   (ncelet),bz   (ncelet)
 double precision fextx(ncelet),fexty(ncelet),fextz(ncelet)
 double precision dofij(3,nfac)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          lbloc
 parameter       (lbloc = 1024)
@@ -432,7 +432,7 @@ ipass = ipass + 1
 !     RESOLUTION SEMI-IMPLICITE SUR TOUT LE MAILLAGE
 !     DPDX,DY,DZ = GRADIENT
 
-if(ipass.eq.1 .or. iale.eq.1) then
+if(ipass.eq.1 .or. iale.eq.1 .or. imobil.eq.1) then
 
 ! ---> CALCUL DE COCG
 
@@ -646,7 +646,7 @@ endif
 ! ---> SI ON DOIT RECALCULER COCG ENSUITE, ON NE LE FAIT PLUS
 !      QUE POUR LES CELLULES DE BORD, AVEC LE COCGB STOCKE
 
-if(iccocg.eq.1 .and. ipass.gt.1 .and. iale.eq.0) then
+if(iccocg.eq.1 .and. ipass.gt.1 .and. iale.eq.0 .and. imobil.eq.0) then
 
   do ll =1,3
     do mm =1,3
@@ -1065,4 +1065,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/grdcel.f90 b/src/base/grdcel.f90
index e674131..fdcad76 100644
--- a/src/base/grdcel.f90
+++ b/src/base/grdcel.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -53,25 +53,24 @@ subroutine grdcel &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! ivar             ! e  ! <-- ! numero de la variable                          !
 !                  !    !     !   destine a etre utilise pour la               !
 !                  !    !     !   periodicite uniquement (pering)              !
@@ -96,7 +95,7 @@ subroutine grdcel &
 !                  !    !     !  < 0 pas de limitation                         !
 !                  !    !     !  = 0 a partir des gradients voisins            !
 !                  !    !     !  = 1 a partir du gradient moyen                !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! iphydp           ! e  ! <-- ! indicateur de prise en compte de la            !
 !                  !    !     ! pression hydrostatique                         !
 ! nfecra           ! e  ! <-- ! unite du fichier sortie std                    !
@@ -104,41 +103,32 @@ subroutine grdcel &
 !                  !    !     !  reconstruction des gradients 97               !
 ! climgp           ! r  ! <-- ! coef gradient*distance/ecart                   !
 ! extrap           ! r  ! <-- ! coef extrap gradient                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! pvar  (ncelet    ! tr ! <-- ! variable (pression)                            !
 ! coefap,coefbp    ! tr ! <-- ! tableaux des cond lim pour pvar                !
 !   (nfabor)       !    !     !  sur la normale a la face de bord              !
@@ -147,9 +137,9 @@ subroutine grdcel &
 ! dpdx,dpdy        ! tr ! --> ! gradient de pvar                               !
 ! dpdz (ncelet     !    !     !                                                !
 ! dpdxa (ncelet    ! tr ! --- ! tableau de travail pour le grad de p           !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -162,7 +152,7 @@ subroutine grdcel &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -201,7 +191,7 @@ double precision dpdx (ncelet),dpdy (ncelet),dpdz (ncelet)
 double precision dpdxa(ncelet),dpdya(ncelet),dpdza(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          idimte , itenso
@@ -363,4 +353,4 @@ call clmgrd                                                       &
 
 
 return
-end
+end subroutine
diff --git a/src/base/haltyp.f90 b/src/base/haltyp.f90
index 76ef68b..541e5cb 100644
--- a/src/base/haltyp.f90
+++ b/src/base/haltyp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -38,7 +38,7 @@ subroutine haltyp &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ivoset           ! e  ! <-- ! indicateur d'activation du vois. et.           !
 !__________________!____!_____!________________________________________________!
@@ -52,7 +52,7 @@ subroutine haltyp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimens.h"
@@ -81,4 +81,4 @@ enddo
 if (ippmod(iaeros).ge.0) ivoset = 1
 
 return
-end
+end subroutine
diff --git a/src/base/hturbp.f90 b/src/base/hturbp.f90
index ebb4c7d..a26d832 100644
--- a/src/base/hturbp.f90
+++ b/src/base/hturbp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,7 +55,7 @@ subroutine hturbp &
 
 !-------------------------------------------------------------------------------
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! yplus            ! r  ! <-- ! distance a la paroi adimensionnelle            !
 ! ckarm            ! r  ! <-- ! constante de karman                            !
@@ -80,7 +80,7 @@ implicit none
 double precision htur
 double precision prl,ckarm,prt,yplus
 
-! VARIABLES LOCALES
+! Local variables
 
 double precision tplus
 double precision beta2,a2
@@ -141,4 +141,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/idrbla.f90 b/src/base/idrbla.f90
index fb7922b..fae9bdc 100644
--- a/src/base/idrbla.f90
+++ b/src/base/idrbla.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,8 +25,8 @@
 
 !-------------------------------------------------------------------------------
 
-                integer function idrbla                           &
-!================
+integer function idrbla &
+!======================
 
  ( chaine, lch )
 
@@ -42,7 +42,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! chaine           ! e  ! <-- ! chaine a verifier                              !
 ! lch              ! e  ! <-- ! longueur de la chaine                          !
@@ -61,7 +61,7 @@ implicit none
 character chaine*(*)
 integer   lch
 
-! VARIABLES LOCALES
+! Local variables
 
 integer   ii
 
@@ -85,4 +85,4 @@ idrbla = 0
 ! FIN
 !-----
 
-end
+end function
diff --git a/src/base/impini.f90 b/src/base/impini.f90
index f969436..51525cb 100644
--- a/src/base/impini.f90
+++ b/src/base/impini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine impini
+subroutine impini
 !================
 
 
@@ -38,7 +38,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -51,7 +51,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -79,7 +79,7 @@ include "mltgrd.h"
 ! Arguments
 
 
-! VARIABLES LOCALES
+! Local variables
 
 character        name*300, chaine*80
 integer          iok20 , iok21 , iok30 , iok31 , iok50 , iok60
@@ -2972,4 +2972,4 @@ write(nfecra,9900)
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/base/iniini.f90 b/src/base/iniini.f90
index 6f51e91..61a14fa 100644
--- a/src/base/iniini.f90
+++ b/src/base/iniini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,7 +39,7 @@ subroutine iniini
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@ subroutine iniini
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -76,7 +76,7 @@ include "cplsat.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj, ivar, iscal, iphas, iprop, iest, imom
 integer          istr
@@ -936,7 +936,7 @@ enddo
 do ii = 1, nvarmx
   ncymax(ii) = 100
   nitmgf(ii) = 10
-  nagmx0(ii)= 8
+  nagmx0(ii)= 3
   iagmx0(ii)= 1
   ncpmgr(ii)= 0
 enddo
@@ -946,7 +946,7 @@ enddo
 ncegrm = 30
 ngrmax = 25
 
-rlxp1 = 1.d0
+rlxp1 = 0.95d0
 
 ! --- Suite de calcul
 !       Calcul non suite par defaut
@@ -1518,6 +1518,9 @@ gamnmk = -grand
 ! --- Nombre de couplage
 nbrcpl = 0
 
+! --- Couplage uniquement par les faces
+ifaccp = 0
+
 !===============================================================================
 ! 15. SORTIE
 !===============================================================================
diff --git a/src/base/inimas.f90 b/src/base/inimas.f90
index 6524996..7555352 100644
--- a/src/base/inimas.f90
+++ b/src/base/inimas.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -72,34 +72,33 @@ subroutine inimas &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! ivar1            ! e  ! <-- ! variable de la direction 1                     !
 ! ivar2            ! e  ! <-- ! variable de la direction 2                     !
 ! ivar3            ! e  ! <-- ! variable de la direction 3                     !
 ! imaspe           ! e  ! <-- ! suivant l'appel de inimas                      !
 !                  !    !     ! = 1 si appel de navsto resolp                  !
 !                  !    !     ! = 2 si appel de divrij                         !
-! iphas            ! e  ! <-- ! numero de phase courante                       !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! iphas            ! i  ! <-- ! phase number                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! iflmb0           ! e  ! <-- ! =1 : flux de masse annule sym-paroi            !
 ! init             ! e  ! <-- ! > 0 : initialisation du flux de masse          !
 ! inc              ! e  ! <-- ! indicateur = 0 resol sur increment             !
@@ -120,44 +119,35 @@ subroutine inimas &
 !                  !    !     !  reconstruction des gradients 97               !
 ! climgu           ! r  ! <-- ! coef gradient*distance/ecart                   !
 ! extrau           ! r  ! <-- ! coef extrap gradient                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! isympa           ! te ! <-- ! zero pour annuler le flux de masse             !
 ! (nfabor     )    !    !     !(symetries et parois avec cl couplees)          !
 !                  !    !     ! un sinon                                       !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! rom(ncelet       ! tr ! <-- ! masse volumique aux cellules                   !
 ! romb(nfabor)     ! tr ! <-- ! masse volumique aux bords                      !
 ! ux,y,z(ncelet    ! tr ! <-- ! vitesse                                        !
@@ -170,9 +160,9 @@ subroutine inimas &
 !                  !    !     !  avec decentrement amont                       !
 ! qdm.(ncelet)     ! tr ! --- ! tableau de travail pour la qdm                 !
 ! coefqa(nfab,3    ! tr ! --- ! tableau de travail cl de la qdm                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -184,7 +174,7 @@ subroutine inimas &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -232,7 +222,7 @@ double precision qdmx(ncelet),qdmy(ncelet),qdmz(ncelet)
 double precision coefqa(ndimfb,3)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, ii, jj, iel, iof, iii
@@ -634,4 +624,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/inipst.f90 b/src/base/inipst.f90
index 5e79de0..cf7d6bf 100644
--- a/src/base/inipst.f90
+++ b/src/base/inipst.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-subroutine  inipst                              &
+subroutine inipst &
 !=================
 
  ( ipstvl , ipstbo , ipstsy , ipstze,                             &
@@ -41,7 +41,7 @@ subroutine  inipst                              &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ipstvl           ! e  ! --> ! indicateur pour le maillage volumique          !
 ! ipstbo           ! e  ! --> ! indicateur pour le maillage de peau            !
@@ -75,7 +75,7 @@ implicit none
 !===============================================================================
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -91,7 +91,7 @@ integer          ipstmd , ntpst
 character        fmtpst(32)
 character        optpst(96)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii
 
@@ -118,4 +118,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/initi1.f90 b/src/base/initi1.f90
index eb79267..669e31f 100644
--- a/src/base/initi1.f90
+++ b/src/base/initi1.f90
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine initi1                               &
+subroutine initi1 &
 !================
 
  ( iverif )
@@ -39,7 +39,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! iverif           ! e  ! <-- ! indicateur des tests elementaires              !
 !__________________!____!_____!________________________________________________!
@@ -53,13 +53,14 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
 include "optcal.h"
 include "entsor.h"
 include "matiss.h"
+include "ihmpre.h"
 
 !===============================================================================
 
@@ -67,7 +68,7 @@ include "matiss.h"
 
 integer          iverif
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iok
 
@@ -122,9 +123,17 @@ if (iverif.eq.1) imrgra = 2
 ! Le nombre de couplage SYRTHES doit etre connu avant MODINI a des fins
 ! de verification de coherence avec la definition des scalaires
 
+if (iihmpr.eq.1) then
+  call uisyrc
+  !==========
+endif
+
 call ussyrc
 !==========
 
+call ussatc
+!==========
+
 !===============================================================================
 ! 4. MODIFS APRES USINI1
 !===============================================================================
@@ -218,4 +227,4 @@ endif
 
 
 return
-end
+end subroutine
diff --git a/src/base/initi2.f90 b/src/base/initi2.f90
index eb37ef1..401a004 100644
--- a/src/base/initi2.f90
+++ b/src/base/initi2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine initi2                               &
+subroutine initi2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -41,12 +41,11 @@
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! jcelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
 ! ia(*)            ! tr ! --- ! tableau de travail pour les entiers            !
 ! ra(*)            ! tr ! --- ! tableau de travail pour les reels              !
 !__________________!____!_____!________________________________________________!
@@ -61,7 +60,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -79,7 +78,7 @@ integer          jcelbr
 integer          ia(*)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iphas
@@ -159,4 +158,4 @@ enddo
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/base/iniusi.f90 b/src/base/iniusi.f90
index f67b5d6..8286886 100644
--- a/src/base/iniusi.f90
+++ b/src/base/iniusi.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,7 +50,7 @@ subroutine iniusi(iverif)
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! iverif           ! e  ! <-- ! indicateur des tests elementaires              !
 !__________________!____!_____!________________________________________________!
@@ -64,7 +64,7 @@ subroutine iniusi(iverif)
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -93,7 +93,7 @@ include "radiat.h"
 
 integer          iverif
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, iphas , iscal , nmodpp
 integer          nphmax, nscmax, nesmax, nphusi, nscusi
@@ -226,13 +226,6 @@ endif
 call usppmo
 !==========
 
-! --- Varpos
-!     Verification et construction de ISCAPP
-!      2ieme passage
-call varpos(nmodpp)
-!==========
-
-
 ! --- Activation du module transferts radiatifs
 
 !     Il est necessaire de connaitre l'activation du module transferts
@@ -249,6 +242,19 @@ if(iihmpr.eq.1) then
 
 endif
 
+!   - Sous-programme utilisateur
+!     ==========================
+
+call usray1
+!==========
+
+! --- Varpos
+!     Verification et construction de ISCAPP
+!      2ieme passage
+call varpos(nmodpp)
+!==========
+
+
 ! --- Parametres dependant du nombre de scalaires utilisateurs
 
 !     Moyenne du carre des fluctuations d'un scalaire UTILISATEUR
@@ -418,7 +424,7 @@ if(iihmpr.eq.1) then
              isca, iscapp)
 
 !     Suite de calcul, relecture fichier auxiliaire, champ de vitesse figé
-  call csisui(isuite, ileaux, iccvfg)
+  call csisui(isuite, ntsuit, ileaux, iccvfg)
   !==========
 
 !     Pas de temps (seulement NTMABS, DTREF, INPDT0)
@@ -484,7 +490,7 @@ if(iihmpr.eq.1) then
              ismago, iale, icp, iscalt, iscavr,                   &
              iprtot, ipppro, ipproc, icmome,                      &
              ipptx, ippty, ipptz, ippdt,                          &
-             ivisma, iappel)
+             ivisma, idtvar, ipucou, iappel)
 
   call uimoyt (ndgmox, ntdmom, imoold, idfmom)
   !==========
@@ -517,7 +523,6 @@ call varpos(nmodpp)
 
 if(iihmpr.eq.1) then
 
-  if(nbmomt.gt.0 .or. ipucou.eq.1) then
     iappel = 1
 
     call uiprop                                                   &
@@ -526,9 +531,7 @@ if(iihmpr.eq.1) then
              ismago, iale, icp, iscalt, iscavr,                   &
              iprtot, ipppro, ipproc, icmome,                      &
              ipptx, ippty, ipptz, ippdt,                          &
-             ivisma, iappel)
-
-  endif
+             ivisma, idtvar, ipucou, iappel)
 
   do ii = 1,nvppmx
     call fcnmva (nomvar(ii), len(nomvar(ii)), ii)
@@ -567,4 +570,4 @@ call usipes(nmodpp, iverif)
 
 
 return
-end
+end subroutine
diff --git a/src/base/iniva0.f90 b/src/base/iniva0.f90
index 680bbd7..6d8f049 100644
--- a/src/base/iniva0.f90
+++ b/src/base/iniva0.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine iniva0                               &
+subroutine iniva0 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -53,80 +53,67 @@
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! ncofab           ! e  ! <-- ! nombre de couples coefa/b pour les cl          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
 !                  !    !     !  a la face interne                             !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
 ! frcxt(ncelet,    ! tr ! <-- ! force exterieure generant la pression          !
 !   3,nphas)       !    !     !  hydrostatique                                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -138,7 +125,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -154,6 +141,7 @@ include "parall.h"
 include "ppppar.h"
 include "ppthch.h"
 include "ppincl.h"
+include "cplsat.h"
 
 !===============================================================================
 
@@ -183,7 +171,7 @@ double precision coefa(nfabor,ncofab), coefb(nfabor,ncofab)
 double precision frcxt(ncelet,3,nphas)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iis   , ivar  , iphas , iphass, iscal , imom
@@ -702,7 +690,7 @@ if(iphydr.eq.1) then
 endif
 
 !===============================================================================
-! 12.  INITIALISATIONS EN ALE
+! 13.  INITIALISATIONS EN ALE OU MAILLAGE MOBILE
 !===============================================================================
 
 if (iale.eq.1) then
@@ -710,6 +698,13 @@ if (iale.eq.1) then
     ia(iimpal+ii-1) = 0
     do idim = 1, 3
       ra(idepal+(idim-1)*nnod+ii-1) = 0.d0
+    enddo
+  enddo
+endif
+
+if (iale.eq.1.or.imobil.eq.1) then
+  do ii = 1, nnod
+    do idim = 1, 3
       ra(ixyzn0+(ii-1)*ndim+idim-1) = xyznod(idim,ii)
     enddo
   enddo
@@ -720,4 +715,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/inivar.f90 b/src/base/inivar.f90
index 37b14df..31bd199 100644
--- a/src/base/inivar.f90
+++ b/src/base/inivar.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -51,79 +51,66 @@ subroutine inivar &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! ncofab           ! e  ! <-- ! nombre de couples coefa/b pour les cl          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
 ! frcxt(ncelet,    ! tr ! <-- ! force exterieure generant la pression          !
 !   3,nphas)       !    !     !  hydrostatique                                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -135,7 +122,7 @@ subroutine inivar &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -181,7 +168,7 @@ double precision coefa(nfabor,ncofab), coefb(nfabor,ncofab)
 double precision frcxt(ncelet,3,nphas)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra, ifinia
@@ -222,9 +209,9 @@ iusini = 1
 !   - Interface Code_Saturne
 !     ======================
 
-if (isuite.eq.0 .and. iihmpr.eq.1) then
+if (iihmpr.eq.1) then
 
-  call uiiniv (ncelet, isca, rtp)
+  call uiiniv (ncelet, isuite, isca, iscold, rtp)
   !==========
 
 endif
@@ -235,7 +222,7 @@ endif
 maxelt = max(ncelet, nfac, nfabor)
 ils    = idebia
 ifinia = ils + maxelt
-CALL IASIZE('INIVAR',IFINIA)
+call iasize('inivar',IFINIA)
 
 call usiniv                                                       &
 !==========
@@ -728,7 +715,7 @@ if (idtvar.ge.0) then
     call parmin (vdtmin)
     !==========
   endif
-  WRITE(NFECRA,2010)'PasDeTmp',VDTMIN,VDTMAX
+  write(nfecra,2010) nomvar(ippdt), vdtmin, vdtmax
   write(nfecra,2020)
 
   if (vdtmin.le.zero) then
@@ -784,9 +771,15 @@ if(nbmomt.gt.0) then
                               vmomax(icdtmo(idtmom(imom))),       &
                               'Variable'
     elseif(idtmom(imom).lt.0) then
+#if defined(_CS_LANG_FR)
       write(nfecra,2040) imom,dtcmom(-idtmom(imom))       ,       &
                               dtcmom(-idtmom(imom))       ,       &
                               'Uniforme'
+#else
+      write(nfecra,2040) imom,dtcmom(-idtmom(imom))       ,       &
+                              dtcmom(-idtmom(imom))       ,       &
+                              'Uniform'
+#endif
     endif
   enddo
   write(nfecra,2050)
@@ -1398,4 +1391,4 @@ write(nfecra,3000)
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/invers.f90 b/src/base/invers.f90
index 947166d..5f14108 100644
--- a/src/base/invers.f90
+++ b/src/base/invers.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -58,25 +58,24 @@ subroutine invers &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! cnom             ! a  ! <-- ! nom de la variable                             !
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! isym             ! e  ! <-- ! indicateur = 1 matrice sym                     !
 !                  !    !     !            = 2 matrice non sym                 !
 ! ipol             ! e  ! <-- ! degre du polynome pour precond                 !
@@ -88,7 +87,7 @@ subroutine invers &
 ! imgrp            ! e  ! <-- ! indicateur = 0 pas de multigrille              !
 ! ncymxp           ! e  ! <-- ! nombre de cycles max pour multigrille          !
 ! nitmfp           ! e  ! <-- ! nombre d iter sur maillage fin                 !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! nfecra           ! e  ! <-- ! unite du fichier sortie std                    !
 ! niterf           ! e  ! --> ! nombre d'iterations effectuees                 !
 !                  !    !     !  (non multigrille)                             !
@@ -100,50 +99,41 @@ subroutine invers &
 ! epsilp           ! r  ! <-- ! precision pour resol iter                      !
 ! rnorm            ! r  ! <-- ! normalisation du residu                        !
 ! residu           ! r  ! --> ! residu final non norme                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dam(ncelet       ! tr ! <-- ! diagonale (maillage fin si mgm)                !
 ! xam(nfac,isym    ! tr ! <-- ! extradiagonale (maillage fin si mgm)           !
 ! smbrp(ncelet     ! tr ! <-- ! second membre (maillage fin si mgm)            !
 ! vx   (ncelet     ! tr ! <-- ! solution du systeme                            !
 ! w1,2,3,4,5,6     ! tr ! --- ! auxiliaires de travail                         !
 !      (ncelet     !    !     !                                                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -155,7 +145,7 @@ subroutine invers &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -197,7 +187,7 @@ double precision w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          lnom
@@ -270,4 +260,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/iprbla.f90 b/src/base/iprbla.f90
index 2657346..a1998d1 100644
--- a/src/base/iprbla.f90
+++ b/src/base/iprbla.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,8 +25,8 @@
 
 !-------------------------------------------------------------------------------
 
-                integer function iprbla                           &
-!================
+integer function iprbla &
+!======================
 
  ( chaine, lch )
 
@@ -42,7 +42,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! chaine           ! e  ! <-- ! chaine a verifier                              !
 ! lch              ! e  ! <-- ! longueur de la chaine                          !
@@ -61,7 +61,7 @@ implicit none
 character chaine*(*)
 integer   lch
 
-! VARIABLES LOCALES
+! Local variables
 
 integer   ii
 
@@ -85,4 +85,4 @@ iprbla = 0
 ! FIN
 !----
 
-end
+end function
diff --git a/src/base/itrgrp.f90 b/src/base/itrgrp.f90
index 21bb795..5ba8bdc 100644
--- a/src/base/itrgrp.f90
+++ b/src/base/itrgrp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -63,27 +63,26 @@ subroutine itrgrp &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! init             ! e  ! <-- ! > 0 : initialisation du flux de masse          !
 ! inc              ! e  ! <-- ! indicateur = 0 resol sur increment             !
 !                  !    !     !              1 sinon                           !
@@ -97,7 +96,7 @@ subroutine itrgrp &
 !                  !    !     !  < 0 pas de limitation                         !
 !                  !    !     !  = 0 a partir des gradients voisins            !
 !                  !    !     !  = 1 a partir du gradient moyen                !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! iphydp           ! e  ! <-- ! indicateur de prise en compte de la            !
 !                  !    !     ! pression hydrostatique                         !
 ! nfecra           ! e  ! <-- ! unite du fichier sortie std                    !
@@ -119,8 +118,8 @@ subroutine itrgrp &
 ! dpd.(ncelet      ! tr ! --- ! tableau de travail pour le grad de p           !
 ! dpdxa,y,z        ! tr ! --- ! tableau de travail pour le grad de p           !
 !    (ncelet       !    !     !  avec decentrement amont                       !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -134,7 +133,7 @@ subroutine itrgrp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -179,7 +178,7 @@ double precision dpdx (ncelet),dpdy (ncelet),dpdz (ncelet)
 double precision dpdxa(ncelet),dpdya(ncelet),dpdza(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, ii, jj, iij, iii, ivar
@@ -398,4 +397,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/itrmas.f90 b/src/base/itrmas.f90
index 99c4cf3..edec753 100644
--- a/src/base/itrmas.f90
+++ b/src/base/itrmas.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -63,27 +63,26 @@ subroutine itrmas &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! init             ! e  ! <-- ! > 0 : initialisation du flux de masse          !
 ! inc              ! e  ! <-- ! indicateur = 0 resol sur increment             !
 !                  !    !     !              1 sinon                           !
@@ -97,7 +96,7 @@ subroutine itrmas &
 !                  !    !     !  < 0 pas de limitation                         !
 !                  !    !     !  = 0 a partir des gradients voisins            !
 !                  !    !     !  = 1 a partir du gradient moyen                !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! iphydp           ! e  ! <-- ! indicateur de prise en compte de la            !
 !                  !    !     ! pression hydrostatique                         !
 ! nfecra           ! e  ! <-- ! unite du fichier sortie std                    !
@@ -120,8 +119,8 @@ subroutine itrmas &
 ! dpd.(ncelet      ! tr ! --- ! tableau de travail pour le grad de p           !
 ! dpdxa,y,z        ! tr ! --- ! tableau de travail pour le grad de p           !
 !    (ncelet       !    !     !  avec decentrement amont                       !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -135,7 +134,7 @@ subroutine itrmas &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -180,7 +179,7 @@ double precision dpdx (ncelet),dpdy (ncelet),dpdz (ncelet)
 double precision dpdxa(ncelet),dpdya(ncelet),dpdza(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, ii, jj, iij, iii
@@ -392,4 +391,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/lecamo.f90 b/src/base/lecamo.f90
index ec597a8..2cc11ec 100644
--- a/src/base/lecamo.f90
+++ b/src/base/lecamo.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,24 +46,24 @@ subroutine lecamo &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! ndim             ! e  ! <-- ! dimension du calcul                            !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! nnod             ! e  ! <-- ! nombre de noeuds                               !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! dt(ncelet)       ! tr ! --> ! pas de temps                                   !
 ! rtp              ! tr ! --> ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant        )          !
@@ -77,9 +77,9 @@ subroutine lecamo &
 !  (nfabor,*)      !    !     !    faces de bord                               !
 ! frcxt(ncelet,    ! tr ! --> ! force exterieure generant la pression          !
 !   3,nphas)       !    !     !  hydrostatique                                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -91,7 +91,7 @@ subroutine lecamo &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -121,7 +121,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision frcxt(ncelet,3,nphas)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -207,4 +207,4 @@ write(nfecra,2000)
 
 
 return
-end
+end subroutine
diff --git a/src/base/lecamp.f90 b/src/base/lecamp.f90
index d2b4b5e..c79f062 100644
--- a/src/base/lecamp.f90
+++ b/src/base/lecamp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,28 +50,28 @@ subroutine lecamp &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! jphas            ! e  ! <-- ! nombre de phases du calcul precedent           !
 ! ljtu             ! e  ! <-- ! longueur de jturb                              !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! jturb            ! te ! <-- ! modeles de turb calcul precedent               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! rtp              ! tr ! --> ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant        )          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -83,7 +83,7 @@ subroutine lecamp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -110,7 +110,7 @@ integer          idevel(nideve), ituser(nituse), ia(*)
 double precision rtp(ncelet,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character        rubriq*64,rubrik*64,car4*4
 character        cindfp*2
@@ -1884,4 +1884,4 @@ return
 
 #endif
 
-end
+end subroutine
diff --git a/src/base/lecamx.f90 b/src/base/lecamx.f90
index 1883dba..5ffdc8a 100644
--- a/src/base/lecamx.f90
+++ b/src/base/lecamx.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -61,25 +61,25 @@ subroutine lecamx &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! ndim             ! e  ! <-- ! dimension du calcul                            !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! nnod             ! e  ! <-- ! nombre de noeuds                               !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! jturb            ! te ! <-- ! modeles de turb calcul precedent               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! dt(ncelet)       ! tr ! --> ! pas de temps                                   !
 ! rtp              ! tr ! --> ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant        )          !
@@ -96,9 +96,9 @@ subroutine lecamx &
 ! racell(ncelet    ! tr ! --- ! tableau de travail                             !
 ! rafacl(nfac      ! tr ! --- ! tableau de travail                             !
 ! rafabl(nfabor    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -110,7 +110,7 @@ subroutine lecamx &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -150,7 +150,7 @@ double precision coefa(ndimfb,*), coefb(ndimfb,*)
 double precision frcxt(ncelet,3,nphas)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 
 character        rubriq*64,car4*4,car2*2
@@ -2323,6 +2323,14 @@ if ( ippmod(icp3pl).ge.0.or. ippmod(icpl3c).ge.0 ) then
       ierrch=ierrch+ierror
       nberro=nberro+ierror
 
+      itysup = 0
+      nbval  = nozppm
+      irtyp  = 1
+      RUBRIQ = 'inmoxy_zone_bord_charbon_pulverise'
+      call lecsui(impamx,rubriq,len(rubriq),itysup,nbval,irtyp,   &
+                  inmoxy, ierror)
+      ierrch=ierrch+ierror
+      nberro=nberro+ierror
 
       itysup = 0
       nbval  = nozppm
@@ -3592,4 +3600,4 @@ return
 
 #endif
 
-end
+end subroutine
diff --git a/src/base/ledgeo.f90 b/src/base/ledgeo.f90
index de3c6f0..73f7e44 100644
--- a/src/base/ledgeo.f90
+++ b/src/base/ledgeo.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,7 +40,7 @@ subroutine ledgeo &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ndim             ! e  ! --> ! dimension de l'espace (=3)                     !
 ! ncelet           ! e  ! --> ! nombre d'elements halo compris                 !
@@ -64,7 +64,7 @@ subroutine ledgeo &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -77,7 +77,7 @@ include "entsor.h"
 integer          ndim   , ncelet , ncel   , nfac   , nfabor
 integer          nprfml , nfml   , nsom   , lndfac , lndfbr
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel , ifac , ifml , nn , n1 , ip
 integer          ntetra , npyram , nprism , nhexae
@@ -405,4 +405,4 @@ call csexit (1)
 
 #endif
 
-end
+end subroutine
diff --git a/src/base/letgeo.f90 b/src/base/letgeo.f90
index 6a9eb08..ddc343f 100644
--- a/src/base/letgeo.f90
+++ b/src/base/letgeo.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,18 +45,18 @@ subroutine letgeo &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
 ! ntetra           ! e  ! <-- ! nombre de tetraedres du maillage               !
 ! npyram           ! e  ! <-- ! nombre de pyramides  du maillage               !
 ! nprism           ! e  ! <-- ! nombre de prismes    du maillage               !
@@ -65,7 +65,6 @@ subroutine letgeo &
 !                  !    !     !  connectivite nodale pour le                   !
 !                  !    !     !  post traitement                               !
 ! ifacel           ! te ! --> ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
 ! ifabor           ! te ! --> ! element  voisin  d'une face de bord            !
 ! (nfabor)         !    !     !                                                !
 ! ifmfbr           ! te ! --> ! numero de famille d'une face de bord           !
@@ -109,7 +108,7 @@ subroutine letgeo &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -139,7 +138,7 @@ double precision cdgfac(ndim,nfac)
 double precision cdgfbo(ndim,nfabor)
 double precision xyznod(ndim,nnod)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          kel, iel, idim, kface, iface, kfafbr, kprffb
 integer          iok, iok1, iok2, ind
@@ -869,4 +868,4 @@ call csexit (1)
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/base/majgeo.f90 b/src/base/majgeo.f90
index fda7636..77df65d 100644
--- a/src/base/majgeo.f90
+++ b/src/base/majgeo.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine majgeo &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ncel2            ! e  ! <-- ! nombre de cellules                             !
 ! ncele2           ! e  ! <-- ! nombre d'elements halo compris                 !
@@ -71,7 +71,7 @@ subroutine majgeo &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimens.h"
@@ -89,7 +89,7 @@ integer          nthdi2, nthdb2
 integer          ngrpi2, ngrpb2
 integer          idxfi(*), idxfb(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj
 
@@ -193,4 +193,4 @@ if (nthrdb.gt.1 .and. ngrpb.gt.1) then
 
 endif
 return
-end
+end subroutine
diff --git a/src/base/matrdt.f90 b/src/base/matrdt.f90
index 097ee9d..80df02e 100644
--- a/src/base/matrdt.f90
+++ b/src/base/matrdt.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -53,72 +53,62 @@ subroutine matrdt &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! iconvp           ! e  ! <-- ! indicateur = 1 convection, 0 sinon             !
 ! idiffp           ! e  ! <-- ! indicateur = 1 diffusion , 0 sinon             !
 ! isym             ! e  ! <-- ! indicateur = 1 matrice symetrique              !
 !                  !    !     !              2 matrice non symetrique          !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! coefbp(nfabor    ! tr ! <-- ! tab b des cl pour le pdt considere             !
 ! flumas(nfac)     ! tr ! <-- ! flux de masse aux faces internes               !
 ! flumab(nfabor    ! tr ! <-- ! flux de masse aux faces de bord                !
 ! viscf(nfac)      ! tr ! <-- ! visc*surface/dist aux faces internes           !
 ! viscb(nfabor     ! tr ! <-- ! visc*surface/dist aux faces de bord            !
 ! da (ncelet       ! tr ! --> ! partie diagonale de la matrice                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -130,7 +120,7 @@ subroutine matrdt &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -164,7 +154,7 @@ double precision viscf(nfac), viscb(nfabor)
 double precision da(ncelet )
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ifac,ii,jj,iel
 double precision flui,fluj,xaifa1,xaifa2
@@ -333,4 +323,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/matrix.f90 b/src/base/matrix.f90
index 553d578..062b14e 100644
--- a/src/base/matrix.f90
+++ b/src/base/matrix.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,12 +47,12 @@ subroutine matrix &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! iconvp           ! e  ! <-- ! indicateur = 1 convection, 0 sinon             !
 ! idiffp           ! e  ! <-- ! indicateur = 1 diffusion , 0 sinon             !
 ! ndircp           ! e  ! <-- ! indicateur = 0 si decalage diagonale           !
@@ -85,7 +85,7 @@ subroutine matrix &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "vector.h"
@@ -106,7 +106,7 @@ double precision flumas(nfac), flumab(nfabor)
 double precision viscf(nfac), viscb(nfabor)
 double precision da(ncelet ),xa(nfac ,isym)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ifac,ii,jj,iel
 double precision flui,fluj,epsi
@@ -311,4 +311,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/memale.f90 b/src/base/memale.f90
index dab389e..2dd2974 100644
--- a/src/base/memale.f90
+++ b/src/base/memale.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -49,37 +49,34 @@ subroutine memale &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! iviscf, b        ! e  ! --> ! "pointeur" sur viscf, viscb                    !
 ! idam, ixam       ! e  ! --> ! "pointeur" sur dam, xam                        !
 ! idrtp            ! e  ! --> ! "pointeur" sur drtp                            !
 ! ismbr            ! e  ! --> ! "pointeur" sur smbr                            !
 ! irovsd           ! e  ! --> ! "pointeur" sur rovsdt                          !
 ! iw1,2,...,9      ! e  ! --> ! "pointeur" sur w1 a w10                        !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -91,7 +88,7 @@ subroutine memale &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -116,7 +113,7 @@ integer          iw1    , iw2    , iw3    , iw4    , iw5    , iw6
 integer          iw7    , iw8    , iw9
 integer          ifinia , ifinra
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -154,4 +151,4 @@ CALL RASIZE('MEMALE',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/memcbr.f90 b/src/base/memcbr.f90
index e8bcb57..c0e3c30 100644
--- a/src/base/memcbr.f90
+++ b/src/base/memcbr.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -48,19 +48,17 @@ subroutine memcbr &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! iicelb           ! e  ! <-- ! pointeur de la premiere cas libre du           !
 !                  !    !     !  tableau  ia (et pointeur sur icelbr)          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! ncelbr           ! e  ! --> ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
 ! ifinia           ! e  ! --> ! iicelb+ncelbr debut de zone libre              !
 !                  !    !     ! dans ia en sortie                              !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! ia               ! te ! --- ! tableau de travail entier                      !
 !__________________.____._____.________________________________________________.
 
@@ -73,7 +71,7 @@ subroutine memcbr &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -85,7 +83,7 @@ integer          ncelbr , ifinia
 integer          ifabor(nfabor)
 integer          ia(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ifac, ii, iel , iiasse
 
@@ -147,4 +145,4 @@ ifinia = iicelb + ncelbr
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/base/memclg.f90 b/src/base/memclg.f90
index efdf323..fd687f1 100644
--- a/src/base/memclg.f90
+++ b/src/base/memclg.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,26 +45,24 @@ subroutine memclg &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre              !
-!__________________.____._____.________________________________________________.
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !!__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
 !            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
@@ -75,7 +73,7 @@ subroutine memclg &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -91,7 +89,7 @@ integer nnod   , lndfac , lndfbr
 integer nideve , nrdeve , nituse , nrtuse
 integer ifinia , ifinra
 
-! VARIABLES LOCALES
+! Local variables
 
 integer idebia ,idebra
 
@@ -126,4 +124,4 @@ CALL RASIZE('MEMCLG',IFINRA)
 !     ==========
 
 return
-end
+end subroutine
diff --git a/src/base/memcli.f90 b/src/base/memcli.f90
index 2da5b43..ee2697f 100644
--- a/src/base/memcli.f90
+++ b/src/base/memcli.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,25 +47,24 @@ subroutine memcli &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! isvhb            ! e  ! <-- ! indicateur de stockage de hbord                !
 ! isvtb            ! e  ! <-- ! indicateur de stockage de tbord                !
 ! iicodc,ircodc    ! e  ! --> ! "pointeur" sur icodlc rcodcl                   !
@@ -75,10 +74,8 @@ subroutine memcli &
 ! itbord           ! e  ! --> ! "pointeur" sur hbord                           !
 ! irijip           ! e  ! --> ! "pointeur" sur rijipb                          !
 ! ivsvdr           ! e  ! --> ! "pointeur" sur visvdr                          !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  ! e  !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  ! e  !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -90,7 +87,7 @@ subroutine memcli &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -173,4 +170,4 @@ CALL RASIZE('MEMCLI',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/memcs1.f90 b/src/base/memcs1.f90
index 6d5f61b..e14c17f 100644
--- a/src/base/memcs1.f90
+++ b/src/base/memcs1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine memcs1                               &
+subroutine memcs1 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -42,7 +42,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !                  !    !     !                                                !
 !__________________.____._______________.________________________________________________!
@@ -56,7 +56,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -71,7 +71,7 @@ integer          ilcesu , ilfbsu
 integer          ilcecp , ilfbcp , ilcenc , ilfbnc
 integer          ifinia , ifinra
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 
@@ -106,4 +106,4 @@ CALL IASIZE('MEMCS1',IFINIA)
 ifinra = idebra
 
 return
-end
+end subroutine
diff --git a/src/base/memcs2.f90 b/src/base/memcs2.f90
index 7f59a8e..62fb600 100644
--- a/src/base/memcs2.f90
+++ b/src/base/memcs2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine memcs2                               &
+subroutine memcs2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -43,7 +43,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !                  !    !     !                                                !
 !__________________.____._______________.________________________________________________!
@@ -57,7 +57,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -74,7 +74,7 @@ integer          irvcpl , irvdis , ilocpt , icoopt
 integer          idjppt , ipndpt , idofcp , idofpt
 integer          ifinia , ifinra
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 
@@ -122,4 +122,4 @@ CALL RASIZE('MEMCS2',IFINRA)
 
 
 return
-end
+end subroutine
diff --git a/src/base/memdis.f90 b/src/base/memdis.f90
index c0c4f31..f565d5a 100644
--- a/src/base/memdis.f90
+++ b/src/base/memdis.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -48,27 +48,26 @@ subroutine memdis &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! iviscf, b        ! e  ! --> ! "pointeur" sur viscf, viscb                    !
 ! idam, ixam       ! e  ! --> ! "pointeur" sur dam, xam                        !
 ! idrtp            ! e  ! --> ! "pointeur" sur drtp                            !
@@ -76,10 +75,8 @@ subroutine memdis &
 ! irovsd           ! e  ! --> ! "pointeur" sur rovsdt                          !
 ! iw1,2,...,9      ! e  ! --> ! "pointeur" sur w1 a w9                         !
 ! itimep           ! e  ! --> ! "pointeur" sur timepa                          !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -91,7 +88,7 @@ subroutine memdis &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -153,4 +150,4 @@ CALL RASIZE('MEMDIS',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/memdtv.f90 b/src/base/memdtv.f90
index 1e9227c..36407a4 100644
--- a/src/base/memdtv.f90
+++ b/src/base/memdtv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,25 +46,24 @@ subroutine memdtv &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! iviscf, b        ! e  ! --> ! "pointeur" sur viscf, viscb                    !
 ! idam             ! e  ! --> ! "pointeur" sur dam                             !
 ! icofbd           ! e  ! --> ! "pointeur" sur cofbdt                          !
@@ -73,10 +72,8 @@ subroutine memdtv &
 ! iw3              ! e  ! --> ! "pointeur" sur w3                              !
 ! igrarx,y,z       ! e  ! --> ! "pointeurs" sur grarox,y,z (iptlro=1)          !
 ! iwcf             ! e  ! --> ! "pointeur" sur wcf                             !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  ! e  !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  ! e  !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -88,7 +85,7 @@ subroutine memdtv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -157,4 +154,4 @@ CALL RASIZE('MEMDTV',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/memdyp.f90 b/src/base/memdyp.f90
index 5418840..07fabcc 100644
--- a/src/base/memdyp.f90
+++ b/src/base/memdyp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -51,27 +51,26 @@ subroutine memdyp &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! idam, ixam       ! e  ! --> ! "pointeur" sur dam, xam                        !
 ! ismbr            ! e  ! --> ! "pointeur" sur smbr                            !
 ! irovsd           ! e  ! --> ! "pointeur" sur rovsdt                          !
@@ -83,10 +82,8 @@ subroutine memdyp &
 ! iflua, iflub     ! e  ! --> ! "pointeur" sur flumas, flumab                  !
 ! icoax,y,z, b     ! e  ! --> ! "pointeur" sur coefax,y,z, coefbx,y,z          !
 ! iw1,2,...,9      ! e  ! --> ! "pointeur" sur w1 a w9                         !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -98,7 +95,7 @@ subroutine memdyp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -176,4 +173,4 @@ CALL RASIZE('MEMDYP',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/memini.f90 b/src/base/memini.f90
index 31e69be..d4c9329 100644
--- a/src/base/memini.f90
+++ b/src/base/memini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,11 +41,11 @@ subroutine memini &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! longia longra    ! e  ! <-- ! longueur de ia     ra                          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -57,7 +57,7 @@ subroutine memini &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -72,7 +72,7 @@ include "ihmpre.h"
 integer longia , longra
 integer nideve , nrdeve , nituse , nrtuse
 
-! VARIABLES LOCALES
+! Local variables
 
 integer ii, iok
 integer icoftu(16)
@@ -204,4 +204,4 @@ endif
 '@                                                            ',/)
 
 return
-end
+end subroutine
diff --git a/src/base/memkep.f90 b/src/base/memkep.f90
index 14a8e6e..f4602fd 100644
--- a/src/base/memkep.f90
+++ b/src/base/memkep.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -48,27 +48,26 @@ subroutine memkep &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! idtr             ! e  ! --> ! "pointeur" sur dtr                             !
 ! iviscf, b        ! e  ! --> ! "pointeur" sur viscf, viscb                    !
 ! idam, ixam       ! e  ! --> ! "pointeur" sur dam, xam                        !
@@ -77,10 +76,8 @@ subroutine memkep &
 ! irovsd           ! e  ! --> ! "pointeur" sur rovsdt                          !
 ! itinsk, e        ! e  ! --> ! "pointeur" sur tinstk, tinste                  !
 ! iw1,2,...,9      ! e  ! --> ! "pointeur" sur w1 a w9                         !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -92,7 +89,7 @@ subroutine memkep &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -156,4 +153,4 @@ CALL RASIZE('MEMKEP',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/memkom.f90 b/src/base/memkom.f90
index 6bac87e..7641075 100644
--- a/src/base/memkom.f90
+++ b/src/base/memkom.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -48,27 +48,26 @@ subroutine memkom &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! idtr             ! e  ! --> ! "pointeur" sur dtr                             !
 ! iviscf, b        ! e  ! --> ! "pointeur" sur viscf, viscb                    !
 ! idam, ixam       ! e  ! --> ! "pointeur" sur dam, xam                        !
@@ -77,10 +76,8 @@ subroutine memkom &
 ! itinsk, w        ! e  ! --> ! "pointeur" sur tinstk, tinstw                  !
 ! if1              ! e  ! --> ! "pointeur" sur xf1                             !
 ! iw1,2,...,9      ! e  ! --> ! "pointeur" sur w1 a w9                         !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -92,7 +89,7 @@ subroutine memkom &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -156,4 +153,4 @@ CALL RASIZE('MEMKW2',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/memnav.f90 b/src/base/memnav.f90
index c1b0ed6..28b3dbf 100644
--- a/src/base/memnav.f90
+++ b/src/base/memnav.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,27 +50,26 @@ subroutine memnav &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! iviscf, b        ! e  ! --> ! "pointeur" sur viscf, viscb                    !
 ! ivisfi, bi       ! e  ! --> ! "pointeur" sur viscfi, viscbi                  !
 ! idam, ixam       ! e  ! --> ! "pointeur" sur dam, xam                        !
@@ -83,10 +82,8 @@ subroutine memnav &
 ! ifrchy           ! e  ! --> ! "pointeur" sur frchy                           !
 ! idfrhy           ! e  ! --> ! "pointeur" sur dfrchy                          !
 !iesflm, iesflb    ! e  ! --> ! "pointeur" sur esflum et esflub                !
-! ifinia           ! e  ! --> ! pointeur de la premiere case libre             !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere case libre             !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -98,7 +95,7 @@ subroutine memnav &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -201,4 +198,4 @@ CALL RASIZE('MEMNAV',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/mempdc.f90 b/src/base/mempdc.f90
index 9fa1cb6..f901321 100644
--- a/src/base/mempdc.f90
+++ b/src/base/mempdc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,18 +40,16 @@ subroutine mempdc &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idbia0/idbra0    ! e  ! <-- ! pointeur de la premiere cas libre des          !
 !                  !    !     !  tableaux ia/ra                                !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! ndim             ! e  ! <-- ! dimension de l'espace (3)                      !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -63,7 +61,7 @@ subroutine mempdc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -210,4 +208,4 @@ CALL RASIZE('MEMPDC',IFINRA)
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/memphy.f90 b/src/base/memphy.f90
index 5d61d7e..396b439 100644
--- a/src/base/memphy.f90
+++ b/src/base/memphy.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,22 +44,20 @@ subroutine memphy &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idbia0/idbra0    ! e  ! <-- ! pointeur de la premiere cas libre des          !
 !                  !    !     !  tableaux ia/ra                                !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nvar             ! e  ! <-- ! nombre de variables                            !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! iw1,2,3,4,5,6    ! e  ! --> ! "pointeur" sur w1,2,3,4,5,6,7,8,9,10,11,12     !
 ! ixmij            ! e  ! --> ! "pointeur" sur xmij                            !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -71,7 +69,7 @@ subroutine memphy &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -151,4 +149,4 @@ CALL RASIZE('MEMPHY',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/memrij.f90 b/src/base/memrij.f90
index 7d174b2..3ee62ed 100644
--- a/src/base/memrij.f90
+++ b/src/base/memrij.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -49,27 +49,26 @@ subroutine memrij &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! idtr             ! e  ! --> ! "pointeur" sur dtr                             !
 ! iviscf, b        ! e  ! --> ! "pointeur" sur viscf, viscb                    !
 ! icoefx           ! e  ! --> ! "pointeur" sur coefax                          !
@@ -83,10 +82,8 @@ subroutine memrij &
 ! iprodu           ! e  ! --> ! "pointeur" sur produc                          !
 ! igrarx,y,z       ! e  ! --> ! "pointeur" sur grarox, y, z                    !
 ! iw1,2,...,9      ! e  ! --> ! "pointeur" sur w1 a w9                         !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -98,7 +95,7 @@ subroutine memrij &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -193,4 +190,4 @@ CALL RASIZE('MEMRIJ',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/memsca.f90 b/src/base/memsca.f90
index 9763a3f..3aa7408 100644
--- a/src/base/memsca.f90
+++ b/src/base/memsca.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -48,27 +48,26 @@ subroutine memsca &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! idtr             ! e  ! --> ! "pointeur" sur dtr                             !
 ! iviscf, b        ! e  ! --> ! "pointeur" sur viscf, viscb                    !
 ! idam, ixam       ! e  ! --> ! "pointeur" sur dam, xam                        !
@@ -76,10 +75,8 @@ subroutine memsca &
 ! ismbr            ! e  ! --> ! "pointeur" sur smbr                            !
 ! irovsd           ! e  ! --> ! "pointeur" sur rovsdt                          !
 ! iw1,2,...,9      ! e  ! --> ! "pointeur" sur w1 a w9                         !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -91,7 +88,7 @@ subroutine memsca &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -152,4 +149,4 @@ CALL RASIZE('MEMSCA',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/memt1d.f90 b/src/base/memt1d.f90
index d5d077f..9c009d1 100644
--- a/src/base/memt1d.f90
+++ b/src/base/memt1d.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine memt1d                               &
+subroutine memt1d &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -42,11 +42,11 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idbia0/idbra0    ! e  ! <-- ! pointeur de la premiere cas libre des          !
 !                  !    !     !  tableaux ia/ra                                !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! ifnia1           ! e  ! --> ! pointeur de la premiere cas libre              !
 !                  !    !     !  dans ia apres liberation tout sauf            !
 !                  !    !     !                               ifpt1d           !
@@ -58,10 +58,8 @@
 ! ifnra2         e  ! --> ! pointeur de la premiere cas libre              !
 !                  !    !     !  dans ra apres liberation de rgpt1d            !
 !                  !    !     !  et eppt1d                                     !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -73,7 +71,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -92,7 +90,7 @@ integer          ifinia, ifinra, ifnia1, ifnra1, ifnia2, ifnra2
 integer          ia(*)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iok1, ifac
@@ -228,4 +226,4 @@ enddo
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/memtri.f90 b/src/base/memtri.f90
index 4b4a318..c7f9d54 100644
--- a/src/base/memtri.f90
+++ b/src/base/memtri.f90
@@ -48,32 +48,31 @@ subroutine memtri &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! iverif           ! e  ! <-- ! indicateur des tests elementaires              !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! ncofab           ! e  ! <-- ! nombre de couple de cl a prevoir               !
 ! nproce           ! e  ! <-- ! nombre de prop phy aux centres                 !
 ! nprofa           ! e  ! <-- ! nombre de prop phy aux faces internes          !
 ! nprofb           ! e  ! <-- ! nombre de prop phy aux faces de bord           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! iisstd           ! e  ! --> ! "pointeur" sur isostd(reperage sortie          !
 ! idt              ! e  ! --> ! "pointeur" sur dt                              !
 ! irtp, irtpa      ! e  ! --> ! "pointeur" sur rtp, rtpa                       !
@@ -82,10 +81,8 @@ subroutine memtri &
 ! ipropb           ! e  ! --> ! "pointeur" sur propfb                          !
 ! icoefa, b        ! e  ! --> ! "pointeur" sur coefa, coefb                    !
 ! ifrcx            ! e  ! --> ! "pointeur" sur frcxt                           !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -97,7 +94,7 @@ subroutine memtri &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -117,6 +114,7 @@ include "lagpar.h"
 include "lagdim.h"
 include "lagran.h"
 include "ihmpre.h"
+include "cplsat.h"
 
 !===============================================================================
 
@@ -137,7 +135,7 @@ integer          ipropc , ipropf , ipropb
 integer          icoefa , icoefb
 integer          ifinia , ifinra
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iis, iphas, ippu, ippv, ippw, ivar, iprop
@@ -333,20 +331,27 @@ do iphas = 1, nphas
   endif
 enddo
 
-!     En ALE, on reserve des tableaux supplementaires de position initiale
-!       et de deplacement et le type de faces de bord
+! En ALE ou maillage mobile, on reserve des tableaux supplementaires
+! de position initiale
+if (iale.eq.1.or.imobil.eq.1) then
+  ixyzn0 = ifinra
+  ifinra = ixyzn0 + ndim*nnod
+else
+  ixyzn0 = 0
+endif
+
+! En ALE, on reserve des tableaux supplementaires
+! de deplacement et de type de faces de bord
 if (iale.eq.1) then
   iimpal = ifinia
   iialty = iimpal + nnod
   ifinia = iialty + nfabor
 
-  ixyzn0 = ifinra
-  idepal = ixyzn0 + ndim*nnod
+  idepal = ifinra
   ifinra = idepal + ndim*nnod
 else
   iimpal = 0
   iialty = 0
-  ixyzn0 = 0
   idepal = 0
 endif
 
@@ -464,7 +469,11 @@ do iis = 1 , nscal
   ipp2ra(ipprtp(ivar)) = irtp  +(ivar-1)*ncelet
 enddo
 
-ipp2ra(ippdt ) = idt
+if (idtvar.le.0) then
+  ipp2ra(ippdt ) = 1
+else
+  ipp2ra(ippdt ) = idt
+endif
 
 !     Couplage instationnaire vitesse/pression
 if (ipucou.eq.0) then
@@ -527,4 +536,4 @@ if(ippmod(ielarc).ge.1) then
 endif
 
 return
-end
+end subroutine
diff --git a/src/base/memtsm.f90 b/src/base/memtsm.f90
index 4dd4fc0..6c029a0 100644
--- a/src/base/memtsm.f90
+++ b/src/base/memtsm.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,18 +41,16 @@ subroutine memtsm &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idbia0/idbra0    ! e  ! <-- ! pointeur de la premiere cas libre des          !
 !                  !    !     !  tableaux ia/ra                                !
 ! nvar             ! e  ! <-- ! nombre de variables                            !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ia en sortie                             !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -64,7 +62,7 @@ subroutine memtsm &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -192,4 +190,4 @@ CALL RASIZE('MEMTSM',IFINRA)
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/memv2f.f90 b/src/base/memv2f.f90
index fe51b62..4fd3e53 100644
--- a/src/base/memv2f.f90
+++ b/src/base/memv2f.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine memv2f                               &
+subroutine memv2f &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -49,27 +49,26 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! idtr             ! e  ! --> ! "pointeur" sur dtr                             !
 ! iviscf, b        ! e  ! --> ! "pointeur" sur viscf, viscb                    !
 ! idam, ixam       ! e  ! --> ! "pointeur" sur dam, xam                        !
@@ -77,10 +76,8 @@
 ! ismbr            ! e  ! --> ! "pointeur" sur smbr                            !
 ! irovsd           ! e  ! --> ! "pointeur" sur rovsdt                          !
 ! iw1,2,...,10     ! e  ! --> ! "pointeur" sur w1 a w10                        !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -92,7 +89,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -156,4 +153,4 @@ CALL RASIZE('MEMV2F',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/base/memvor.f90 b/src/base/memvor.f90
index 7d3d7f8..bd60f4a 100644
--- a/src/base/memvor.f90
+++ b/src/base/memvor.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,16 +39,14 @@ subroutine memvor &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! iappel           ! e  ! <-- ! indique les donnes a renvoyer                  !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._______________.________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -60,7 +58,7 @@ subroutine memvor &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -74,7 +72,7 @@ include "vortex.h"
 integer          idbia0, idbra0, ifinia, ifinra
 integer          iappel, nfabor
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -133,4 +131,4 @@ elseif(iappel.eq.3) then
 endif
 
 return
-end
+end subroutine
diff --git a/src/base/mmtycl.f90 b/src/base/mmtycl.f90
new file mode 100644
index 0000000..0dfae00
--- /dev/null
+++ b/src/base/mmtycl.f90
@@ -0,0 +1,286 @@
+!-------------------------------------------------------------------------------
+
+!     This file is part of the Code_Saturne Kernel, element of the
+!     Code_Saturne CFD tool.
+
+!     Copyright (C) 1998-2010 EDF S.A., France
+
+!     contact: saturne-support at edf.fr
+
+!     The Code_Saturne Kernel is free software; you can redistribute it
+!     and/or modify it under the terms of the GNU General Public License
+!     as published by the Free Software Foundation; either version 2 of
+!     the License, or (at your option) any later version.
+
+!     The Code_Saturne Kernel is distributed in the hope that it will be
+!     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+!     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+!     GNU General Public License for more details.
+
+!     You should have received a copy of the GNU General Public License
+!     along with the Code_Saturne Kernel; if not, write to the
+!     Free Software Foundation, Inc.,
+!     51 Franklin St, Fifth Floor,
+!     Boston, MA  02110-1301  USA
+
+!-------------------------------------------------------------------------------
+
+subroutine mmtycl &
+!================
+
+ ( idbia0 , idbra0 ,                                              &
+   ndim   , ncelet , ncel   , nfac   , nfabor , nfml   , nprfml , &
+   nnod   , lndfac , lndfbr , ncelbr ,                            &
+   nvar   , nscal  , nphas  ,                                     &
+   nideve , nrdeve , nituse , nrtuse ,                            &
+   ifacel , ifabor , ifmfbr , ifmcel , iprfml ,                   &
+   ipnfac , nodfac , ipnfbr , nodfbr ,                            &
+   itypfb , icodcl ,                                              &
+   idevel , ituser , ia     ,                                     &
+   xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod , volume , &
+   dt     , rtp    , rtpa   , propce , propfa , propfb ,          &
+   rcodcl ,                                                       &
+   w1     , w2     , w3     , w4     , w5     , w6     ,          &
+   rdevel , rtuser , ra     )
+
+!===============================================================================
+! FONCTION :
+! --------
+
+! TRAITEMENT DES CODES DE CONDITIONS POUR UN MAILLAGE MOBILE
+!   LORS D'UN COUPLAGE DE TYPE ROTOR/STATOR
+
+!-------------------------------------------------------------------------------
+! Arguments
+!__________________.____._____.________________________________________________.
+! name             !type!mode ! role                                           !
+!__________________!____!_____!________________________________________________!
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
+!   (nfac+1)       !    !     !                                                !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! icodcl           ! te ! <-- ! code de condition limites aux faces            !
+!  (nfabor,nvar    !    !     !  de bord                                       !
+!                  !    !     ! = 1   -> dirichlet                             !
+!                  !    !     ! = 3   -> densite de flux                       !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! rcodcl           ! tr ! <-- ! valeur des conditions aux limites              !
+!  (nfabor,nvar    !    !     !  aux faces de bord                             !
+!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
+!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
+!                  !    !     !  ext. (infinie si pas d'echange)               !
+!                  !    !     ! rcodcl(3) = valeur de la densite de            !
+!                  !    !     !  flux (negatif si gain) w/m2                   !
+!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
+!                  !    !     ! pour la pression             dt*gradp          !
+!                  !    !     ! pour les scalaires                             !
+!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
+! depmob(nnod,3    ! tr ! <-- ! deplacement aux noeuds                         !
+! xyzno1(3,nnod    ! tr ! <-- ! coordonnees noeuds maillage initial            !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
+!__________________!____!_____!________________________________________________!
+
+!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
+!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
+!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
+!            --- tableau de travail
+!===============================================================================
+
+implicit none
+
+!===============================================================================
+! Common blocks
+!===============================================================================
+
+include "dimfbr.h"
+include "paramx.h"
+include "numvar.h"
+include "optcal.h"
+include "cstnum.h"
+include "cstphy.h"
+include "entsor.h"
+include "pointe.h"
+include "parall.h"
+
+!===============================================================================
+
+! Arguments
+
+integer          idbia0 , idbra0
+integer          ndim   , ncelet , ncel   , nfac   , nfabor
+integer          nfml   , nprfml
+integer          nnod   , lndfac , lndfbr , ncelbr
+integer          nvar   , nscal  , nphas
+integer          nideve , nrdeve , nituse , nrtuse
+
+integer          ifacel(2,nfac) , ifabor(nfabor)
+integer          ifmfbr(nfabor) , ifmcel(ncelet)
+integer          iprfml(nfml,nprfml)
+integer          ipnfac(nfac+1), nodfac(lndfac)
+integer          ipnfbr(nfabor+1), nodfbr(lndfbr)
+integer          itypfb(nfabor,nphas)
+integer          icodcl(nfabor,nvar)
+integer          idevel(nideve), ituser(nituse)
+integer          ia(*)
+
+double precision xyzcen(ndim,ncelet)
+double precision surfac(ndim,nfac), surfbo(ndim,nfabor)
+double precision cdgfac(ndim,nfac), cdgfbo(ndim,nfabor)
+double precision xyznod(ndim,nnod), volume(ncelet)
+double precision dt(ncelet), rtp(ncelet,*), rtpa(ncelet,*)
+double precision propce(ncelet,*)
+double precision propfa(nfac,*), propfb(ndimfb,*)
+double precision rcodcl(nfabor,nvar,3)
+double precision depmob(nnod,3), xyzno1(3,nnod)
+double precision w1(ncelet),w2(ncelet),w3(ncelet)
+double precision w4(ncelet),w5(ncelet),w6(ncelet)
+double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
+
+! Local variables
+
+integer          idebia, idebra
+integer          ifac, iel, iphas, iuiph, iviph, iwiph
+integer          ii, inod, icpt
+double precision ddepx, ddepy, ddepz
+double precision srfbnf, rnx, rny, rnz
+double precision rcodcx, rcodcy, rcodcz, rcodsn
+double precision vitbox, vitboy, vitboz
+
+
+!===============================================================================
+
+!===============================================================================
+! 1.  INITIALISATIONS
+!===============================================================================
+
+idebia = idbia0
+idebra = idbra0
+
+!===============================================================================
+! 2.  VITESSE DE DEFILEMENT POUR LES PAROIS FLUIDES ET SYMETRIES
+!===============================================================================
+
+! Pour les symetries on rajoute toujours la vitesse de maillage, car on
+!   ne conserve que la vitesse normale
+! Pour les parois, on prend la vitesse de maillage si l'utilisateur n'a
+!   pas specifie RCODCL, sinon on laisse RCODCL pour la vitesse tangente
+!   et on prend la vitesse de maillage pour la composante normale.
+! On se base uniquement sur ITYPFB, a l'utilisateur de gere les choses
+!   s'il rentre en CL non standards.
+
+do ifac = 1, nfabor
+
+  iel = ifabor(ifac)
+
+  ! --- En turbomachine on conna�t la valeur exacte de la vitesse de maillage
+
+
+  do iphas = 1, nphas
+
+    iuiph = iu(iphas)
+    iviph = iv(iphas)
+    iwiph = iw(iphas)
+
+    vitbox = omegay*cdgfbo(3,ifac) - omegaz*cdgfbo(2,ifac)
+    vitboy = omegaz*cdgfbo(1,ifac) - omegax*cdgfbo(3,ifac)
+    vitboz = omegax*cdgfbo(2,ifac) - omegay*cdgfbo(1,ifac)
+
+    if (itypfb(ifac,iphas).eq.isymet) then
+      rcodcl(ifac,iuiph,1) = vitbox
+      rcodcl(ifac,iviph,1) = vitboy
+      rcodcl(ifac,iwiph,1) = vitboz
+    endif
+
+    if (itypfb(ifac,iphas).eq.iparoi) then
+      ! Si une des composantes de vitesse de glissement a ete
+      !    modifiee par l'utilisateur, on ne fixe que la vitesse
+      !    normale
+      if (rcodcl(ifac,iuiph,1).gt.rinfin*0.5d0 .and.              &
+          rcodcl(ifac,iviph,1).gt.rinfin*0.5d0 .and.              &
+          rcodcl(ifac,iwiph,1).gt.rinfin*0.5d0) then
+        rcodcl(ifac,iuiph,1) = vitbox
+        rcodcl(ifac,iviph,1) = vitboy
+        rcodcl(ifac,iwiph,1) = vitboz
+      else
+      ! On met a 0 les composantes de RCODCL non specifiees
+        if (rcodcl(ifac,iuiph,1).gt.rinfin*0.5d0) rcodcl(ifac,iuiph,1) = 0.d0
+        if (rcodcl(ifac,iviph,1).gt.rinfin*0.5d0) rcodcl(ifac,iviph,1) = 0.d0
+        if (rcodcl(ifac,iwiph,1).gt.rinfin*0.5d0) rcodcl(ifac,iwiph,1) = 0.d0
+
+        srfbnf = ra(isrfbn-1+ifac)
+        rnx = surfbo(1,ifac)/srfbnf
+        rny = surfbo(2,ifac)/srfbnf
+        rnz = surfbo(3,ifac)/srfbnf
+        rcodcx = rcodcl(ifac,iuiph,1)
+        rcodcy = rcodcl(ifac,iviph,1)
+        rcodcz = rcodcl(ifac,iwiph,1)
+        rcodsn = (vitbox - rcodcx)*rnx                            &
+               + (vitboy - rcodcy)*rny                            &
+               + (vitboz - rcodcz)*rnz
+        rcodcl(ifac,iuiph,1) = rcodcx + rcodsn*rnx
+        rcodcl(ifac,iviph,1) = rcodcy + rcodsn*rny
+        rcodcl(ifac,iwiph,1) = rcodcz + rcodsn*rnz
+      endif
+
+    endif
+  enddo
+enddo
+
+!===============================================================================
+! FORMATS
+!===============================================================================
+
+return
+end subroutine
diff --git a/src/base/modini.f90 b/src/base/modini.f90
index 424f8a6..d035ee2 100644
--- a/src/base/modini.f90
+++ b/src/base/modini.f90
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine modini
+subroutine modini
 !================
 
 
@@ -39,7 +39,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -64,18 +64,21 @@ include "cstphy.h"
 include "entsor.h"
 include "albase.h"
 include "alstru.h"
+include "cplsat.h"
 
 !===============================================================================
 
 ! Arguments
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj, ivar, iphas, iok, iest, imom, ikw
 integer          icompt, ipp, nbccou, nn
 integer          nscacp, iscal
 double precision relxsp
+double precision omgnrm, ctheta, stheta
+double precision ux, uy, uz
 
 !===============================================================================
 
@@ -129,9 +132,7 @@ do iphas = 1, nphas
     endif
   enddo
 enddo
-ipp = ippdt
-if (idtvar.lt.0) ichrvr(ipp) = 0
-if(idtvar.eq.2.and.ichrvr(ipp).eq.-999) ichrvr(ipp) = 1
+if(idtvar.eq.2.and.ichrvr(ippdt).eq.-999) ichrvr(ippdt) = 1
 if(ipucou.ne.1) then
   ichrvr(ipptx) = 0
   ichrvr(ippty) = 0
@@ -183,8 +184,7 @@ do ii = 2, nvppmx
     ihisvr(ii,1) = -1
   endif
 enddo
-if (idtvar.lt.0) ihisvr(ippdt ,1) = 0
-if(idtvar.eq.2.and.ihisvr(ippdt ,1).eq.-999) ihisvr(ippdt ,1) = -1
+if(ihisvr(ippdt ,1).eq.-999) ihisvr(ippdt ,1) = -1
 if(ipucou.ne.1) then
   ihisvr(ipptx,1) = 0
   ihisvr(ippty,1) = 0
@@ -463,9 +463,7 @@ if(nbmomt.gt.0) then
   enddo
 endif
 
-ipp = ippdt
-if (idtvar.lt.0) ilisvr(ipp) = 0
-if(ilisvr(ipp).eq.-999) ilisvr(ipp)  = 1
+if(ilisvr(ippdt).eq.-999) ilisvr(ippdt)  = 1
 if(ipucou.ne.1 .or. idtvar.lt.0) then
   ilisvr(ipptx) = 0
   ilisvr(ippty) = 0
@@ -1245,6 +1243,83 @@ do iphas = 1, nphas
   enddo
 enddo
 
+! Vecteur rotation et matrice(s) associees
+
+omgnrm = sqrt(omegax**2 + omegay**2 + omegaz**2)
+
+if (omgnrm.ge.epzero) then
+
+  ! Vecteur rotation norm�
+
+  ux = omegax / omgnrm
+  uy = omegay / omgnrm
+  uz = omegaz / omgnrm
+
+  ! Matrice de projection sur l'axe de rotation
+
+  prot(1,1) = ux**2
+  prot(2,2) = uy**2
+  prot(3,3) = uz**2
+
+  prot(1,2) = ux*uy
+  prot(2,1) = prot(1,2)
+
+  prot(1,3) = ux*uz
+  prot(3,1) = prot(1,3)
+
+  prot(2,3) = uy*uz
+  prot(3,2) = prot(2,3)
+
+  ! Repr�sentation antisym�trique de Omega
+
+  qrot(1,1) = 0.d0
+  qrot(2,2) = 0.d0
+  qrot(3,3) = 0.d0
+
+  qrot(1,2) = -uz
+  qrot(2,1) = -qrot(1,2)
+
+  qrot(1,3) =  uy
+  qrot(3,1) = -qrot(1,3)
+
+  qrot(2,3) = -ux
+  qrot(3,2) = -qrot(2,3)
+
+  ! Matrice de rotation
+
+  ctheta = cos(dtref*omgnrm)
+  stheta = sin(dtref*omgnrm)
+
+  do ii = 1, 3
+    do jj = 1, 3
+      irot(ii,jj) = 0.d0
+    enddo
+    irot(ii,ii) = 1.d0
+  enddo
+
+  do ii = 1, 3
+    do jj = 1, 3
+      rrot(ii,jj) = ctheta*irot(ii,jj) + (1.d0 - ctheta)*prot(ii,jj) &
+                                       +         stheta *qrot(ii,jj)
+    enddo
+  enddo
+
+else
+
+  do ii = 1, 3
+    do jj = 1, 3
+      irot(ii,jj) = 0.d0
+      prot(ii,jj) = 0.d0
+      qrot(ii,jj) = 0.d0
+      rrot(ii,jj) = 0.d0
+    enddo
+    irot(ii,ii) = 1.d0
+    rrot(ii,ii) = 1.d0
+  enddo
+
+endif
+
+
 !===============================================================================
 ! 5. ELEMENTS DE albase.h
 !===============================================================================
@@ -1268,7 +1343,30 @@ if (bexxst.lt.-0.5d0*grand) bexxst = 0.0d0
 if (cfopre.lt.-0.5d0*grand) cfopre = 2.0d0
 
 !===============================================================================
-! 6. STOP SI PB
+! 7. PARAMETRES DE cplsat.h
+!===============================================================================
+
+! R�cup�ration du nombre de couplage
+
+call nbccpl(nbrcpl)
+!==========
+
+if (nbrcpl.ge.1) then
+  ! Si on est en couplage rotor/stator avec resolution en repere absolu
+  omgnrm = sqrt(omegax**2 + omegay**2 + omegaz**2)
+  if (omgnrm.ge.epzero) then
+    ! Couplage avec interpolation aux faces
+    ifaccp = 1
+    ! Maillage mobile
+    if (icorio.eq.0) then
+      imobil = 1
+      ichrmd = 1
+    endif
+  endif
+endif
+
+!===============================================================================
+! 8. STOP SI PB
 !===============================================================================
 
 if(iok.ne.0) then
@@ -1626,4 +1724,4 @@ endif
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/modpar.f90 b/src/base/modpar.f90
index 104d074..93d55a4 100644
--- a/src/base/modpar.f90
+++ b/src/base/modpar.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,7 +40,7 @@ subroutine modpar &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ntcabs           ! e  ! <-- ! numero absolu du pas de temps courant          !
 ! ntmabs           ! e  ! <-- ! numero absolu du pas de temps final            !
@@ -55,7 +55,7 @@ subroutine modpar &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -68,7 +68,7 @@ include "parall.h"
 
 integer          ntcabs , ntmabs
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          irangs, lng, itmp(1)
 logical exstp
@@ -140,4 +140,4 @@ endif
 
 #endif
 
-end
+end subroutine
diff --git a/src/base/navsto.f90 b/src/base/navsto.f90
index 68a7049..e9b1bd2 100644
--- a/src/base/navsto.f90
+++ b/src/base/navsto.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,77 +59,64 @@ subroutine navsto &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
 ! nprfml           ! e  ! <-- ! nombre de proprietes des familles              !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! iterns           ! e  ! <-- ! numero d'iteration sur navsto                  !
 ! icvrge           ! e  ! <-- ! indicateur de convergence du pnt fix           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! isostd           ! te ! <-- ! indicateur de sortie standard                  !
 !    (nfabor+1)    !    !     !  +numero de la face de reference               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! frcxt(ncelet,    ! tr ! <-- ! force exterieure generant la pression          !
 !   3,nphas)       !    !     !  hydrostatique                                 !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
@@ -159,9 +146,9 @@ subroutine navsto &
 ! coefu(nfab,3)    ! tr ! --- ! tableau de travail                             !
 ! esflum(nfac)     ! tr ! --- ! tableau de travail (iestot  )                  !
 ! esflub(nfabor    ! tr ! --- ! tableau de travail (iestot  )                  !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -174,7 +161,7 @@ subroutine navsto &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -239,7 +226,7 @@ double precision coefu(nfabor,3)
 double precision esflum(nfac), esflub(nfabor)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iccocg, inc, iel, iel1, iel2, ifac, imax, iii
@@ -263,6 +250,7 @@ double precision thetap, xdu, xdv, xdw
 double precision ro0iph, p0iph, pr0iph, xxp0 , xyp0 , xzp0
 double precision rhofac, dtfac, ddepx , ddepy, ddepz
 double precision xnrdis
+double precision vitbox, vitboy, vitboz
 
 !===============================================================================
 
@@ -598,6 +586,42 @@ if( iprco.le.0 ) then
 
 endif
 
+! Ajout de la vitesse du solide dans le flux convectif,
+! si le maillage est mobile (solide rigide)
+! En turbomachine, on conna�t exactement la vitesse de maillage � ajouter
+if (imobil.eq.1) then
+
+  do iphas = 1, nphas
+
+    iflmas = ipprof(ifluma(iu(iphas)))
+    iflmab = ipprob(ifluma(iu(iphas)))
+    ipcrom = ipproc(irom  (iphas))
+    ipbrom = ipprob(irom  (iphas))
+
+    do ifac = 1, nfac
+      iel1 = ifacel(1,ifac)
+      iel2 = ifacel(2,ifac)
+      dtfac  = 0.5d0*(dt(iel1) + dt(iel2))
+      rhofac = 0.5d0*(propce(iel1,ipcrom) + propce(iel2,ipcrom))
+      vitbox = omegay*cdgfac(3,ifac) - omegaz*cdgfac(2,ifac)
+      vitboy = omegaz*cdgfac(1,ifac) - omegax*cdgfac(3,ifac)
+      vitboz = omegax*cdgfac(2,ifac) - omegay*cdgfac(1,ifac)
+      propfa(ifac,iflmas) = propfa(ifac,iflmas) - rhofac*(        &
+        vitbox*surfac(1,ifac) + vitboy*surfac(2,ifac) + vitboz*surfac(3,ifac) )
+    enddo
+    do ifac = 1, nfabor
+      iel = ifabor(ifac)
+      dtfac  = dt(iel)
+      rhofac = propfb(ifac,ipbrom)
+      vitbox = omegay*cdgfbo(3,ifac) - omegaz*cdgfbo(2,ifac)
+      vitboy = omegaz*cdgfbo(1,ifac) - omegax*cdgfbo(3,ifac)
+      vitboz = omegax*cdgfbo(2,ifac) - omegay*cdgfbo(1,ifac)
+      propfb(ifac,iflmab) = propfb(ifac,iflmab) - rhofac*(        &
+        vitbox*surfbo(1,ifac) + vitboy*surfbo(2,ifac) + vitboz*surfbo(3,ifac) )
+    enddo
+  enddo
+
+endif
 
 !===============================================================================
 ! 3.  ETAPE DE PRESSION/CONTINUITE ( VITESSE/PRESSION )
@@ -1110,6 +1134,44 @@ if (iale.eq.1) then
 
 endif
 
+! Ajout de la vitesse du solide dans le flux convectif,
+! si le maillage est mobile (solide rigide)
+! En turbomachine, on conna�t exactement la vitesse de maillage � ajouter
+if (imobil.eq.1) then
+
+  do iphas = 1, nphas
+
+    iflmas = ipprof(ifluma(iu(iphas)))
+    iflmab = ipprob(ifluma(iu(iphas)))
+    ipcrom = ipproc(irom  (iphas))
+    ipbrom = ipprob(irom  (iphas))
+
+    do ifac = 1, nfac
+      iel1 = ifacel(1,ifac)
+      iel2 = ifacel(2,ifac)
+      dtfac  = 0.5d0*(dt(iel1) + dt(iel2))
+      rhofac = 0.5d0*(propce(iel1,ipcrom) + propce(iel2,ipcrom))
+      vitbox = omegay*cdgfac(3,ifac) - omegaz*cdgfac(2,ifac)
+      vitboy = omegaz*cdgfac(1,ifac) - omegax*cdgfac(3,ifac)
+      vitboz = omegax*cdgfac(2,ifac) - omegay*cdgfac(1,ifac)
+      propfa(ifac,iflmas) = propfa(ifac,iflmas) - rhofac*(        &
+        vitbox*surfac(1,ifac) + vitboy*surfac(2,ifac) + vitboz*surfac(3,ifac) )
+    enddo
+    do ifac = 1, nfabor
+      iel = ifabor(ifac)
+      dtfac  = dt(iel)
+      rhofac = propfb(ifac,ipbrom)
+      vitbox = omegay*cdgfbo(3,ifac) - omegaz*cdgfbo(2,ifac)
+      vitboy = omegaz*cdgfbo(1,ifac) - omegax*cdgfbo(3,ifac)
+      vitboz = omegax*cdgfbo(2,ifac) - omegay*cdgfbo(1,ifac)
+      propfb(ifac,iflmab) = propfb(ifac,iflmab) - rhofac*(        &
+        vitbox*surfbo(1,ifac) + vitboy*surfbo(2,ifac) + vitboz*surfbo(3,ifac) )
+    enddo
+  enddo
+
+endif
+
+
 !===============================================================================
 ! 5.  CALCUL D'UN ESTIMATEUR D'ERREUR DE L'ETAPE DE CORRECTION ET TOTAL
 !===============================================================================
@@ -1598,4 +1660,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/newmrk.f90 b/src/base/newmrk.f90
index 16d2c6d..0f7ec34 100644
--- a/src/base/newmrk.f90
+++ b/src/base/newmrk.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,7 +50,7 @@ subroutine newmrk &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! istr             ! e  ! <-- ! numero de structure                            !
 ! xm(3,3)          ! tr ! <-- ! matrice de masse du systeme                    !
@@ -77,7 +77,7 @@ subroutine newmrk &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -97,7 +97,7 @@ double precision xnm1(3),xpnm1(3),xppnm1(3)
 double precision xfn(3),xfnm1(3)
 double precision dt
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj
 
@@ -220,4 +220,4 @@ enddo
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/base/numvec.f90 b/src/base/numvec.f90
index 56c651b..4f690e4 100644
--- a/src/base/numvec.f90
+++ b/src/base/numvec.f90
@@ -42,16 +42,15 @@ subroutine numvec &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! nfac  /nfabor    ! e  ! <-- ! nombre total de faces internes/de brd          !
 ! lregis           ! e  ! --> ! longueur de registre vectoriel                 !
 ! irveci           ! e  ! --> ! indicateur vectorisation face intern           !
 ! irvecb           ! e  ! --> ! indicateur vectorisation face bord             !
 ! ifacel           ! te ! <-- ! no des elts voisins d'une face intern          !
-! (2, nfac)        !    !     !                                                !
 ! ifabor           ! te ! <-- ! no de l'elt voisin d'une face de bord          !
 ! nfabor  )        !    !     !                                                !
 ! inumfi(nfac)     ! te ! --- ! table de renum des faces internes              !
@@ -69,7 +68,7 @@ subroutine numvec &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -84,7 +83,7 @@ integer          ifacel(2,nfac),ifabor(nfabor)
 integer          inumfi(nfac), inumfb(nfabor)
 integer          iworkf(*), ismbs(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          irelii, nregii, irelib, nregib
 integer          iloop, imodav, iregip, iregic, jregic
@@ -559,4 +558,4 @@ irvecb = ivectb
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/ordita.f90 b/src/base/ordita.f90
index 7660866..8c55657 100644
--- a/src/base/ordita.f90
+++ b/src/base/ordita.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,7 +39,7 @@ subroutine ordita &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nfabor           ! e  ! <-- ! nb d'el a ordonner                             !
 ! ifabor(nfabor    ! te ! <-- ! critere d'ordonnancement                       !
@@ -55,7 +55,7 @@ subroutine ordita &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -86,4 +86,4 @@ iclass(1) = iclass(2)
 iclass(2) = itmp
 
 return
-end
+end subroutine
diff --git a/src/base/pergra.f90 b/src/base/pergra.f90
index 1afc962..77fad15 100644
--- a/src/base/pergra.f90
+++ b/src/base/pergra.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -43,10 +43,10 @@ subroutine pergra &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nphjmx           ! e  ! <-- ! nombre de phases max                           !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! ju, jv, jw       ! te ! --> ! numero de variable pour u, v, w                !
 ! jtytur           ! te ! --> ! indicateur modele de turbulence                !
 ! jr11...jr23      ! te ! --> ! numero de variable pour rij                    !
@@ -61,7 +61,7 @@ subroutine pergra &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -78,7 +78,7 @@ integer          jtytur(nphjmx)
 integer          jr11(nphjmx),jr22(nphjmx),jr33(nphjmx)
 integer          jr12(nphjmx),jr13(nphjmx),jr23(nphjmx)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iphas
 
@@ -119,4 +119,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/perinr.f90 b/src/base/perinr.f90
index 6d3899a..fa4774e 100644
--- a/src/base/perinr.f90
+++ b/src/base/perinr.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -66,79 +66,66 @@ subroutine perinr &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
 ! drdxyz           ! tr ! <-- ! gradient de r aux cellules halo pour           !
 !                  !    !     ! l'approche explicite en periodicite            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -150,7 +137,7 @@ subroutine perinr &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -196,7 +183,7 @@ double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision drdxyz(ncelet-ncel,6,3,nphas)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          inc, iccocg,ipiph,nswrgp,imligp,iwarnp
@@ -293,4 +280,4 @@ igrper = 1
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/perinu.f90 b/src/base/perinu.f90
index 9047972..a306489 100644
--- a/src/base/perinu.f90
+++ b/src/base/perinu.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -64,80 +64,67 @@ subroutine perinu &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! iphas            ! i  ! <-- ! phase number                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
 ! dudxyz           ! tr ! <-- ! gradient de u aux cellules halo pour           !
 !                  !    !     ! l'approche explicite en periodicite            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -149,7 +136,7 @@ subroutine perinu &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -195,7 +182,7 @@ double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision dudxyz(ncelet-ncel,3,3,nphas)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          inc, iccocg, ipiph, nswrgp, imligp, iwarnp
@@ -288,4 +275,4 @@ iguper = 1
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/phyvar.f90 b/src/base/phyvar.f90
index 6707fa6..c7d0b8e 100644
--- a/src/base/phyvar.f90
+++ b/src/base/phyvar.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,78 +55,65 @@ subroutine phyvar &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1..12(ncelet    ! tr ! --- ! tableau de travail                             !
 ! xmij(ncelet,6    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -138,7 +125,7 @@ subroutine phyvar &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -190,7 +177,7 @@ double precision w9(ncelet),w10(ncelet),w11(ncelet),w12(ncelet)
 double precision xmij(ncelet,6)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -717,7 +704,7 @@ enddo
 ! 6.  MODIFICATION UTILISATEUR DE LA VISCOSITE DE MAILLAGE EN ALE
 !===============================================================================
 
-if (iale.eq.1) then
+if (iale.eq.1.and.ntcabs.eq.0) then
 
   ! - Interface Code_Saturne
   !   ======================
@@ -953,7 +940,7 @@ endif
 
 ! ---> Calcul des bornes de viscosite de maillage en ALE
 
-if(iale.eq.1) then
+if (iale.eq.1.and.ntcabs.eq.0) then
 
   iok1 = 0
   nn = 1
@@ -991,7 +978,7 @@ if(iale.eq.1) then
 ! Viscosite de maillage definie
     chaine = nomvar(ipppro(ipcvma))
     if (varmn(1).le.0.d0) then
-      write(nfecra,9011)chaine(1:8),varmn(1)
+      write(nfecra,9211) varmn(1)
       iok = iok + 1
     endif
 
@@ -1188,6 +1175,23 @@ enddo
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
+ 9211  format(                                                          &
+'@                                                            ',/,&
+'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
+'@                                                            ',/,&
+'@ @@ ATTENTION : ARRET LORS DU CALCUL DES GRANDEURS PHYSIQUES',/,&
+'@    =========                                               ',/,&
+'@    LA VISCOSITE DE MAILLAGE N A PAS ETE                    ',/,&
+'@                                       CORRECTEMENT DEFINIE.',/,&
+'@                                                            ',/,&
+'@  Le calcul ne sera pas execute.                            ',/,&
+'@                                                            ',/,&
+'@  Le minimum atteint est ',E12.4                             ,/,&
+'@  Verifier le cas echeant la modification de la viscosite   ',/,&
+'@    dans usvima ou dans l interface graphique.              ',/,&
+'@                                                            ',/,&
+'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
+'@                                                            ',/)
  9999 format(                                                           &
 '@                                                            ',/,&
 '@                                                            ',/,&
@@ -1351,6 +1355,22 @@ enddo
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
+ 9211  format(                                                          &
+'@                                                            ',/,&
+'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
+'@                                                            ',/,&
+'@ @@ WARNING: ABORT IN THE PHYSICAL QUANTITIES COMPUTATION   ',/,&
+'@    ========                                                ',/,&
+'@    THE MESH VISCOSITY HAS NOT BEEN CORRECTLY DEFINED.      ',/,&
+'@                                                            ',/,&
+'@  The calculation will not be run.                          ',/,&
+'@                                                            ',/,&
+'@  The  minimum reached is ',E12.4                            ,/,&
+'@  Verify that this property has been defined in usvima and  ',/,&
+'@    that the chosen law leads to correct values.            ',/,&
+'@                                                            ',/,&
+'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
+'@                                                            ',/)
  9999 format(                                                           &
 '@                                                            ',/,&
 '@                                                            ',/,&
@@ -1376,4 +1396,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/precli.f90 b/src/base/precli.f90
index 57f47e8..2948a9e 100644
--- a/src/base/precli.f90
+++ b/src/base/precli.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -57,45 +57,36 @@ subroutine precli &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -107,34 +98,30 @@ subroutine precli &
 !                  !    !     !  entrante eventuelle     bloquee               !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -149,11 +136,11 @@ subroutine precli &
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
 ! coefu            ! tr ! --- ! tab de trav                                    !
 !  nfabor,3        !    !     !  (vitesse en i'                 )              !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -165,7 +152,7 @@ subroutine precli &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -214,7 +201,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, ivar, iphas
@@ -293,4 +280,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/preduv.f90 b/src/base/preduv.f90
index 213fe6b..a2d57b5 100644
--- a/src/base/preduv.f90
+++ b/src/base/preduv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -74,86 +74,73 @@ subroutine preduv &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! iappel           ! e  ! <-- ! numero d'appel du sous programme               !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! iterns           ! e  ! <-- ! numero d'iteration sur navsto                  !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! flumas           ! tr ! <-- ! flux de masse aux faces internes               !
 !  (nfac  )        !    !     !   (distinction iappel=1 ou 2)                  !
 ! flumab           ! tr ! <-- ! flux de masse aux faces de bord                !
 !  (nfabor  )      !    !     !    (distinction iappel=1 ou 2)                 !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -185,9 +172,9 @@ subroutine preduv &
 ! coefu(nfab,3)    ! tr ! --- ! tableau de travail                             !
 ! tslagr(ncelet    ! tr ! <-- ! terme de couplage retour du                    !
 !   ntersl)        !    !     !   lagrangien                                   !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -200,7 +187,7 @@ subroutine preduv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -270,7 +257,7 @@ double precision xnormp(ncelet)
 double precision coefu(nfabor,3)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          iel   , ielpdc, ifac  , ivar  , isou
@@ -2030,4 +2017,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/prmoy0.f90 b/src/base/prmoy0.f90
index e8bbdb7..ff8d17e 100644
--- a/src/base/prmoy0.f90
+++ b/src/base/prmoy0.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine prmoy0                               &
+subroutine prmoy0 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -45,25 +45,25 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de la phase traitee                     !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! volume(ncelet    ! tr ! <-- ! volume des elements                            !
 ! pvar             ! tr ! <-- ! tableau de valeurs au cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -76,7 +76,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -97,7 +97,7 @@ double precision volume(ncelet), pvar(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel
 double precision pmoy, pr0iph
@@ -125,4 +125,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/prods2.f90 b/src/base/prods2.f90
index 5cbbc0a..b4b67ed 100644
--- a/src/base/prods2.f90
+++ b/src/base/prods2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine prods2                               &
+subroutine prods2 &
 !================
 
  ( ncelet , ncel   , isqrt  ,                                     &
@@ -43,10 +43,10 @@
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! isqrt            ! e  ! <-- ! indicateur = 1 pour prendre la racine          !
 ! va1(), vb1()     ! tr ! <-- ! premiers vecteurs a multiplier                 !
 ! va2(), vb2()     ! tr ! <-- ! seconds  vecteurs a multiplier                 !
@@ -63,7 +63,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -78,7 +78,7 @@ double precision vavb1, vavb2
 double precision va1(ncelet),vb1(ncelet)
 double precision va2(ncelet),vb2(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer nvavb
 double precision vavb(2)
@@ -115,5 +115,5 @@ endif
 
 return
 
-end
+end subroutine
 
diff --git a/src/base/prods3.f90 b/src/base/prods3.f90
index 72a51ab..b742134 100644
--- a/src/base/prods3.f90
+++ b/src/base/prods3.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine prods3                               &
+subroutine prods3 &
 !================
 
  ( ncelet , ncel   , isqrt  ,                                     &
@@ -43,10 +43,10 @@
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! isqrt            ! e  ! <-- ! indicateur = 1 pour prendre la racine          !
 ! va1(), vb1()     ! tr ! <-- ! premiers   vecteurs a multiplier               !
 ! va2(), vb2()     ! tr ! <-- ! seconds    vecteurs a multiplier               !
@@ -65,7 +65,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -81,7 +81,7 @@ double precision va1(ncelet),vb1(ncelet)
 double precision va2(ncelet),vb2(ncelet)
 double precision va3(ncelet),vb3(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer nvavb
 double precision vavb(3)
@@ -120,5 +120,5 @@ endif
 
 return
 
-end
+end subroutine
 
diff --git a/src/base/prodsc.f90 b/src/base/prodsc.f90
index c80ad78..7e989f5 100644
--- a/src/base/prodsc.f90
+++ b/src/base/prodsc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,10 +39,10 @@ subroutine prodsc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! isqrt            ! e  ! <-- ! indicateur = 1 pour prendre la racine          !
 ! va, vb(ncelet    ! tr ! <-- ! vecteurs a multiplier                          !
 ! vavb             ! r  ! --> ! produit scalaire                               !
@@ -57,7 +57,7 @@ subroutine prodsc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -71,7 +71,7 @@ integer          ncelet,ncel,isqrt
 double precision vavb
 double precision va(ncelet),vb(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer incx, incy
 double precision ddot
@@ -92,5 +92,5 @@ if( isqrt.eq.1 ) vavb= sqrt(vavb)
 
 return
 
-end
+end subroutine
 
diff --git a/src/base/projts.f90 b/src/base/projts.f90
index 0f8fa85..ce01199 100644
--- a/src/base/projts.f90
+++ b/src/base/projts.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -62,27 +62,26 @@ subroutine projts &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! init             ! e  ! <-- ! > 0 : initialisation du flux de masse          !
 ! inc              ! e  ! <-- ! indicateur = 0 resol sur increment             !
 !                  !    !     !              1 sinon                           !
@@ -101,47 +100,38 @@ subroutine projts &
 ! epsrgu           ! r  ! <-- ! precision relative pour la                     !
 !                  !    !     !  reconstruction des gradients 97               !
 ! climgu           ! r  ! <-- ! coef gradient*distance/ecart                   !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! coefbp(nfabor    ! tr ! <-- ! tableaux des cond lim de pression              !
 ! flumas(nfac)     ! tr ! <-- ! flux de masse aux faces internes               !
 ! flumab(nfabor    ! tr ! <-- ! flux de masse aux faces de bord                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -153,7 +143,7 @@ subroutine projts &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -193,7 +183,7 @@ double precision coefbp(nfabor)
 double precision flumas(nfac), flumab(nfabor)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, ii, jj, iii
@@ -348,4 +338,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/promav.f90 b/src/base/promav.f90
index 22ed0cf..00962af 100644
--- a/src/base/promav.f90
+++ b/src/base/promav.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,11 +40,11 @@ subroutine promav &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
 ! isym             ! e  ! <-- ! indicateur = 1 matrice symetrique              !
 !                  !    !     !            = 2 matrice non symetrique          !
 ! iinvpe           ! e  ! <-- ! indicateur pour annuler les increment          !
@@ -67,7 +67,7 @@ subroutine promav &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -84,7 +84,7 @@ integer          ncelet , ncel   , nfac   , isym , iinvpe
 integer          ifacel(2,nfac)
 double precision da(ncelet),xa(nfac,isym),vx(ncelet),vy(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer ifac,ii,jj,iel,idimte,itenso
 
@@ -210,4 +210,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/proxav.f90 b/src/base/proxav.f90
index 397ac7a..0cdc647 100644
--- a/src/base/proxav.f90
+++ b/src/base/proxav.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,11 +40,11 @@ subroutine proxav &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
 ! isym             ! e  ! <-- ! indicateur = 1 matrice symetrique              !
 !                  !    !     !            = 2 matrice non symetrique          !
 ! iinvpe           ! e  ! <-- ! indicateur pour annuler les increment          !
@@ -66,7 +66,7 @@ subroutine proxav &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -201,4 +201,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/recvmc.f90 b/src/base/recvmc.f90
index 0c29545..1494241 100644
--- a/src/base/recvmc.f90
+++ b/src/base/recvmc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,62 +52,52 @@ subroutine recvmc &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! rom(ncelet       ! tr ! <-- ! masse volumique aux cellules                   !
 ! flumas(nfac)     ! tr ! <-- ! flux de masse aux faces internes               !
 ! flumab(nfabor    ! tr ! <-- ! flux de masse aux faces de bord                !
@@ -116,9 +106,9 @@ subroutine recvmc &
 ! bx,y,z(ncelet    ! tr ! --- ! tableau de travail                             !
 ! cocg             ! tr ! --- ! tableau de travail                             !
 !   (ncelet,3,3    !    !     !                                                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -131,7 +121,7 @@ subroutine recvmc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "vector.h"
@@ -165,7 +155,7 @@ double precision bx(ncelet),   by(ncelet),   bz(ncelet)
 double precision cocg(ncelet,3,3)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          lbloc
 parameter       (lbloc = 1024)
@@ -465,4 +455,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/reseps.f90 b/src/base/reseps.f90
index 5daf762..95c7b52 100644
--- a/src/base/reseps.f90
+++ b/src/base/reseps.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -61,83 +61,70 @@ subroutine reseps &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ivar             ! e  ! <-- ! numero de variable                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ivar             ! i  ! <-- ! variable number                                !
 ! isou             ! e  ! <-- ! numero de passage                              !
 ! ipp              ! e  ! <-- ! numero de variable pour sorties post           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itpsmp           ! te ! <-- ! type de source de masse pour la                !
 ! (ncesmp)         !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! grdvit           ! tr ! --- ! tableau de travail pour terme grad             !
 !  (ncelet,3,3)    !    !     !    de vitesse     uniqt pour iturb=31          !
 ! produc           ! tr ! <-- ! tableau de travail pour production             !
@@ -159,9 +146,9 @@ subroutine reseps &
 ! smbr(ncelet      ! tr ! --- ! tableau de travail pour sec mem                !
 ! rovsdt(ncelet    ! tr ! --- ! tableau de travail pour terme instat           !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -174,7 +161,7 @@ subroutine reseps &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -234,7 +221,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          init  , ifac  , iel   , inc   , iccocg
@@ -333,7 +320,7 @@ call ustsri                                                       &
    nnod   , lndfac , lndfbr , ncelbr ,                            &
    nvar   , nscal  , nphas  , ncepdp , ncesmp ,                   &
    nideve , nrdeve , nituse , nrtuse ,                            &
-   iphas  , ivar   , isou   , ipp    ,                            &
+   iphas  , ivar   ,                                              &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml , maxelt , ia(ils), &
    ipnfac , nodfac , ipnfbr , nodfbr ,                            &
    icepdc , icetsm , itpsmp ,                                     &
@@ -920,4 +907,4 @@ call codits                                                       &
 
 return
 
-end
+end subroutine
diff --git a/src/base/resolp.f90 b/src/base/resolp.f90
index cdcc176..258c2b5 100644
--- a/src/base/resolp.f90
+++ b/src/base/resolp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -58,48 +58,39 @@ subroutine resolp &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
@@ -107,34 +98,30 @@ subroutine resolp &
 ! isostd           ! te ! <-- ! indicateur de sortie standard                  !
 !    (nfabor+1)    !    !     !  +numero de la face de reference               !
 ! idtsca           ! e  ! <-- ! indicateur de pas de temps non scalai          !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -165,9 +152,9 @@ subroutine resolp &
 !  ndim  )         !    !     !                                                !
 ! coefu(nfab,3)    ! tr ! --- ! tableau de travail                             !
 ! trava            ! tr ! <-- ! tableau de travail pour couplage               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -180,7 +167,7 @@ subroutine resolp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -197,6 +184,7 @@ include "parall.h"
 include "mltgrd.h"
 include "lagpar.h"
 include "lagran.h"
+include "cplsat.h"
 
 !===============================================================================
 
@@ -245,7 +233,7 @@ double precision frchy(ncelet,ndim), dfrchy(ncelet,ndim)
 double precision coefu(nfabor,3), trava(ncelet,ndim,nphas)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          lchain
@@ -421,7 +409,7 @@ if(irnpnw.ne.1) then
   inc    = 1
   iccocg = 1
   iflmb0 = 1
-  if (iale.eq.1) iflmb0 = 0
+  if (iale.eq.1.or.imobil.eq.1) iflmb0 = 0
   nswrp  = 1
   imligp = imligr(iuiph )
   iwarnp = iwarni(ipriph)
@@ -641,6 +629,17 @@ call matrix                                                       &
 
 ! --- Flux de masse predit et premiere composante Rhie et Chow
 
+! On annule la viscosite facette pour les faces couplees pour ne pas modifier
+! le flux de masse au bord dans le cas d'un dirichlet de pression: la correction
+! de pression et le filtre sont annules.
+if (nbrcpl.ge.1) then
+  do ifac = 1, nfabor
+    if (ifaccp.eq.1.and.ia(iitypf-1+ifac).eq.icscpl) then
+      viscb(ifac) = 0.d0
+    endif
+  enddo
+endif
+
 iccocg = 1
 inc    = 1
 nswrgp = nswrgr(ipriph)
@@ -724,7 +723,7 @@ init   = 1
 inc    = 1
 iccocg = 1
 iflmb0 = 1
-if (iale.eq.1) iflmb0 = 0
+if (iale.eq.1.or.imobil.eq.1) iflmb0 = 0
 nswrgp = nswrgr(iuiph )
 imligp = imligr(iuiph )
 iwarnp = iwarni(ipriph)
@@ -1554,4 +1553,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/resrij.f90 b/src/base/resrij.f90
index eb51b91..1ffda08 100644
--- a/src/base/resrij.f90
+++ b/src/base/resrij.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -61,83 +61,70 @@ subroutine resrij &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ivar             ! e  ! <-- ! numero de variable                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ivar             ! i  ! <-- ! variable number                                !
 ! isou             ! e  ! <-- ! numero de passage                              !
 ! ipp              ! e  ! <-- ! numero de variable pour sorties post           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itpsmp           ! te ! <-- ! type de source de masse pour la                !
 ! (ncesmp)         !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! produc           ! tr ! <-- ! tableau de travail pour production             !
 !  (6,ncelet)      !    !     ! (sans rho volume)                              !
 ! grarox,y,z       ! tr ! <-- ! tableau de travail pour grad rom               !
@@ -160,9 +147,9 @@ subroutine resrij &
 ! smbr(ncelet      ! tr ! --- ! tableau de travail pour sec mem                !
 ! rovsdt(ncelet    ! tr ! --- ! tableau de travail pour terme instat           !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -175,7 +162,7 @@ subroutine resrij &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -235,7 +222,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          init  , ifac  , iel   , inc   , iccocg
@@ -336,7 +323,7 @@ call ustsri                                                       &
    nnod   , lndfac , lndfbr , ncelbr ,                            &
    nvar   , nscal  , nphas  , ncepdp , ncesmp ,                   &
    nideve , nrdeve , nituse , nrtuse ,                            &
-   iphas  , ivar   , isou   , ipp    ,                            &
+   iphas  , ivar   ,                                              &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml , maxelt , ia(ils), &
    ipnfac , nodfac , ipnfbr , nodfbr ,                            &
    icepdc , icetsm , itpsmp ,                                     &
@@ -975,4 +962,4 @@ call codits                                                       &
 
 return
 
-end
+end subroutine
diff --git a/src/base/resssg.f90 b/src/base/resssg.f90
index 2111a1a..028ee73 100644
--- a/src/base/resssg.f90
+++ b/src/base/resssg.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -61,83 +61,70 @@ subroutine resssg &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ivar             ! e  ! <-- ! numero de variable                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ivar             ! i  ! <-- ! variable number                                !
 ! isou             ! e  ! <-- ! numero de passage                              !
 ! ipp              ! e  ! <-- ! numero de variable pour sorties post           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itpsmp           ! te ! <-- ! type de source de masse pour la                !
 ! (ncesmp)         !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! grdvit           ! tr ! --- ! tableau de travail pour terme grad             !
 !  (ncelet,3,3)    !    !     !                         de vitesse             !
 ! grarox,y,z       ! tr ! <-- ! tableau de travail pour grad rom               !
@@ -160,9 +147,9 @@ subroutine resssg &
 ! smbr(ncelet      ! tr ! --- ! tableau de travail pour sec mem                !
 ! rovsdt(ncelet    ! tr ! --- ! tableau de travail pour terme instat           !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -175,7 +162,7 @@ subroutine resssg &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -235,7 +222,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          init  , ifac  , iel
@@ -331,7 +318,7 @@ call ustsri                                                       &
    nnod   , lndfac , lndfbr , ncelbr ,                            &
    nvar   , nscal  , nphas  , ncepdp , ncesmp ,                   &
    nideve , nrdeve , nituse , nrtuse ,                            &
-   iphas  , ivar   , isou   , ipp    ,                            &
+   iphas  , ivar   ,                                              &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml , maxelt , ia(ils), &
    ipnfac , nodfac , ipnfbr , nodfbr ,                            &
    icepdc , icetsm , itpsmp ,                                     &
@@ -777,4 +764,4 @@ call codits                                                       &
 
 return
 
-end
+end subroutine
diff --git a/src/base/resv2f.f90 b/src/base/resv2f.f90
index 47ca5f6..2920f99 100644
--- a/src/base/resv2f.f90
+++ b/src/base/resv2f.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine resv2f                               &
+subroutine resv2f &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -57,83 +57,70 @@
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ivar             ! e  ! <-- ! numero de variable                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ivar             ! i  ! <-- ! variable number                                !
 ! isou             ! e  ! <-- ! numero de passage                              !
 ! ipp              ! e  ! <-- ! numero de variable pour sorties post           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -149,9 +136,9 @@
 ! smbr(ncelet      ! tr ! --- ! tableau de travail pour sec mem                !
 ! rovsdt(ncelet    ! tr ! --- ! tableau de travail pour terme instat           !
 ! w1..10(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -164,7 +151,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -189,7 +176,7 @@ integer          nnod   , lndfac , lndfbr , ncelbr
 integer          nvar   , nscal  , nphas
 integer          ncepdp , ncesmp
 integer          nideve , nrdeve , nituse , nrtuse
-integer          iphas  , ivar   , isou   , ipp
+integer          iphas
 
 integer          ifacel(2,nfac) , ifabor(nfabor)
 integer          ifmfbr(nfabor) , ifmcel(ncelet)
@@ -220,10 +207,11 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          init  , ifac  , iel   , inc   , iccocg
+integer          ivar, ipp
 integer          iiun
 integer          ipriph,iuiph
 integer          ikiph, ieiph, iphiph, ifbiph
@@ -358,7 +346,6 @@ endif
 !===============================================================================
 
 ivar = ifbiph
-isou = 3
 iclvar = iclfbp
 iclvaf = iclfbp
 ipp    = ipprtp(ivar)
@@ -405,7 +392,7 @@ call ustsv2                                                       &
    nnod   , lndfac , lndfbr , ncelbr ,                            &
    nvar   , nscal  , nphas  , ncepdp , ncesmp ,                   &
    nideve , nrdeve , nituse , nrtuse ,                            &
-   iphas  , ivar   , isou   , ipp    ,                            &
+   iphas  , ivar   ,                                              &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml , maxelt , ia(ils), &
    ipnfac , nodfac , ipnfbr , nodfbr ,                            &
    icepdc , icetsm , itypsm ,                                     &
@@ -424,10 +411,10 @@ call ustsv2                                                       &
 if(isto2t(iphas).gt.0) then
   do iel = 1, ncel
 !       Sauvegarde pour echange
-    tuexpe = propce(iel,iptsta+isou-1)
+    tuexpe = propce(iel,iptsta+2)
 !       Pour la suite et le pas de temps suivant
 !       On met un signe "-" car on r�sout en fait "-div(grad fb) = ..."
-    propce(iel,iptsta+isou-1) = - smbr(iel)
+    propce(iel,iptsta+2) = - smbr(iel)
 !       Second membre du pas de temps precedent
 !       on implicite le terme source utilisateur (le reste)
     smbr(iel) = - rovsdt(iel)*rtpa(iel,ivar) - thets*tuexpe
@@ -545,9 +532,9 @@ enddo
 if(isto2t(iphas).gt.0) then
   thetp1 = 1.d0 + thets
   do iel = 1, ncel
-    propce(iel,iptsta+isou-1) =                                   &
-    propce(iel,iptsta+isou-1) + w5(iel)
-    smbr(iel) = smbr(iel) + thetp1*propce(iel,iptsta+isou-1)
+    propce(iel,iptsta+2) =                                   &
+    propce(iel,iptsta+2) + w5(iel)
+    smbr(iel) = smbr(iel) + thetp1*propce(iel,iptsta+2)
   enddo
 !     Sinon : SMBR
 else
@@ -638,7 +625,6 @@ call codits                                                       &
 !===============================================================================
 
 ivar = iphiph
-isou = 4
 iclvar = iclphi
 iclvaf = iclphi
 ipp    = ipprtp(ivar)
@@ -685,7 +671,7 @@ call ustsv2                                                       &
    nnod   , lndfac , lndfbr , ncelbr ,                            &
    nvar   , nscal  , nphas  , ncepdp , ncesmp ,                   &
    nideve , nrdeve , nituse , nrtuse ,                            &
-   iphas  , ivar   , isou   , ipp    ,                            &
+   iphas  , ivar   ,                                              &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml , maxelt , ia(ils), &
    ipnfac , nodfac , ipnfbr , nodfbr ,                            &
    icepdc , icetsm , itypsm ,                                     &
@@ -704,9 +690,9 @@ call ustsv2                                                       &
 if(isto2t(iphas).gt.0) then
   do iel = 1, ncel
 !       Sauvegarde pour echange
-    tuexpe = propce(iel,iptsta+isou-1)
+    tuexpe = propce(iel,iptsta+3)
 !       Pour la suite et le pas de temps suivant
-    propce(iel,iptsta+isou-1) = smbr(iel)
+    propce(iel,iptsta+3) = smbr(iel)
 !       Second membre du pas de temps precedent
 !       On suppose -ROVSDT > 0 : on implicite
 !          le terme source utilisateur (le reste)
@@ -742,8 +728,8 @@ if (ncesmp.gt.0) then
 !       Si on extrapole les TS on met Gamma Pinj dans PROPCE
   if(isto2t(iphas).gt.0) then
     do iel = 1, ncel
-      propce(iel,iptsta+isou-1) =                                 &
-      propce(iel,iptsta+isou-1) + w2(iel)
+      propce(iel,iptsta+3) =                                 &
+      propce(iel,iptsta+3) + w2(iel)
     enddo
 !       Sinon on le met directement dans SMBR
   else
@@ -802,9 +788,9 @@ enddo
 if(isto2t(iphas).gt.0) then
   thetp1 = 1.d0 + thets
   do iel = 1, ncel
-    propce(iel,iptsta+isou-1) =                                   &
-    propce(iel,iptsta+isou-1) + w2(iel)
-    smbr(iel) = smbr(iel) + thetp1*propce(iel,iptsta+isou-1)
+    propce(iel,iptsta+3) =                                   &
+    propce(iel,iptsta+3) + w2(iel)
+    smbr(iel) = smbr(iel) + thetp1*propce(iel,iptsta+3)
   enddo
 !     Sinon : SMBR
 else
@@ -886,7 +872,7 @@ enddo
 if(isto2t(iphas).gt.0) then
   thetp1 = 1.d0 + thets
   do iel = 1, ncel
-    smbr(iel) = smbr(iel) + thetp1*propce(iel,iptsta+isou-1)
+    smbr(iel) = smbr(iel) + thetp1*propce(iel,iptsta+3)
   enddo
 endif
 
@@ -978,4 +964,4 @@ call codits                                                       &
 
 return
 
-end
+end subroutine
diff --git a/src/base/rijech.f90 b/src/base/rijech.f90
index bdff258..8c71c07 100644
--- a/src/base/rijech.f90
+++ b/src/base/rijech.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -56,76 +56,63 @@ subroutine rijech &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ivar             ! e  ! <-- ! numero de variable                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ivar             ! i  ! <-- ! variable number                                !
 ! isou             ! e  ! <-- ! numero de passage                              !
 ! ipp              ! e  ! <-- ! numero de variable pour sorties post           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! produc           ! tr ! <-- ! production                                     !
 !  (6,ncelet)      !    !     !                                                !
 ! smbr(ncelet      ! tr ! <-- ! tableau de travail pour sec mem                !
@@ -134,9 +121,9 @@ subroutine rijech &
 ! produk(ncelet    ! tr ! --- ! tableau de travail production                  !
 ! epsk  (ncelet    ! tr ! --- ! tableau de travail epsilon/k                   !
 ! w2...6(ncelet    ! tr ! --- ! tableau de travail production                  !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -149,7 +136,7 @@ subroutine rijech &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -196,7 +183,7 @@ double precision produk(ncelet),w2(ncelet),w3(ncelet)
 double precision w4(ncelet),epsk(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifacpt, iel   , ii    , jj    , kk    , mm
@@ -580,4 +567,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/rijthe.f90 b/src/base/rijthe.f90
index d192c12..cb4c3cf 100644
--- a/src/base/rijthe.f90
+++ b/src/base/rijthe.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -54,83 +54,70 @@ subroutine rijthe &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ivar             ! e  ! <-- ! numero de variable                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ivar             ! i  ! <-- ! variable number                                !
 ! isou             ! e  ! <-- ! numero de passage                              !
 ! ipp              ! e  ! <-- ! numero de variable pour sorties post           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! grarox,y,z       ! tr ! <-- ! tableau de travail pour grad rom               !
 !  (ncelet)        !    !     !                                                !
 ! smbr(ncelet      ! tr ! --- ! tableau de travail pour sec mem                !
 ! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -143,7 +130,7 @@ subroutine rijthe &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -185,7 +172,7 @@ double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel
@@ -426,4 +413,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/scalai.f90 b/src/base/scalai.f90
index 81975b9..fecfa9d 100644
--- a/src/base/scalai.f90
+++ b/src/base/scalai.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -56,75 +56,62 @@ subroutine scalai &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
 !(ncelet,*)        !    !     !     lagrangien                                 !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! dtr(ncelet)      ! tr ! --- ! dt*cdtvar                                      !
 ! viscf(nfac)      ! tr ! --- ! visc*surface/dist aux faces internes           !
 ! viscb(nfabor     ! tr ! --- ! visc*surface/dist aux faces de bord            !
@@ -134,9 +121,9 @@ subroutine scalai &
 ! smbrs(ncelet     ! tr ! --- ! tableau de travail pour sec mem                !
 ! rovsdt(ncelet    ! tr ! --- ! tableau de travail pour terme instat           !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -149,7 +136,7 @@ subroutine scalai &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -205,7 +192,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          iscal, ivar, iphas, iel
@@ -740,4 +727,4 @@ endif
 !----
 return
 
-end
+end subroutine
diff --git a/src/base/schtmp.f90 b/src/base/schtmp.f90
index 01835a9..fc21325 100644
--- a/src/base/schtmp.f90
+++ b/src/base/schtmp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -53,39 +53,34 @@ subroutine schtmp &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! iappel           ! e  ! <-- ! numero de l'appel (avant ou apres              !
 !                  !    !     ! phyvar                                         !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -96,37 +91,33 @@ subroutine schtmp &
 !   (lndfbr)       !    !     !  (optionnel)                                   !
 ! isostd           ! te ! <-- ! indicateur de sortie standard                  !
 !    (nfabor+1)    !    !     !  +numero de la face de reference               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -139,7 +130,7 @@ subroutine schtmp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -181,7 +172,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel    , ifac   , iscal
@@ -455,7 +446,7 @@ elseif(iappel.eq.2) then
           varcp  = propce(iel,iicp  )
           propce(iel,iicp  ) = (1.d0+theta) * propce(iel,iicp  )  &
                              -       theta  * propce(iel,iicpa )
-          propce(iel,ipcvsa) = varcp
+          propce(iel,iicpa ) = varcp
         enddo
       endif
     endif
@@ -473,7 +464,7 @@ elseif(iappel.eq.2) then
           ipcvsa = ipproc(ivissa(iscal))
           if(ipcvsl.gt.0) then
             do iel = 1, ncel
-              viscos = propce(iel,ipcvsa)
+              viscos = propce(iel,ipcvsl)
               propce(iel,ipcvsl) = (1.d0+theta)*propce(iel,ipcvsl)&
                                  -       theta *propce(iel,ipcvsa)
               propce(iel,ipcvsa) = viscos
@@ -708,4 +699,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/base/stdtcl.f90 b/src/base/stdtcl.f90
index 91c9bb7..d33e339 100644
--- a/src/base/stdtcl.f90
+++ b/src/base/stdtcl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -57,47 +57,38 @@ subroutine stdtcl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbzfmx           ! e  ! <-- ! nb max de zones de faces de bord               !
 ! nozfmx           ! e  ! <-- ! numero max de zones de faces de bord           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -107,41 +98,37 @@ subroutine stdtcl &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! iznfbr           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !                                                !
 ! ilzfbr(nbzfmx    ! te ! <-- ! tableau de travail                             !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -154,14 +141,14 @@ subroutine stdtcl &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
 ! qcalc(nozfmx)    ! tr ! --- ! tab de travail (debit par zone)                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -173,7 +160,7 @@ subroutine stdtcl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 ! Arguments
@@ -223,7 +210,7 @@ double precision coefu(nfabor,ndim)
 double precision qcalc(nozfmx)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iphas, ifac, izone, ifvu, izonem
@@ -629,4 +616,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/strdep.f90 b/src/base/strdep.f90
index 06f16e1..ec4632d 100644
--- a/src/base/strdep.f90
+++ b/src/base/strdep.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,39 +50,34 @@ subroutine strdep &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! itrale           ! e  ! <-- ! numero d'iteration pour l'ale                  !
 ! italim           ! e  ! <-- ! numero d'iteration couplage implicite          !
 ! itrfin           ! e  ! <-- ! indicateur de derniere iteration de            !
 !                  !    !     !                    couplage implicite          !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -91,43 +86,39 @@ subroutine strdep &
 !   (nfabor+1)     !    !     !  face de bord dans nodfbr (optionnel)          !
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (lndfbr)       !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! flmalf(nfac)     ! tr ! --> ! sauvegarde du flux de masse faces int          !
 ! flmalb(nfabor    ! tr ! --> ! sauvegarde du flux de masse faces brd          !
 ! cofale           ! tr ! --> ! sauvegarde des cl de p et u                    !
 !    (nfabor,8)    !    !     !                                                !
 ! xprale(ncelet    ! tr ! --> ! sauvegarde de la pression, si nterup           !
 !                  !    !     !    est >1                                      !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -140,7 +131,7 @@ subroutine strdep &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -189,7 +180,7 @@ double precision flmalf(nfac), flmalb(nfabor), xprale(ncelet)
 double precision cofale(nfabor,8)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinra
 integer          istr, ii, iel, ifac, iphas, ntab
@@ -301,7 +292,7 @@ if (nbstru.gt.0) then
    nnod   , lndfac , lndfbr , ncelbr , nbstru ,                   &
    nideve , nrdeve , nituse , nrtuse ,                            &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml ,                   &
-   ipnfac , nodfac , ipnfbr , nodfbr , ra(iidfst),                &
+   ipnfac , nodfac , ipnfbr , nodfbr , ia(iidfst),                &
    idevel , ituser , ia     ,                                     &
    xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod , volume , &
    dt     ,                                                       &
@@ -463,4 +454,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/base/strhis.f90 b/src/base/strhis.f90
index f10fb8d..73ea5d8 100644
--- a/src/base/strhis.f90
+++ b/src/base/strhis.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -42,21 +42,21 @@ subroutine strhis &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! modhis           ! e  ! <-- ! indicateur valant 0,1 ou 2                     !
 !                  !    !               ! 1,2 = ecriture intermediaire, finale |
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
 ! ra               ! tr !  -- ! tableau des reels                              !
 !__________________!____!_____!________________________________________________!
 
@@ -69,7 +69,7 @@ subroutine strhis &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -89,7 +89,7 @@ integer          modhis
 integer          idevel(nideve), ituser(nituse), ia(*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          nbname
 parameter        (nbname=12)
@@ -349,6 +349,6 @@ endif
 #endif
 
 return
-end
+end subroutine
 
 
diff --git a/src/base/strini.f90 b/src/base/strini.f90
index a84c9d6..21602a8 100644
--- a/src/base/strini.f90
+++ b/src/base/strini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -48,41 +48,34 @@ subroutine strini &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -91,27 +84,26 @@ subroutine strini &
 !   (nfabor+1)     !    !     !  face de bord dans nodfbr (optionnel)          !
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (lndfbr)       !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -124,7 +116,7 @@ subroutine strini &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -164,7 +156,7 @@ double precision xyznod(ndim,nnod), volume(ncelet)
 double precision dt(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, itrav
 integer          ifac  , istr, icompt, ii
@@ -768,4 +760,4 @@ write(nfecra,3000)
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/base/strpre.f90 b/src/base/strpre.f90
index 5bb1b79..5dd13cc 100644
--- a/src/base/strpre.f90
+++ b/src/base/strpre.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -51,40 +51,35 @@ subroutine strpre &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! itrale           ! e  ! <-- ! numero d'iteration pour l'ale                  !
 ! italim           ! e  ! <-- ! numero d'iteration couplage implicite          !
 ! ineedf           ! e  ! <-- ! indicateur de sauvegarde des flux              !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -93,33 +88,29 @@ subroutine strpre &
 !   (nfabor+1)     !    !     !  face de bord dans nodfbr (optionnel)          !
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (lndfbr)       !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! flmalf(nfac)     ! tr ! --> ! sauvegarde du flux de masse faces int          !
 ! flmalb(nfabor    ! tr ! --> ! sauvegarde du flux de masse faces brd          !
 ! cofale           ! tr ! --> ! sauvegarde des cl de p et u                    !
@@ -127,9 +118,9 @@ subroutine strpre &
 ! xprale(ncelet    ! tr ! --> ! sauvegarde de la pression, si nterup           !
 !                  !    !     !    est >1                                      !
 ! depale(nnod,3    ! tr ! <-- ! deplacement aux noeuds                         !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -142,7 +133,7 @@ subroutine strpre &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -189,7 +180,7 @@ double precision cofale(nfabor,8)
 double precision depale(nnod,3)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          istr, ii, ifac, inod, iel, indast
@@ -371,4 +362,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/base/tcpumx.c b/src/base/tcpumx.c
index 400e812..505d2a5 100644
--- a/src/base/tcpumx.c
+++ b/src/base/tcpumx.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/tdesi1.f90 b/src/base/tdesi1.f90
index 7b9204c..8e50e80 100644
--- a/src/base/tdesi1.f90
+++ b/src/base/tdesi1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine tdesi1                               &
+subroutine tdesi1 &
 !================
 
  ( jj     , nfabor , nn     , ifabor , iclass )
@@ -42,7 +42,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! jj               ! e  ! <-- ! niveau de l'arbre binaire traite               !
 ! nn               ! e  ! <-- ! nombre de faces    actives                     !
@@ -62,7 +62,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -128,4 +128,4 @@ if ((ll.gt.nn).or.(.not. desc)) goto 20
  20   continue
 
 return
-end
+end subroutine
diff --git a/src/base/testel.f90 b/src/base/testel.f90
index d8e891b..ae41426 100644
--- a/src/base/testel.f90
+++ b/src/base/testel.f90
@@ -47,71 +47,61 @@ subroutine testel &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -123,7 +113,7 @@ subroutine testel &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -162,7 +152,7 @@ double precision rtp(ncelet,*)
 double precision coefa(ndimfb,*), coefb(ndimfb,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia, ifinra
 integer          ifac  , iel   , ivar  , iphas
@@ -530,4 +520,4 @@ call psteva(ipart , namevr, idimt, ientla, ivarpr,                &
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/tremai.c b/src/base/tremai.c
index 066bf2f..c18f04e 100644
--- a/src/base/tremai.c
+++ b/src/base/tremai.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/base/tridim.f90 b/src/base/tridim.f90
index a9510d5..72ffdc6 100644
--- a/src/base/tridim.f90
+++ b/src/base/tridim.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,38 +52,33 @@ subroutine tridim &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! itrale           ! e  ! <-- ! numero d'iteration pour l'ale                  !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -94,41 +89,37 @@ subroutine tridim &
 !   (lndfbr)       !    !     !  (optionnel)                                   !
 ! isostd           ! te ! <-- ! indicateur de sortie standard                  !
 !    (nfabor+1)    !    !     !  +numero de la face de reference               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
 !(ncelet,*)        !    !     !     lagrangien                                 !
 ! frcxt(ncelet,    ! tr ! <-- ! force exterieure generant la pression          !
 !   3,nphas)       !    !     !  hydrostatique                                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -141,7 +132,7 @@ subroutine tridim &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -205,12 +196,12 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision frcxt(ncelet,3,nphas)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          idbia1, idbra1
 integer          ifinia, ifinra, ifnia1, ifnra1
-integer          iel   , ifac  , ivar  , iscal , iappel
+integer          iel   , ifac  , inod  , ivar  , iscal , iappel
 integer          ncp   , ncv   , iok
 integer          iicodc, ircodc
 integer          icoefu, irijip, ihbord, itbord
@@ -231,7 +222,7 @@ integer          icofbr
 integer          ntrela
 
 integer          isvhb , isvtb
-integer          iphas , kphas , ii    , ippcp , ientha, ippcv
+integer          iphas , kphas , ii    , jj    , ippcp , ientha, ippcv
 integer          ikiph , ieiph , iomiph
 integer          iuiph , iviph , iwiph , ipriph, iphiph, iphass
 integer          ir11ip, ir22ip, ir33ip, ir12ip, ir13ip, ir23ip
@@ -255,6 +246,7 @@ integer          maxelt, ils, iilzfb, nbzfmx, nozfmx, iqcalc
 double precision cpcst , tditot, tdist2, tdist1, cvcst
 double precision ro0iph, p0iph, pr0iph, xxp0, xyp0, xzp0
 double precision relaxk, relaxe, relaxw
+double precision ctheta, stheta, omgnrm, rrotgb(3,3)
 
 integer          ipass
 data             ipass /0/
@@ -607,32 +599,70 @@ endif
 
 
 !===============================================================================
-! 6.  MISE A JOUR DE LA LOCALISATION DES INTERFACES DE COUPLAGE CS/CS
+! 6.  MISE A JOUR DU MAILLAGE POUR UN COUPLAGE ROTOR/STATOR
 !===============================================================================
 
-! Localisation des interfaces de couplage via la librairie FVM
+if (imobil.eq.1) then
 
-! On fait cette mise a jour des interfaces de localisation juste apres
-! les changements de geometries dus :
-!   - soit a la methode ALE (en fin de pas de temps precedent)
-!   - soit a un deplacement impose (cf ci-dessus)
+  ! --- En turbomachine on conna�t la valeur exacte de la vitesse de maillage
+
+  omgnrm = sqrt(omegax**2 + omegay**2 + omegaz**2)
+
+  ctheta = cos(ttcabs*omgnrm)
+  stheta = sin(ttcabs*omgnrm)
+
+  do ii = 1, 3
+    do jj = 1, 3
+      rrotgb(ii,jj) = ctheta*irot(ii,jj) + (1.d0 - ctheta)*prot(ii,jj) &
+                                         +         stheta *qrot(ii,jj)
+    enddo
+  enddo
+
+  ! On modifie la g�om�trie en fonction de la g�om�trie initiale
 
-if (nbrcpl.gt.0) then
+  do inod = 1, nnod
+    do ii = 1, 3
+      xyznod(ii,inod) = 0.d0
+      do jj = 1, 3
+        xyznod(ii,inod) = xyznod(ii,inod) &
+                        + rrotgb(ii,jj)*ra(ixyzn0+(inod-1)*ndim+jj-1)
 
-   call cscloc                                                    &
-   !==========
+      enddo
+    enddo
+  enddo
+
+  call algrma
+  !==========
+  call calgeo &
+  !==========
  ( idebia , idebra ,                                              &
    ndim   , ncelet , ncel   , nfac   , nfabor , nfml   , nprfml , &
-   nnod   , lndfac , lndfbr , ncelbr ,                            &
+   nnod   , lndfac , lndfbr ,                                     &
    nideve , nrdeve , nituse , nrtuse ,                            &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml ,                   &
    ipnfac , nodfac , ipnfbr , nodfbr ,                            &
    idevel , ituser , ia     ,                                     &
-   xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod ,          &
+   xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod , volume , &
+   volmin , volmax , voltot ,                                     &
    rdevel , rtuser , ra     )
 
 endif
 
+
+!===============================================================================
+! 6.  MISE A JOUR DE LA LOCALISATION DES INTERFACES DE COUPLAGE CS/CS
+!===============================================================================
+
+! Localisation des interfaces de couplage via la librairie FVM
+
+! On fait cette mise a jour des interfaces de localisation juste apres
+! les changements de geometries dus :
+!   - soit a la methode ALE (en fin de pas de temps precedent)
+!   - soit a un deplacement impose (cf ci-dessus)
+
+if (nbrcpl.gt.0) call cscloc
+                 !==========
+
 !===============================================================================
 ! 7.  CALCUL DES PROPRIETES PHYSIQUES VARIABLES
 !      SOIT VARIABLES AU COURS DU TEMPS
@@ -722,6 +752,13 @@ do iphas = 1, nphas
 
     else
 
+      if (iihmpr.eq.1) then
+        call uikpdc &
+        !==========
+      ( iappel, iphas, ncelet, ncepdc,             &
+        ia(iicepd(iphas)), ra(ickupd(iphas)), rtpa )
+      endif
+
       ils    = idebia
       idbia1 = ils + maxelt
       CALL IASIZE('TRIDIM',IDBIA1)
@@ -910,6 +947,7 @@ idbia1 = idebia
 idbra1 = idebra
 iflalf = 1
 iflalb = 1
+icoale = 1
 iprale = 1
 ineefl = 0
 if (iale.eq.1 .and. nalimx.gt.1 .and. itrale.gt.nalinf) then
diff --git a/src/base/tsepdc.f90 b/src/base/tsepdc.f90
index f9a4b4e..7752d3d 100644
--- a/src/base/tsepdc.f90
+++ b/src/base/tsepdc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,84 +52,71 @@ subroutine tsepdc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase courante                       !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
 ! idiaex           ! e  ! <-- ! indicateur de traitement de la                 !
 !                  !    !     ! diagonale (=1) ou extradiagonale (=2)          !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant prec)                     !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
 ! trav(ncelet,3    ! tr ! <-- ! tableau des second membres                     !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -142,7 +129,7 @@ subroutine tsepdc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -184,7 +171,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision trav(ncelet,3)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel   , ielpdc
@@ -262,4 +249,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/base/tstvec.f90 b/src/base/tstvec.f90
index af21d72..8137b00 100644
--- a/src/base/tstvec.f90
+++ b/src/base/tstvec.f90
@@ -42,13 +42,12 @@ subroutine tstvec &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! nfac  /nfabor    ! e  ! <-- ! nombre total de faces internes/de brd          !
 ! ifacel           ! te ! <-- ! no des elts voisins d'une face intern          !
-! (2, nfac)        !    !     !                                                !
 ! ifabor           ! te ! <-- ! no de l'elt voisin d'une face de bord          !
 ! nfabor  )        !    !     !                                                !
 ! iworkf(*         ! te ! --- ! tab de trav de dim max(nfac,nfabor)            !
@@ -76,7 +75,7 @@ subroutine tstvec &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -91,7 +90,7 @@ integer          ifacel(2,nfac),ifabor(nfabor)
 integer          iworkf(*), ismbs(ncelet), ismbv(ncelet)
 double precision rworkf(*), rsmbs(ncelet), rsmbv(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj, iok, ifac
 integer          iel, istop
@@ -448,4 +447,4 @@ endif
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/turbke.f90 b/src/base/turbke.f90
index 2ebaee5..b9fdaed 100644
--- a/src/base/turbke.f90
+++ b/src/base/turbke.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -57,82 +57,69 @@ subroutine turbke &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
 !(ncelet,*)        !    !     !     lagrangien                                 !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -149,9 +136,9 @@ subroutine turbke &
 ! tinst.(ncelet    ! tr ! --- ! tableau de travail pour terme instat           !
 ! divu(ncelet      ! tr ! --- ! tableau de travail                             !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -164,7 +151,7 @@ subroutine turbke &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -222,7 +209,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra, ifinia
@@ -1609,4 +1596,4 @@ call clipke                                                       &
 
 return
 
-end
+end subroutine
diff --git a/src/base/turbkw.f90 b/src/base/turbkw.f90
index 61424c8..62ad699 100644
--- a/src/base/turbkw.f90
+++ b/src/base/turbkw.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -57,82 +57,69 @@ subroutine turbkw &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
 !(ncelet,*)        !    !     !     lagrangien                                 !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -149,9 +136,9 @@ subroutine turbkw &
 ! tinst.(ncelet    ! tr ! --- ! tableau de travail pour terme instat           !
 ! xf1(ncelet)      ! tr ! --- ! tableau de travail pour coef f1                !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -164,7 +151,7 @@ subroutine turbkw &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -221,7 +208,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra, ifinia
@@ -1360,4 +1347,4 @@ iclpmn(ipprtp(iomgip)) = iclipw
 
 return
 
-end
+end subroutine
diff --git a/src/base/turent.f90 b/src/base/turent.f90
index 86f6512..7b31c56 100644
--- a/src/base/turent.f90
+++ b/src/base/turent.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -68,7 +68,7 @@ subroutine keendb &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! uref2            ! r  ! <-- ! carre de la vitesse debitante de               !
 !                  !    !     !                            reference           !
@@ -91,7 +91,7 @@ subroutine keendb &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -102,7 +102,7 @@ implicit none
 double precision uref2, dh, xrho, xmu , ustar2, xk, xeps
 double precision cmu, xkappa
 
-! VARIABLES LOCALES
+! Local variables
 
 double precision re, xlmbda
 
@@ -136,7 +136,7 @@ xeps = ustar2**1.5d0/(xkappa*dh*0.1d0)
 !----
 
 return
-end
+end subroutine
 subroutine keenin &
 !================
 
@@ -159,7 +159,7 @@ subroutine keenin &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! uref2            ! r  ! <-- ! carre de la vitesse debitante de               !
 !                  !    !     !                            reference           !
@@ -180,7 +180,7 @@ subroutine keenin &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -190,7 +190,7 @@ implicit none
 
 double precision uref2, xintur, dh, cmu, xkappa, xk, xeps
 
-! VARIABLES LOCALES
+! Local variables
 
 !===============================================================================
 
@@ -204,4 +204,4 @@ xeps =                                                            &
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/turrij.f90 b/src/base/turrij.f90
index 9e4467c..e9b9e22 100644
--- a/src/base/turrij.f90
+++ b/src/base/turrij.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -58,82 +58,69 @@ subroutine turrij &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
 !(ncelet,*)        !    !     !     lagrangien                                 !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -159,9 +146,9 @@ subroutine turrij &
 ! grarox,y,z       ! tr ! --- ! tableau de travail pour grad rom               !
 !  (ncelet)        !    !     !                                                !
 ! w?(ncelet)       ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -174,7 +161,7 @@ subroutine turrij &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -228,7 +215,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac  , iel   , ivar  , isou  , ii
@@ -243,6 +230,9 @@ integer          ipcrom, ipbrom, ipcroo, ipbroo, iivar
 integer          iitsla
 double precision epsrgp, climgp, extrap
 
+integer,          pointer, dimension(:) :: itpsmp => null()
+double precision, pointer, dimension(:) :: smcelp => null(), gammap => null()
+double precision, pointer, dimension(:) :: tslage => null(), tslagi => null()
 
 !===============================================================================
 
@@ -637,10 +627,17 @@ do isou = 1, 6
 
   if (iilagr.eq.2 .and. iphas.eq.1) then
     iitsla = itsr11 + (isou-1)
+    tslage = tslagr(1, iitsla)
+    tslagi = tslagr(1, itsli)
   endif
 
+  if (ncesmp.gt.0) then
+    itpsmp = itypsm(1,ivar)
+    smcelp = smacel(1,ivar)
+    gammap = smacel(1,ipriph)
+  endif
 
-!     Rij-epsilon standard (LRR)
+  !     Rij-epsilon standard (LRR)
   if (iturb(iphas).eq.30) then
     call resrij                                                   &
     !==========
@@ -652,21 +649,21 @@ do isou = 1, 6
    iphas  , ivar   , isou   , ipp    ,                            &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml ,                   &
    ipnfac , nodfac , ipnfbr , nodfbr ,                            &
-   icepdc , icetsm , itypsm(1,ivar)  ,                            &
+   icepdc , icetsm , itpsmp ,                                     &
    idevel , ituser , ia     ,                                     &
    xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod , volume , &
    dt     , rtp    , rtpa   , propce , propfa , propfb ,          &
    coefa  , coefb  , produc , grarox , graroy , graroz ,          &
-   ckupdc , smacel(1,ivar)  , smacel(1,ipriph),                   &
+   ckupdc , smcelp , gammap ,                                     &
    viscf  , viscb  , coefax ,                                     &
-   tslagr(1,iitsla) , tslagr(1,itsli) ,                           &
+   tslage , tslagi ,                                              &
    dam    , xam    , drtp   , smbr   , rovsdt ,                   &
    w1     , w2     , w3     , w4     ,                            &
    w5     , w6     , w7     , w8     , w9     ,                   &
    rdevel , rtuser , ra     )
 
   else
-!     Rij-epsilon SSG
+    !     Rij-epsilon SSG
     call resssg                                                   &
     !==========
  ( idebia , idebra ,                                              &
@@ -677,14 +674,14 @@ do isou = 1, 6
    iphas  , ivar   , isou   , ipp    ,                            &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml ,                   &
    ipnfac , nodfac , ipnfbr , nodfbr ,                            &
-   icepdc , icetsm , itypsm(1,ivar)  ,                            &
+   icepdc , icetsm , itpsmp ,                                     &
    idevel , ituser , ia     ,                                     &
    xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod , volume , &
    dt     , rtp    , rtpa   , propce , propfa , propfb ,          &
    coefa  , coefb  , grdvit , grarox , graroy , graroz ,          &
-   ckupdc , smacel(1,ivar)  , smacel(1,ipriph),                   &
+   ckupdc , smcelp , gammap ,                                     &
    viscf  , viscb  , coefax ,                                     &
-   tslagr(1,iitsla) , tslagr(1,itsli) ,                           &
+   tslage , tslagi ,                                              &
    dam    , xam    , drtp   , smbr   , rovsdt ,                   &
    w1     , w2     , w3     , w4     ,                            &
    w5     , w6     , w7     , w8     , w9     ,                   &
@@ -697,12 +694,18 @@ enddo
 ! 5.  RESOLUTION DE EPSILON
 !===============================================================================
 
-   ivar   = ieiph
-   ipp    = ipprtp(ivar)
-   isou   = 7
+ivar   = ieiph
+ipp    = ipprtp(ivar)
+isou   = 7
+
+if (ncesmp.gt.0) then
+  itpsmp = itypsm(1,ivar)
+  smcelp = smacel(1,ivar)
+  gammap = smacel(1,ipriph)
+endif
 
-   call reseps                                                    &
-   !==========
+call reseps                                                       &
+!==========
  ( idebia , idebra ,                                              &
    ndim   , ncelet , ncel   , nfac   , nfabor , nfml   , nprfml , &
    nnod   , lndfac , lndfbr , ncelbr ,                            &
@@ -711,12 +714,12 @@ enddo
    iphas  , ivar   , isou   , ipp    ,                            &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml ,                   &
    ipnfac , nodfac , ipnfbr , nodfbr ,                            &
-   icepdc , icetsm , itypsm(1,ivar)  ,                            &
+   icepdc , icetsm , itpsmp ,                                     &
    idevel , ituser , ia     ,                                     &
    xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod , volume , &
    dt     , rtp    , rtpa   , propce , propfa , propfb ,          &
    coefa  , coefb  , grdvit , produc ,grarox , graroy , graroz ,  &
-   ckupdc , smacel(1,ivar)  , smacel(1,ipriph),                   &
+   ckupdc , smcelp , gammap ,                                     &
    viscf  , viscb  ,                                              &
    tslagr ,                                                       &
    dam    , xam    , drtp   , smbr   , rovsdt ,                   &
@@ -728,9 +731,9 @@ enddo
 ! 6. CLIPPING
 !===============================================================================
 
-   iclip  = 2
-   call clprij                                                    &
-   !==========
+iclip  = 2
+call clprij                                                       &
+!==========
  ( ncelet , ncel   , nvar   , nphas  ,                            &
    iphas  , iclip  ,                                              &
    propce , rtpa   , rtp    )
@@ -766,4 +769,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/typecl.f90 b/src/base/typecl.f90
index 098621a..0ded6f9 100644
--- a/src/base/typecl.f90
+++ b/src/base/typecl.f90
@@ -52,47 +52,38 @@ subroutine typecl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas)          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! itrifb(nfabor    ! te ! --> ! tab d'indirection pour tri des faces           !
 !  nphas)          !    !     !                                                !
 ! icodcl           ! te ! <-- ! code de condition limites aux faces            !
@@ -106,34 +97,30 @@ subroutine typecl &
 !                  !    !     !  entrante eventuelle     bloquee               !
 ! isostd           ! te ! --> ! indicateur de sortie standard                  !
 !    (nfabor+1)    !    !     !  +numero de la face de reference               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -148,13 +135,13 @@ subroutine typecl &
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
 ! frcxt(ncelet,    ! tr ! <-- ! force exterieure generant la pression          !
 !   3,nphas)       !    !     !  hydrostatique                                 !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
 ! rijipb           ! tr ! --- ! tab de trav pour valeurs en iprime             !
 ! (nfabor,6   )    !    !     !  des rij au bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -391,35 +378,63 @@ if(ipass.eq.0.or.iwarni(iu(1)).ge.2) then
       ii = ientre
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Entree           ', ii, inb
+#else
+      write(nfecra,6020) 'Inlet            ', ii, inb
+#endif
       ii = iparoi
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Paroi lisse      ', ii, inb
+#else
+      write(nfecra,6020) 'Smooth wall      ', ii, inb
+#endif
       ii = iparug
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Paroi rugueuse   ', ii, inb
+#else
+      write(nfecra,6020) 'Rough wall       ', ii, inb
+#endif
       ii = isymet
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Symetrie         ', ii, inb
+#else
+      write(nfecra,6020) 'Symmetry         ', ii, inb
+#endif
       ii = isolib
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Sortie libre     ', ii, inb
+#else
+      write(nfecra,6020) 'Free outlet      ', ii, inb
+#endif
 
       if (nbrcpl.ge.1) then
         ii = icscpl
         inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
         if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
         write(nfecra,6020) 'Couplage sat/sat ', ii, inb
+#else
+        write(nfecra,6020) 'Sat/Sat coupling ', ii, inb
+#endif
       endif
 
       ii = iindef
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Indefini         ', ii, inb
+#else
+      write(nfecra,6020) 'Undefined        ', ii, inb
+#endif
 
       do ii = 1, ntypmx
         if (ii.ne.ientre .and. &
@@ -432,7 +447,11 @@ if(ipass.eq.0.or.iwarni(iu(1)).ge.2) then
           inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
           if (irangp.ge.0) call parcpt (inb)
           if(inb.gt.0) then
+#if defined(_CS_LANG_FR)
             write(nfecra,6020) 'Type utilisateur ', ii, inb
+#else
+            write(nfecra,6020) 'User type        ', ii, inb
+#endif
           endif
         endif
       enddo
@@ -442,47 +461,83 @@ if(ipass.eq.0.or.iwarni(iu(1)).ge.2) then
       ii = ieqhcf
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Entree sub. enth.', ii, inb
+#else
+      write(nfecra,6020) 'Sub. enth. inlet ', ii, inb
+#endif
 
       ii = ierucf
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Entree subsonique', ii, inb
+#else
+      write(nfecra,6020) 'Subsonic inlet   ', ii, inb
+#endif
 
       ii = iesicf
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Entree/Sortie imp', ii, inb
+#else
+      write(nfecra,6020) 'Imp inlet/outlet ', ii, inb
+#endif
 
       ii = isopcf
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Sortie subsonique', ii, inb
+#else
+      write(nfecra,6020) 'Subsonic outlet  ', ii, inb
+#endif
 
       ii = isspcf
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Sortie supersoniq', ii, inb
+#else
+      write(nfecra,6020) 'Supersonic outlet', ii, inb
+#endif
 
       ii = iparoi
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Paroi lisse      ', ii, inb
+#else
+      write(nfecra,6020) 'Smooth wall      ', ii, inb
+#endif
 
       ii = iparug
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Paroi rugueuse   ', ii, inb
+#else
+      write(nfecra,6020) 'Rough wall       ', ii, inb
+#endif
 
       ii = isymet
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Symetrie         ', ii, inb
+#else
+      write(nfecra,6020) 'Symmetry         ', ii, inb
+#endif
 
       ii = iindef
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) call parcpt (inb)
+#if defined(_CS_LANG_FR)
       write(nfecra,6020) 'Indefini         ', ii, inb
+#else
+      write(nfecra,6020) 'Undefined        ', ii, inb
+#endif
 
       do ii = 1, ntypmx
         if (ii.ne.iesicf .and. &
@@ -497,7 +552,11 @@ if(ipass.eq.0.or.iwarni(iu(1)).ge.2) then
           inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
           if (irangp.ge.0) call parcpt (inb)
           if(inb.gt.0) then
+#if defined(_CS_LANG_FR)
             write(nfecra,6020) 'Type utilisateur ',ii, inb
+#else
+            write(nfecra,6020) 'User type        ',ii, inb
+#endif
           endif
         endif
       enddo
@@ -581,8 +640,8 @@ do iphas = 1, nphas
     enddo
   endif
 
-! ifrslb = first free standard outlet face (ICODCL not modified)
-! itbslb = max of ifrslb on all ranks, standard outlet face presence inidcator
+! ifrslb = first free standard outlet face (icodcl not modified)
+! itbslb = max of ifrslb on all ranks, standard outlet face presence indicator
 
   ifrslb(iphas) = 0
   do ii = ifinty(isolib,iphas), idebty(isolib,iphas), -1
@@ -729,10 +788,10 @@ do iphas = 1, nphas
 !     S'il y a des faces de sortie libre, on cherche le premier
 !     proc sur lequel il y en a.
 
-!     On recupere aussi les coordonnees du point de reference pour les
-!     sorties, pour calculer PREF ensuite
+!     We also retrieve the coordinates of the reference point, so as to
+!     calculate pref later on.
 
-  if    (itbslb(iphas).gt.0) then
+  if (itbslb(iphas).gt.0) then
 
     if (irangp.ge.0) then
 
@@ -934,7 +993,7 @@ do iphas = 1, nphas
         ifac = itrifb(ii,iphas)
         if(icodcl(ifac,ivar).eq.0) then
           icodcl(ifac,ivar)   = 4
-!                RCODCL(IFAC,IVAR,1) = Modifie eventuellement par l'ALE
+!         rcodcl(ifac,ivar,1) = Modifie eventuellement par l'ALE
           rcodcl(ifac,ivar,2) = rinfin
           rcodcl(ifac,ivar,3) = 0.d0
         endif
@@ -969,7 +1028,7 @@ do iphas = 1, nphas
         ifac = itrifb(ii,iphas)
         if(icodcl(ifac,ivar).eq.0) then
           icodcl(ifac,ivar)   = 5
-!               RCODCL(IFAC,IVAR,1) = Utilisateur
+!         rcodcl(ifac,ivar,1) = Utilisateur
           rcodcl(ifac,ivar,2) = rinfin
           rcodcl(ifac,ivar,3) = 0.d0
         endif
@@ -1026,9 +1085,9 @@ do iphas = 1, nphas
         ifac = itrifb(ii,iphas)
         if(icodcl(ifac,ivar).eq.0) then
           icodcl(ifac,ivar)   = 6
-!               RCODCL(IFAC,IVAR,1) = Utilisateur
+!         rcodcl(ifac,ivar,1) = Utilisateur
           rcodcl(ifac,ivar,2) = rinfin
-!               RCODCL(IFAC,IVAR,3) = Utilisateur
+!         rcodcl(ifac,ivar,3) = Utilisateur
         endif
       enddo
     elseif (                                                      &
@@ -1108,7 +1167,7 @@ do iphas = 1, nphas
             if (iok.eq.0.or.iok.eq.2) iok = iok + 1
           else
             icodcl(ifac,ivar) = 1
-!                 RCODCL(IFAC,IVAR,1) = Utilisateur
+!           rcodcl(ifac,ivar,1) = Utilisateur
             rcodcl(ifac,ivar,2) = rinfin
             rcodcl(ifac,ivar,3) = 0.d0
           endif
@@ -1127,7 +1186,7 @@ do iphas = 1, nphas
           endif
         else
           icodcl(ifac,ivar) = 1
-!               RCODCL(IFAC,IVAR,1) = Utilisateur
+!         rcodcl(ifac,ivar,1) = Utilisateur
           rcodcl(ifac,ivar,2) = rinfin
           rcodcl(ifac,ivar,3) = 0.d0
         endif
@@ -1173,7 +1232,7 @@ do iphas = 1, nphas
               rcodcl(ifac,ivar,3) = 0.d0
           else
               icodcl(ifac,ivar) = 1
-!                   RCODCL(IFAC,IVAR,1) = Utilisateur
+!             rcodcl(ifac,ivar,1) = Utilisateur
               rcodcl(ifac,ivar,2) = rinfin
               rcodcl(ifac,ivar,3) = 0.d0
          endif
@@ -1335,28 +1394,44 @@ do iphas = 1, nphas
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Entree           ',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Inlet            ',ii,inb,flumty(ii)
+#endif
       ii = iparoi
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) then
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Paroi lisse      ',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Smooth wall      ',ii,inb,flumty(ii)
+#endif
       ii = iparug
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) then
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Paroi rugueuse   ',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Rough wall       ',ii,inb,flumty(ii)
+#endif
       ii = isymet
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
       if (irangp.ge.0) then
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Symetrie         ',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Symmetry         ',ii,inb,flumty(ii)
+#endif
 
       ii = isolib
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
@@ -1364,7 +1439,11 @@ do iphas = 1, nphas
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Sortie libre     ',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Free outlet      ',ii,inb,flumty(ii)
+#endif
 
       if (nbrcpl.ge.1) then
         ii = icscpl
@@ -1373,7 +1452,11 @@ do iphas = 1, nphas
           call parcpt (inb)
           call parsom (flumty(ii))
         endif
+#if defined(_CS_LANG_FR)
         write(nfecra,7020) 'Couplage sat/sat ',ii,inb,flumty(ii)
+#else
+        write(nfecra,7020) 'Sat/Sat coupling ',ii,inb,flumty(ii)
+#endif
       endif
 
       ii = iindef
@@ -1382,7 +1465,11 @@ do iphas = 1, nphas
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Indefini         ',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Undefined        ',ii,inb,flumty(ii)
+#endif
 
       do ii = 1, ntypmx
         if( ii.ne.ientre .and.                                    &
@@ -1398,8 +1485,11 @@ do iphas = 1, nphas
             call parsom (flumty(ii))
           endif
           if(inb.gt.0) then
-            write(nfecra,7020)                                    &
-                 'Type utilisateur ',ii,inb,flumty(ii)
+#if defined(_CS_LANG_FR)
+            write(nfecra,7020) 'Type utilisateur ',ii,inb,flumty(ii)
+#else
+            write(nfecra,7020) 'User type        ',ii,inb,flumty(ii)
+#endif
           endif
         endif
       enddo
@@ -1412,7 +1502,11 @@ do iphas = 1, nphas
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Entree sub. enth.',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Sub. enth. inlet ',ii,inb,flumty(ii)
+#endif
 
       ii = ierucf
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
@@ -1420,7 +1514,11 @@ do iphas = 1, nphas
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Entree subsonique',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Subsonic inlet   ',ii,inb,flumty(ii)
+#endif
 
       ii = iesicf
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
@@ -1428,7 +1526,11 @@ do iphas = 1, nphas
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Entree/Sortie imp',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Imp inlet/outlet ',ii,inb,flumty(ii)
+#endif
 
       ii = isopcf
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
@@ -1436,7 +1538,11 @@ do iphas = 1, nphas
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Sortie subsonique',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Subsonic outlet  ',ii,inb,flumty(ii)
+#endif
 
       ii = isspcf
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
@@ -1444,7 +1550,11 @@ do iphas = 1, nphas
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Sortie supersoniq',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Supersonic outlet',ii,inb,flumty(ii)
+#endif
 
       ii = iparoi
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
@@ -1452,7 +1562,11 @@ do iphas = 1, nphas
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Paroi            ',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Wall             ',ii,inb,flumty(ii)
+#endif
 
       ii = isymet
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
@@ -1460,7 +1574,11 @@ do iphas = 1, nphas
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Symetrie         ',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Symmetry         ',ii,inb,flumty(ii)
+#endif
 
       ii = iindef
       inb = ifinty(ii,iphas)-idebty(ii,iphas)+1
@@ -1468,7 +1586,11 @@ do iphas = 1, nphas
         call parcpt (inb)
         call parsom (flumty(ii))
       endif
+#if defined(_CS_LANG_FR)
       write(nfecra,7020) 'Indefini         ',ii,inb,flumty(ii)
+#else
+      write(nfecra,7020) 'Undefined        ',ii,inb,flumty(ii)
+#endif
 
       do ii = 1, ntypmx
         if (ii.ne.iesicf .and. &
@@ -1485,8 +1607,11 @@ do iphas = 1, nphas
             call parsom (flumty(ii))
           endif
           if(inb.gt.0) then
-            write(nfecra,7020) &
-                 'Type utilisateur ',ii,inb,flumty(ii)
+#if defined(_CS_LANG_FR)
+            write(nfecra,7020) 'Type utilisateur ',ii,inb,flumty(ii)
+#else
+            write(nfecra,7020) 'User type        ',ii,inb,flumty(ii)
+#endif
           endif
         endif
       enddo
@@ -1863,4 +1988,4 @@ enddo
 
 
 return
-end
+end subroutine
diff --git a/src/base/undscr.f90 b/src/base/undscr.f90
index ab9156a..4fef595 100644
--- a/src/base/undscr.f90
+++ b/src/base/undscr.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,7 +39,7 @@ subroutine undscr &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ideb             ! i  ! <-- ! debut de la chaine                             !
 ! ifin             ! i  ! <-- ! fin   de la chaine                             !
@@ -59,7 +59,7 @@ implicit none
 character chaine*(*)
 integer   ideb, ifin
 
-! VARIABLES LOCALES
+! Local variables
 
 integer   nn
 
@@ -87,4 +87,4 @@ do nn = ideb,ifin
   IF(CHAINE(NN:NN).eq.'/') CHAINE(NN:NN) = '_'
 enddo
 
-end
+end subroutine
diff --git a/src/base/vandri.f90 b/src/base/vandri.f90
index 673c243..af7b96f 100644
--- a/src/base/vandri.f90
+++ b/src/base/vandri.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,41 +44,39 @@ subroutine vandri &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de la phase traitee                     !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas)          !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! ifapat           ! te ! <-- ! no de face de brd code 5 la + proche           !
 ! (ncelet)         !    !     !    (rij et echo de paroi      )                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! uetbor           ! tr ! <-- ! vitesse de frottement au bord                  !
 ! (nfabor,nphas    !    !     !  pour van driest en les                        !
 ! visvdr(nphas)    ! tr ! <-- ! viscosite dynamique ds les cellules            !
 ! (ncelet,nphas    !    !     !  de bord apres amortisst de v driest           !
 ! yplusc           ! tr ! <-- ! valeur de yplus aux cellules                   !
 ! (ncelet  )       !    !     !    dans le cas abs(icdpar).eq.1                !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -91,7 +89,7 @@ subroutine vandri &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -119,7 +117,7 @@ double precision yplusc(ncelet)
 double precision propce(ncelet,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel   , ifac  , ipcvis, ipcvst, ipcrom
 double precision yplus , yminpa, viscos
@@ -224,4 +222,4 @@ enddo
 
 
 return
-end
+end subroutine
diff --git a/src/base/varpos.f90 b/src/base/varpos.f90
index 9c8bbb4..f11d412 100644
--- a/src/base/varpos.f90
+++ b/src/base/varpos.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,7 +40,7 @@ subroutine varpos &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nmodpp           ! e  ! --> ! nombre de modeles phys.part. actives           !
 !__________________!____!_____!________________________________________________!
@@ -54,7 +54,7 @@ subroutine varpos &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -83,7 +83,7 @@ include "ihmpre.h"
 
 integer       nmodpp
 
-! VARIABLES LOCALES
+! Local variables
 
 
 character     rubriq*64, cmoy4*4, cindfm*4
@@ -1836,7 +1836,7 @@ if(ipass.eq.4) then
         idtmom(imom) = idtmom(imomr)
 !          Si non : on a besoin d'un nouveau tableau ou reel
       else
-        if(idtvar.eq.2) then
+        if(idtvar.eq.2.or.idtvar.eq.-1) then
           iiplus = iiplus + 1
           idtmom(imom) = iiplus
         else
@@ -1871,7 +1871,7 @@ if(ipass.eq.4) then
 !           Si DT non uniforme dans le present calcul ou que
 !              DT cumule etait non uniforme dans l'ancien, on a un
 !              DT cumule non uniforme (sinon, il est uniforme)
-          if(idtvar.eq.2.or.idto.gt.0) then
+          if(idtvar.eq.2.or.idtvar.eq.-1.or.idto.gt.0) then
             iiplus = iiplus + 1
             idtmom(imom) = iiplus
           else
@@ -2013,9 +2013,10 @@ if(ipass.eq.4) then
 !      Le rang de la derniere propriete pour le post est IPPPST.
 
 
-  if(idtvar.ne.0) then
+  if(idtvar.gt.0) then
     ipppst = ipppst + 1
     ippdt  = ipppst
+    nppmax = ipppst
   endif
 
   if(ipucou.eq.1) then
@@ -2025,6 +2026,7 @@ if(ipass.eq.4) then
     ippty  = ipppst
     ipppst = ipppst + 1
     ipptz  = ipppst
+    nppmax = ipppst
   endif
 
 
@@ -4520,4 +4522,4 @@ endif
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/base/vectds.f90 b/src/base/vectds.f90
index 0f99ef9..e07df09 100644
--- a/src/base/vectds.f90
+++ b/src/base/vectds.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,16 +46,16 @@ subroutine vectds &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
 ! ncel             ! e  ! <-- ! nombre de cellules                             !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! ifacel(2,nfac    ! te ! <-- ! no des elts voisins d'une face intern          !
 ! ifabor(nfabor    ! te ! <-- ! no de l'elt voisin d'une face de bord          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! surfac(3,nfac    ! tr ! <-- ! surf vectorielle des surfaces interne          !
 ! surfbo(          ! tr ! <-- ! surf vectorielle des surfaces                  !
 !  (3,nfabor       !    !     !                               de bord          !
@@ -65,7 +65,7 @@ subroutine vectds &
 ! vectz (ncelet    ! tr ! <-- ! composante z du vecteur   entre                !
 ! valf (nfac)      ! tr ! --> ! vect*surface      aux faces internes           !
 ! valb (nfabor     ! tr ! --> ! vect*surface      aux faces de bord            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -79,7 +79,7 @@ subroutine vectds &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 
 include "paramx.h"
 include "pointe.h"
@@ -99,7 +99,7 @@ double precision vectx(ncelet), vecty(ncelet), vectz(ncelet)
 double precision valf(nfac), valb(nfabor)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ifac, iel1, iel2
 integer          idimte, itenso
diff --git a/src/base/vericl.f90 b/src/base/vericl.f90
index c3a09fc..3373b76 100644
--- a/src/base/vericl.f90
+++ b/src/base/vericl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -51,45 +51,36 @@ subroutine vericl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -99,34 +90,30 @@ subroutine vericl &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -139,9 +126,9 @@ subroutine vericl &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -153,7 +140,7 @@ subroutine vericl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -196,7 +183,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rcodcl(nfabor,nvar,3)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -627,7 +614,7 @@ if(nscal.ge.1) then
       endif
 ! --- verification que la rugosite scalaire est initialisee si icodl=6
       if(icodcl(ifac,ivar).eq.6.and.                              &
-         rcodcl(ifac,ivar,3).lt.epzero)then
+         rcodcl(ifac,iviph,3).lt.epzero)then
         CHAINE='RUGOSITS'
         write(nfecra,1010)ifac,iprfml(ifmfbr(ifac),1),chaine(1:8),&
                           icodcl(ifac,ivar)
@@ -1238,4 +1225,4 @@ endif
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/verini.f90 b/src/base/verini.f90
index e52c90f..93d1181 100644
--- a/src/base/verini.f90
+++ b/src/base/verini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,7 +40,7 @@ subroutine verini &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -53,7 +53,7 @@ subroutine verini &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -81,7 +81,7 @@ include "radiat.h"
 
 integer          iok
 
-! VARIABLES LOCALES
+! Local variables
 
 character        chaine*80, chain2*80
 integer          ii    , iis   , jj    , iisct , iphas
@@ -928,6 +928,14 @@ do iphas = 1, nphas
     WRITE(NFECRA,2600) IPHAS,'ITURB  ',ITRBPH
     iok = iok + 1
   endif
+
+  ! In lagrangian with two-way coupling, k-omega SST is forbidden (not
+  ! properly implemented)
+  if (itrbph.eq.60 .and. iilagr.eq.2) then
+     write(nfecra,2601) iilagr
+     iok = iok + 1
+  endif
+
 enddo
 
 !     Methode des vortex pour la LES
@@ -3198,6 +3206,21 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
+ 2601 format(                                                           &
+'@                                                            ',/,&
+'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
+'@                                                            ',/,&
+'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES               ',/,&
+'@    =========                                               ',/,&
+'@    LE MODELE DE TURBULENCE K-OMEGA SST N''EST PAS          ',/,&
+'@     COMPATIBLE AVEC LE LAGRANGIEN EN COUPLAGE INVERSE      ',/,&
+'@                                                            ',/,&
+'@  Le calcul ne peut etre execute.                           ',/,&
+'@                                                            ',/,&
+'@  Verifier les parametres donnes via l''interface ou usini1.',/,&
+'@                                                            ',/,&
+'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
+'@                                                            ',/)
  2605 format(                                                           &
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
@@ -5696,6 +5719,21 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
+ 2601 format(                                                           &
+'@                                                            ',/,&
+'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
+'@                                                            ',/,&
+'@ @@  WARNING:   STOP WHILE READING INPUT DATA               ',/,&
+'@    =========                                               ',/,&
+'@    THE K-OMEGA SST TURBULENCE MODEL IS NOT COMPATIBLE WITH ',/,&
+'@    TWO-WAY COUPLING IN LAGRANGIAN MODELLING                ',/,&
+'@                                                            ',/,&
+'@   The calculation could NOT run.                           ',/,&
+'@                                                            ',/,&
+'@ Check the input data given via User Interface or in usini1.',/,&
+'@                                                            ',/,&
+'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
+'@                                                            ',/)
  2605 format(                                                           &
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
@@ -6009,7 +6047,7 @@ endif
 '@  For compressible and SYRTHES coupling                     ',/,&
 '@    the coupled scalar must be energy.                      ',/,&
 '@  here it is scalar                      ',I10               ,/,&
-'@    which is not the energy  here since                        '&
+'@    which is not the energy  here since                     ',/,&
 '@                    ISCSTH(',I10   ,') = ',I10               ,/,&
 '@                                                            ',/,&
 '@                                                            ',/,&
@@ -6818,4 +6856,4 @@ endif
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/base/verlon.f90 b/src/base/verlon.f90
index cd8958d..2f175cc 100644
--- a/src/base/verlon.f90
+++ b/src/base/verlon.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,7 +39,7 @@ subroutine verlon &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! chaine           ! a  ! <-- ! chaine de caracteres a verifier                !
 ! ii1              ! e  ! --> ! position  premier caractere non blanc          !
@@ -61,7 +61,7 @@ implicit none
 character chaine*(*)
 integer   ii1,ii2,lpos
 
-! VARIABLES LOCALES
+! Local variables
 
 integer   n1,iprbla,idrbla
 
@@ -77,4 +77,4 @@ ii1  = iprbla ( chaine, n1 )
 ii2  = idrbla ( chaine, n1 )
 lpos = ii2 - ii1 + 1
 
-end
+end subroutine
diff --git a/src/base/vert1d.f90 b/src/base/vert1d.f90
index 8d4090a..c1fbed6 100644
--- a/src/base/vert1d.f90
+++ b/src/base/vert1d.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine vert1d                               &
+subroutine vert1d &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -55,19 +55,19 @@
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nfpt1d           ! e  ! <-- ! nombre de faces avec module therm 1d           !
 ! ifpt1d           ! e  ! <-- ! numero de la face en traitement                !
 !                  !    !     ! thermique en paroi                             !
@@ -79,21 +79,19 @@
 ! xlmbt1           ! r  ! <-- ! diffusivite thermique                          !
 ! rcpt1d           ! r  ! <-- ! rocp                                           !
 ! dtpt1d           ! tr ! <-- ! pas de temps                                   !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! iappel           ! e  ! <-- ! indique les donnes a renvoyer                  !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -106,7 +104,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -439,5 +437,5 @@ endif
 
 return
 
-end
+end subroutine
 
diff --git a/src/base/viscfa.f90 b/src/base/viscfa.f90
index 8845140..9bba365 100644
--- a/src/base/viscfa.f90
+++ b/src/base/viscfa.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -53,68 +53,58 @@ subroutine viscfa &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! imvisf           ! e  ! <-- ! methode de calcul de la visc face              !
 !                  !    !     !  = 0 arithmetique                              !
 !                  !    !     !  = 1 harmonique                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! vistot(ncelet    ! tr ! <-- ! valeur de la viscosite                         !
 ! viscf(nfac)      ! tr ! --> ! visc*surface/dist aux faces internes           !
 ! viscb(nfabor     ! tr ! --> ! visc*surface/dist aux faces de bord            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -128,7 +118,7 @@ subroutine viscfa &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 
 include "paramx.h"
 include "pointe.h"
@@ -161,7 +151,7 @@ double precision vistot(ncelet)
 double precision viscf(nfac), viscb(nfabor)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ifac, ii, jj, idimte, itenso
 double precision visci, viscj, surfn, dist, pond
@@ -237,4 +227,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/visdyn.f90 b/src/base/visdyn.f90
index e6f55be..b7035f0 100644
--- a/src/base/visdyn.f90
+++ b/src/base/visdyn.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -62,80 +62,67 @@ subroutine visdyn &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -145,9 +132,9 @@ subroutine visdyn &
 ! , nphas)         !    !     ! d'un modlele dynamique                         !
 ! w1..10(ncelet    ! tr ! --- ! tableau de travail                             !
 ! xmij(ncelet,6    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -159,7 +146,7 @@ subroutine visdyn &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -209,7 +196,7 @@ double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision w9(ncelet),w10(ncelet),xmij(ncelet,6)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ii, iel, iccocg, inc
@@ -735,4 +722,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/vislmg.f90 b/src/base/vislmg.f90
index 160a255..89be7e8 100644
--- a/src/base/vislmg.f90
+++ b/src/base/vislmg.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,89 +59,76 @@ subroutine vislmg &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
 ! (ncesmp,*   )    !    !     !  source de masse                               !
 !                  !    !     !  pour ivar=ipr, smacel=flux de masse           !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -153,7 +140,7 @@ subroutine vislmg &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -198,7 +185,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, iccocg, inc, iphydp
@@ -366,4 +353,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/visort.f90 b/src/base/visort.f90
index e19eab8..e71cf25 100644
--- a/src/base/visort.f90
+++ b/src/base/visort.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,68 +59,58 @@ subroutine visort &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! imvisf           ! e  ! <-- ! methode de calcul de la visc face              !
 !                  !    !     !  = 0 arithmetique                              !
 !                  !    !     !  = 1 harmonique                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! w1,2,3(ncelet    ! tr ! <-- ! valeurs de la viscosite                        !
 ! viscf(nfac)      ! tr ! --> ! visc*surface/dist aux faces internes           !
 ! viscb(nfabor     ! tr ! --> ! visc*surface/dist aux faces de bord            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -134,7 +124,7 @@ subroutine visort &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -168,7 +158,7 @@ double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision viscf(nfac), viscb(nfabor)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ifac, ii, jj
 integer          idimte, itenso
@@ -290,4 +280,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/vissec.f90 b/src/base/vissec.f90
index 4ac5690..9e384a7 100644
--- a/src/base/vissec.f90
+++ b/src/base/vissec.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -74,79 +74,66 @@ subroutine vissec &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! phase courante                                 !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant prec)                     !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -157,9 +144,9 @@ subroutine vissec &
 ! viscb(nfabor     ! tr ! --- ! visc*surface/dist aux faces de bord            !
 ! vistot(ncelet    ! tr ! --- ! tableau de travail pour mu                     !
 ! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -172,7 +159,7 @@ subroutine vissec &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -227,7 +214,7 @@ double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iccocg, inc, iel, ifac, ivar, isou, ii, jj, init
@@ -613,4 +600,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/vissma.f90 b/src/base/vissma.f90
index d591687..6f6abe0 100644
--- a/src/base/vissma.f90
+++ b/src/base/vissma.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,89 +59,76 @@ subroutine vissma &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
 ! (ncesmp,*   )    !    !     !  source de masse                               !
 !                  !    !     !  pour ivar=ipr, smacel=flux de masse           !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -153,7 +140,7 @@ subroutine vissma &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -198,7 +185,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, iccocg, inc
@@ -374,4 +361,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/vissst.f90 b/src/base/vissst.f90
index dee9113..a2d3e7e 100644
--- a/src/base/vissst.f90
+++ b/src/base/vissst.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -66,80 +66,67 @@ subroutine vissst &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -149,9 +136,9 @@ subroutine vissst &
 ! divukw(ncelet    ! tr ! --> ! divergence du u pour utilisation dans          !
 !                  !    !     ! turbkw                                         !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -163,7 +150,7 @@ subroutine vissst &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -211,7 +198,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, iccocg, inc
@@ -429,4 +416,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/viswal.f90 b/src/base/viswal.f90
index 7629de4..5b7c274 100644
--- a/src/base/viswal.f90
+++ b/src/base/viswal.f90
@@ -65,89 +65,76 @@ subroutine viswal &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc(ncepdp    ! tr ! <-- ! tableau de travail pour pdc                    !
 !     , 6)!        !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
 ! (ncesmp,*   )    !    !     !  source de masse                               !
 !                  !    !     !  pour ivar=ipr, smacel=flux de masse           !
 ! w1..12(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -159,7 +146,7 @@ subroutine viswal &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -207,7 +194,7 @@ double precision w7(ncelet)   , w8(ncelet)   , w9(ncelet)
 double precision w10(ncelet)  , w11(ncelet)  , w12(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinra
 integer          iel, iccocg, inc
@@ -219,7 +206,7 @@ integer          i, j, k
 double precision coef, deux, delta, tiers
 double precision sij, sijd, s, sd, sinv
 double precision xfil, xa  , xb  , radeux, con
-double precision duidxj(ndim,ndim), kdelta(ndim,ndim)
+double precision dudx(ndim,ndim), kdelta(ndim,ndim)
 
 !===============================================================================
 
@@ -343,15 +330,15 @@ coef = cwale(iphas)**2 * radeux
 
 do iel = 1, ncel
 
-  duidxj(1,1) = w1(iel)
-  duidxj(1,2) = w2(iel)
-  duidxj(1,3) = w3(iel)
-  duidxj(2,1) = w4(iel)
-  duidxj(2,2) = w5(iel)
-  duidxj(2,3) = w6(iel)
-  duidxj(3,1) = w7(iel)
-  duidxj(3,2) = w8(iel)
-  duidxj(3,3) = w9(iel)
+  dudx(1,1) = w1(iel)
+  dudx(1,2) = w2(iel)
+  dudx(1,3) = w3(iel)
+  dudx(2,1) = w4(iel)
+  dudx(2,2) = w5(iel)
+  dudx(2,3) = w6(iel)
+  dudx(3,1) = w7(iel)
+  dudx(3,2) = w8(iel)
+  dudx(3,3) = w9(iel)
 
   s  = 0.d0
   sd = 0.d0
@@ -359,19 +346,19 @@ do iel = 1, ncel
   do i = 1, ndim
     do j = 1, ndim
 
-!     Sij = 0.5 * (dUi/dXj + dUj/dXi)
+      ! Sij = 0.5 * (dUi/dXj + dUj/dXi)
 
-      sij = 0.5d0*(duidxj(i,j)+duidxj(j,i))
+      sij = 0.5d0*(dudx(i,j)+dudx(j,i))
 
-      s = s + 2.d0*sij**2
+      s = s + sij**2
 
       do k = 1, ndim
 
 !  traceless symmetric part of the square of the velocity gradient tensor
 !    Sijd = 0.5 * ( dUi/dXk dUk/dXj + dUj/dXk dUk/dXi) - 1/3 Dij dUk/dXk dUk/dXk
 
-        sijd = 0.5d0*(duidxj(i,k)*duidxj(k,j)+ duidxj(j,k)*duidxj(k,i)) &
-              -tiers*kdelta(i,j)*duidxj(k,k)**2
+        sijd = 0.5d0*(dudx(i,k)*dudx(k,j)+ dudx(j,k)*dudx(k,i)) &
+              -tiers*kdelta(i,j)*dudx(k,k)**2
 
         sd = sd + sijd**2
 
@@ -379,17 +366,12 @@ do iel = 1, ncel
     enddo
   enddo
 
-! S = SQRT ( 2 Sij Sij )
-
-  s = sqrt(s)
-
-
 !===============================================================================
 ! 3.  CALCUL DE LA VISCOSITE TURBULENTE
 !===============================================================================
 
-! Turbulent inverse time scale =
-!   (Sijd Sijd)^3/2 / [ (Sij Sij)^5/2 + (Sijd Sijd)^5/4 ]
+  ! Turbulent inverse time scale =
+  !   (Sijd Sijd)^3/2 / [ (Sij Sij)^5/2 + (Sijd Sijd)^5/4 ]
 
   sinv = (s**2.5d0 + sd**1.25d0)
   if (sinv.gt.0.d0) then
diff --git a/src/base/vor2cl.f90 b/src/base/vor2cl.f90
index 72450a0..9c090ea 100644
--- a/src/base/vor2cl.f90
+++ b/src/base/vor2cl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine vor2cl                               &
+subroutine vor2cl &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -52,45 +52,36 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -100,40 +91,36 @@
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
 ! irepvo           ! te ! <-- ! numero de l'entree associe a chaque            !
 !     (nfabor)     !    !     ! face de bord (=0 si pas de vortex)             !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -146,13 +133,13 @@
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -164,7 +151,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -213,7 +200,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, iel, ii, iphas, ient
@@ -291,4 +278,4 @@ enddo
 ! ---
 
 return
-end
+end subroutine
diff --git a/src/base/vordep.f90 b/src/base/vordep.f90
index 2f95f33..359d83b 100644
--- a/src/base/vordep.f90
+++ b/src/base/vordep.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -43,7 +43,7 @@ subroutine vordep &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ncevor           ! e  ! <-- ! nombre de face a l'entree ou est               !
 !                  !    !     ! utilise la methode                             !
@@ -77,7 +77,7 @@ subroutine vordep &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -100,7 +100,7 @@ double precision yzvor(nvomax,2) , yzvora(nvomax,2)
 double precision signv(nvomax)
 double precision temps(nvomax)   , tpslim(nvomax)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj, kk, iii, iun
 
@@ -327,4 +327,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/vorimp.f90 b/src/base/vorimp.f90
index 0fc1b53..dc465db 100644
--- a/src/base/vorimp.f90
+++ b/src/base/vorimp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,7 +39,7 @@ subroutine vorimp &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ient             ! e  ! <-- ! numero de l'entree                             !
 ! nnent            ! e  ! <-- ! nombre d'entrees utilisant des vortex          !
@@ -55,7 +55,7 @@ subroutine vorimp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,7 +69,7 @@ include "vortex.h"
 
 integer          ient
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ipass
 data             ipass /0/
@@ -256,4 +256,4 @@ endif
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/base/vorin0.f90 b/src/base/vorin0.f90
index 6674b9f..e60c537 100644
--- a/src/base/vorin0.f90
+++ b/src/base/vorin0.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine vorin0                               &
+subroutine vorin0 &
 !================
 
  ( nfabor , irepvo )
@@ -40,9 +40,9 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! irepvo           ! te ! --> ! numero de l'entree associe a chaque            !
 !     (nfabor)     !    !     ! face de bord (=0 si pas de vortex)             !
 !__________________!____!_____!________________________________________________!
@@ -56,7 +56,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "vortex.h"
@@ -67,7 +67,7 @@ include "vortex.h"
 
 integer          nfabor, irepvo(nfabor)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj, ifac
 
@@ -140,4 +140,4 @@ do ii = 1, nentmx
 enddo
 
 return
-end
+end subroutine
diff --git a/src/base/vorini.f90 b/src/base/vorini.f90
index de65f7c..baea8ae 100644
--- a/src/base/vorini.f90
+++ b/src/base/vorini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine vorini &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ncevor           ! e  ! <-- ! nombre de face a l'entree ou est               !
 !                  !    !     ! utilise la methode                             !
@@ -74,7 +74,7 @@ subroutine vorini &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -97,7 +97,7 @@ double precision yzvor(nvomax,2) , signv(nvomax)
 double precision temps(nvomax)   , tpslim(nvomax)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj, kk, iii, iun, ivort, iient, iok
 
@@ -600,4 +600,4 @@ enddo
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/vorlgv.f90 b/src/base/vorlgv.f90
index a0608d9..6d04561 100644
--- a/src/base/vorlgv.f90
+++ b/src/base/vorlgv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine vorlgv &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ncevor           ! e  ! <-- ! nombre de face a l'entree ou est               !
 !                  !    !     ! utilise la methode                             !
@@ -63,7 +63,7 @@ subroutine vorlgv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -145,4 +145,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/base/vorpre.f90 b/src/base/vorpre.f90
index ec62c30..2e1362e 100644
--- a/src/base/vorpre.f90
+++ b/src/base/vorpre.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -49,80 +49,65 @@ subroutine vorpre &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ifinia           ! e  ! --> ! numero de la derniere case libre dans          !
-!                  !    !     ! ia apres la reservation memoire                !
-! ifinra           ! e  ! --> ! numero de la derniere case libre dans          !
-!                  !    !     ! ra apres la reservation memoire                !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
 ! irepvo           ! te ! <-- ! tab entier pour reperage des faces de          !
 !                  !    !     ! bord pour la methode des vortex                !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -134,7 +119,7 @@ subroutine vorpre &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -175,7 +160,7 @@ double precision propce(ncelet,*)
 double precision propfa(nfac,*), propfb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, iel, ii, iphas
@@ -383,4 +368,4 @@ call memvor                                                       &
 ! ---
 
 return
-end
+end subroutine
diff --git a/src/base/vortex.f90 b/src/base/vortex.f90
index 77ac35c..3e253ea 100644
--- a/src/base/vortex.f90
+++ b/src/base/vortex.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -42,7 +42,7 @@ subroutine vortex &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ivorce           ! te ! <-- ! numero du vortex le plus proche d'un           !
 !     (nvomax)     !    !     ! vortex donne                                   !
@@ -79,7 +79,7 @@ subroutine vortex &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -205,4 +205,4 @@ close(impvvo)
 
 return
 
-end
+end subroutine
diff --git a/src/base/vorver.f90 b/src/base/vorver.f90
index dd61bae..afd199c 100644
--- a/src/base/vorver.f90
+++ b/src/base/vorver.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,9 +40,9 @@ subroutine vorver &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! irepvo           ! te ! <-- ! numero de l'entree associe a chaque            !
 !     (nfabor)     !    !     ! face de bord (=0 si pas de vortex)             !
 ! iappel           ! e  ! <-- ! indique les donnes a verifier                  !
@@ -57,7 +57,7 @@ subroutine vorver &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -73,7 +73,7 @@ include "vortex.h"
 
 integer          nfabor , irepvo(nfabor)  , iappel
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iok, nmax , ii, jj
 double precision norm1, norm2, crosp
@@ -1092,4 +1092,4 @@ endif
 #endif
 
 return
-end
+end subroutine
diff --git a/src/base/vorvit.f90 b/src/base/vorvit.f90
index b17cf25..126ae5d 100644
--- a/src/base/vorvit.f90
+++ b/src/base/vorvit.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -42,7 +42,7 @@ subroutine vorvit &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ncevor           ! e  ! <-- ! nombre de face a l'entree ou est               !
 !                  !    !     ! utilise la methode                             !
@@ -79,7 +79,7 @@ subroutine vorvit &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -100,7 +100,7 @@ double precision xu(icvmax )     , xv(icvmax )     , xw(icvmax )
 double precision yzvor(nvomax,2) , signv(nvomax)   , sigma(nvomax)
 double precision gamma(nvomax,2) , temps(nvomax)
 
-! VARIABLES LOCALES
+! Local variables
 
 
 integer          ii, jj, iii
@@ -445,4 +445,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/base/zufall.f90 b/src/base/zufall.f90
index 9ecdb08..bae0fdf 100644
--- a/src/base/zufall.f90
+++ b/src/base/zufall.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -83,7 +83,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -245,7 +245,7 @@ else
 12        continue
     goto 1
 endif
-end
+end subroutine
 
 !===============================================================================
 
@@ -285,7 +285,7 @@ do 1 ii=1,607
    buff(ii) = s
 1     continue
 return
-end
+end subroutine
 
 !===============================================================================
 
@@ -327,7 +327,7 @@ else
    call normal00
    goto 1
 endif
-end
+end subroutine
 
 !===============================================================================
 
@@ -350,7 +350,7 @@ do 1 i=1,1024,2
    xbuff(i+1) = t2*r2
 1     continue
 return
-end
+end subroutine
 
 !===============================================================================
 
@@ -422,7 +422,7 @@ do 2 k = 1,nsegs
 2     continue
 
 return
-end
+end subroutine
 
 !===============================================================================
 
@@ -436,7 +436,7 @@ double precision buff(607),xbuff(1024)
 common /klotz0/buff,ptr
 common /klotz1/xbuff,first,xptr
 data ptr/0/,xptr/0/,first/0/
-end
+end block data
 
 !===============================================================================
 
diff --git a/src/cfbl/Makefile.in b/src/cfbl/Makefile.in
index 3f1dfab..2385b2f 100644
--- a/src/cfbl/Makefile.in
+++ b/src/cfbl/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -42,8 +43,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -66,6 +68,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -81,6 +84,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcscfbl_la_LIBADD =
 am_libcscfbl_la_OBJECTS = cfbsc2.lo cfbsc3.lo cfcdts.lo cfdivs.lo \
@@ -89,17 +93,17 @@ am_libcscfbl_la_OBJECTS = cfbsc2.lo cfbsc3.lo cfcdts.lo cfdivs.lo \
 	cfvarp.lo cfxtcl.lo memcfe.lo memcfm.lo memcft.lo memcfv.lo \
 	uscfcl.lo uscfpv.lo uscfth.lo uscfx1.lo uscfx2.lo uscfxi.lo
 libcscfbl_la_OBJECTS = $(am_libcscfbl_la_OBJECTS)
-libcscfbl_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+libcscfbl_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(libcscfbl_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcscfbl_la_SOURCES)
 DIST_SOURCES = $(libcscfbl_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -107,12 +111,25 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(cfbldir)" \
 	"$(DESTDIR)$(saturneincludedir)"
-cfblDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(cfbl_DATA)
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -159,6 +176,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -195,11 +214,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -214,15 +231,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -267,7 +287,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -284,8 +305,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -353,14 +377,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/cfbl/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/cfbl/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/cfbl/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/cfbl/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -378,6 +402,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -406,22 +431,22 @@ distclean-compile:
 	$(LTFCCOMPILE) -c -o $@ $<
 
 uscfcl.lo: $(top_srcdir)/users/cfbl/uscfcl.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfcl.lo `test -f '$(top_srcdir)/users/cfbl/uscfcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfcl.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfcl.lo `test -f '$(top_srcdir)/users/cfbl/uscfcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfcl.f90
 
 uscfpv.lo: $(top_srcdir)/users/cfbl/uscfpv.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfpv.lo `test -f '$(top_srcdir)/users/cfbl/uscfpv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfpv.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfpv.lo `test -f '$(top_srcdir)/users/cfbl/uscfpv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfpv.f90
 
 uscfth.lo: $(top_srcdir)/users/cfbl/uscfth.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfth.lo `test -f '$(top_srcdir)/users/cfbl/uscfth.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfth.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfth.lo `test -f '$(top_srcdir)/users/cfbl/uscfth.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfth.f90
 
 uscfx1.lo: $(top_srcdir)/users/cfbl/uscfx1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfx1.lo `test -f '$(top_srcdir)/users/cfbl/uscfx1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfx1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfx1.lo `test -f '$(top_srcdir)/users/cfbl/uscfx1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfx1.f90
 
 uscfx2.lo: $(top_srcdir)/users/cfbl/uscfx2.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfx2.lo `test -f '$(top_srcdir)/users/cfbl/uscfx2.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfx2.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfx2.lo `test -f '$(top_srcdir)/users/cfbl/uscfx2.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfx2.f90
 
 uscfxi.lo: $(top_srcdir)/users/cfbl/uscfxi.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfxi.lo `test -f '$(top_srcdir)/users/cfbl/uscfxi.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfxi.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscfxi.lo `test -f '$(top_srcdir)/users/cfbl/uscfxi.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cfbl/uscfxi.f90
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -431,51 +456,57 @@ clean-libtool:
 install-cfblDATA: $(cfbl_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(cfbldir)" || $(MKDIR_P) "$(DESTDIR)$(cfbldir)"
-	@list='$(cfbl_DATA)'; for p in $$list; do \
+	@list='$(cfbl_DATA)'; test -n "$(cfbldir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(cfblDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(cfbldir)/$$f'"; \
-	  $(cfblDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(cfbldir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cfbldir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(cfbldir)" || exit $$?; \
 	done
 
 uninstall-cfblDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(cfbl_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(cfbldir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(cfbldir)/$$f"; \
-	done
+	@list='$(cfbl_DATA)'; test -n "$(cfbldir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(cfbldir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(cfbldir)" && rm -f $$files
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -483,29 +514,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -526,13 +562,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -563,6 +603,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -583,6 +624,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -591,18 +634,28 @@ install-data-am: install-cfblDATA install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -641,6 +694,7 @@ uninstall-am: uninstall-cfblDATA uninstall-saturneincludeHEADERS
 	pdf pdf-am ps ps-am tags uninstall uninstall-am \
 	uninstall-cfblDATA uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/cfbl/cfbsc2.f90 b/src/cfbl/cfbsc2.f90
index 8d79f81..4316409 100644
--- a/src/cfbl/cfbsc2.f90
+++ b/src/cfbl/cfbsc2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cfbsc2                               &
+subroutine cfbsc2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -69,27 +69,26 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! ivar             ! e  ! <-- ! numero de la variable                          !
 ! iconvp           ! e  ! <-- ! indicateur = 1 convection, 0 sinon             !
 ! idiffp           ! e  ! <-- ! indicateur = 1 diffusion , 0 sinon             !
@@ -111,48 +110,39 @@
 !                  !    !     !              0 sinon                           !
 ! iifbru           ! e  ! <-- ! pointeur flux de bord rusanov                  !
 ! ipp              ! e  ! <-- ! numero de variable pour post                   !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! blencp           ! r  ! <-- ! 1 - proportion d'upwind                        !
 ! epsrgp           ! r  ! <-- ! precision relative pour la                     !
 !                  !    !     !  reconstruction des gradients 97               !
 ! climgp           ! r  ! <-- ! coef gradient*distance/ecart                   !
 ! extrap           ! r  ! <-- ! coef extrap gradient                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ifrusb(nfabor    ! te ! <-- ! indicateur flux de rusanov                     !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
 ! ia(*)            ! te ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! pvar (ncelet     ! tr ! <-- ! variable resolue (instant precedent)           !
 ! coefap, b        ! tr ! <-- ! tableaux des cond lim pour p                   !
 !   (nfabor)       !    !     !  sur la normale a la face de bord              !
@@ -169,9 +159,9 @@
 !    (ncelet)      !    !     !                                                !
 ! dpdxa,ya,za      ! tr ! --- ! tableau de travail pour le grad de p           !
 !    (ncelet)      !    !     !  avec decentrement amont                       !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -183,7 +173,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -231,7 +221,7 @@ double precision dpdx (ncelet),dpdy (ncelet),dpdz (ncelet)
 double precision dpdxa(ncelet),dpdya(ncelet),dpdza(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 character*8      cnom
@@ -1351,4 +1341,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/cfbl/cfbsc3.f90 b/src/cfbl/cfbsc3.f90
index cce7be8..bae16ed 100644
--- a/src/cfbl/cfbsc3.f90
+++ b/src/cfbl/cfbsc3.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cfbsc3                               &
+subroutine cfbsc3 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -67,27 +67,26 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! ivar             ! e  ! <-- ! numero de la variable                          !
 ! iconvp           ! e  ! <-- ! indicateur = 1 convection, 0 sinon             !
 ! idiffp           ! e  ! <-- ! indicateur = 1 diffusion , 0 sinon             !
@@ -108,47 +107,38 @@
 ! iccocg           ! e  ! <-- ! indicateur = 1 pour recalcul de cocg           !
 !                  !    !     !              0 sinon                           !
 ! ipp              ! e  ! <-- ! numero de variable pour post                   !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! blencp           ! r  ! <-- ! 1 - proportion d'upwind                        !
 ! epsrgp           ! r  ! <-- ! precision relative pour la                     !
 !                  !    !     !  reconstruction des gradients 97               !
 ! climgp           ! r  ! <-- ! coef gradient*distance/ecart                   !
 ! extrap           ! r  ! <-- ! coef extrap gradient                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
 ! ia(*)            ! te ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! pvar (ncelet     ! tr ! <-- ! variable resolue (instant precedent)           !
 ! coefap, b        ! tr ! <-- ! tableaux des cond lim pour p                   !
 !   (nfabor)       !    !     !  sur la normale a la face de bord              !
@@ -168,9 +158,9 @@
 !    (ncelet)      !    !     !                                                !
 ! dpdxa,ya,za      ! tr ! --- ! tableau de travail pour le grad de p           !
 !    (ncelet)      !    !     !  avec decentrement amont                       !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -182,7 +172,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -229,7 +219,7 @@ double precision dpdx (ncelet),dpdy (ncelet),dpdz (ncelet)
 double precision dpdxa(ncelet),dpdya(ncelet),dpdza(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 character*8      cnom
@@ -513,4 +503,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/cfbl/cfcdts.f90 b/src/cfbl/cfcdts.f90
index 6200406..46e9308 100644
--- a/src/cfbl/cfcdts.f90
+++ b/src/cfbl/cfcdts.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -87,27 +87,26 @@ subroutine cfcdts &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! iconvp           ! e  ! <-- ! indicateur = 1 convection, 0 sinon             !
 ! idiffp           ! e  ! <-- ! indicateur = 1 diffusion , 0 sinon             !
 ! ndircp           ! e  ! <-- ! indicateur = 0 si decalage diagonale           !
@@ -134,7 +133,7 @@ subroutine cfcdts &
 !                  !    !     !            = 1 sinon                           !
 ! nitmap           ! e  ! <-- ! nombre max d'iter pour resol iterativ          !
 ! ipp              ! e  ! <-- ! numero de variable pour post                   !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! nfecrl           ! e  ! <-- ! unite du fichier sortie std                    !
 ! blencp           ! r  ! <-- ! 1 - proportion d'upwind                        !
 ! epsilp           ! r  ! <-- ! precision pour resol iter                      !
@@ -142,42 +141,33 @@ subroutine cfcdts &
 !                  !    !     !  reconstruction des gradients 97               !
 ! climgp           ! r  ! <-- ! coef gradient*distance/ecart                   !
 ! extrap           ! r  ! <-- ! coef extrap gradient                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ifrusb(nfabor    ! te ! <-- ! indicateur flux de rusanov                     !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! pvara(ncelet     ! tr ! <-- ! variable resolue (instant precedent)           !
 ! coefap, b        ! tr ! <-- ! tableaux des cond lim pour p                   !
 !   (nfabor)       !    !     !  sur la normale a la face de bord              !
@@ -199,9 +189,9 @@ subroutine cfcdts &
 ! xam(nfac,*)      ! tr ! --- ! tableau de travail pour matrice                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
 ! smbini(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -213,7 +203,7 @@ subroutine cfcdts &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -269,7 +259,7 @@ double precision w5(ncelet), w6(ncelet), w7(ncelet), w8(ncelet)
 double precision smbini(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 character*8      cnom
@@ -619,4 +609,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/cfbl/cfdivs.f90 b/src/cfbl/cfdivs.f90
index 4f60186..7b015b5 100644
--- a/src/cfbl/cfdivs.f90
+++ b/src/cfbl/cfdivs.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -71,79 +71,66 @@ subroutine cfdivs &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! phase courante                                 !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant)                  !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -153,9 +140,9 @@ subroutine cfdivs &
 ! ux,y,z(ncelet    ! tr ! <-- ! composantes du vecteur u                       !
 ! vistot(ncelet    ! tr ! --- ! tableau de travail pour mu                     !
 ! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -168,7 +155,7 @@ subroutine cfdivs &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -221,7 +208,7 @@ double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iccocg, inc, iel, ifac, ivar, isou, ii, jj
@@ -522,4 +509,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/cfbl/cfdttv.f90 b/src/cfbl/cfdttv.f90
index c160fba..f28d76f 100644
--- a/src/cfbl/cfdttv.f90
+++ b/src/cfbl/cfdttv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -54,80 +54,67 @@ subroutine cfdttv &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules avec tsm                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -138,9 +125,9 @@ subroutine cfdttv &
 ! wflmab(nfabor    ! tr ! --- ! tab de trav aux faces de bord                  !
 ! viscb(nfabor     ! tr ! --- ! tab de trav aux faces de bord                  !
 ! w1..6 (ncelet    ! tr ! --- ! tableaux de travail                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -152,7 +139,7 @@ subroutine cfdttv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -203,7 +190,7 @@ double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia, ifinra
 integer          ifac  , iel   , iphas , ivar  , iscal
@@ -309,4 +296,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/cfbl/cfener.f90 b/src/cfbl/cfener.f90
index 5fc334c..c2c5d81 100644
--- a/src/cfbl/cfener.f90
+++ b/src/cfbl/cfener.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -58,80 +58,67 @@ subroutine cfener &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -145,9 +132,9 @@ subroutine cfener &
 ! smbrs(ncelet     ! tr ! --- ! tableau de travail pour sec mem                !
 ! rovsdt(ncelet    ! tr ! --- ! tableau de travail pour terme instat           !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -160,7 +147,7 @@ subroutine cfener &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -219,7 +206,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -1118,4 +1105,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/cfbl/cfini1.f90 b/src/cfbl/cfini1.f90
index 13d51ca..796151e 100644
--- a/src/cfbl/cfini1.f90
+++ b/src/cfbl/cfini1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cfini1
+subroutine cfini1
 !================
 
 
@@ -40,7 +40,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -53,7 +53,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,7 +69,7 @@ include "ppincl.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ipp , ii
 integer          iphas, iok
@@ -437,4 +437,4 @@ endif
 '@                                                            ',/)
 
 return
-end
+end subroutine
diff --git a/src/cfbl/cfiniv.f90 b/src/cfbl/cfiniv.f90
index c532236..b4fe04e 100644
--- a/src/cfbl/cfiniv.f90
+++ b/src/cfbl/cfiniv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -82,78 +82,65 @@ subroutine cfiniv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -165,7 +152,7 @@ subroutine cfiniv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -205,7 +192,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifinia, ifinra
@@ -408,4 +395,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cfbl/cfmsfl.f90 b/src/cfbl/cfmsfl.f90
index 842d954..1c2235e 100644
--- a/src/cfbl/cfmsfl.f90
+++ b/src/cfbl/cfmsfl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -57,78 +57,65 @@ subroutine cfmsfl &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
 ! itspdv           ! e  ! <-- ! calcul termes sources prod et dissip           !
 !                  !    !     !  (0 : non , 1 : oui)                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
 !(ncelet,*)        !    !     !     lagrangien                                 !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! flumas(nfac)     ! tr ! --> ! flux de masse aux faces internes               !
 ! flumab(nfabor    ! tr ! --> ! flux de masse aux faces de bord                !
 ! w1..12(ncelet    ! tr ! --- ! tableau de travail                             !
@@ -136,9 +123,9 @@ subroutine cfmsfl &
 ! trflmb(nfabor    ! tr ! --- ! tableau de travail                             !
 ! coefu(nfabo,3    ! tr ! --- ! tableau de travail cl de la qdm                !
 ! xam(nfac,*)      ! tr ! --- ! tableau de travail pour matrice                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -151,7 +138,7 @@ subroutine cfmsfl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -209,7 +196,7 @@ double precision coefu(nfabor,3), xam(nfac,2)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          ivar  , iphas
@@ -836,4 +823,4 @@ call inimas                                                       &
 
 return
 
-end
+end subroutine
diff --git a/src/cfbl/cfmsgs.f90 b/src/cfbl/cfmsgs.f90
index 0b4993b..0c4fe4e 100644
--- a/src/cfbl/cfmsgs.f90
+++ b/src/cfbl/cfmsgs.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -57,78 +57,65 @@ subroutine cfmsgs &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
 ! itspdv           ! e  ! <-- ! calcul termes sources prod et dissip           !
 !                  !    !     !  (0 : non , 1 : oui)                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
 !(ncelet,*)        !    !     !     lagrangien                                 !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! flumas(nfac)     ! tr ! --> ! flux de masse aux faces internes               !
 ! flumab(nfabor    ! tr ! --> ! flux de masse aux faces de bord                !
 ! w1..12(ncelet    ! tr ! --- ! tableau de travail                             !
@@ -136,9 +123,9 @@ subroutine cfmsgs &
 ! trflmb(nfabor    ! tr ! --- ! tableau de travail                             !
 ! coefu(nfabo,3    ! tr ! --- ! tableau de travail cl de la qdm                !
 ! xam(nfac,*)      ! tr ! --- ! tableau de travail pour matrice                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -151,7 +138,7 @@ subroutine cfmsgs &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -210,7 +197,7 @@ double precision coefu(nfabor,3), xam(nfac,2)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          ivar  , iphas
@@ -842,4 +829,4 @@ call inimas                                                       &
 
 return
 
-end
+end subroutine
diff --git a/src/cfbl/cfmsvl.f90 b/src/cfbl/cfmsvl.f90
index 6372b3f..6549634 100644
--- a/src/cfbl/cfmsvl.f90
+++ b/src/cfbl/cfmsvl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -61,84 +61,71 @@ subroutine cfmsvl &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
 ! itspdv           ! e  ! <-- ! calcul termes sources prod et dissip           !
 !                  !    !     !  (0 : non , 1 : oui)                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
 !(ncelet,*)        !    !     !     lagrangien                                 !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -155,9 +142,9 @@ subroutine cfmsvl &
 ! wflmas(nfac)     ! tr ! --- ! tableau de w flux de masse aux faces           !
 ! wflmab(nfabor    ! tr ! --- ! tableau de w flux de masse aux bords           !
 ! coefu(nfabo,3    ! tr ! --- ! tableau de travail cl de la qdm                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -170,7 +157,7 @@ subroutine cfmsvl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -231,7 +218,7 @@ double precision coefu(nfabor,3)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -802,4 +789,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cfbl/cfmsvs.f90 b/src/cfbl/cfmsvs.f90
index 3040afb..49f8dca 100644
--- a/src/cfbl/cfmsvs.f90
+++ b/src/cfbl/cfmsvs.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -54,84 +54,71 @@ subroutine cfmsvs &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
 ! itspdv           ! e  ! <-- ! calcul termes sources prod et dissip           !
 !                  !    !     !  (0 : non , 1 : oui)                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
 !(ncelet,*)        !    !     !     lagrangien                                 !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! viscf(nfac)      ! tr ! --> ! visc*surface/dist aux faces internes           !
 ! viscb(nfabor     ! tr ! --> ! visc*surface/dist aux faces de bord            !
 ! w1..3(ncelet)    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -144,7 +131,7 @@ subroutine cfmsvs &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -193,7 +180,7 @@ double precision w1(ncelet) , w2(ncelet) , w3(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iphas
@@ -284,4 +271,4 @@ call viscfa                                                       &
 
 return
 
-end
+end subroutine
diff --git a/src/cfbl/cfphyv.f90 b/src/cfbl/cfphyv.f90
index 56a5464..b1b3edc 100644
--- a/src/cfbl/cfphyv.f90
+++ b/src/cfbl/cfphyv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -53,82 +53,69 @@ subroutine cfphyv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...3(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -140,7 +127,7 @@ subroutine cfphyv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -183,7 +170,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          iphas , iel
@@ -396,4 +383,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cfbl/cfprop.f90 b/src/cfbl/cfprop.f90
index 0a2edfc..418e6a8 100644
--- a/src/cfbl/cfprop.f90
+++ b/src/cfbl/cfprop.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine cfprop &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ipropp           ! e  ! <-- ! numero de la derniere propriete                !
 !                  !    !     !  (les proprietes sont dans propce,             !
@@ -61,7 +61,7 @@ subroutine cfprop &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -81,7 +81,7 @@ include "ppincl.h"
 
 integer       ipropp, ipppst
 
-! VARIABLES LOCALES
+! Local variables
 
 integer       iprop, ipp, iphas
 
@@ -229,7 +229,7 @@ if ( ippmod(icompf).ge.0 ) then
 !-->  chaleur specifique a volume constant
   if(icv   (iphas).gt.0) then
     ipp = ipppro(ipproc(icv   (iphas)))
-    NOMVAR(IPP)   = 'ch. sp volume constant'
+    NOMVAR(IPP)   = 'Specific Heat Cst Vol'
     ichrvr(ipp)   = 0
     ilisvr(ipp)   = 0
     ihisvr(ipp,1) = 0
@@ -238,7 +238,7 @@ if ( ippmod(icompf).ge.0 ) then
 !-->  viscosite laminaire
   if(iviscv(iphas).gt.0) then
     ipp = ipppro(ipproc(iviscv(iphas)))
-    NOMVAR(IPP)   = 'visc. volume'
+    NOMVAR(IPP)   = 'Volume Viscosity'
     ichrvr(ipp)   = 0
     ilisvr(ipp)   = 0
     ihisvr(ipp,1) = 0
@@ -248,4 +248,4 @@ endif
 
 
 return
-end
+end subroutine
diff --git a/src/cfbl/cfqdmv.f90 b/src/cfbl/cfqdmv.f90
index 6086757..927f3e7 100644
--- a/src/cfbl/cfqdmv.f90
+++ b/src/cfbl/cfqdmv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -72,84 +72,71 @@ subroutine cfqdmv &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! flumas           ! tr ! <-- ! flux de masse aux faces internes               !
 !  (nfac  )        !    !     !   (distinction iappel=1 ou 2)                  !
 ! flumab           ! tr ! <-- ! flux de masse aux faces de bord                !
 !  (nfabor  )      !    !     !    (distinction iappel=1 ou 2)                 !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -174,9 +161,9 @@ subroutine cfqdmv &
 ! rovsdt(ncelet    ! tr ! --- ! tableau de travail pour terme instat           !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
 ! coefu(nfab,3)    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -189,7 +176,7 @@ subroutine cfqdmv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -251,7 +238,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision coefu(nfabor,3)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          iel   , ielpdc, ifac  , ivar  , isou  , iii
@@ -970,4 +957,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cfbl/cfrusb.f90 b/src/cfbl/cfrusb.f90
index 9866b89..c6437ce 100644
--- a/src/cfbl/cfrusb.f90
+++ b/src/cfbl/cfrusb.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,82 +59,69 @@ subroutine cfrusb &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! imodif           ! e  ! <-- ! modification directe de rtp (imodif=1          !
-! iphas            ! e  ! <-- ! numero de la phase courante                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! iphas            ! i  ! <-- ! phase number                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! gammag           ! r  ! <-- ! gamma du gaz                                   !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp,rtpa         ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
 ! sorti1,2(*)      ! tr ! --> ! variables de sortie                            !
 ! gamagr(*)        ! tr ! --- ! constante gamma equivalent du gaz              !
 ! masmor(*)        ! tr ! --- ! masse molaire des constituants du gaz          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -146,7 +133,7 @@ subroutine cfrusb &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -193,7 +180,7 @@ double precision sorti1(*), sorti2(*), gamagr(*), masmor(*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          ifac0
@@ -313,4 +300,4 @@ propfb(ifac,ipprob(ifbene(iphas))) = ra(isrfbn+ifac-1)*           &
 
 return
 
-end
+end subroutine
diff --git a/src/cfbl/cfvarp.f90 b/src/cfbl/cfvarp.f90
index def30e5..1718376 100644
--- a/src/cfbl/cfvarp.f90
+++ b/src/cfbl/cfvarp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cfvarp
+subroutine cfvarp
 !================
 
 
@@ -40,7 +40,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -53,7 +53,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,7 +69,7 @@ include "ppincl.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, iphas, iprop, iok, iccfth, imodif
 integer          iit(1)
@@ -247,5 +247,5 @@ endif
 '@                                                            ',/)
 
 return
-end
+end subroutine
 
diff --git a/src/cfbl/cfxtcl.f90 b/src/cfbl/cfxtcl.f90
index 977960d..0c9caf7 100644
--- a/src/cfbl/cfxtcl.f90
+++ b/src/cfbl/cfxtcl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,45 +55,36 @@ subroutine cfxtcl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -102,40 +93,36 @@ subroutine cfxtcl &
 !                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -148,13 +135,13 @@ subroutine cfxtcl &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -166,7 +153,7 @@ subroutine cfxtcl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 ! Arguments
@@ -219,7 +206,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iphas , ivar  , ifac  , iel
@@ -1274,4 +1261,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cfbl/memcfe.f90 b/src/cfbl/memcfe.f90
index b13dd06..588f60d 100644
--- a/src/cfbl/memcfe.f90
+++ b/src/cfbl/memcfe.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,27 +45,25 @@ subroutine memcfe &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! iwb              ! e  ! --> ! pointeur de wb (tab travail nfabor)            !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ra en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -77,7 +75,7 @@ subroutine memcfe &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -117,4 +115,4 @@ CALL RASIZE('MEMCFE',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/cfbl/memcfm.f90 b/src/cfbl/memcfm.f90
index ba5ddcf..06720d3 100644
--- a/src/cfbl/memcfm.f90
+++ b/src/cfbl/memcfm.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,27 +50,26 @@ subroutine memcfm &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! idtr             ! e  ! --> ! "pointeur" sur dtr                             !
 ! iviscf, b        ! e  ! --> ! "pointeur" sur viscf, viscb                    !
 ! idam, ixam       ! e  ! --> ! "pointeur" sur dam, xam                        !
@@ -80,10 +79,8 @@ subroutine memcfm &
 ! iw1,2,...,12     ! e  ! --> ! "pointeur" sur w1 a w12                        !
 ! iwflms,b         ! e  ! --> ! "pointeur" sur wflmas et wflmab                !
 ! icoefu           ! e  ! --> ! "pointeur" sur coefu                           !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -95,7 +92,7 @@ subroutine memcfm &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -123,7 +120,7 @@ integer          iwflms , iwflmb
 integer          icoefu
 integer          ifinia , ifinra
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -167,4 +164,4 @@ CALL RASIZE('MEMCFM',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/cfbl/memcft.f90 b/src/cfbl/memcft.f90
index f9dfa10..786cb1e 100644
--- a/src/cfbl/memcft.f90
+++ b/src/cfbl/memcft.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,33 +47,30 @@ subroutine memcft &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! iw7..12          ! e  ! --> ! "pointeurs" sur w7 a w12                       !
 ! iviscf           ! e  ! --> ! "pointeur" sur viscf                           !
 ! icoefu           ! e  ! --> ! "pointeur" sur coefu                           !
 ! ixam             ! e  ! --> ! "pointeur" sur xam                             !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  ! e  !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  ! e  !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -85,7 +82,7 @@ subroutine memcft &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -102,7 +99,7 @@ integer          iviscf , icoefu , ixam
 integer          ifinia , ifinra
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -138,4 +135,4 @@ CALL RASIZE('MEMCFT',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/cfbl/memcfv.f90 b/src/cfbl/memcfv.f90
index e413aef..911adb5 100644
--- a/src/cfbl/memcfv.f90
+++ b/src/cfbl/memcfv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,28 +45,26 @@ subroutine memcfv &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! iwcel1           ! e  ! --> ! pointeur de w1 (tab travail ncelet)            !
 ! iwceli           ! e  ! --> ! pointeur de wi (tab travail ncelet)            !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ra en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -78,7 +76,7 @@ subroutine memcfv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -121,4 +119,4 @@ CALL RASIZE('MEMCFV',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/cogz/Makefile.in b/src/cogz/Makefile.in
index 0354695..1483f77 100644
--- a/src/cogz/Makefile.in
+++ b/src/cogz/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -42,8 +43,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -66,6 +68,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -81,6 +84,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcscogz_la_LIBADD =
 am_libcscogz_la_OBJECTS = coini1.lo colecd.lo coprop.lo cothht.lo \
@@ -91,17 +95,17 @@ am_libcscogz_la_OBJECTS = coini1.lo colecd.lo coprop.lo cothht.lo \
 	usd3pi.lo usebu1.lo usebuc.lo usebui.lo uslwc1.lo uslwcc.lo \
 	uslwci.lo
 libcscogz_la_OBJECTS = $(am_libcscogz_la_OBJECTS)
-libcscogz_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+libcscogz_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(libcscogz_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcscogz_la_SOURCES)
 DIST_SOURCES = $(libcscogz_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -109,12 +113,25 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(cogzdir)" \
 	"$(DESTDIR)$(saturneincludedir)"
-cogzDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(cogz_DATA)
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -161,6 +178,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -197,11 +216,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -216,15 +233,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -269,7 +289,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -286,8 +307,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -363,14 +387,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/cogz/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/cogz/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/cogz/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/cogz/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -388,6 +412,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -416,31 +441,31 @@ distclean-compile:
 	$(LTFCCOMPILE) -c -o $@ $<
 
 usd3p1.lo: $(top_srcdir)/users/cogz/usd3p1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usd3p1.lo `test -f '$(top_srcdir)/users/cogz/usd3p1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usd3p1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usd3p1.lo `test -f '$(top_srcdir)/users/cogz/usd3p1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usd3p1.f90
 
 usd3pc.lo: $(top_srcdir)/users/cogz/usd3pc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usd3pc.lo `test -f '$(top_srcdir)/users/cogz/usd3pc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usd3pc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usd3pc.lo `test -f '$(top_srcdir)/users/cogz/usd3pc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usd3pc.f90
 
 usd3pi.lo: $(top_srcdir)/users/cogz/usd3pi.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usd3pi.lo `test -f '$(top_srcdir)/users/cogz/usd3pi.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usd3pi.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usd3pi.lo `test -f '$(top_srcdir)/users/cogz/usd3pi.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usd3pi.f90
 
 usebu1.lo: $(top_srcdir)/users/cogz/usebu1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usebu1.lo `test -f '$(top_srcdir)/users/cogz/usebu1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usebu1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usebu1.lo `test -f '$(top_srcdir)/users/cogz/usebu1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usebu1.f90
 
 usebuc.lo: $(top_srcdir)/users/cogz/usebuc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usebuc.lo `test -f '$(top_srcdir)/users/cogz/usebuc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usebuc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usebuc.lo `test -f '$(top_srcdir)/users/cogz/usebuc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usebuc.f90
 
 usebui.lo: $(top_srcdir)/users/cogz/usebui.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usebui.lo `test -f '$(top_srcdir)/users/cogz/usebui.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usebui.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usebui.lo `test -f '$(top_srcdir)/users/cogz/usebui.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/usebui.f90
 
 uslwc1.lo: $(top_srcdir)/users/cogz/uslwc1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslwc1.lo `test -f '$(top_srcdir)/users/cogz/uslwc1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/uslwc1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslwc1.lo `test -f '$(top_srcdir)/users/cogz/uslwc1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/uslwc1.f90
 
 uslwcc.lo: $(top_srcdir)/users/cogz/uslwcc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslwcc.lo `test -f '$(top_srcdir)/users/cogz/uslwcc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/uslwcc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslwcc.lo `test -f '$(top_srcdir)/users/cogz/uslwcc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/uslwcc.f90
 
 uslwci.lo: $(top_srcdir)/users/cogz/uslwci.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslwci.lo `test -f '$(top_srcdir)/users/cogz/uslwci.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/uslwci.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslwci.lo `test -f '$(top_srcdir)/users/cogz/uslwci.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cogz/uslwci.f90
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -450,51 +475,57 @@ clean-libtool:
 install-cogzDATA: $(cogz_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(cogzdir)" || $(MKDIR_P) "$(DESTDIR)$(cogzdir)"
-	@list='$(cogz_DATA)'; for p in $$list; do \
+	@list='$(cogz_DATA)'; test -n "$(cogzdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(cogzDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(cogzdir)/$$f'"; \
-	  $(cogzDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(cogzdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cogzdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(cogzdir)" || exit $$?; \
 	done
 
 uninstall-cogzDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(cogz_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(cogzdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(cogzdir)/$$f"; \
-	done
+	@list='$(cogz_DATA)'; test -n "$(cogzdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(cogzdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(cogzdir)" && rm -f $$files
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -502,29 +533,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -545,13 +581,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -582,6 +622,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -602,6 +643,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -610,18 +653,28 @@ install-data-am: install-cogzDATA install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -660,6 +713,7 @@ uninstall-am: uninstall-cogzDATA uninstall-saturneincludeHEADERS
 	pdf pdf-am ps ps-am tags uninstall uninstall-am \
 	uninstall-cogzDATA uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/cogz/coini1.f90 b/src/cogz/coini1.f90
index efc62ed..f31d8fc 100644
--- a/src/cogz/coini1.f90
+++ b/src/cogz/coini1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine coini1
+subroutine coini1
 !================
 
 
@@ -41,7 +41,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -54,7 +54,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -73,7 +73,7 @@ include "radiat.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ipp , ii , jj, iok, idirac
 integer          isc , iphas
@@ -443,7 +443,7 @@ endif
 
 if ( ippmod(icolwc).ge. 0 ) then
   ipp = ipppro(ipproc(itsc))
-  NOMVAR(IPP)   = 'T.SOURCE'
+  NOMVAR(IPP)   = 'Source Term'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
@@ -749,4 +749,4 @@ endif
 
 
 return
-end
+end subroutine
diff --git a/src/cogz/colecd.f90 b/src/cogz/colecd.f90
index 7ab4e1c..24b5c79 100644
--- a/src/cogz/colecd.f90
+++ b/src/cogz/colecd.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine colecd
+subroutine colecd
 !================
 !===============================================================================
 !  FONCTION  :
@@ -37,7 +37,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -50,7 +50,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,7 +69,7 @@ include "radiat.h"
 
 ! Arguments
 
-! VARIABLES LOCALES
+! Local variables
 
 character*150    chain1,chain2
 character*12     nomcoe(ngazem)
@@ -680,6 +680,6 @@ call csexit (1)
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
 
-end
+end subroutine
 
 
diff --git a/src/cogz/coprop.f90 b/src/cogz/coprop.f90
index f02fcbb..bd1aed0 100644
--- a/src/cogz/coprop.f90
+++ b/src/cogz/coprop.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -42,7 +42,7 @@ subroutine coprop &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ipropp           ! e  ! <-- ! numero de la derniere propriete                !
 !                  !    !     !  (les proprietes sont dans propce,             !
@@ -62,7 +62,7 @@ subroutine coprop &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -85,7 +85,7 @@ include "radiat.h"
 
 integer       ipropp, ipppst
 
-! VARIABLES LOCALES
+! Local variables
 
 integer       iprop, icg, idirac
 
@@ -513,4 +513,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/cogz/cothht.f90 b/src/cogz/cothht.f90
index 9b316bc..09e23bd 100644
--- a/src/cogz/cothht.f90
+++ b/src/cogz/cothht.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -43,7 +43,7 @@ subroutine cothht &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! mode             ! e  ! <-- !  -1 : t -> h  ;   1 : h -> t                   !
 ! nespec           ! e  ! <-- ! nb de constituants                             !
@@ -67,7 +67,7 @@ subroutine cothht &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -88,7 +88,7 @@ double precision xespec(nespem)
 double precision th(npot) , eh(nespem,npot)
 double precision temper , enthal
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          it , iesp
 
@@ -204,4 +204,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cogz/covarp.f90 b/src/cogz/covarp.f90
index 491e6f4..0a9a0fb 100644
--- a/src/cogz/covarp.f90
+++ b/src/cogz/covarp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine covarp
+subroutine covarp
 !================
 
 
@@ -41,7 +41,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -54,7 +54,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -72,7 +72,7 @@ include "ppincl.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer        isc, iphas
 
@@ -179,5 +179,5 @@ if ( ippmod(icod3p).eq.1 .or.                                     &
 endif
 
 return
-end
+end subroutine
 
diff --git a/src/cogz/d3phst.f90 b/src/cogz/d3phst.f90
index 3071b3a..c6a8183 100644
--- a/src/cogz/d3phst.f90
+++ b/src/cogz/d3phst.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine d3phst                               &
+subroutine d3phst &
 !================
 
  ( ncelet , ncel   , indpdf ,                                     &
@@ -43,10 +43,10 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! indpdf           ! te ! <-- ! indicateur passage ou non par les pdf          !
 ! dirmin           ! tr ! <-- ! pdf : dirac en fmin                            !
 ! dirmax           ! tr ! <-- ! pdf : dirac en fmax                            !
@@ -69,7 +69,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -95,7 +95,7 @@ double precision fdeb(ncelet), ffin(ncelet), hrec(ncelet)
 double precision fm(ncelet), hm(ncelet), hstoe(ncelet)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          icel
 double precision fsir, hhh, hct, f1, f2
@@ -214,5 +214,5 @@ endif
          1X,'     Valeur De Clipping : ',G15.7,/)
 
 return
-end
+end subroutine
 
diff --git a/src/cogz/d3pini.f90 b/src/cogz/d3pini.f90
index 9fcaea9..a04324c 100644
--- a/src/cogz/d3pini.f90
+++ b/src/cogz/d3pini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine d3pini                               &
+subroutine d3pini &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -83,78 +83,65 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -166,7 +153,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -208,7 +195,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -431,4 +418,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cogz/d3pint.f90 b/src/cogz/d3pint.f90
index 47189fa..36f767f 100644
--- a/src/cogz/d3pint.f90
+++ b/src/cogz/d3pint.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine d3pint                               &
+subroutine d3pint &
 !================
 
  ( ncelet , ncel   , indpdf ,                                     &
@@ -47,10 +47,10 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! indpdf           ! ti ! <-- ! indicteur passage ou non par les pdf           !
 ! dirmin           ! tr ! <-- ! pdf : dirac en fmin                            !
 ! dirmax           ! tr ! <-- ! pdf : dirac en fmax                            !
@@ -76,7 +76,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -104,7 +104,7 @@ double precision fm(ncelet), hm(ncelet), p(ncelet)
 double precision propce(ncelet,*), w1(ncelet)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          icel, icg, iphas
 integer          ih, if, jh, jf, ipcrom
@@ -473,5 +473,5 @@ enddo
 
 
 return
-end
+end subroutine
 
diff --git a/src/cogz/d3pphy.f90 b/src/cogz/d3pphy.f90
index fc54080..70b3df8 100644
--- a/src/cogz/d3pphy.f90
+++ b/src/cogz/d3pphy.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine d3pphy                               &
+subroutine d3pphy &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -54,87 +54,74 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! dirmin           ! tr ! --- ! pdf : dirac en fmin                            !
 ! dirmax           ! tr ! --- ! pdf : dirac en fmax                            !
 ! fdeb             ! tr ! --- ! pdf : abscisse debut rectangle                 !
 ! ffin             ! tr ! --- ! pdf : abscisse fin rectangle                   !
 ! hrec             ! tr ! --- ! pdf : hauteur rectangle                        !
 ! w1-w3(ncelet)    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 ! rpp              ! tr ! --- ! macro tableau reel pp                          !
 !__________________!____!_____!________________________________________________!
 
@@ -147,7 +134,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -197,7 +184,7 @@ double precision hrec(ncelet)
 double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          if, ih, iel, icg
@@ -463,4 +450,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cogz/d3ptcl.f90 b/src/cogz/d3ptcl.f90
index 96c95c1..a26a8b2 100644
--- a/src/cogz/d3ptcl.f90
+++ b/src/cogz/d3ptcl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine d3ptcl                               &
+subroutine d3ptcl &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -55,45 +55,36 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -103,40 +94,36 @@
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -149,13 +136,13 @@
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -167,7 +154,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 ! Arguments
@@ -220,7 +207,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          igg, iphas, ifac, izone, mode
@@ -576,4 +563,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cogz/d3pver.f90 b/src/cogz/d3pver.f90
index 036ecfe..ef503f5 100644
--- a/src/cogz/d3pver.f90
+++ b/src/cogz/d3pver.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine d3pver                               &
+subroutine d3pver &
 !================
 
  ( iok    )
@@ -41,7 +41,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -54,7 +54,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -76,7 +76,7 @@ include "ppincl.h"
 
 integer          iok
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iphas
 
@@ -173,4 +173,4 @@ endif
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/cogz/ebuini.f90 b/src/cogz/ebuini.f90
index 51994e0..b350b96 100644
--- a/src/cogz/ebuini.f90
+++ b/src/cogz/ebuini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -82,78 +82,65 @@ subroutine ebuini &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -165,7 +152,7 @@ subroutine ebuini &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -208,7 +195,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -516,4 +503,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cogz/ebuphy.f90 b/src/cogz/ebuphy.f90
index 3e1d600..1c1dd93 100644
--- a/src/cogz/ebuphy.f90
+++ b/src/cogz/ebuphy.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -54,82 +54,69 @@ subroutine ebuphy &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -141,7 +128,7 @@ subroutine ebuphy &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -189,7 +176,7 @@ double precision yfuegb(ncelet),yoxygb(ncelet),yprogb(ncelet)
 double precision temp(ncelet),masmel(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ipctem, ipcfue, ipcoxy, ipcpro
@@ -501,4 +488,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cogz/ebutcl.f90 b/src/cogz/ebutcl.f90
index 090ad39..4ebfb91 100644
--- a/src/cogz/ebutcl.f90
+++ b/src/cogz/ebutcl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,45 +55,36 @@ subroutine ebutcl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -103,40 +94,36 @@ subroutine ebutcl &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -149,13 +136,13 @@ subroutine ebutcl &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -167,7 +154,7 @@ subroutine ebutcl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 ! Arguments
@@ -220,7 +207,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          igg, iphas, ifac, izone, mode
@@ -619,4 +606,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cogz/ebutss.f90 b/src/cogz/ebutss.f90
index 6a8e8f0..efd8bbb 100644
--- a/src/cogz/ebutss.f90
+++ b/src/cogz/ebutss.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -82,82 +82,69 @@ subroutine ebutss &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -169,9 +156,9 @@ subroutine ebutss &
 ! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
 ! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -184,7 +171,7 @@ subroutine ebutss &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -240,7 +227,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -341,4 +328,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/cogz/ebuver.f90 b/src/cogz/ebuver.f90
index 513685b..1a4820c 100644
--- a/src/cogz/ebuver.f90
+++ b/src/cogz/ebuver.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine ebuver &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -54,7 +54,7 @@ subroutine ebuver &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -76,7 +76,7 @@ include "ppincl.h"
 
 integer          iok
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iphas
 
@@ -193,4 +193,4 @@ endif
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/cogz/lwcgfu.f90 b/src/cogz/lwcgfu.f90
index 53f1ac5..f53b950 100644
--- a/src/cogz/lwcgfu.f90
+++ b/src/cogz/lwcgfu.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,7 +45,7 @@ subroutine lwcgfu &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !                  !    !     !                                                !
 ! gfunc            ! r  ! --> ! valeur de g au point f                         !
@@ -70,7 +70,7 @@ implicit none
 double precision gfunc , f, fm, yfp2m, fp2m
 
 
-! VARIABLES LOCALES
+! Local variables
 
 double precision epsi
 
@@ -100,4 +100,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/cogz/lwcini.f90 b/src/cogz/lwcini.f90
index 5bd5fed..a7f1ea5 100644
--- a/src/cogz/lwcini.f90
+++ b/src/cogz/lwcini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -82,78 +82,65 @@ subroutine lwcini &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -165,7 +152,7 @@ subroutine lwcini &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -207,7 +194,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -546,4 +533,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cogz/lwcphy.f90 b/src/cogz/lwcphy.f90
index 8f1ab0a..6440cd2 100644
--- a/src/cogz/lwcphy.f90
+++ b/src/cogz/lwcphy.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -53,82 +53,69 @@ subroutine lwcphy &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -140,7 +127,7 @@ subroutine lwcphy &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -187,7 +174,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          igg, iphas, iel, ipcrom
@@ -320,4 +307,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cogz/lwctcl.f90 b/src/cogz/lwctcl.f90
index 775fcbe..46987ef 100644
--- a/src/cogz/lwctcl.f90
+++ b/src/cogz/lwctcl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,45 +55,36 @@ subroutine lwctcl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -103,40 +94,36 @@ subroutine lwctcl &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -149,13 +136,13 @@ subroutine lwctcl &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -167,7 +154,7 @@ subroutine lwctcl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 ! Arguments
@@ -220,7 +207,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra , nbr
 integer          igg, iphas, ifac, izone, mode
@@ -660,4 +647,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cogz/lwctss.f90 b/src/cogz/lwctss.f90
index 81902c3..b97196f 100644
--- a/src/cogz/lwctss.f90
+++ b/src/cogz/lwctss.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -82,82 +82,69 @@ subroutine lwctss &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -169,9 +156,9 @@ subroutine lwctss &
 ! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
 ! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -184,7 +171,7 @@ subroutine lwctss &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -242,7 +229,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ivar, iel, iphas, idirac, ivar0
@@ -540,4 +527,4 @@ if ( ivar.eq.isca(icoyfp)) then
 
 return
 
-end
+end subroutine
diff --git a/src/cogz/lwcurl.f90 b/src/cogz/lwcurl.f90
index b10229c..2fa22b7 100644
--- a/src/cogz/lwcurl.f90
+++ b/src/cogz/lwcurl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,7 +59,7 @@ subroutine lwcurl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ampen1           ! r  ! <-- !  amplitude totale des pics                     !
 ! valmoy           ! r  ! <-- !  valeur moyenne de la variable                 !
@@ -81,7 +81,7 @@ subroutine lwcurl &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 
@@ -106,7 +106,7 @@ double precision exit01, exit02
 double precision ampl01, ampl02
 double precision ampen1
 
-! VARIABLES LOCALES
+! Local variables
 
 double precision tvv, c, d
 double precision moyadm, varadm, tvvadm
@@ -190,4 +190,4 @@ else
 
 endif
 
-end
+end subroutine
diff --git a/src/cogz/lwcver.f90 b/src/cogz/lwcver.f90
index 89b0913..aa7aa79 100644
--- a/src/cogz/lwcver.f90
+++ b/src/cogz/lwcver.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine lwcver &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -54,7 +54,7 @@ subroutine lwcver &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -76,7 +76,7 @@ include "ppincl.h"
 
 integer          iok
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iphas
 
@@ -204,4 +204,4 @@ endif
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/cogz/pdflwc.f90 b/src/cogz/pdflwc.f90
index 4d85427..29e4bf8 100644
--- a/src/cogz/pdflwc.f90
+++ b/src/cogz/pdflwc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -68,16 +68,15 @@ subroutine pdflwc &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! fm               ! tr ! <-- ! moyenne de la fraction de melange              !
 ! fp2m             ! tr ! <-- ! variance de la fraction de melange             !
 ! yfm              ! tr ! <-- ! moyenne de la fraction massique                !
 ! yfp2m            ! tr ! <-- ! variance de la fraction massique               !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -89,7 +88,7 @@ subroutine pdflwc &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -115,7 +114,7 @@ double precision fm(ncelet)   , fp2m(ncelet)
 double precision yfm(ncelet)  , yfp2m(ncelet)
 double precision propce(ncelet,*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel, igg, idirac, iphas
 integer          mode
@@ -774,4 +773,4 @@ enddo
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/cogz/pdfpp3.f90 b/src/cogz/pdfpp3.f90
index 09b5d13..a6c146a 100644
--- a/src/cogz/pdfpp3.f90
+++ b/src/cogz/pdfpp3.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                   subroutine pdfpp3                              &
+subroutine pdfpp3 &
 !================
 
  ( ncelet , ncel  ,                                               &
@@ -68,17 +68,16 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! fm               ! tr ! <-- ! moyenne de la fraction de melange              !
 ! fp2m             ! tr ! <-- ! variance de la fraction de melange             !
 ! yfm              ! tr ! <-- ! moyenne de la fraction massique                !
 ! yfp2m            ! tr ! <-- ! variance de la fraction massique               !
 ! coyfp            ! tr !  ->           ! covariance
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -90,7 +89,7 @@
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -116,7 +115,7 @@ double precision yfm(ncelet)  , yfp2m(ncelet)
 double precision coyfp(ncelet)
 double precision propce(ncelet,*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel, igg, idirac, iphas
 integer          mode
@@ -642,4 +641,4 @@ do iel =1, ncel
   endif
 enddo
 
-end
+end subroutine
diff --git a/src/cogz/pdfpp4.f90 b/src/cogz/pdfpp4.f90
index b2fe8d5..1d12d9e 100644
--- a/src/cogz/pdfpp4.f90
+++ b/src/cogz/pdfpp4.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                   subroutine pdfpp4                              &
+subroutine pdfpp4 &
 !================
 
  ( ncelet , ncel  ,                                               &
@@ -73,17 +73,16 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! fm               ! tr ! <-- ! moyenne de la fraction de melange              !
 ! fp2m             ! tr ! <-- ! variance de la fraction de melange             !
 ! yfm              ! tr ! <-- ! moyenne de la fraction massique                !
 ! yfp2m            ! tr ! <-- ! variance de la fraction massique               !
 ! coyfp            ! tr ! <-- ! covariance                                     !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -95,7 +94,7 @@
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -123,7 +122,7 @@ double precision coyfp(ncelet)
 double precision propce(ncelet,*)
 
 !===============================================================================
-! VARIABLES LOCALES
+! Local variables
 !===============================================================================
 
 integer          iel, igg, idirac
diff --git a/src/cplv/Makefile.in b/src/cplv/Makefile.in
index 35ffb22..6357c23 100644
--- a/src/cplv/Makefile.in
+++ b/src/cplv/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -42,8 +43,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -66,6 +68,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -81,6 +84,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcscplv_la_LIBADD =
 am_libcscplv_la_OBJECTS = cpcym2.lo cpflux.lo cpini1.lo cpiniv.lo \
@@ -91,17 +95,17 @@ am_libcscplv_la_OBJECTS = cpcym2.lo cpflux.lo cpini1.lo cpiniv.lo \
 	cpthp2.lo cptssc.lo cptsvc.lo cptsvi.lo cpvarp.lo cpveri.lo \
 	memcp1.lo uscpcl.lo uscpi1.lo uscpiv.lo uscpl1.lo uscplc.lo
 libcscplv_la_OBJECTS = $(am_libcscplv_la_OBJECTS)
-libcscplv_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+libcscplv_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(libcscplv_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcscplv_la_SOURCES)
 DIST_SOURCES = $(libcscplv_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -109,12 +113,25 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(cplvdir)" \
 	"$(DESTDIR)$(saturneincludedir)"
-cplvDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(cplv_DATA)
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -161,6 +178,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -197,11 +216,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -216,15 +233,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -269,7 +289,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -286,8 +307,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -358,14 +382,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/cplv/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/cplv/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/cplv/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/cplv/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -383,6 +407,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -411,19 +436,19 @@ distclean-compile:
 	$(LTFCCOMPILE) -c -o $@ $<
 
 uscpcl.lo: $(top_srcdir)/users/cplv/uscpcl.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscpcl.lo `test -f '$(top_srcdir)/users/cplv/uscpcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cplv/uscpcl.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscpcl.lo `test -f '$(top_srcdir)/users/cplv/uscpcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cplv/uscpcl.f90
 
 uscpi1.lo: $(top_srcdir)/users/cplv/uscpi1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscpi1.lo `test -f '$(top_srcdir)/users/cplv/uscpi1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cplv/uscpi1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscpi1.lo `test -f '$(top_srcdir)/users/cplv/uscpi1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cplv/uscpi1.f90
 
 uscpiv.lo: $(top_srcdir)/users/cplv/uscpiv.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscpiv.lo `test -f '$(top_srcdir)/users/cplv/uscpiv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cplv/uscpiv.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscpiv.lo `test -f '$(top_srcdir)/users/cplv/uscpiv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cplv/uscpiv.f90
 
 uscpl1.lo: $(top_srcdir)/users/cplv/uscpl1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscpl1.lo `test -f '$(top_srcdir)/users/cplv/uscpl1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cplv/uscpl1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscpl1.lo `test -f '$(top_srcdir)/users/cplv/uscpl1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cplv/uscpl1.f90
 
 uscplc.lo: $(top_srcdir)/users/cplv/uscplc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscplc.lo `test -f '$(top_srcdir)/users/cplv/uscplc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cplv/uscplc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscplc.lo `test -f '$(top_srcdir)/users/cplv/uscplc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/cplv/uscplc.f90
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -433,51 +458,57 @@ clean-libtool:
 install-cplvDATA: $(cplv_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(cplvdir)" || $(MKDIR_P) "$(DESTDIR)$(cplvdir)"
-	@list='$(cplv_DATA)'; for p in $$list; do \
+	@list='$(cplv_DATA)'; test -n "$(cplvdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(cplvDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(cplvdir)/$$f'"; \
-	  $(cplvDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(cplvdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cplvdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(cplvdir)" || exit $$?; \
 	done
 
 uninstall-cplvDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(cplv_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(cplvdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(cplvdir)/$$f"; \
-	done
+	@list='$(cplv_DATA)'; test -n "$(cplvdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(cplvdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(cplvdir)" && rm -f $$files
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -485,29 +516,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -528,13 +564,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -565,6 +605,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -585,6 +626,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -593,18 +636,28 @@ install-data-am: install-cplvDATA install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -643,6 +696,7 @@ uninstall-am: uninstall-cplvDATA uninstall-saturneincludeHEADERS
 	pdf pdf-am ps ps-am tags uninstall uninstall-am \
 	uninstall-cplvDATA uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/cplv/cpcym2.f90 b/src/cplv/cpcym2.f90
index a650d36..ef5b5a5 100644
--- a/src/cplv/cpcym2.f90
+++ b/src/cplv/cpcym2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cpcym2                               &
+subroutine cpcym2 &
 !================
 
  ( ncelet , ncel   , nrtbmc ,                                     &
@@ -49,10 +49,10 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant)                  !
 ! fvap             ! tr ! <-- ! moyenne du traceur 1 mvl [fovm+co]             !
@@ -87,7 +87,7 @@
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -131,7 +131,7 @@ double precision xiner(ncelet)
 double precision rtbmc(ncelet,nrtbmc)
 double precision w1(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel , icha , ii
 
@@ -907,4 +907,4 @@ write(NFECRA,*) ' Somme Min MAX = ',SOMMIN,SOMMAX
 
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpflux.f90 b/src/cplv/cpflux.f90
index 20418b9..60087c3 100644
--- a/src/cplv/cpflux.f90
+++ b/src/cplv/cpflux.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,20 +44,18 @@ subroutine cpflux &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant precedent)                !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! w1, w2, w3       ! tr ! --- ! tableaux de travail                            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -69,7 +67,7 @@ subroutine cpflux &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -98,7 +96,7 @@ double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision volume(ncelet)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel    , iphas  , icha   , icla
@@ -655,4 +653,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpini1.f90 b/src/cplv/cpini1.f90
index d5dad4d..688ba8f 100644
--- a/src/cplv/cpini1.f90
+++ b/src/cplv/cpini1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cpini1
+subroutine cpini1
 !================
 
 !===============================================================================
@@ -39,7 +39,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -683,4 +683,4 @@ endif
 '@                                                            ',/)
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpiniv.f90 b/src/cplv/cpiniv.f90
index 3bc0dc6..4dc6783 100644
--- a/src/cplv/cpiniv.f90
+++ b/src/cplv/cpiniv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -82,78 +82,65 @@ subroutine cpiniv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -165,7 +152,7 @@ subroutine cpiniv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -206,7 +193,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, ige, mode, icla, icha, iphas
@@ -428,4 +415,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cplecd.f90 b/src/cplv/cplecd.f90
index 9269c8c..300c7a4 100644
--- a/src/cplv/cplecd.f90
+++ b/src/cplv/cplecd.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cplecd
+subroutine cplecd
 !================
 !===============================================================================
 !  FONCTION  :
@@ -37,7 +37,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -50,7 +50,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,7 +69,7 @@ include "ppcpfu.h"
 
 ! Arguments
 
-! VARIABLES LOCALES
+! Local variables
 
 character *150 chain1,chain2
 character *12   nomcoe(ngazem)
@@ -1470,10 +1470,10 @@ call csexit (1)
 '@                                                            ',/)
 
 
-end
+end subroutine
 
 
-                      function matdet                             &
+function matdet &
 !==============
 
  ( a11 , a12 , a13 , a21 , a22 , a23 , a31 , a32 , a33 )
@@ -1486,7 +1486,7 @@ end
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! aa1 a a33        ! r  ! <-- ! coefficient de la matrice                      !
 !__________________!____!_____!________________________________________________!
@@ -1500,7 +1500,7 @@ end
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 
@@ -1520,4 +1520,4 @@ double precision matdet
 matdet = a11*a22*a33 + a21*a32*a13 + a31*a12*a23                  &
        - a11*a32*a23 - a21*a12*a33 - a31*a22*a13
 
-end
+end function
diff --git a/src/cplv/cplin1.f90 b/src/cplv/cplin1.f90
index 7f2d949..8abbfa8 100644
--- a/src/cplv/cplin1.f90
+++ b/src/cplv/cplin1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cplin1
+subroutine cplin1
 !================
 
 
@@ -45,7 +45,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -58,7 +58,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -469,4 +469,4 @@ endif
 '@                                                            ',/)
 
 return
-end
+end subroutine
diff --git a/src/cplv/cplini.f90 b/src/cplv/cplini.f90
index 7a7513f..c32f7b5 100644
--- a/src/cplv/cplini.f90
+++ b/src/cplv/cplini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -90,39 +90,34 @@ subroutine cplini &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (lndfac)       !    !     !  face interne dans nodfac                      !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -131,37 +126,33 @@ subroutine cplini &
 !   (lndfbr)       !    !     !  face de bord dans nodfbr                      !
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (nfabor+1)     !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -173,7 +164,7 @@ subroutine cplini &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -214,7 +205,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, ige, mode, icha, iphas
@@ -347,4 +338,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cplph1.f90 b/src/cplv/cplph1.f90
index 450b18d..cef068f 100644
--- a/src/cplv/cplph1.f90
+++ b/src/cplv/cplph1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cplph1                               &
+subroutine cplph1 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -97,12 +97,12 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! nitbcp           ! e  ! <-- ! taille du macro tableau cp entiers             !
 ! nrtbcp           ! e  ! <-- ! taille du macro tableau cp reels               !
 ! nitbmc           ! e  ! <-- ! taille du macro tableau mc entiers             !
@@ -120,8 +120,7 @@
 !                  !    !     !                    soit du melange             !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant)                  !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! itbcp            ! tr ! <-- ! macro tableau entier cp travail                !
 ! rtbcp            ! tr ! <-- ! macro tableau reel   cp travail                !
 ! itbmc            ! tr ! <-- ! macro tableau entier mc travail                !
@@ -139,7 +138,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -177,7 +176,7 @@ double precision rtbcp(ncelet,nrtbcp)
 double precision rtbmc(ncelet,nrtbmc)
 double precision rtbwo(ncelet,nrtbwo)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel    , iphas  , ice
@@ -366,4 +365,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cplphy.f90 b/src/cplv/cplphy.f90
index 312c4cc..b677a1c 100644
--- a/src/cplv/cplphy.f90
+++ b/src/cplv/cplphy.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -110,38 +110,33 @@ subroutine cplphy &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (lndfac)       !    !     !  face interne dans nodfac                      !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -154,38 +149,34 @@ subroutine cplphy &
 !   (nphmx   )     !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -197,7 +188,7 @@ subroutine cplphy &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -245,7 +236,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ntbcpi, icpwi, ntbcpr, icpwr
@@ -445,4 +436,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cplpro.f90 b/src/cplv/cplpro.f90
index a199aea..7749d10 100644
--- a/src/cplv/cplpro.f90
+++ b/src/cplv/cplpro.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -49,7 +49,7 @@ subroutine cplpro &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ipropp           ! e  ! ->  ! numero de la derniere case utlisee             !
 !                  !    !     ! dans ipproc, ipprob, ipprof                    !
@@ -68,7 +68,7 @@ subroutine cplpro &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -90,7 +90,7 @@ include "ppincl.h"
 
 integer       ipropp, ipppst
 
-! VARIABLES LOCALES
+! Local variables
 
 integer       iprop, ige
 
@@ -159,4 +159,4 @@ iprop = nprofa
 nprofa = iprop
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpltcl.f90 b/src/cplv/cpltcl.f90
index 9f36620..4d64efe 100644
--- a/src/cplv/cpltcl.f90
+++ b/src/cplv/cpltcl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -60,37 +60,32 @@ subroutine cpltcl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (lndfac)       !    !     !  face interne dans nodfac                      !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -108,40 +103,36 @@ subroutine cpltcl &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -154,13 +145,13 @@ subroutine cpltcl &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -172,7 +163,7 @@ subroutine cpltcl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 ! Arguments
@@ -226,7 +217,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ii, iphas, ifac, izone, mode, iel, ige, iok
@@ -576,4 +567,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpltss.f90 b/src/cplv/cpltss.f90
index a581c53..fb062cd 100644
--- a/src/cplv/cpltss.f90
+++ b/src/cplv/cpltss.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -88,38 +88,33 @@ subroutine cpltss &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 ! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
 ! nfml  ,nprfml    !    !     !                                                !
@@ -137,34 +132,30 @@ subroutine cpltss &
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -178,9 +169,9 @@ subroutine cpltss &
 ! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
 ! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -193,7 +184,7 @@ subroutine cpltss &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -255,7 +246,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia , idebra
@@ -401,4 +392,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/cplv/cpltsv.f90 b/src/cplv/cpltsv.f90
index dcadf97..d0b63f4 100644
--- a/src/cplv/cpltsv.f90
+++ b/src/cplv/cpltsv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -63,42 +63,37 @@ subroutine cpltsv &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
 ! iscala           ! e  ! <-- ! numero du scalaire associe                     !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! nfml  ,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (lndfac)       !    !     !  face interne dans nodfac                      !
@@ -112,41 +107,37 @@ subroutine cpltsv &
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! smbrs(ncelet)    ! tr ! --> ! second membre explicite                        !
 ! rovsdt(ncelet    ! tr ! --> ! partie diagonale implicite                     !
 ! wfb(nfabor)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..8(ncelet)    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -159,7 +150,7 @@ subroutine cpltsv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -214,7 +205,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          ivar   , ivarsc , ivarut, ivar0
@@ -430,4 +421,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/cplv/cplvar.f90 b/src/cplv/cplvar.f90
index 3fd6c33..2ae85de 100644
--- a/src/cplv/cplvar.f90
+++ b/src/cplv/cplvar.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cplvar
+subroutine cplvar
 !================
 
 
@@ -46,7 +46,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -59,7 +59,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -134,4 +134,4 @@ icp(iphas)    = 0
 
 
 return
-end
+end subroutine
diff --git a/src/cplv/cplver.f90 b/src/cplv/cplver.f90
index 1f6bbd6..b1ff62f 100644
--- a/src/cplv/cplver.f90
+++ b/src/cplv/cplver.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,7 +46,7 @@ subroutine cplver &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -59,7 +59,7 @@ subroutine cplver &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -81,7 +81,7 @@ include "ppincl.h"
 
 integer          iok
 
-! VARIABLES LOCALES
+! Local variables
 
 character        chaine*80
 integer          ipp, isc, jj, iphas
@@ -185,4 +185,4 @@ endif
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/cplv/cplym1.f90 b/src/cplv/cplym1.f90
index 3714fcf..198b524 100644
--- a/src/cplv/cplym1.f90
+++ b/src/cplv/cplym1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cplym1                               &
+subroutine cplym1 &
 !================
 
  ( ncelet , ncel   , nitbmc , nrtbmc ,                            &
@@ -57,10 +57,10 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! nitbmc           ! e  ! <-- ! taille du macro tableau mc entiers             !
 ! nrtbmc           ! e  ! <-- ! taille du macro tableau mc reels               !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
@@ -108,7 +108,7 @@
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -149,7 +149,7 @@ double precision rtbmc(ncelet,nrtbmc)
 double precision sp(ncelet) , si(ncelet) , sr(ncelet)
 double precision w1(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel, icha, itbr, itbi, ige
 
@@ -1131,4 +1131,4 @@ write(nfecra,2200) n1 , n3 , n14, n15, n16, n17, n18, n19, n20
 
 
 return
-end
+end subroutine
diff --git a/src/cplv/cppdf4.f90 b/src/cplv/cppdf4.f90
index f4ceeed..7f8dd59 100644
--- a/src/cplv/cppdf4.f90
+++ b/src/cplv/cppdf4.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cppdf4                               &
+subroutine cppdf4 &
 !================
 
  (  ncelet , ncel   ,                                             &
@@ -46,10 +46,10 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! f1m              ! tr ! <-- ! moyenne du traceur 1 (mv chz +co)              !
 ! f2m              ! tr ! <-- ! moyenne du traceur 2 (mv cxhy +co)             !
 ! f3m              ! tr ! <-- ! moyenne du traceur 3 (co c.het)                !
@@ -95,7 +95,7 @@ double precision f4m(ncelet), f4p2m(ncelet)
 double precision si7(ncelet), si8(ncelet), sp2m(ncelet)
 double precision f4i7(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel
 
@@ -176,4 +176,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cppdfr.f90 b/src/cplv/cppdfr.f90
index e162a84..32d02dc 100644
--- a/src/cplv/cppdfr.f90
+++ b/src/cplv/cppdfr.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -54,10 +54,10 @@ subroutine cppdfr &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! sp2m             ! tr ! <-- ! variance de s                                  !
 ! sc               ! tr ! <-- ! borne min de s                                 !
 ! sd               ! tr ! <-- ! borne max de s                                 !
@@ -78,7 +78,7 @@ subroutine cppdfr &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -109,7 +109,7 @@ double precision sdeb(ncelet) , sfin(ncelet)
 double precision hrec(ncelet)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel
 integer          n1     , n2     , n3     , n4     , n5
@@ -315,4 +315,4 @@ write(nfecra,1000) ncel, n1, n2, n3, n4, n5
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpphy1.f90 b/src/cplv/cpphy1.f90
index 360e5ac..e7204c8 100644
--- a/src/cplv/cpphy1.f90
+++ b/src/cplv/cpphy1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cpphy1                               &
+subroutine cpphy1 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -90,12 +90,12 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! nitbcp           ! e  ! <-- ! taille du macro tableau cp entiers             !
 ! nrtbcp           ! e  ! <-- ! taille du macro tableau cp reels               !
 ! nitbmc           ! e  ! <-- ! taille du macro tableau mc entiers             !
@@ -113,8 +113,7 @@
 !                  !    !     !                    soit du melange             !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant)                  !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! itbcp            ! tr ! <-- ! macro tableau entier cp travail                !
 ! rtbcp            ! tr ! <-- ! macro tableau reel   cp travail                !
 ! itbmc            ! tr ! <-- ! macro tableau entier mc travail                !
@@ -132,7 +131,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -175,7 +174,7 @@ double precision rtbcp(ncelet,nrtbcp)
 double precision rtbmc(ncelet,nrtbmc)
 double precision rtbwo(ncelet,nrtbwo)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel    , iphas  , ice
@@ -434,4 +433,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpphy2.f90 b/src/cplv/cpphy2.f90
index 2f46b42..07a1798 100644
--- a/src/cplv/cpphy2.f90
+++ b/src/cplv/cpphy2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cpphy2                               &
+subroutine cpphy2 &
 !================
 
  ( ncelet , ncel   ,                                              &
@@ -48,14 +48,13 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant)                  !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -67,7 +66,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -91,7 +90,7 @@ integer          ncelet , ncel
 
 double precision rtp(ncelet,*) , propce(ncelet,*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          nbrint
 parameter       (nbrint=8)
@@ -358,4 +357,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpphyv.f90 b/src/cplv/cpphyv.f90
index 7bbc874..f9fb876 100644
--- a/src/cplv/cpphyv.f90
+++ b/src/cplv/cpphyv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -111,82 +111,69 @@ subroutine cpphyv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -198,7 +185,7 @@ subroutine cpphyv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -250,7 +237,7 @@ double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision w9(ncelet),w10(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ntbcpi, icpwi, ntbcpr, icpwr
@@ -594,4 +581,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpprop.f90 b/src/cplv/cpprop.f90
index 955d227..8547b36 100644
--- a/src/cplv/cpprop.f90
+++ b/src/cplv/cpprop.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine cpprop &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ipropp           ! e  ! <-- ! numero de la derniere propriete                !
 !                  !    !     !  (les proprietes sont dans propce,             !
@@ -61,7 +61,7 @@ subroutine cpprop &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -85,7 +85,7 @@ include "ihmpre.h"
 
 integer       ipropp, ipppst
 
-! VARIABLES LOCALES
+! Local variables
 
 integer       iprop, ige , icla, iprop2
 
@@ -280,4 +280,4 @@ if (iihmpr.eq.1) then
 endif
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpptcl.f90 b/src/cplv/cpptcl.f90
index 02325e8..16668c6 100644
--- a/src/cplv/cpptcl.f90
+++ b/src/cplv/cpptcl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,45 +55,36 @@ subroutine cpptcl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -103,40 +94,36 @@ subroutine cpptcl &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -149,13 +136,13 @@ subroutine cpptcl &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -167,7 +154,7 @@ subroutine cpptcl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 ! Arguments
@@ -221,7 +208,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ii, iphas, ifac, izone, mode, iel, ige, iok
@@ -277,6 +264,8 @@ if(irangp.ge.0) then
   !==========
   call parimx(nozapm,ientcp)
   !==========
+  call parimx(nozapm,inmoxy)
+  !==========
   call parrmx(nozapm,qimpat)
   !==========
   call parrmx(nozapm,timpat)
@@ -745,6 +734,14 @@ do ifac = 1, nfabor
       rcodcl(ifac,isca(iyco2),1)   = xco2*(1.d0-x20t(izone))
     endif
 
+! ------ CL pour X1.HCN et X1.NO
+    if ( ieqnox .eq. 1 ) then
+      rcodcl(ifac,isca(iyhcn),1)   = zero
+      rcodcl(ifac,isca(iyno ),1)   = zero
+! ------ CL pour Tair
+      rcodcl(ifac,isca(itaire ),1)   = timpat(izone)
+    endif
+
   endif
 
 enddo
@@ -758,4 +755,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cprays.f90 b/src/cplv/cprays.f90
index f278bc7..cdc0384 100644
--- a/src/cplv/cprays.f90
+++ b/src/cplv/cprays.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,16 +44,15 @@ subroutine cprays &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ivar             ! e  ! <-- ! numero de la variable scalaire                 !
 !                  !    !     !   energie (enthalpie h2) pour le               !
 !                  !    !     !   charbon                                      !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! volume(ncelet    ! tr ! <-- ! volume des cellules                            !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! smbrs(ncelet     ! tr ! <-- ! second membre du systeme                       !
 ! rovsdt(ncelet    ! tr ! <-- ! diagonale du systeme                           !
 !__________________!____!_____!________________________________________________!
@@ -67,7 +66,7 @@ subroutine cprays &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -91,7 +90,7 @@ double precision smbrs(ncelet)
 double precision rovsdt(ncelet)
 double precision propce(ncelet,*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel , numcla , ipcl
 
@@ -136,4 +135,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/cplv/cpteh1.f90 b/src/cplv/cpteh1.f90
index 1efb3b2..f649c07 100644
--- a/src/cplv/cpteh1.f90
+++ b/src/cplv/cpteh1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cpteh1                               &
+subroutine cpteh1 &
 !================
 
  ( ncelet , ncel   , ntbmci , ntbmcr ,                            &
@@ -44,10 +44,10 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! ntbmci           ! e  ! <-- ! taille du macro tableau mc entiers             !
 ! ntbmcr           ! e  ! <-- ! taille du macro tableau mc reels               !
 ! eh               ! tr ! <-- ! enthalpie du gaz                               !
@@ -75,7 +75,7 @@
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -106,7 +106,7 @@ double precision tp(ncelet)
 double precision tbmcr(ncelet,ntbmcr)
 double precision eh0(ncelet), eh1(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          i, icel, icha
 
@@ -332,4 +332,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpteh2.f90 b/src/cplv/cpteh2.f90
index fa53cef..38828c2 100644
--- a/src/cplv/cpteh2.f90
+++ b/src/cplv/cpteh2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cpteh2                               &
+subroutine cpteh2 &
 !================
 
  ( ncelet , ncel   ,                                              &
@@ -40,14 +40,13 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant)                  !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! eh0              ! tr ! <-- ! tableau reel de travail                        !
 ! eh1              ! tr ! <-- ! tableau reel de travail                        !
 !__________________!____!_____!________________________________________________!
@@ -61,7 +60,7 @@
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -84,7 +83,7 @@ integer          ncelet, ncel
 double precision rtp(ncelet,*), propce(ncelet,*)
 double precision eh0(ncelet), eh1(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          i      , icla   , icha   , icel
 integer          ipcte1 , ipcte2
@@ -264,4 +263,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cptehm.f90 b/src/cplv/cptehm.f90
index a9280da..f8de0fe 100644
--- a/src/cplv/cptehm.f90
+++ b/src/cplv/cptehm.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,10 +44,10 @@ subroutine cptehm &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! ntbmci           ! e  ! <-- ! taille du macro tableau mc entiers             !
 ! ntbmcr           ! e  ! <-- ! taille du macro tableau mc reels               !
 ! eh               ! tr ! <-- ! enthalpie du gaz                               !
@@ -78,7 +78,7 @@ subroutine cptehm &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -109,7 +109,7 @@ double precision tp(ncelet)
 double precision tbmcr(ncelet,ntbmcr)
 double precision eh0(ncelet), eh1(ncelet), x1(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          i, icel, icha , icla
 
@@ -421,4 +421,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpthp1.f90 b/src/cplv/cpthp1.f90
index a362fe8..a3f9f2c 100644
--- a/src/cplv/cpthp1.f90
+++ b/src/cplv/cpthp1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cpthp1                               &
+subroutine cpthp1 &
 !================
 
  ( mode  , eh     , xesp   , f1mc   , f2mc   ,                    &
@@ -43,7 +43,7 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! eh               ! tr ! <-- ! enthalpie du gaz                               !
 !                  !    !     ! (j/kg de melange gazeux)                       !
@@ -62,7 +62,7 @@
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -86,7 +86,7 @@ double precision eh,tp
 double precision xesp(ngazem)
 double precision f1mc(ncharm),f2mc(ncharm)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          i , icha
 
@@ -520,4 +520,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpthp2.f90 b/src/cplv/cpthp2.f90
index 311eb6b..db3dd66 100644
--- a/src/cplv/cpthp2.f90
+++ b/src/cplv/cpthp2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cpthp2                               &
+subroutine cpthp2 &
 !================
 
  ( mode   , icla   , enthal , xsolid , temper , t1)
@@ -43,7 +43,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! mode             ! e  ! <-- !  -1 : t -> h  ;   1 : h -> t                   !
 ! icla             ! e  ! <-- ! numero de la classe                            !
@@ -61,7 +61,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -85,7 +85,7 @@ integer          mode , icla , icha
 double precision xsolid(nsolim)
 double precision temper , enthal , t1
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          it , isol , ihflt2
 
@@ -249,4 +249,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/cplv/cptssc.f90 b/src/cplv/cptssc.f90
index 2b4d732..86d9338 100644
--- a/src/cplv/cptssc.f90
+++ b/src/cplv/cptssc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -81,83 +81,70 @@ subroutine cptssc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 ! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
 ! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -169,9 +156,9 @@ subroutine cptssc &
 ! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
 ! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -184,7 +171,7 @@ subroutine cptssc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -245,7 +232,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -1324,4 +1311,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/cplv/cptsvc.f90 b/src/cplv/cptsvc.f90
index 849b599..3055eb8 100644
--- a/src/cplv/cptsvc.f90
+++ b/src/cplv/cptsvc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -56,90 +56,77 @@ subroutine cptsvc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
 ! iscala           ! e  ! <-- ! numero du scalaire associe                     !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! smbrs(ncelet)    ! tr ! --> ! second membre explicite                        !
 ! rovsdt(ncelet    ! tr ! --> ! partie diagonale implicite                     !
 ! wfb(nfabor)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..8(ncelet)    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -152,7 +139,7 @@ subroutine cptsvc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -207,7 +194,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          ivar   , ivarsc , ivarut , ivar0
@@ -442,4 +429,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/cplv/cptsvi.f90 b/src/cplv/cptsvi.f90
index dd4453e..3febac1 100644
--- a/src/cplv/cptsvi.f90
+++ b/src/cplv/cptsvi.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,17 +47,15 @@ subroutine cptsvi &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! numtra           ! e  ! <-- ! numero du traceur concerne (1,2,3,4)           !
 ! rtp         ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant precedent)                !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! smbrs(ncelet)    ! tr ! --> ! second membre explicite                        !
 ! rovsdt(ncelet    ! tr ! --> ! partie diagonale implicite                     !
 ! xf1m, xf2m       ! tr ! <-- ! somme de f1,f2,f3,f4 sur l'ensemble            !
@@ -76,7 +74,7 @@ subroutine cptsvi &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -103,7 +101,7 @@ double precision smbrs(ncelet), rovsdt(ncelet)
 double precision xf1m(ncelet)  , xf2m(ncelet)
 double precision w1(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel    , icla   , icha
 integer          iphas  , ipcrom , ixchcl , ixckcl , ixnpcl
@@ -280,4 +278,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/cplv/cpvarp.f90 b/src/cplv/cpvarp.f90
index bb9b589..e2053b5 100644
--- a/src/cplv/cpvarp.f90
+++ b/src/cplv/cpvarp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine cpvarp
+subroutine cpvarp
 !================
 
 
@@ -39,7 +39,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -184,4 +184,4 @@ iphas = iphsca(ihm)
 icp(iphas)    = 0
 
 return
-end
+end subroutine
diff --git a/src/cplv/cpveri.f90 b/src/cplv/cpveri.f90
index 8cb3384..9436169 100644
--- a/src/cplv/cpveri.f90
+++ b/src/cplv/cpveri.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine cpveri &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -54,7 +54,7 @@ subroutine cpveri &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -76,7 +76,7 @@ include "ppincl.h"
 
 integer          iok
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iphas
 
@@ -173,4 +173,4 @@ endif
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/cplv/memcp1.f90 b/src/cplv/memcp1.f90
index d88027e..c6f5ed8 100644
--- a/src/cplv/memcp1.f90
+++ b/src/cplv/memcp1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine memcp1                               &
+subroutine memcp1 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -48,15 +48,15 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idbia0/idbra0    ! e  ! <-- ! pointeur de la premiere cas libre des          !
 !                  !    !     !  tableaux ia/ra                                !
 ! nvar             ! e  ! <-- ! nombre de variables                            !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! ntbcpi           ! e  ! <-- ! taille du macro tableau cp entiers             !
 ! icpwi            ! e  ! --> ! pointeur  macro tableau cp entiers             !
 ! ntbcpr           ! e  ! <-- ! taille du macro tableau cp reels               !
@@ -69,10 +69,8 @@
 ! iwori            ! e  ! --> ! pointeur  macro tableau work entiers           !
 ! ntbwor           ! e  ! <-- ! taille du macro tableau work reels             !
 ! iworr            ! e  ! --> ! pointeur  macro tableau work reels             !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ra en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -84,7 +82,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -102,7 +100,7 @@ integer          ntbmci , imcwi  , ntbmcr , imcwr
 integer          ntbwoi , iwori  , ntbwor , iworr
 integer          ifinia , ifinra
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 
@@ -135,4 +133,4 @@ CALL RASIZE('MEMPH1',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/ctwr/Makefile.am b/src/ctwr/Makefile.am
index 2cd401d..7a4afcc 100644
--- a/src/ctwr/Makefile.am
+++ b/src/ctwr/Makefile.am
@@ -25,7 +25,7 @@
 AM_CPPFLAGS = \
 -I$(top_srcdir)/include/base \
 -I$(top_srcdir)/include/ctwr \
- at BFT_CPPFLAGS@ @FVM_CPPFLAGS@ @MPI_CPPFLAGS@
+ at FVM_CPPFLAGS@ @BFT_CPPFLAGS@ @MPI_CPPFLAGS@
 
 AM_CFLAGS = @CFLAGS_DBG@ @CFLAGS_OPT@
 
diff --git a/src/ctwr/Makefile.in b/src/ctwr/Makefile.in
index 07a22df..4f722cf 100644
--- a/src/ctwr/Makefile.in
+++ b/src/ctwr/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -42,8 +43,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -66,6 +68,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -81,6 +84,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcsctwr_la_LIBADD =
 am_libcsctwr_la_OBJECTS = cs_ctwr.lo cs_ctwr_air_props.lo \
@@ -88,12 +92,13 @@ am_libcsctwr_la_OBJECTS = cs_ctwr.lo cs_ctwr_air_props.lo \
 	ctiniv.lo ctphyv.lo cttssc.lo ctvarp.lo usctcl.lo usctdz.lo \
 	uscti1.lo usctiv.lo
 libcsctwr_la_OBJECTS = $(am_libcsctwr_la_OBJECTS)
-libcsctwr_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+libcsctwr_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(libcsctwr_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
@@ -104,12 +109,12 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcsctwr_la_SOURCES)
 DIST_SOURCES = $(libcsctwr_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -117,12 +122,25 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(ctwrdir)" \
 	"$(DESTDIR)$(saturneincludedir)"
-ctwrDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(ctwr_DATA)
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -169,6 +187,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -205,11 +225,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -224,15 +242,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -277,7 +298,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -294,8 +316,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -321,7 +346,7 @@ top_srcdir = @top_srcdir@
 AM_CPPFLAGS = \
 -I$(top_srcdir)/include/base \
 -I$(top_srcdir)/include/ctwr \
- at BFT_CPPFLAGS@ @FVM_CPPFLAGS@ @MPI_CPPFLAGS@
+ at FVM_CPPFLAGS@ @BFT_CPPFLAGS@ @MPI_CPPFLAGS@
 
 AM_CFLAGS = @CFLAGS_DBG@ @CFLAGS_OPT@
 AM_FCFLAGS = \
@@ -366,14 +391,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/ctwr/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/ctwr/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/ctwr/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/ctwr/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -391,6 +416,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -416,21 +442,21 @@ distclean-compile:
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
@@ -445,16 +471,16 @@ distclean-compile:
 	$(LTFCCOMPILE) -c -o $@ $<
 
 usctcl.lo: $(top_srcdir)/users/ctwr/usctcl.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usctcl.lo `test -f '$(top_srcdir)/users/ctwr/usctcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/ctwr/usctcl.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usctcl.lo `test -f '$(top_srcdir)/users/ctwr/usctcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/ctwr/usctcl.f90
 
 usctdz.lo: $(top_srcdir)/users/ctwr/usctdz.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usctdz.lo `test -f '$(top_srcdir)/users/ctwr/usctdz.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/ctwr/usctdz.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usctdz.lo `test -f '$(top_srcdir)/users/ctwr/usctdz.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/ctwr/usctdz.f90
 
 uscti1.lo: $(top_srcdir)/users/ctwr/uscti1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscti1.lo `test -f '$(top_srcdir)/users/ctwr/uscti1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/ctwr/uscti1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uscti1.lo `test -f '$(top_srcdir)/users/ctwr/uscti1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/ctwr/uscti1.f90
 
 usctiv.lo: $(top_srcdir)/users/ctwr/usctiv.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usctiv.lo `test -f '$(top_srcdir)/users/ctwr/usctiv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/ctwr/usctiv.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usctiv.lo `test -f '$(top_srcdir)/users/ctwr/usctiv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/ctwr/usctiv.f90
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -464,51 +490,57 @@ clean-libtool:
 install-ctwrDATA: $(ctwr_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(ctwrdir)" || $(MKDIR_P) "$(DESTDIR)$(ctwrdir)"
-	@list='$(ctwr_DATA)'; for p in $$list; do \
+	@list='$(ctwr_DATA)'; test -n "$(ctwrdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(ctwrDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(ctwrdir)/$$f'"; \
-	  $(ctwrDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(ctwrdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(ctwrdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(ctwrdir)" || exit $$?; \
 	done
 
 uninstall-ctwrDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(ctwr_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(ctwrdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(ctwrdir)/$$f"; \
-	done
+	@list='$(ctwr_DATA)'; test -n "$(ctwrdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(ctwrdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(ctwrdir)" && rm -f $$files
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -516,29 +548,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -559,13 +596,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -596,6 +637,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -617,6 +659,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -625,18 +669,28 @@ install-data-am: install-ctwrDATA install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -676,6 +730,7 @@ uninstall-am: uninstall-ctwrDATA uninstall-saturneincludeHEADERS
 	pdf pdf-am ps ps-am tags uninstall uninstall-am \
 	uninstall-ctwrDATA uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/ctwr/cs_ctwr.c b/src/ctwr/cs_ctwr.c
index d1bae84..aa689fc 100644
--- a/src/ctwr/cs_ctwr.c
+++ b/src/ctwr/cs_ctwr.c
@@ -91,7 +91,7 @@ BEGIN_C_DECLS
  * Local Macro Definitions
  *============================================================================*/
 
-enum {X, Y, Z} ;
+enum {X, Y, Z};
 
 #define CS_LOC_PRODUIT_SCALAIRE(vect1, vect2) \
   (vect1[X] * vect2[X] + vect1[Y] * vect2[Y] + vect1[Z] * vect2[Z])
@@ -108,7 +108,7 @@ enum {X, Y, Z} ;
 
 cs_int_t            cs_glob_ct_nbr_max = 0;
 
-cs_int_t            cs_glob_ct_nbr     = 0 ;
+cs_int_t            cs_glob_ct_nbr     = 0;
 cs_ctwr_zone_t     ** cs_glob_ct_tab   = NULL;
 
 /* Start and end (negative) numbers associated with
@@ -189,7 +189,7 @@ void CS_PROCF (defct1, DEFCT1)
   const cs_int_t   *const nelect,   /* Nombre d'elements sur chaque ligne du
                                        maillage eau pour la zone de noeuds par
                                        segment eau */
-  const cs_real_t  *const deltat,   /* Ecart de temperature impos� en entree
+  const cs_real_t  *const deltat,   /* Ecart de temperature impose en entree
                                        de la zone d'echange */
   const cs_real_t  *const teau,     /* Teau en entree de la zone d'echange    */
   const cs_real_t  *const fem,      /* fem en entree de la zone d'echange     */
@@ -209,14 +209,14 @@ void CS_PROCF (defct1, DEFCT1)
     cs_base_string_f_to_c_free(&_ze_name);
 
   cs_ctwr_definit(*idimct,_ze_name, *imctch,*ntypct,*nelect,
-              *deltat,*teau,*fem,*xap,*xnp,*surface,*dgout);
+                  *deltat,*teau,*fem,*xap,*xnp,*surface,*dgout);
 
   if (_ze_name != NULL)
     cs_base_string_f_to_c_free(&_ze_name);
 }
 
 /*----------------------------------------------------------------------------
- * R�cup�ration du nombre de zones d'echanges
+ * Recuperation du nombre de zones d'echanges
  *
  * Interface Fortran :
  *
@@ -231,11 +231,11 @@ void CS_PROCF (nbzect, NBZECT)
   cs_int_t  *const nbrct             /* <-- nombre de zones d'echanges        */
 )
 {
-  *nbrct = cs_glob_ct_nbr ;
+  *nbrct = cs_glob_ct_nbr;
 }
 
 /*----------------------------------------------------------------------------
- * R�cup�ration du modele de Poppe ou de Merkel
+ * Recuperation du modele de Poppe ou de Merkel
  *
  * Interface Fortran :
  *
@@ -300,15 +300,15 @@ void CS_PROCF (aeprot, AEPROT)
 void CS_PROCF (aeteau, AETEAU)
 (
   cs_real_t          temp[],              /* Temperature air */
-  cs_real_t          xa[]  ,        /* humidite air */
-  cs_real_t          rho[] ,               /* masse volumique air */
+  cs_real_t          xa[]  ,              /* humidite air */
+  cs_real_t          rho[] ,              /* masse volumique air */
   cs_real_t          vitx[],              /* vitesse air suivant x */
   cs_real_t          vity[],              /* vitesse air suivant y */
   cs_real_t          vitz[]               /* vitesse air suivant z */
 
 )
 {
-   cs_ctwr_aeteau(temp,xa,rho,vitx,vity,vitz);
+  cs_ctwr_aeteau(temp,xa,rho,vitx,vity,vitz);
 }
 
 
@@ -483,7 +483,7 @@ void CS_PROCF (ecrctw, ECRCTW)
 
     ct = cs_glob_ct_tab[ict];
 
-    length = strlen("Cooling_Tower_restart_") + 3 ;
+    length = strlen("Cooling_Tower_restart_") + 3;
     BFT_MALLOC(location_name, length, char);
     sprintf(location_name, "Cooling_Tower_restart_%02d", ct->num);
 
@@ -507,7 +507,7 @@ void CS_PROCF (ecrctw, ECRCTW)
       char * nomrub;
       cs_int_t   *tabvar;
 
-      length = strlen("Parametres_int_ctwr_") + 3 ;
+      length = strlen("Parametres_int_ctwr_") + 3;
       BFT_MALLOC(nomrub, length, char);
       sprintf(nomrub, "Parametres_int_ctwr_%02d", ct->num);
 
@@ -536,7 +536,7 @@ void CS_PROCF (ecrctw, ECRCTW)
       char * nomrub;
       cs_real_t   *tabvar;
 
-      length = strlen("Parametres_real_ctwr_") + 3 ;
+      length = strlen("Parametres_real_ctwr_") + 3;
       BFT_MALLOC(nomrub, length, char);
       sprintf(nomrub, "Parametres_real_ctwr_%02d", ct->num);
 
@@ -674,10 +674,10 @@ void CS_PROCF (lecctw, LECCTW)
                 "Verify that the restart file corresponds to "
                 "the present study.\n"));
 
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
 
     ct = cs_glob_ct_tab[ict];
-    length = strlen("Cooling_Tower_restart_") + 3 ;
+    length = strlen("Cooling_Tower_restart_") + 3;
     BFT_MALLOC(location_name, length, char);
     sprintf(location_name, "Cooling_Tower_restart_%02d", ct->num);
 
@@ -699,10 +699,10 @@ void CS_PROCF (lecctw, LECCTW)
 
     {
       char * nomrub;
-      length = strlen("Parametres_int_ctwr_") + 3 ;
+      cs_int_t   *tabvar;
+      length = strlen("Parametres_int_ctwr_") + 3;
       BFT_MALLOC(nomrub, length, char);
       sprintf(nomrub, "Parametres_int_ctwr_%02d", ct->num);
-      cs_int_t   *tabvar;
 
       BFT_MALLOC(tabvar, 3, cs_int_t);
 
@@ -769,10 +769,10 @@ void CS_PROCF (lecctw, LECCTW)
 
     {
       char * nomrub;
-      length = strlen("Parametres_real_ctwr_") + 3 ;
+      cs_real_t   *tabvar;
+      length = strlen("Parametres_real_ctwr_") + 3;
       BFT_MALLOC(nomrub, length, char);
       sprintf(nomrub, "Parametres_real_ctwr_%02d", ct->num);
-      cs_real_t   *tabvar;
 
 
       BFT_MALLOC(tabvar, 4, cs_real_t);
@@ -859,7 +859,7 @@ void CS_PROCF (lecctw, LECCTW)
       if (ierror < CS_RESTART_SUCCES)
         bft_error(__FILE__, __LINE__, 0,
                   _("Problem while reading section in the restart file\n"
-                    "for thethe cooling tower module:\n"
+                    "for the cooling tower module:\n"
                     "<%s>\n"
                     "The calculation will not be run.\n"), nomrub);
 
@@ -889,7 +889,7 @@ void CS_PROCF (lecctw, LECCTW)
       if (ierror < CS_RESTART_SUCCES)
         bft_error(__FILE__, __LINE__, 0,
                   _("Problem while reading section in the restart file\n"
-                    "for thethe cooling tower module:\n"
+                    "for the cooling tower module:\n"
                     "<%s>\n"
                     "The calculation will not be run.\n"), nomrub);
 
@@ -919,7 +919,7 @@ void CS_PROCF (lecctw, LECCTW)
       if (ierror < CS_RESTART_SUCCES)
         bft_error(__FILE__, __LINE__, 0,
                   _("Problem while reading section in the restart file\n"
-                    "for thethe cooling tower module:\n"
+                    "for the cooling tower module:\n"
                     "<%s>\n"
                     "The calculation will not be run.\n"), nomrub);
 
@@ -941,7 +941,7 @@ void CS_PROCF (lecctw, LECCTW)
  *============================================================================*/
 
 /*----------------------------------------------------------------------------
- * D�finition d'une zone d'echange (qui est ajout�e � celles d�j� d�finies)
+ * Definition d'une zone d'echange (qui est ajoutee a celles deja definies)
  *----------------------------------------------------------------------------*/
 
 void cs_ctwr_definit
@@ -956,7 +956,7 @@ void cs_ctwr_definit
                                  3: Zone de pluie */
   const cs_int_t   nelect,    /* Nombre d'elements sur chaque ligne du maillage
                                  eau pour la zone de noeuds par segment eau */
-  const cs_real_t  deltat,    /* Ecart de temperature impos� en entree de la
+  const cs_real_t  deltat,    /* Ecart de temperature impose en entree de la
                                  zone d'echange */
   const cs_real_t  teau_cl,   /* Teau en entree de la zone d'echange */
   const cs_real_t  fem_cl,    /* debit en entree de la zone d'echange */
@@ -973,7 +973,7 @@ void cs_ctwr_definit
   bft_file_type_t file_type;
 
   file_type = BFT_FILE_TYPE_TEXT;
-  /* D�finition d'une nouvelle zone d'echange */
+  /* Definition d'une nouvelle zone d'echange */
 
   BFT_MALLOC(ct, 1, cs_ctwr_zone_t);
 
@@ -1033,22 +1033,22 @@ void cs_ctwr_definit
   ct->fem     = NULL;
   ct->vgoutte = NULL;
 
-  ct->fem_e   = 0.0 ;
-  ct->fem_s   = 0.0 ;
-  ct->teau_e  = 0.0 ;
-  ct->teau_s  = 0.0 ;
-  ct->heau_e  = 0.0 ;
-  ct->heau_s  = 0.0 ;
-  ct->tair_e  = 0.0 ;
-  ct->tair_s  = 0.0 ;
-  ct->xair_e  = 0.0 ;
-  ct->xair_s  = 0.0 ;
-  ct->hair_e  = 0.0 ;
-  ct->hair_s  = 0.0 ;
-  ct->debit_e = 0.0 ;
-  ct->debit_s = 0.0 ;
-
-  ct->dgout = dgout ;
+  ct->fem_e   = 0.0;
+  ct->fem_s   = 0.0;
+  ct->teau_e  = 0.0;
+  ct->teau_s  = 0.0;
+  ct->heau_e  = 0.0;
+  ct->heau_s  = 0.0;
+  ct->tair_e  = 0.0;
+  ct->tair_s  = 0.0;
+  ct->xair_e  = 0.0;
+  ct->xair_s  = 0.0;
+  ct->hair_e  = 0.0;
+  ct->hair_s  = 0.0;
+  ct->debit_e = 0.0;
+  ct->debit_s = 0.0;
+
+  ct->dgout = dgout;
 
   /* Selection des cellules */
 
@@ -1061,7 +1061,7 @@ void cs_ctwr_definit
   /* Redimensionnement du tableau des zones d'echange si necessaire */
 
   if (cs_glob_ct_nbr == cs_glob_ct_nbr_max) {
-    cs_glob_ct_nbr_max = (cs_glob_ct_nbr_max + 1) ;
+    cs_glob_ct_nbr_max = (cs_glob_ct_nbr_max + 1);
     BFT_REALLOC(cs_glob_ct_tab, cs_glob_ct_nbr_max, cs_ctwr_zone_t *);
   }
 
@@ -1084,7 +1084,7 @@ void cs_ctwr_definit
 
 
   if (cs_glob_rank_id <= 0) {
-    length = strlen("bltctc.") + 3 ;
+    length = strlen("bltctc.") + 3;
     BFT_MALLOC(file_name, length, char);
     sprintf(file_name, "bltctc.%02d", ct->num);
 
@@ -1115,7 +1115,7 @@ cs_ctwr_all_destroy(void)
   int i;
   cs_ctwr_zone_t  *ct;
 
-  for (i = 0 ; i < cs_glob_ct_nbr; i++) {
+  for (i = 0; i < cs_glob_ct_nbr; i++) {
 
     ct = cs_glob_ct_tab[i];
     BFT_FREE(ct);
@@ -1160,7 +1160,7 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
   cs_ctwr_zone_t  *ct;
   cs_ctwr_zone_t  *ct_upw;
   cs_real_t *tai_inter, *xai_inter, *rhoai_inter,*vx_inter, *vy_inter,*vz_inter;
-  cs_real_t *tai, *xai, *rhoai,*vx, *vy, *vz, *teau_upw_rec, *teau_upw_send ;
+  cs_real_t *tai, *xai, *rhoai,*vx, *vy, *vz, *teau_upw_rec, *teau_upw_send;
   cs_real_t *fem_upw_rec, *fem_upw_send;
   cs_ctwr_fluid_props_t  *ct_prop = cs_glob_ctwr_props;
 
@@ -1178,25 +1178,25 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
 
 
   /*--------------------------------------------*
-   * R�solution des variable eau                *
+   * Resolution des variable eau                *
    * sur chaque  ct                             *
    *--------------------------------------------*/
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
 
     ct = cs_glob_ct_tab[cs_chain_ct[ict]];
 
     if ((ct->ntypct>=2) && ( ct->idimct==2) )
      gravite[2] = 1.0;
 
-    cpa    = ct_prop->cpa ;
-    cpv    = ct_prop->cpv ;
-    cpe    = ct_prop->cpe ;
-    hv0    = ct_prop->hv0 ;
-    rhoe   = ct_prop->rhoe ;
-    visc   = ct_prop->visc ;
-    conduc = ct_prop->cond  ;
+    cpa    = ct_prop->cpa;
+    cpv    = ct_prop->cpv;
+    cpe    = ct_prop->cpe;
+    hv0    = ct_prop->hv0;
+    rhoe   = ct_prop->rhoe;
+    visc   = ct_prop->visc;
+    conduc = ct_prop->cond ;
 
-    dgout  = ct->dgout ;
+    dgout  = ct->dgout;
 
     /*--------------------------------------------*
      * synchronisation   Halo                             *
@@ -1227,14 +1227,14 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
     BFT_MALLOC( vy_inter   , nb_dist_water, cs_real_t);
     BFT_MALLOC( vz_inter   , nb_dist_water, cs_real_t);
 
-    for (ieau= 0 ; ieau < nb_dist_water ; ieau++) {
+    for (ieau= 0; ieau < nb_dist_water; ieau++) {
        tai_inter[ieau]   = 0.;
        xai_inter[ieau]   = 0.;
        rhoai_inter[ieau] = 0.;
        vx_inter[ieau]    = 0.;
        vy_inter[ieau]    = 0.;
        vz_inter[ieau]    = 0.;
-      for (i = (ct->pvoiseau[ieau]) ; i < (ct->pvoiseau[ieau+1]) ; i++) {
+      for (i = (ct->pvoiseau[ieau]); i < (ct->pvoiseau[ieau+1]); i++) {
         tai_inter[ieau]  += ct->coefeau[i] * temp[ct->voiseau[i]];
         xai_inter[ieau]  += ct->coefeau[i] * xa[ct->voiseau[i]];
         rhoai_inter[ieau]+= ct->coefeau[i] * rho[ct->voiseau[i]];
@@ -1284,7 +1284,7 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
     fvm_nodal_get_parent_num(ct->face_sup_mesh,
                                       2,lst_par_fac_sup_ct);
     ind = 0;
-    for (j=0 ; j < cs_glob_ct_nbr ; j++)
+    for (j=0; j < cs_glob_ct_nbr; j++)
       if(cs_stack_ct[cs_chain_ct[ict]*cs_glob_ct_nbr + cs_chain_ct[j]] == 1){
         ct_upw = cs_glob_ct_tab[ cs_chain_ct[j]];
 
@@ -1300,7 +1300,7 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
         locat_cel_upw =
                   fvm_locator_get_dist_locations(ct->locat_cell_ct_upwind[ind]);
 
-        for (i=0 ; i < nb_dist_upw ; i++){
+        for (i=0; i < nb_dist_upw; i++){
           teau_upw_send[i] =  ct_upw->teau[(cs_int_t) locat_cel_upw[i]-1];
           fem_upw_send[i]  =  ct_upw->fem[(cs_int_t) locat_cel_upw[i]-1];
         }
@@ -1323,7 +1323,7 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
                                        sizeof(cs_real_t),
                                        1,0);
 
-        for (i=0 ; i < ct->nnpsct ; i++){
+        for (i=0; i < ct->nnpsct; i++){
           ii = 0;
           while (ii < (ct_upw->nbfac_ict+ct_upw->nbfbr_ict) ){
             if( lst_par_fac_sup_ct[i] == lst_par_fac_inf_ct_upw[ii]){
@@ -1356,13 +1356,13 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
       /*--------------------------------------------*/
       if (ct->ntypct<=2) {
 
-        for (iseg = 0 ; iseg < ct->nnpsct ; iseg++) {
+        for (iseg = 0; iseg < ct->nnpsct; iseg++) {
           /*--------------------------------------------*/
           /* Resolution Fe                              */
           /*--------------------------------------------*/
-          for (iloc = 1 ; iloc < ct->nelect ; iloc++) {
+          for (iloc = 1; iloc < ct->nelect; iloc++) {
 
-            ieau = iseg*ct->nelect + iloc ;
+            ieau = iseg*ct->nelect + iloc;
 
 
             vvai = sqrt(  pow((vx[ieau]*gravite[0]),2.)
@@ -1390,14 +1390,14 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
             cfen=bxan*(xsate- aux )/(ct->fem[ieau]);
             ct->fem[ieau]=ct->fem[ieau-1]/(1.0-cfen*dhi);
           }
-          /* Fin de r�solution de Fe */
+          /* Fin de resolution de Fe */
 
           /*--------------------------------------------*/
           /* Resolution Te                              */
           /*--------------------------------------------*/
-          for (iloc = 1 ; iloc < ct->nelect ; iloc++) {
+          for (iloc = 1; iloc < ct->nelect; iloc++) {
 
-            ieau = iseg*ct->nelect + iloc ;
+            ieau = iseg*ct->nelect + iloc;
 
             vvai = sqrt( pow((vx[ieau]*gravite[0]),2.)
                         +pow((vy[ieau]*gravite[1]),2.)
@@ -1444,13 +1444,13 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
       /* zone de pluie                              */
       /*--------------------------------------------*/
       else if (ct->ntypct==3){
-        for (iseg = 0 ; iseg < ct->nnpsct ; iseg++) {
+        for (iseg = 0; iseg < ct->nnpsct; iseg++) {
           /*--------------------------------------------*/
           /* Resolution Fe                              */
           /*--------------------------------------------*/
-          for (iloc = 1 ; iloc < ct->nelect ; iloc++) {
+          for (iloc = 1; iloc < ct->nelect; iloc++) {
 
-            ieau = iseg*ct->nelect + iloc ;
+            ieau = iseg*ct->nelect + iloc;
             vgin=ct->vgoutte[ieau];
 
             if (CS_ABS(vgin)>=0.1){
@@ -1495,9 +1495,9 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
           /*--------------------------------------------*/
           /* Resolution Te                              */
           /*--------------------------------------------*/
-          for (iloc = 1 ; iloc < ct->nelect ; iloc++) {
+          for (iloc = 1; iloc < ct->nelect; iloc++) {
 
-            ieau = iseg*ct->nelect + iloc ;
+            ieau = iseg*ct->nelect + iloc;
 
             vgin=ct->vgoutte[ieau];
 
@@ -1564,11 +1564,11 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
 
       if (ct->ntypct<=2) {
 
-      for (iseg = 0 ; iseg < ct->nnpsct ; iseg++) {
+      for (iseg = 0; iseg < ct->nnpsct; iseg++) {
 
-        for (iloc = 1 ; iloc < ct->nelect ; iloc++) {
+        for (iloc = 1; iloc < ct->nelect; iloc++) {
 
-          ieau = iseg*ct->nelect + iloc ;
+          ieau = iseg*ct->nelect + iloc;
 
           vvai = sqrt( pow((vx[ieau]*gravite[0]),2.)
                       +pow((vy[ieau]*gravite[1]),2.)
@@ -1600,10 +1600,10 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
 
     else if (ct->ntypct==3){ /* zone de pluie */
 
-      for (iseg = 0 ; iseg < ct->nnpsct ; iseg++) {
+      for (iseg = 0; iseg < ct->nnpsct; iseg++) {
 
-        for (iloc = 1 ; iloc < ct->nelect ; iloc++) {
-          ieau = iseg*ct->nelect + iloc ;
+        for (iloc = 1; iloc < ct->nelect; iloc++) {
+          ieau = iseg*ct->nelect + iloc;
           ct->fem[ieau]=ct->fem[ieau-1];
           vgin=ct->vgoutte[ieau];
 
@@ -1652,7 +1652,7 @@ cs_ctwr_aeteau(cs_real_t   temp[],      /* Temperature air */
 
   }
   /*--------------------------------------------*/
-  /* Fin de r�solution des variable eau         */
+  /* Fin de resolution des variable eau         */
   /* sur chaque  ct                             */
   /*--------------------------------------------*/
 }
@@ -1705,18 +1705,18 @@ void cs_ctwr_aetssc
   /* Calcul de la vitesse des gouttes pour les  */
   /* zones de pluie                             */
   /*--------------------------------------------*/
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
 
     ct = cs_glob_ct_tab[cs_chain_ct[ict]];
-    cpa    = ct_prop->cpa ;
-    cpv    = ct_prop->cpv ;
-    cpe    = ct_prop->cpe ;
-    hv0    = ct_prop->hv0 ;
-    rhoe   = ct_prop->rhoe ;
-    visc   = ct_prop->visc ;
-    conduc = ct_prop->cond  ;
+    cpa    = ct_prop->cpa;
+    cpv    = ct_prop->cpv;
+    cpe    = ct_prop->cpe;
+    hv0    = ct_prop->hv0;
+    rhoe   = ct_prop->rhoe;
+    visc   = ct_prop->visc;
+    conduc = ct_prop->cond ;
 
-    dgout  = ct->dgout ;
+    dgout  = ct->dgout;
 
     if (ct->ntypct==3){
       /*--------------------------------------------*
@@ -1748,14 +1748,14 @@ void cs_ctwr_aetssc
       BFT_MALLOC( vy_inter   , nb_dist_water, cs_real_t);
       BFT_MALLOC( vz_inter   , nb_dist_water, cs_real_t);
 
-      for (ieau= 0 ; ieau < nb_dist_water ; ieau++) {
+      for (ieau= 0; ieau < nb_dist_water; ieau++) {
         tai_inter[ieau]   = 0.;
         xai_inter[ieau]   = 0.;
         rhoai_inter[ieau] = 0.;
         vx_inter[ieau]    = 0.;
         vy_inter[ieau]    = 0.;
         vz_inter[ieau]    = 0.;
-        for (i = (ct->pvoiseau[ieau]) ; i < (ct->pvoiseau[ieau+1]) ; i++) {
+        for (i = (ct->pvoiseau[ieau]); i < (ct->pvoiseau[ieau+1]); i++) {
           tai_inter[ieau]  += ct->coefeau[i] * temp[ct->voiseau[i]];
           xai_inter[ieau]  += ct->coefeau[i] * xa[ct->voiseau[i]];
           rhoai_inter[ieau]+= ct->coefeau[i] * rho[ct->voiseau[i]];
@@ -1795,11 +1795,11 @@ void cs_ctwr_aetssc
       BFT_MALLOC( lst_par_cel , nb, fvm_lnum_t );
       fvm_nodal_get_parent_num( ct->cell_mesh, 3, lst_par_cel);
 
-      for (iseg = 0 ; iseg < ct->nnpsct ; iseg++) {
+      for (iseg = 0; iseg < ct->nnpsct; iseg++) {
 
-        for (iloc = 1 ; iloc < ct->nelect ; iloc++) {
+        for (iloc = 1; iloc < ct->nelect; iloc++) {
 
-          ieau = iseg*ct->nelect + iloc ;
+          ieau = iseg*ct->nelect + iloc;
 
           vvai = sqrt(pow((vx[ieau]*gravite[0]),2.)
                    +pow((vy[ieau]*gravite[1]),2.)
@@ -1811,7 +1811,7 @@ void cs_ctwr_aetssc
           rre  = dvga*rhoai[ieau]*dgout/visc;
           cd1 = (1.+0.15*pow(rre,0.687));
           ain = (18.*visc*cd1)/(rhoe*pow(dgout,2.));
-          bin = -ain*dvga + 9.81 ;
+          bin = -ain*dvga + 9.81;
           if (bin>0.) {
             ff1 = 2.*bin*dhi;
           }
@@ -1843,21 +1843,21 @@ void cs_ctwr_aetssc
   /* Calcul des termes sources pour T et x      */
   /* pour chaque ct                             */
   /*--------------------------------------------*/
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
     ct = cs_glob_ct_tab[cs_chain_ct[ict]];
 
     if ((ct->ntypct >= 2) && ( ct->idimct==2) )
      gravite[2] = 1.0;
 
-    cpa    = ct_prop->cpa ;
-    cpv    = ct_prop->cpv ;
-    cpe    = ct_prop->cpe ;
-    hv0    = ct_prop->hv0 ;
-    rhoe   = ct_prop->rhoe ;
-    visc   = ct_prop->visc ;
-    conduc = ct_prop->cond  ;
+    cpa    = ct_prop->cpa;
+    cpv    = ct_prop->cpv;
+    cpe    = ct_prop->cpe;
+    hv0    = ct_prop->hv0;
+    rhoe   = ct_prop->rhoe;
+    visc   = ct_prop->visc;
+    conduc = ct_prop->cond ;
 
-    dgout  = ct->dgout ;
+    dgout  = ct->dgout;
 
     nb = (int) fvm_nodal_get_n_entities(ct->cell_mesh, 3);
 
@@ -1884,12 +1884,12 @@ void cs_ctwr_aetssc
     BFT_MALLOC( femei_inter , nb_dist_air, cs_real_t );
     BFT_MALLOC( vgin_inter  , nb_dist_air, cs_real_t );
 
-    for (iair= 0 ; iair < nb_dist_air ; iair++) {
+    for (iair= 0; iair < nb_dist_air; iair++) {
        tei_inter  [ iair ] = 0.;
        femei_inter[ iair ] = 0.;
        vgin_inter [ iair ] = 0.;
 
-      for (i = (ct->pvoisair[iair]) ; i < (ct->pvoisair[iair+1]) ; i++) {
+      for (i = (ct->pvoisair[iair]); i < (ct->pvoisair[iair+1]); i++) {
         tei_inter[iair]    += ct->coefair[ i ]* ct->teau   [ ct->voisair[i] ];
         femei_inter[iair]  += ct->coefair[ i ]* ct->fem    [ ct->voisair[i] ];
         vgin_inter[iair]   += ct->coefair[ i ]* ct->vgoutte[ ct->voisair[i] ];
@@ -1920,7 +1920,7 @@ void cs_ctwr_aetssc
        * courant-croise ou contre-courant           *
        *--------------------------------------------*/
       if (ct->ntypct<=2) {
-        for (iloc = 0 ; iloc < ct->nbevct ; iloc++){
+        for (iloc = 0; iloc < ct->nbevct; iloc++){
           iair = lst_par_cel[iloc]-1;
           /* fin interpolation eau->air */
 
@@ -1975,7 +1975,7 @@ void cs_ctwr_aetssc
       /*--------------------------------------------*/
       else if (ct->ntypct==3) {
 
-        for (iloc = 0 ; iloc < ct->nbevct ; iloc++) {
+        for (iloc = 0; iloc < ct->nbevct; iloc++) {
           iair = lst_par_cel[iloc]-1;
 
           if (CS_ABS(vgin[iloc])>=0.1) {
@@ -2039,7 +2039,7 @@ void cs_ctwr_aetssc
     /*--------------------------------------------*/
     if (ct->imctch==2)  {
       if (ct->ntypct<=2){
-        for (iloc = 0 ; iloc < ct->nbevct ; iloc++){
+        for (iloc = 0; iloc < ct->nbevct; iloc++){
           iair = lst_par_cel[iloc]-1;
           if (femei[iloc]>1.e-6) {
             vvai = sqrt(pow(( vitx[iair]*gravite[0]),2.)
@@ -2074,7 +2074,7 @@ void cs_ctwr_aetssc
 
       else if (ct->ntypct==3){ /* zone de pluie */
 
-        for (iloc = 0 ; iloc < ct->nbevct ; iloc++){
+        for (iloc = 0; iloc < ct->nbevct; iloc++){
           iair = lst_par_cel[iloc]-1;
 
           if (CS_ABS(vgin[iloc])>=0.1) {
@@ -2155,11 +2155,11 @@ void cs_ctwr_aetsvi
   /*--------------------------------------------*/
   /* Calcul de Kg pour chaque ct                */
   /*--------------------------------------------*/
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
     ct = cs_glob_ct_tab[cs_chain_ct[ict]];
-    rhoe   = ct_prop->rhoe ;
-    dgout  = ct->dgout ;
-    visc   = ct_prop->visc ;
+    rhoe   = ct_prop->rhoe;
+    dgout  = ct->dgout;
+    visc   = ct_prop->visc;
 
      /*--------------------------------------------*
     * synchronisation Halo                        *
@@ -2184,12 +2184,12 @@ void cs_ctwr_aetsvi
     BFT_MALLOC( femei_inter  , nb_dist_air, cs_real_t);
     BFT_MALLOC( vgin_inter  , nb_dist_air, cs_real_t);
 
-    for (iair= 0 ; iair < nb_dist_air ; iair++) {
+    for (iair= 0; iair < nb_dist_air; iair++) {
 
        femei_inter[iair] = 0.;
        vgin_inter[iair]  = 0.;
 
-      for (i = (ct->pvoisair[iair]) ; i < (ct->pvoisair[iair+1]) ; i++) {
+      for (i = (ct->pvoisair[iair]); i < (ct->pvoisair[iair+1]); i++) {
 
         femei_inter[ iair ]  += ct->coefair[ i ]* ct->fem    [ ct->voisair[i] ];
         vgin_inter [ iair ]  += ct->coefair[ i ]* ct->vgoutte[ ct->voisair[i] ];
@@ -2208,7 +2208,7 @@ void cs_ctwr_aetsvi
     /* zone de pluie                              */
     /*--------------------------------------------*/
     if (ct->ntypct==3)  {
-      for (iloc = 0 ; iloc < ct->nbevct ; iloc++) {
+      for (iloc = 0; iloc < ct->nbevct; iloc++) {
         iair = lst_par_cel[iloc]-1;
 
         vginu  = -ct_prop->gravx/ absgrv * vgin[iloc];
@@ -2222,9 +2222,9 @@ void cs_ctwr_aetsvi
           rre = dvg*rho[iair]*(1 + xair[iair])*dgout/visc;
           cdd1 = (1.+0.15*pow(rre,0.687));
           cff0 = 18.*cdd1*visc*qer/(vgin[iloc]*pow(dgout,2.));
-          if (idim==1){ utsex[iair] = -cff0 *( vitx[iair]+vginu ) ; }
-          if (idim==2){ utsex[iair] = -cff0 *( vity[iair]+vginv ) ; }
-          if (idim==3){ utsex[iair] = -cff0 *( vitz[iair]+vginw ) ; }
+          if (idim==1){ utsex[iair] = -cff0 *( vitx[iair]+vginu ); }
+          if (idim==2){ utsex[iair] = -cff0 *( vity[iair]+vginv ); }
+          if (idim==3){ utsex[iair] = -cff0 *( vitz[iair]+vginw ); }
         }
       }
     }
@@ -2268,8 +2268,8 @@ void cs_ctwr_bilanct
   const cs_real_t   vity[],             /* vitesse air suivant y */
   const cs_real_t   vitz[],             /* vitesse air suivant z */
 
-  const cs_mesh_t             *mesh,      /* <-- structure maillage associ�e  */
-  const cs_mesh_quantities_t  *mesh_quantities   /* <-- grandeurs du maillage        */
+  const cs_mesh_t             *mesh,      /* <-- structure maillage associee  */
+  const cs_mesh_quantities_t  *mesh_quantities   /* <-- grandeurs du maillage */
 )
 {
   const cs_real_t  *i_face_normal = mesh_quantities->i_face_normal;
@@ -2295,17 +2295,22 @@ void cs_ctwr_bilanct
 
   file_type = BFT_FILE_TYPE_TEXT;
 
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
 
-    ct = cs_glob_ct_tab[cs_chain_ct[ict]];
-    cpa    = ct_prop->cpa ;
-    cpv    = ct_prop->cpv ;
-    cpe    = ct_prop->cpe ;
-    hv0    = ct_prop->hv0 ;
-    cs_int_t nbr_fbr_air[3][2] = {{ct->nnpsct,ct->nbfbr_sct},
-                                 {(ct->nbfbr_ict + ct->nbfac_ict),ct->nbfbr_ict},
-                                 {(ct->nbfbr_lct + ct->nbfac_lct),ct->nbfbr_lct}};
+    cs_int_t nbr_fbr_air[3][2];
 
+    ct = cs_glob_ct_tab[cs_chain_ct[ict]];
+    cpa    = ct_prop->cpa;
+    cpv    = ct_prop->cpv;
+    cpe    = ct_prop->cpe;
+    hv0    = ct_prop->hv0;
+
+    nbr_fbr_air[0][0] = ct->nnpsct;
+    nbr_fbr_air[0][1] = ct->nbfbr_sct;
+    nbr_fbr_air[1][0] = ct->nbfbr_ict + ct->nbfac_ict;
+    nbr_fbr_air[1][1] = ct->nbfbr_ict;
+    nbr_fbr_air[2][0] = ct->nbfbr_lct + ct->nbfac_lct;
+    nbr_fbr_air[2][1] = ct->nbfbr_lct;
 
     BFT_MALLOC( face_sup ,(ct->nbfac_sct + ct->nbfbr_sct) ,fvm_lnum_t );
     fvm_nodal_get_parent_num( ct->face_sup_mesh, 2, face_sup);
@@ -2314,35 +2319,35 @@ void cs_ctwr_bilanct
     BFT_MALLOC( face_lat ,(ct->nbfbr_lct + ct->nbfac_lct) ,fvm_lnum_t );
     fvm_nodal_get_parent_num( ct->face_lat_mesh, 2, face_lat);
 
-    ct->fem_e   = 0.0 ;
-    ct->fem_s   = 0.0 ;
-    ct->teau_e  = 0.0 ;
-    ct->heau_s  = 0.0 ;
-    ct->heau_e  = 0.0 ;
-    ct->teau_s  = 0.0 ;
-    ct->tair_e  = 0.0 ;
-    ct->tair_s  = 0.0 ;
-    ct->xair_e  = 0.0 ;
-    ct->xair_s  = 0.0 ;
-    ct->hair_e  = 0.0 ;
-    ct->hair_s  = 0.0 ;
-    ct->debit_e = 0.0 ;
-    ct->debit_s = 0.0 ;
+    ct->fem_e   = 0.0;
+    ct->fem_s   = 0.0;
+    ct->teau_e  = 0.0;
+    ct->heau_s  = 0.0;
+    ct->heau_e  = 0.0;
+    ct->teau_s  = 0.0;
+    ct->tair_e  = 0.0;
+    ct->tair_s  = 0.0;
+    ct->xair_e  = 0.0;
+    ct->xair_s  = 0.0;
+    ct->hair_e  = 0.0;
+    ct->hair_s  = 0.0;
+    ct->debit_e = 0.0;
+    ct->debit_s = 0.0;
 
     /* calcul des valeurs eau */
 
-    for (i = 0 ; i < ct->nnpsct ; i++) {
+    for (i = 0; i < ct->nnpsct; i++) {
        ieau_Sup = i*ct->nelect;
-       ieau_inf = (i+1)*ct->nelect - 1 ;
+       ieau_inf = (i+1)*ct->nelect - 1;
 
        surf = ct->surf_fac_sup[i];
 
        ct->teau_e += ct->teau[ieau_Sup]*ct->fem[ieau_Sup]*surf;
-       ct->fem_e  += ct->fem[ieau_Sup]*surf ;
+       ct->fem_e  += ct->fem[ieau_Sup]*surf;
        ct->heau_e += ct->teau[ieau_Sup]*ct->fem[ieau_Sup]*surf;
 
        ct->teau_s += ct->teau[ieau_inf]*ct->fem[ieau_inf]*surf;
-       ct->fem_s  += ct->fem[ieau_inf]*surf ;
+       ct->fem_s  += ct->fem[ieau_inf]*surf;
        ct->heau_s += ct->teau[ieau_inf]*ct->fem[ieau_inf]*surf;
 
     }
@@ -2377,28 +2382,28 @@ void cs_ctwr_bilanct
     }
 #endif
 
-    ct->teau_e /= ct->fem_e ;
+    ct->teau_e /= ct->fem_e;
     ct->fem_e  /= ct->surface_in;
-    ct->heau_e *= ct_prop->cpe ;
+    ct->heau_e *= ct_prop->cpe;
 
-    ct->teau_s /= ct->fem_s ;
-    ct->fem_s  /= ct->surface_out  ;
-    ct->heau_s *= ct_prop->cpe ;
+    ct->teau_s /= ct->fem_s;
+    ct->fem_s  /= ct->surface_out ;
+    ct->heau_s *= ct_prop->cpe;
 
 
     /* calcul des valeurs air */
 
-    surf_e = 0. ;
-    surf_s = 0. ;
+    surf_e = 0.;
+    surf_s = 0.;
 
-    for (j = 0 ; j < 3 ; j++)
-    for (i = 0 ; i < nbr_fbr_air[j][0] ; i++) {
+    for (j = 0; j < 3; j++)
+    for (i = 0; i < nbr_fbr_air[j][0]; i++) {
       if( i< nbr_fbr_air[j][1] ){
         if( j==0) ifac = (cs_int_t) face_sup[i]-1;
         if( j==1) ifac = (cs_int_t) face_inf[i]-1;
         if( j==2) ifac = (cs_int_t) face_lat[i]-1;
-        icel = b_face_cells[ifac] - 1 ;
-        for (idim = 0 ; idim<3 ; idim++ )
+        icel = b_face_cells[ifac] - 1;
+        for (idim = 0; idim<3; idim++ )
           n_sortant[idim] =  mesh_quantities->b_face_normal[ifac*3+idim];
         debit = CS_ABS(flux_masse_fbr[ifac]);
         surf  = CS_LOC_MODULE((b_face_normal + 3*ifac));
@@ -2410,15 +2415,15 @@ void cs_ctwr_bilanct
         icel_2 = i_face_cells[ifac * 2 + 1] - 1;
         if ( ct->mark_ze[icel_1] == 1 ) {
 
-          icel = icel_2 ;
-          for (idim = 0 ; idim < 3 ; idim++) {
+          icel = icel_2;
+          for (idim = 0; idim < 3; idim++) {
             n_sortant[idim] =  coo_cen[icel_2*3 + idim] - coo_cen[icel_1*3 + idim];
           }
         }
         if ( ct->mark_ze[icel_2] == 1 ) {
 
-          icel = icel_1 ;
-          for (idim = 0 ; idim < 3 ; idim++) {
+          icel = icel_1;
+          for (idim = 0; idim < 3; idim++) {
             n_sortant[idim] =  coo_cen[icel_1*3 + idim] - coo_cen[icel_2*3 + idim];
           }
         }
@@ -2427,9 +2432,9 @@ void cs_ctwr_bilanct
       }
       xsata = cs_ctwr_xsath(temp[icel]);
       hair = (cpa+xa[icel]*cpv)*temp[icel]+xa[icel]*hv0;
-      vitair[0] = vitx[icel] ;
-      vitair[1] = vity[icel] ;
-      vitair[2] = vitz[icel] ;
+      vitair[0] = vitx[icel];
+      vitair[1] = vity[icel];
+      vitair[2] = vitz[icel];
       if (CS_LOC_PRODUIT_SCALAIRE(n_sortant, vitair)>0.) {
         surf_s += surf;
         ct->hair_s  += hair*debit;
@@ -2486,39 +2491,39 @@ void cs_ctwr_bilanct
 #endif
 
     if (CS_ABS( ct->debit_e )> 1e-10 ){
-      ct->tair_e /= ct->debit_e ;
-      ct->xair_e /= ct->debit_e ;
+      ct->tair_e /= ct->debit_e;
+      ct->xair_e /= ct->debit_e;
     }
 
     if (CS_ABS( ct->debit_s )> 1e-10 ){
-      ct->tair_s /= ct->debit_s ;
-      ct->xair_s /= ct->debit_s ;
+      ct->tair_s /= ct->debit_s;
+      ct->xair_s /= ct->debit_s;
     }
 
 
-    fem_entree[ict]   = ct->fem_e ;
-    fem_sortie[ict]   = ct->fem_s ;
-    teau_entree[ict]  = ct->teau_e ;
-    teau_sortie[ict]  = ct->teau_s ;
-    heau_entree[ict]  = ct->heau_e ;
-    heau_sortie[ict]  = ct->heau_s ;
-    tair_entree[ict]  = ct->tair_e ;
-    tair_sortie[ict]  = ct->tair_s ;
-    xair_entree[ict]  = ct->xair_e ;
-    xair_sortie[ict]  = ct->xair_s ;
-    hair_entree[ict]  = ct->hair_e ;
-    hair_sortie[ict]  = ct->hair_s ;
-
-    ct->debit_e *= (ct->surface/ct->surface_in) ;
+    fem_entree[ict]   = ct->fem_e;
+    fem_sortie[ict]   = ct->fem_s;
+    teau_entree[ict]  = ct->teau_e;
+    teau_sortie[ict]  = ct->teau_s;
+    heau_entree[ict]  = ct->heau_e;
+    heau_sortie[ict]  = ct->heau_s;
+    tair_entree[ict]  = ct->tair_e;
+    tair_sortie[ict]  = ct->tair_s;
+    xair_entree[ict]  = ct->xair_e;
+    xair_sortie[ict]  = ct->xair_s;
+    hair_entree[ict]  = ct->hair_e;
+    hair_sortie[ict]  = ct->hair_s;
+
+    ct->debit_e *= (ct->surface/ct->surface_in);
     ct->debit_s *= (ct->surface/ct->surface_out);
 
-    debit_entree[ict] = ct->debit_e ;
-    debit_sortie[ict] = ct->debit_s ;
+    debit_entree[ict] = ct->debit_e;
+    debit_sortie[ict] = ct->debit_s;
 
 
 
     if (cs_glob_rank_id <= 0) {
-      length = strlen("bltctc.") + 3 ;
+      length = strlen("bltctc.") + 3;
       BFT_MALLOC(file_name, length, char);
       sprintf(file_name, "bltctc.%02d", ct->num);
 
@@ -2570,7 +2575,7 @@ cs_ctwr_post_init(cs_int_t  ct_id,
 
   /* Exit silently if associated writer is not available */
 
-  if (cs_post_writer_exists(writer_id) != CS_TRUE)
+  if (cs_post_writer_exists(writer_id) != true)
     return;
 
   /* Initialict post processing flag, and free previous arrays in
@@ -2583,7 +2588,7 @@ cs_ctwr_post_init(cs_int_t  ct_id,
   cs_post_add_existing_mesh(mesh_id,
                             ct->water_mesh,
                             0,
-                            CS_FALSE);
+                            false);
 
   cs_post_associate(mesh_id, writer_id);
 
@@ -2621,8 +2626,8 @@ cs_ctwr_post_function(cs_int_t   ct_id,
     cs_post_write_var(ct->post_mesh_id,
                       _("T water"),
                       1,
-                      CS_FALSE,
-                      CS_FALSE,
+                      false,
+                      false,
                       CS_POST_TYPE_cs_real_t,
                       nt_cur_abs,
                       t_cur_abs,
@@ -2633,13 +2638,13 @@ cs_ctwr_post_function(cs_int_t   ct_id,
     cs_post_write_var(ct->post_mesh_id,
                       _("Flux water"),
                       1,
-                      CS_FALSE,
-                       CS_FALSE,
+                      false,
+                      false,
                       CS_POST_TYPE_cs_real_t,
                       nt_cur_abs,
                       t_cur_abs,
                       ct->fem,
-                       NULL,
+                      NULL,
                       NULL);
 
   }
diff --git a/src/ctwr/cs_ctwr_air_props.c b/src/ctwr/cs_ctwr_air_props.c
index b8dc2e5..0787f6c 100644
--- a/src/ctwr/cs_ctwr_air_props.c
+++ b/src/ctwr/cs_ctwr_air_props.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
@@ -220,12 +220,13 @@ cs_ctwr_xsath(const cs_real_t  th)
     const cs_real_t  Ax = 8.2969;
     const cs_real_t  Ay = 4.76955;
     const cs_real_t  A0 = 0.78614;
-    a1 = 10.7954;
     const cs_real_t  A2 = 5.028;
     const cs_real_t  A3 = 0.000150475;
     const cs_real_t  A4 = 0.00042873;
     cs_real_t  tt,px,py,g1,g2,g3,g4;
 
+    a1 = 10.7954;
+
     tt = th/T0;
     px = Ax * tt;
     py = Ay * tt/(1. + tt);
@@ -357,13 +358,14 @@ cs_ctwr_dxsath(const cs_real_t  th)
     const cs_real_t  Ax = 8.2969;
     const cs_real_t  Ay = 4.76955;
     const cs_real_t  A0 = 0.78614;
-    a1 = 10.7954;
     const cs_real_t  A2 = 5.028;
     const cs_real_t  A3 = 0.000150475;
     const cs_real_t  A4 = 0.00042873;
     cs_real_t  tt, px, px10, py, py10, pspr, pvpr,
                g1, g1pr, g2, g2pr, g3, g3pr, g4, g4pr;
 
+    a1 = 10.7954;
+
     tt = th / T0 ;
     px = Ax * tt;
     px10 = pow( 10., px );
diff --git a/src/ctwr/cs_ctwr_f2c.f90 b/src/ctwr/cs_ctwr_f2c.f90
index 205b07e..db66d33 100644
--- a/src/ctwr/cs_ctwr_f2c.f90
+++ b/src/ctwr/cs_ctwr_f2c.f90
@@ -40,7 +40,7 @@ subroutine defct &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idimze           ! e  ! <-- ! dimension de la zone d'echange                 !
 ! nomze            ! a  ! <-- ! caracterisation de zone d'echange              !
@@ -66,7 +66,7 @@ subroutine defct &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
diff --git a/src/ctwr/cs_ctwr_halo.c b/src/ctwr/cs_ctwr_halo.c
index 003ee37..9c8213f 100644
--- a/src/ctwr/cs_ctwr_halo.c
+++ b/src/ctwr/cs_ctwr_halo.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/ctwr/cs_ctwr_mesh.c b/src/ctwr/cs_ctwr_mesh.c
index c621518..996534b 100644
--- a/src/ctwr/cs_ctwr_mesh.c
+++ b/src/ctwr/cs_ctwr_mesh.c
@@ -92,7 +92,7 @@ BEGIN_C_DECLS
  * Local Macro Definitions
  *============================================================================*/
 
-enum {X, Y, Z} ;
+enum {X, Y, Z};
 
 #define CS_LOC_PRODUIT_SCALAIRE(vect1, vect2) \
   (vect1[X] * vect2[X] + vect1[Y] * vect2[Y] + vect1[Z] * vect2[Z])
@@ -143,7 +143,7 @@ MPI_Status status;
 void CS_PROCF(geoct, GEOCT) (void)
 {
   /* construction du maillage eau*/
-  cs_ctwr_maille(cs_glob_mesh, cs_glob_mesh_quantities );
+  cs_ctwr_maille(cs_glob_mesh, cs_glob_mesh_quantities);
 
   /* chainage des ct*/
   cs_ctwr_stacking();
@@ -151,7 +151,6 @@ void CS_PROCF(geoct, GEOCT) (void)
   cs_ctwr_adeau(cs_glob_mesh, cs_glob_mesh_quantities);
   /* construction de l'interpolation  EAU -> AIR   */
   cs_ctwr_adair();
-
 }
 
 
@@ -232,10 +231,10 @@ _is_coplanar(const cs_real_t *coord,
   i2 = 0;
   min = 1000.0;
 
-  for(i = 0; i < 4 ; i++){
+  for (i = 0; i < 4; i++) {
     ind = 0;
-    for(ii = 0; ii < 4 ; ii++){
-      if(ii != i){
+    for (ii = 0; ii < 4; ii++) {
+      if (ii != i) {
         vectBase[0][ind] = mat[ii][1];
         vectBase[1][ind] = mat[ii][2];
         vectBase[2][ind] = mat[ii][3];
@@ -246,11 +245,11 @@ _is_coplanar(const cs_real_t *coord,
     det += pow(-1,i) * mat[i][0] * CS_LOC_PRODUIT_SCALAIRE(vectBase[2], tmpRes);
   }
 
-  if (CS_ABS(det) <= (0.000001*dh) ) {
+  if (CS_ABS(det) <= (0.000001*dh)) {
     /*2D*/
-    for(i=0; i< nbvoi ; i++){
-      for(ii=i+1; ii< nbvoi ; ii++){
-        for(iii=ii+1; iii< nbvoi ; iii++){
+    for (i=0; i< nbvoi; i++) {
+      for (ii=i+1; ii< nbvoi; ii++) {
+        for (iii=ii+1; iii< nbvoi; iii++) {
           numi   = nvoi[i]   + decF;
           numii  = nvoi[ii]  + decF;
           numiii = nvoi[iii] + decF;
@@ -261,9 +260,9 @@ _is_coplanar(const cs_real_t *coord,
           vectBase[1][1] = coord[3*numiii+1] - coord[3*numi+1];
           vectBase[1][2] = coord[3*numiii+2] - coord[3*numi+2];
           CS_PRODUIT_VECTORIEL(tmpRes, vectBase[0],vectBase[1]);
-          if(   (CS_LOC_MODULE(tmpRes) > (0.000001*dh))
-           && (CS_ABS(CS_LOC_PRODUIT_SCALAIRE(vectBase[0],vectBase[1]))< min)
-          ){
+          if (   (CS_LOC_MODULE(tmpRes) > (0.000001*dh))
+              && (CS_ABS(CS_LOC_PRODUIT_SCALAIRE(vectBase[0],
+                                                 vectBase[1])) < min)) {
             i0 = i;
             i1 = ii;
             i2 = iii;
@@ -280,7 +279,7 @@ _is_coplanar(const cs_real_t *coord,
     return 3;
   }
 
-  if (i0 == 0 && i1 == 0 && i2 == 0){
+  if (i0 == 0 && i1 == 0 && i2 == 0) {
     /*1D*/
     vectBase[0][0] = coord[3*(nvoi[1]+ decF)  ] - coord[3*(nvoi[0]+ decF)  ];
     vectBase[0][1] = coord[3*(nvoi[1]+ decF)+1] - coord[3*(nvoi[0]+ decF)+1];
@@ -295,12 +294,12 @@ _is_coplanar(const cs_real_t *coord,
     vectBase[1][1] = coord[3*(nvoi[i2]+ decF)+1] - coord[3*(nvoi[i0]+ decF)+1];
     vectBase[1][2] = coord[3*(nvoi[i2]+ decF)+2] - coord[3*(nvoi[i0]+ decF)+2];
     CS_PRODUIT_VECTORIEL(tmpRes, vectBase[0],vectBase[1]);
-    CS_PRODUIT_VECTORIEL(vectBase[1] ,tmpRes,vectBase[0]);
+    CS_PRODUIT_VECTORIEL(vectBase[1], tmpRes,vectBase[0]);
     norme1= CS_LOC_MODULE(vectBase[0]);
     norme2= CS_LOC_MODULE(vectBase[1]);
-    vectBase[0][0] /= norme1 ; vectBase[1][0] /= norme2;
-    vectBase[0][1] /= norme1 ; vectBase[1][1] /= norme2;
-    vectBase[0][2] /= norme1 ; vectBase[1][2] /= norme2;
+    vectBase[0][0] /= norme1; vectBase[1][0] /= norme2;
+    vectBase[0][1] /= norme1; vectBase[1][1] /= norme2;
+    vectBase[0][2] /= norme1; vectBase[1][2] /= norme2;
     vectBase[2][0] = 0.0; vectBase[2][1] = 0.0; vectBase[2][2] = 0.0;
     return 2;
   }
@@ -321,34 +320,34 @@ _invmat(cs_real_t mat[4][4],
 
   err=1;
 
-  for(i = 0; i < idim + 1; i++)
-    for(j = 0; j < idim + 1; j++)
+  for (i = 0; i < idim + 1; i++)
+    for (j = 0; j < idim + 1; j++)
       matInv[i][j] = mat[i][j];
 
 
   i = 0;
-  while (err == 1 && (i < (idim+1))){
+  while (err == 1 && (i < (idim+1))) {
 
-    if (CS_ABS(matInv[i][i]) > 1.e-15){
+    if (CS_ABS(matInv[i][i]) > 1.e-15) {
 
       aux = 1.0/matInv[i][i];
 
-      for(j = 0; j < idim + 1; j++)
+      for (j = 0; j < idim + 1; j++)
          matInv[i][j] *=  aux;
 
       matInv[i][i]= aux;
 
-      for(k = 0; k < i; k++){
+      for (k = 0; k < i; k++) {
         aux = matInv[k][i];
-        for(j = 0; j < idim + 1; j++){
+        for (j = 0; j < idim + 1; j++) {
            matInv[k][j] -= aux * matInv[i][j];
         }
         matInv[k][i] = -aux *matInv[i][i];
       }
 
-      for(k = i + 1; k < idim + 1; k++){
+      for (k = i + 1; k < idim + 1; k++) {
         aux = matInv[k][i];
-        for(j = 0; j < idim + 1; j++){
+        for (j = 0; j < idim + 1; j++) {
            matInv[k][j] -= aux * matInv[i][j];
         }
         matInv[k][i] = -aux *matInv[i][i];
@@ -401,7 +400,7 @@ _weighting(const cs_real_t  dx,
     }
   }
 
-  return poids ;
+  return poids;
 }
 
 /*----------------------------------------------------------------------------
@@ -419,24 +418,24 @@ _dot_product_ng(const cs_int_t   ifac,
   cs_int_t idim;
   cs_real_t aux1,aux2;
 
-  n_sortant[2] = 0.0 ;
+  n_sortant[2] = 0.0;
   g_uni[2] = 0.0;
 
   aux1 = CS_LOC_MODULE(gravite);
 
-  for (idim = 0 ; idim < 3 ; idim++) {
+  for (idim = 0; idim < 3; idim++) {
     n_sortant[idim] = direction * surf_f[ifac*3+idim];
     g_uni[idim]= gravite[idim];
   }
 
   aux2 = CS_LOC_MODULE(n_sortant);
-  for (idim = 0 ; idim < dim ; idim++) {
+  for (idim = 0; idim < dim; idim++) {
     n_sortant[idim] /= aux2;
-    g_uni[idim] /= aux1 ;
+    g_uni[idim] /= aux1;
 
   }
 
-  return CS_LOC_PRODUIT_SCALAIRE(n_sortant , g_uni );
+  return CS_LOC_PRODUIT_SCALAIRE(n_sortant, g_uni);
 
 }
 
@@ -452,10 +451,10 @@ _search_height(cs_ctwr_zone_t   *ct,
                cs_real_t        *hmax)
 {
   cs_int_t    i, ifac, nb,nb_dist, axe, idx, ii, jj;
-  cs_real_t   *lst_xyz_sup ; /* coord des sommets de la face Sup */
-  cs_real_t   *lst_xyz_inf ; /* coord des sommets de la face Inf*/
-  cs_real_t   *lst_xyz_fi ;  /* coord des sommets proj de la face Inf*/
-  cs_real_t   *lst_xyz_fs ;  /* coord des sommets proj de la face Inf*/
+  cs_real_t   *lst_xyz_sup; /* coord des sommets de la face Sup */
+  cs_real_t   *lst_xyz_inf; /* coord des sommets de la face Inf*/
+  cs_real_t   *lst_xyz_fi;  /* coord des sommets proj de la face Inf*/
+  cs_real_t   *lst_xyz_fs;  /* coord des sommets proj de la face Inf*/
   cs_real_t   *hmin_dist;
   const fvm_coord_t *lst_xyz_dist = NULL;
 
@@ -465,26 +464,26 @@ _search_height(cs_ctwr_zone_t   *ct,
   cs_int_t  *faces_vtx_idx   = NULL;
   cs_int_t  *faces_vtx_lst   = NULL;
 
-  const double tolerance = 0.1  ;
+  const double tolerance = 0.1;
   fvm_nodal_t *fs_tmp_mesh = NULL;
   fvm_nodal_t *fi_tmp_mesh = NULL;
 
 
 
   double coeff[3], v_aux[3], vertex_coords[2];
-  double  v_x, v_y ;
+  double  v_x, v_y;
   double  v_f_x = 0., v_f_y = 0., v_f_z = 0.;
-  double a[3][3] = {{0., 0., 0.} ,
-                    {0., 0., 0.} ,
+  double a[3][3] = {{0., 0., 0.},
+                    {0., 0., 0.},
                     {0., 0., 0.} };
 
   double b_x[3] = {0., 0., 0. };
   double b_y[3] = {0., 0., 0. };
   double b_z[3] = {0., 0., 0. };
 
-  double matrice[6] = {0., 0., 0. ,0., 0., 0. };
-
+  double matrice[6] = {0., 0., 0., 0., 0., 0. };
 
+  fvm_locator_t   *locator = NULL;
 
   nb = (cs_int_t) fvm_nodal_get_n_entities(ct->face_sup_mesh, 0);
   BFT_MALLOC(lst_xyz_sup, nb*3, fvm_coord_t);
@@ -503,10 +502,10 @@ _search_height(cs_ctwr_zone_t   *ct,
 
   aux = 0.;
 
-  for (i = 0 ; i < 3 ; i++)
-    if(CS_ABS(gravite[i]) > aux) {
+  for (i = 0; i < 3; i++)
+    if (CS_ABS(gravite[i]) > aux) {
       axe = i;
-      aux = CS_ABS (gravite [ i ]);
+      aux = CS_ABS (gravite [i]);
     }
 
   if (axe == 0) {
@@ -534,14 +533,12 @@ _search_height(cs_ctwr_zone_t   *ct,
 
   nb = (cs_int_t) fvm_nodal_get_n_entities(fi_tmp_mesh, 0);
 
-  BFT_MALLOC(lst_xyz_fi , nb*2 , fvm_coord_t );
+  BFT_MALLOC(lst_xyz_fi, nb*2, fvm_coord_t);
 
   fvm_nodal_get_vertex_coords(fi_tmp_mesh, FVM_INTERLACE, lst_xyz_fi);
 
   /* Create locator on the proj surf  */
 
-  fvm_locator_t   *locator = NULL;
-
 #if defined(FVM_HAVE_MPI)
   locator = fvm_locator_create(tolerance,
                                cs_glob_mpi_comm,
@@ -562,45 +559,45 @@ _search_height(cs_ctwr_zone_t   *ct,
                         NULL,
                         lst_xyz_fs);
 
-  nb_dist = fvm_locator_get_n_dist_points(locator );
+  nb_dist = fvm_locator_get_n_dist_points(locator);
 
   /* Construction de la connectivite Face->sommet du projete  */
 
-  BFT_MALLOC(hmin_dist ,  nb_dist, fvm_coord_t );
+  BFT_MALLOC(hmin_dist, nb_dist, fvm_coord_t);
 
-  cs_reverse_vtx_faces_connect(fi_tmp_mesh        ,
-                                &(faces_vtx_idx ) ,
-                                &(faces_vtx_lst ) );
+  cs_reverse_vtx_faces_connect(fi_tmp_mesh,
+                                &(faces_vtx_idx),
+                                &(faces_vtx_lst));
 
-  location_fac = fvm_locator_get_dist_locations(locator );
-  lst_xyz_dist = fvm_locator_get_dist_coords(   locator );
+  location_fac = fvm_locator_get_dist_locations(locator);
+  lst_xyz_dist = fvm_locator_get_dist_coords(  locator);
 
-  for (i = 0 ; i < nb_dist ; i++) {
+  for (i = 0; i < nb_dist; i++) {
 
-    ifac = location_fac[ i ] - 1;
+    ifac = location_fac[i] - 1;
 
-    vertex_coords [0] = lst_xyz_dist [ i*2     ];
-    vertex_coords [1] = lst_xyz_dist [ i*2 + 1 ];
+    vertex_coords [0] = lst_xyz_dist [i*2    ];
+    vertex_coords [1] = lst_xyz_dist [i*2 + 1];
 
-    for(ii = 0; ii < 3 ; ii++){
-      b_x[ ii ] = 0. ;
-      b_y[ ii ] = 0. ;
-      b_z[ ii ] = 0. ;
-      for(jj = 0; jj < 3 ; jj++)
-        a[ ii ][ jj ] = 0.;
+    for (ii = 0; ii < 3; ii++) {
+      b_x[ii] = 0.;
+      b_y[ii] = 0.;
+      b_z[ii] = 0.;
+      for (jj = 0; jj < 3; jj++)
+        a[ii][jj] = 0.;
 
     }
 
 
-    for (idx = faces_vtx_idx[ ifac    ];
-         idx < faces_vtx_idx[ ifac +1 ]; idx++) {
+    for (idx = faces_vtx_idx[ifac   ];
+         idx < faces_vtx_idx[ifac +1]; idx++) {
 
-      v_x = lst_xyz_fi[faces_vtx_lst[ idx ]* 2     ];
-      v_y = lst_xyz_fi[faces_vtx_lst[ idx ]* 2 + 1 ];
+      v_x = lst_xyz_fi[faces_vtx_lst[idx]* 2    ];
+      v_y = lst_xyz_fi[faces_vtx_lst[idx]* 2 + 1];
 
-      v_f_x = lst_xyz_inf[faces_vtx_lst[ idx ]* 3     ];
-      v_f_y = lst_xyz_inf[faces_vtx_lst[ idx ]* 3 + 1 ];
-      v_f_z = lst_xyz_inf[faces_vtx_lst[ idx ]* 3 + 2 ];
+      v_f_x = lst_xyz_inf[faces_vtx_lst[idx]* 3    ];
+      v_f_y = lst_xyz_inf[faces_vtx_lst[idx]* 3 + 1];
+      v_f_z = lst_xyz_inf[faces_vtx_lst[idx]* 3 + 2];
 
       a[0][0] += v_x * v_x;
       a[0][1] += v_x * v_y;
@@ -633,7 +630,7 @@ _search_height(cs_ctwr_zone_t   *ct,
     a[2][0] = a[0][2];
     a[2][1] = a[1][2];
 
-    if (_inverse_3x3(a, b_x, coeff) == 0 ) {
+    if (_inverse_3x3(a, b_x, coeff) == 0) {
 
       v_aux[0] = -(  coeff[0]*vertex_coords[0]
                    + coeff[1]*vertex_coords[1]
@@ -660,7 +657,7 @@ _search_height(cs_ctwr_zone_t   *ct,
     else
       v_aux[2] = -v_f_z;
 
-    hmin_dist[i] =  CS_LOC_PRODUIT_SCALAIRE(v_aux , gravite)
+    hmin_dist[i] =  CS_LOC_PRODUIT_SCALAIRE(v_aux, gravite)
                   / CS_LOC_MODULE(gravite);
   }
 
@@ -668,13 +665,13 @@ _search_height(cs_ctwr_zone_t   *ct,
   fvm_locator_exchange_point_var(locator,
                                  hmin_dist, hmin, NULL, sizeof(cs_real_t),1,0);
 
-  for (i = 0 ; i < nb ; i++) {
+  for (i = 0; i < nb; i++) {
 
       v_aux[0] = -lst_xyz_sup[i*3    ];/* Opposite Vector to g */
       v_aux[1] = -lst_xyz_sup[i*3 + 1];
       v_aux[2] = -lst_xyz_sup[i*3 + 2];
 
-      aux = CS_LOC_PRODUIT_SCALAIRE(v_aux , gravite);
+      aux = CS_LOC_PRODUIT_SCALAIRE(v_aux, gravite);
       hmax[i] = aux / CS_LOC_MODULE(gravite); /* project on "g" axis */
 
   }
@@ -686,8 +683,8 @@ _search_height(cs_ctwr_zone_t   *ct,
    BFT_FREE(hmin_dist);
 
    locator = fvm_locator_destroy(locator);
-   fs_tmp_mesh = fvm_nodal_destroy(fs_tmp_mesh );
-   fi_tmp_mesh = fvm_nodal_destroy(fi_tmp_mesh );
+   fs_tmp_mesh = fvm_nodal_destroy(fs_tmp_mesh);
+   fi_tmp_mesh = fvm_nodal_destroy(fi_tmp_mesh);
 }
 
 
@@ -696,46 +693,40 @@ _search_height(cs_ctwr_zone_t   *ct,
  * Construction du maillage eau
  *----------------------------------------------------------------------------*/
 
-void cs_ctwr_maille
-(
-  const cs_mesh_t       *mesh,             /* <-- structure maillage associ�e */
-  const cs_mesh_quantities_t *mesh_quantities   /* <-- grandeurs du maillage  */
-)
+void cs_ctwr_maille(const cs_mesh_t             *mesh,
+                    const cs_mesh_quantities_t  *mesh_quantities)
 {
-
-
   cs_int_t   icel_1, icel_2, ii, length, nb, rank,
              dist_rank, res_loc, res_dist;
   cs_int_t   ifac, ict, icpt, icpti, icptl, icptla, icptfac,
              iaux, i, j;
-  cs_real_t  aux       , gravite[3], v_aux[3] , alpha ;
+  cs_real_t  aux, gravite[3], v_aux[3], alpha;
   fvm_coord_t *extrusion_vectors, *lst_xyz_cel, *lst_xyz;
   fvm_lnum_t  *lst_par_fac_sup;
   fvm_gnum_t  *fsup_gb_vt_num = NULL;
-  cs_real_t   *hmin_vect ;
-  cs_real_t   *hmax_vect ;
-
-  char  *mesh_name       = NULL ;
-  char  *export_name     = NULL ;
-  const double tolerance = 0.1  ;
+  cs_real_t   *hmin_vect;
+  cs_real_t   *hmax_vect;
 
+  char  *mesh_name       = NULL;
+  char  *export_name     = NULL;
+  const double tolerance = 0.1;
 
-  fvm_gnum_t   n_vertices;
+  fvm_lnum_t   n_vertices;
 
-  cs_int_t   *face_sup;      /* liste des faces internes superieures de la ct */
-                             /* de taille  (nbfac_sct )                       */
-  cs_int_t   *fbr_sup;       /* liste des faces de bord superieures de la ct  */
-                             /* de taille  (nbfbr_sct)                       */
-  cs_int_t   *face_inf;      /* liste des faces internes inferieures de la ct */
-                             /* de taille  (nbfac_ict)                        */
-  cs_int_t   *fbr_inf;       /* liste des faces de bord  inferieures de la ct */
-                             /* de taille  (nbfac_ict)                        */
-  cs_int_t   *face_lat;      /* liste des faces internes laterales de la ct   */
-                             /* de taille  (nbfac_lct )                       */
-  cs_int_t   *fbr_lat;       /* liste des faces de bord laterales de la ct    */
-                             /* de taille  (nbfbr_lct)                       */
-  cs_int_t   *face_ct;       /* liste des faces interne de la ct              */
-                             /* de taille  (nbfac_ct)                        */
+  cs_int_t   *face_sup;      /* liste des faces internes superieures de la ct
+                                de taille  (nbfac_sct) */
+  cs_int_t   *fbr_sup;       /* liste des faces de bord superieures de la ct
+                                de taille  (nbfbr_sct) */
+  cs_int_t   *face_inf;      /* liste des faces internes inferieures de la ct
+                                de taille  (nbfac_ict) */
+  cs_int_t   *fbr_inf;       /* liste des faces de bord  inferieures de la ct
+                                de taille  (nbfac_ict) */
+  cs_int_t   *face_lat;      /* liste des faces internes laterales de la ct
+                                de taille  (nbfac_lct) */
+  cs_int_t   *fbr_lat;       /* liste des faces de bord laterales de la ct
+                                de taille  (nbfbr_lct) */
+  cs_int_t   *face_ct;       /* liste des faces interne de la ct
+                                de taille  (nbfac_ct) */
 
 
   const cs_int_t  *i_face_cells  = mesh->i_face_cells;
@@ -759,7 +750,7 @@ void cs_ctwr_maille
   /*--------------------------------------------*/
   /* List of air nodes for each Exchange Area   */
   /*--------------------------------------------*/
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
 
     icpt = 0;
     ct = cs_glob_ct_tab[ict];
@@ -772,7 +763,7 @@ void cs_ctwr_maille
                                                    ct->nbevct,
                                                    ct->ze_cell_list);
 
-    BFT_MALLOC(ct->mark_ze,mesh->n_cells ,cs_int_t );
+    BFT_MALLOC(ct->mark_ze,mesh->n_cells, cs_int_t);
 
     /*----------------------------------------------------------*
      * Begin identification of air nodes for each Exchange Area *
@@ -798,29 +789,29 @@ void cs_ctwr_maille
    * des zones d'echanges et du nombre de faces superieures *
    * et inferieures                                         *
    *--------------------------------------------------------*/
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
     ct = cs_glob_ct_tab[ict];
     /* Contribution faces internes */
-    for (ifac = 0 ; ifac < mesh->n_i_faces ; ifac++) {
+    for (ifac = 0; ifac < mesh->n_i_faces; ifac++) {
       assert((ifac * 2 + 1) < (2*mesh->n_i_faces));
       icel_1 = i_face_cells[ifac * 2]     - 1;/* indice de la cellule 1 */
       icel_2 = i_face_cells[ifac * 2 + 1] - 1;/* indice  de la cellule 2 */
       /* Comparaison  des couleurs des cellules 1 et 2 */
-      if((ct->mark_ze[icel_1] == 1) ||
+      if ((ct->mark_ze[icel_1] == 1) ||
           (ct->mark_ze[icel_2] == 1)) {
         if  (ct->mark_ze[icel_1] != ct->mark_ze[icel_2]) {
           if (ct->mark_ze[icel_1] == 1) {
-            aux = _dot_product_ng(ifac ,ct->idimct, i_face_normal, gravite, 1);
+            aux = _dot_product_ng(ifac, ct->idimct, i_face_normal, gravite, 1);
           }
           if (ct->mark_ze[icel_2] == 1) {
-            aux = _dot_product_ng(ifac ,ct->idimct, i_face_normal, gravite, -1);
+            aux = _dot_product_ng(ifac, ct->idimct, i_face_normal, gravite, -1);
           }
 
-          if (aux < (-alpha) ){
+          if (aux < (-alpha)) {
             ct->nnpsct++;
             ct->nbfac_sct++;
           }else{
-            if (aux > alpha ){
+            if (aux > alpha) {
               ct->nbfac_ict++;
             }else{
               ct->nbfac_lct++;
@@ -834,17 +825,17 @@ void cs_ctwr_maille
     }  /* fin contribution faces internes */
 
     /* Contribution faces externes */
-    for (ifac = 0 ; ifac < mesh->n_b_faces ; ifac++) {
+    for (ifac = 0; ifac < mesh->n_b_faces; ifac++) {
       icel_1 = b_face_cells[ifac] - 1; /* indice de la cellule  */
       if (ct->mark_ze[icel_1] == 1) {
 
         aux = _dot_product_ng(ifac,ct->idimct, b_face_normal, gravite, 1);
 
-        if (aux < (-alpha) ){
+        if (aux < (-alpha)) {
           ct->nnpsct++;
           ct->nbfbr_sct++;
         }else{
-          if (aux > alpha  ){
+          if (aux > alpha) {
             ct->nbfbr_ict++;
           }else{
             ct->nbfbr_lct++;
@@ -856,13 +847,13 @@ void cs_ctwr_maille
 
     /* allocation memoire pour la liste des faces superieures et inferieures
     * des ct */
-    BFT_MALLOC(face_sup,ct->nbfac_sct ,cs_int_t );
-    BFT_MALLOC(face_inf,ct->nbfac_ict ,cs_int_t );
-    BFT_MALLOC(face_lat,ct->nbfac_lct ,cs_int_t );
-    BFT_MALLOC(fbr_sup ,ct->nbfbr_sct ,cs_int_t );
-    BFT_MALLOC(fbr_inf ,ct->nbfbr_ict ,cs_int_t );
-    BFT_MALLOC(fbr_lat ,ct->nbfbr_lct ,cs_int_t );
-    BFT_MALLOC(face_ct ,ct->nbfac_ct  ,cs_int_t );
+    BFT_MALLOC(face_sup,ct->nbfac_sct, cs_int_t);
+    BFT_MALLOC(face_inf,ct->nbfac_ict, cs_int_t);
+    BFT_MALLOC(face_lat,ct->nbfac_lct, cs_int_t);
+    BFT_MALLOC(fbr_sup, ct->nbfbr_sct, cs_int_t);
+    BFT_MALLOC(fbr_inf, ct->nbfbr_ict, cs_int_t);
+    BFT_MALLOC(fbr_lat, ct->nbfbr_lct, cs_int_t);
+    BFT_MALLOC(face_ct, ct->nbfac_ct, cs_int_t);
 
 
   /* --------------------------------------------------------*
@@ -878,32 +869,32 @@ void cs_ctwr_maille
    *-----------------------------------------------------------------*/
 
     /* Contribution faces internes */
-    icpt   = 0 ; /*indice tableau des faces  sup */
-    icpti  = 0 ; /*indice tableau des faces  inf */
-    icptla = 0 ; /*indice tableau des faces  laterales */
-    icptl  = 0 ; /*indice tableau des noeuds sup ct */
-    icptfac  = 0 ; /*indice tableau des noeuds sup ct */
+    icpt   = 0; /*indice tableau des faces  sup */
+    icpti  = 0; /*indice tableau des faces  inf */
+    icptla = 0; /*indice tableau des faces  laterales */
+    icptl  = 0; /*indice tableau des noeuds sup ct */
+    icptfac  = 0; /*indice tableau des noeuds sup ct */
     /* Boucle sur les faces internes du domaine */
-    for (ifac = 0 ; ifac < mesh->n_i_faces ; ifac++) {
+    for (ifac = 0; ifac < mesh->n_i_faces; ifac++) {
       icel_1 = i_face_cells[ifac * 2]     - 1; /* indice de la cellule 1 */
       icel_2 = i_face_cells[ifac * 2 + 1] - 1; /* indice  de la cellule 2 */
       /* Comparaison  couleur de la ct et couleur des cellules 1 et 2 */
-      if((ct->mark_ze[icel_1] == 1) ||
+      if ((ct->mark_ze[icel_1] == 1) ||
           (ct->mark_ze[icel_2] ==1)) {
         if  (ct->mark_ze[icel_1] != ct->mark_ze[icel_2]) {
           if (ct->mark_ze[icel_1] ==1) {
-            aux = _dot_product_ng(ifac ,ct->idimct, i_face_normal, gravite, 1);
+            aux = _dot_product_ng(ifac, ct->idimct, i_face_normal, gravite, 1);
           }
           if (ct->mark_ze[icel_2] == 1) {
-            aux = _dot_product_ng(ifac ,ct->idimct, i_face_normal, gravite, -1);
+            aux = _dot_product_ng(ifac, ct->idimct, i_face_normal, gravite, -1);
           }
 
-          if (aux < (-alpha) ){
+          if (aux < (-alpha)) {
             /*ajout d'une face sup de la ct*/
             face_sup[icpt] = ifac + 1;
             icpt ++;
           }else{
-            if (aux > alpha ){
+            if (aux > alpha) {
             /*ajout d'un face inf de la ct*/
             face_inf[icpti]  = ifac + 1;
             icpti ++;
@@ -923,25 +914,25 @@ void cs_ctwr_maille
 
     /* Contribution faces de bords */
     /* initialisation des indices */
-    icpt   = 0 ; /*indice tableau des faces  sup */
-    icpti  = 0 ; /*indice tableau des faces  inf */
-    icptla = 0 ; /*indice tableau des faces  laterales */
+    icpt   = 0; /*indice tableau des faces  sup */
+    icpti  = 0; /*indice tableau des faces  inf */
+    icptla = 0; /*indice tableau des faces  laterales */
 
 
 
-    for (ifac = 0 ; ifac < mesh->n_b_faces ; ifac++) {
+    for (ifac = 0; ifac < mesh->n_b_faces; ifac++) {
 
       icel_1 = b_face_cells[ifac] - 1;/* indice de la cellule  */
-      if ( ct->mark_ze[icel_1]== 1 ) {
+      if (ct->mark_ze[icel_1]== 1) {
 
         aux = _dot_product_ng(ifac, ct->idimct, b_face_normal, gravite, 1);
 
-        if (aux < (-alpha) ){
+        if (aux < (-alpha)) {
           /* ajout d'une face sup de la ct */
           fbr_sup[icpt]= ifac + 1;
           icpt ++;
         }else{
-          if (aux > alpha ){
+          if (aux > alpha) {
             /*ajout d'un face inf de la ct*/
             fbr_inf[icpti]= ifac + 1;
             icpti ++;
@@ -955,7 +946,7 @@ void cs_ctwr_maille
 
 
     /*---------------------------------------------------------*
-    * Creation des maillages surfacique en connectivit� nodale*
+    * Creation des maillages surfacique en connectivite nodale*
     *---------------------------------------------------------*/
 
     /* mesh for superiors faces */
@@ -1028,7 +1019,7 @@ void cs_ctwr_maille
 
 
     /*--------------------------------------------------------------*
-    *  Fin creation des maillages surfacique en connectivit� nodale*
+    *  Fin creation des maillages surfacique en connectivite nodale*
     *--------------------------------------------------------------*/
 
     /*--------------------------------------------------------------*
@@ -1040,19 +1031,19 @@ void cs_ctwr_maille
 
       nb   = cs_glob_n_ranks;
       rank = cs_glob_rank_id;
-      BFT_MALLOC(ct->cs_array_rank, nb, cs_int_t );
+      BFT_MALLOC(ct->cs_array_rank, nb, cs_int_t);
 
 
-      ct->cs_array_rank[ rank ] = res_loc = ct->nbevct;
+      ct->cs_array_rank[rank] = res_loc = ct->nbevct;
 
 
-      for(dist_rank = 0; dist_rank <  nb; dist_rank++ )
-        if(dist_rank != rank ){
-          MPI_Sendrecv(&res_loc,  1, CS_MPI_INT, dist_rank, CS_CT_MPI_TAG,
+      for (dist_rank = 0; dist_rank <  nb; dist_rank++)
+        if (dist_rank != rank) {
+          MPI_Sendrecv(&res_loc, 1, CS_MPI_INT, dist_rank, CS_CT_MPI_TAG,
                         &res_dist, 1, CS_MPI_INT, dist_rank, CS_CT_MPI_TAG,
                         cs_glob_mpi_comm, &status);
 
-          ct->cs_array_rank[ dist_rank ] = res_dist;
+          ct->cs_array_rank[dist_rank] = res_dist;
 
         }
     }
@@ -1070,46 +1061,41 @@ void cs_ctwr_maille
     nb = (cs_int_t) fvm_nodal_get_n_entities(ct->face_sup_mesh, 0);
 
 
-    BFT_MALLOC(hmax_vect , nb , fvm_coord_t );
-    BFT_MALLOC(hmin_vect , nb , fvm_coord_t );
-
-    _search_height(ct          ,
-                     gravite    ,
-                     hmin_vect  ,
-                     hmax_vect  );
+    BFT_MALLOC(hmax_vect, nb, fvm_coord_t);
+    BFT_MALLOC(hmin_vect, nb, fvm_coord_t);
 
+    _search_height(ct,
+                   gravite,
+                   hmin_vect,
+                   hmax_vect);
 
-    for (i = 0 ; i < nb ; i++) {
+    for (i = 0; i < nb; i++) {
 
-        aux = hmax_vect[ i ];
-        if (aux >= ct->hmax )
-          ct->hmax = aux;
+      aux = hmax_vect[i];
+      if (aux >= ct->hmax)
+        ct->hmax = aux;
 
-        aux = hmin_vect[ i ];
-        if (aux <= ct->hmin )
-          ct->hmin = aux;
+      aux = hmin_vect[i];
+      if (aux <= ct->hmin)
+        ct->hmin = aux;
     }
 
     /* loop on the sup faces for surface_in and surface_out */
-    BFT_MALLOC(lst_par_fac_sup , ct->nnpsct , fvm_lnum_t );
+    BFT_MALLOC(lst_par_fac_sup, ct->nnpsct, fvm_lnum_t);
 
     fvm_nodal_get_parent_num(ct->face_sup_mesh, 2, lst_par_fac_sup);
 
-    BFT_MALLOC(ct->surf_fac_sup , ct->nnpsct , cs_real_t );
+    BFT_MALLOC(ct->surf_fac_sup, ct->nnpsct, cs_real_t);
 
-    for (ifac = 0 ; ifac < ct->nnpsct ; ifac++) {
-      if(ifac< ct->nbfbr_sct ){
-        for (ii = 0 ; ii < 3 ; ii++){
-          v_aux[ii] = b_face_normal[3 * (cs_int_t) (lst_par_fac_sup[ ifac ] -1)
-                               + ii ];
-        }
+    for (ifac = 0; ifac < ct->nnpsct; ifac++) {
+      if (ifac< ct->nbfbr_sct) {
+        for (ii = 0; ii < 3; ii++)
+          v_aux[ii] = b_face_normal[3 * (lst_par_fac_sup[ifac] -1) + ii];
       }
       else{
-        for (ii = 0 ; ii < 3 ; ii++){
-          v_aux[ii] = i_face_normal[ 3 * (cs_int_t)
-                                (lst_par_fac_sup[ifac] - mesh->n_b_faces - 1)
-                                + ii ];
-          }
+        for (ii = 0; ii < 3; ii++)
+          v_aux[ii] = i_face_normal[3 * (  lst_par_fac_sup[ifac]
+                                         - mesh->n_b_faces - 1) + ii];
       }
       aux = CS_LOC_MODULE(v_aux);
       ct->surface_in += aux;
@@ -1126,25 +1112,25 @@ void cs_ctwr_maille
       nb   = cs_glob_n_ranks;
       rank = cs_glob_rank_id;
 
-      // TODO : changer ce bordel !!!!!!!!!!!!!!!!!
-      // sans doute equivalent a MPI_Allreduce(ct-hmax, ..., MPI_MAX)
+      /* TODO : changer ce bordel !!!!!!!!!!!!!!!!!
+         sans doute equivalent a MPI_Allreduce(ct-hmax, ..., MPI_MAX) */
 
-      if(ct->cs_array_rank[ rank ] != 0){
-        for(dist_rank = 0; dist_rank < nb; dist_rank++){
-          if(dist_rank != rank ){
-            if(ct->cs_array_rank [ dist_rank ] != 0 ){
+      if (ct->cs_array_rank[rank] != 0) {
+        for (dist_rank = 0; dist_rank < nb; dist_rank++) {
+          if (dist_rank != rank) {
+            if (ct->cs_array_rank [dist_rank] != 0) {
 
               MPI_Sendrecv(&ct->hmax, 1, CS_MPI_REAL, dist_rank, CS_CT_MPI_TAG,
                            &aux, 1, CS_MPI_REAL, dist_rank, CS_CT_MPI_TAG,
                            cs_glob_mpi_comm, &status);
 
-              if ( aux > ct->hmax ) ct->hmax = aux;
+              if (aux > ct->hmax) ct->hmax = aux;
 
               MPI_Sendrecv(&ct->hmin, 1, CS_MPI_REAL, dist_rank, CS_CT_MPI_TAG,
-                           &aux  , 1, CS_MPI_REAL, dist_rank, CS_CT_MPI_TAG,
-                         cs_glob_mpi_comm, &status);
+                           &aux, 1, CS_MPI_REAL, dist_rank, CS_CT_MPI_TAG,
+                           cs_glob_mpi_comm, &status);
 
-              if ( aux < ct->hmin ) ct->hmin = aux;
+              if (aux < ct->hmin) ct->hmin = aux;
 
             }
           }
@@ -1173,13 +1159,13 @@ void cs_ctwr_maille
     BFT_MALLOC(extrusion_vectors, (nb*3), fvm_coord_t);
 
 
-    for (i=0 ; i < nb ; i++){
+    for (i=0; i < nb; i++) {
 
-      aux =CS_ABS(hmax_vect[ i ] -  hmin_vect[ i ])/CS_LOC_MODULE(gravite);
+      aux =CS_ABS(hmax_vect[i] -  hmin_vect[i])/CS_LOC_MODULE(gravite);
 
-      extrusion_vectors[ i*3 ]    =  gravite[0] * aux;
-      extrusion_vectors[ i*3 + 1] =  gravite[1] * aux;
-      extrusion_vectors[ i*3 + 2] =  gravite[2] * aux;
+      extrusion_vectors[i*3]     =  gravite[0] * aux;
+      extrusion_vectors[i*3 + 1] =  gravite[1] * aux;
+      extrusion_vectors[i*3 + 2] =  gravite[2] * aux;
     }
 
 
@@ -1209,12 +1195,12 @@ void cs_ctwr_maille
 
     /* Creation of the cs_mesh_halo_t structure. */
 
-    bft_printf(_(" Cr�ation des halos\n"));
+    bft_printf(_(" Creating halos\n"));
     bft_printf_flush();
 
     ct->water_halo = cs_halo_create(interface_set);
 
-    bft_printf(_(" D�finition des halos\n"));
+    bft_printf(_(" Defining halos\n"));
     bft_printf_flush();
 
     cs_ctwr_halo_define(ct, interface_set);
@@ -1232,7 +1218,7 @@ void cs_ctwr_maille
     ct->locat_water_air = fvm_locator_create(tolerance);
 #endif
 
-    BFT_MALLOC(lst_xyz_cel , ct->nbevct*3, fvm_coord_t);
+    BFT_MALLOC(lst_xyz_cel, ct->nbevct*3, fvm_coord_t);
 
     fvm_nodal_get_element_centers(ct->cell_mesh, FVM_INTERLACE, 3, lst_xyz_cel);
 
@@ -1254,11 +1240,10 @@ void cs_ctwr_maille
     ct->locat_air_water = fvm_locator_create(tolerance);
 #endif
 
-    BFT_MALLOC(lst_xyz, ct->nnpsct*ct->nelect*3, fvm_coord_t );
+    BFT_MALLOC(lst_xyz, ct->nnpsct*ct->nelect*3, fvm_coord_t);
 
     fvm_nodal_get_element_centers(ct->water_mesh, FVM_INTERLACE, 3, lst_xyz);
 
-
     fvm_locator_set_nodal(ct->locat_air_water,
                           ct->cell_mesh,
                           1,
@@ -1267,20 +1252,19 @@ void cs_ctwr_maille
                           NULL,
                           lst_xyz);
 
-
-    BFT_FREE(mesh_name       );
-    BFT_FREE(export_name     );
-    BFT_FREE(face_sup        );
-    BFT_FREE(face_inf        );
-    BFT_FREE(face_lat        );
-    BFT_FREE(fbr_sup         );
-    BFT_FREE(lst_par_fac_sup );
-    BFT_FREE(fbr_inf         );
-    BFT_FREE(fbr_lat         );
-    BFT_FREE(face_ct         );
-    BFT_FREE(lst_xyz         );
-    BFT_FREE(lst_xyz_cel     );
-    BFT_FREE(fsup_gb_vt_num  );
+    BFT_FREE(mesh_name);
+    BFT_FREE(export_name);
+    BFT_FREE(face_sup);
+    BFT_FREE(face_inf);
+    BFT_FREE(face_lat);
+    BFT_FREE(fbr_sup);
+    BFT_FREE(lst_par_fac_sup);
+    BFT_FREE(fbr_inf);
+    BFT_FREE(fbr_lat);
+    BFT_FREE(face_ct);
+    BFT_FREE(lst_xyz);
+    BFT_FREE(lst_xyz_cel);
+    BFT_FREE(fsup_gb_vt_num);
 
   }
   /*--------------------------------------------*
@@ -1292,17 +1276,17 @@ void cs_ctwr_maille
    * Initialization of the water variables      *
    *--------------------------------------------*/
 
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
     ct = cs_glob_ct_tab[ict];
     /* Te */
-    BFT_MALLOC(ct->teau   ,(ct->nnpsct_with_ghosts*ct->nelect), cs_real_t);
+    BFT_MALLOC(ct->teau, (ct->nnpsct_with_ghosts*ct->nelect), cs_real_t);
     /* Fe */
-    BFT_MALLOC(ct->fem    ,(ct->nnpsct_with_ghosts*ct->nelect), cs_real_t);
+    BFT_MALLOC(ct->fem, (ct->nnpsct_with_ghosts*ct->nelect), cs_real_t);
     /* vg */
     BFT_MALLOC(ct->vgoutte,(ct->nnpsct_with_ghosts*ct->nelect), cs_real_t);
 
     /* initialisation*/
-    for (iaux = 0 ; iaux < (ct->nnpsct_with_ghosts*ct->nelect) ; iaux++) {
+    for (iaux = 0; iaux < (ct->nnpsct_with_ghosts*ct->nelect); iaux++) {
       /* temperature de l eau*/
       ct->teau[iaux]    = ct->cl_teau;
       /* debit massique par unite de surface */
@@ -1310,12 +1294,12 @@ void cs_ctwr_maille
       /* vitesse des gouttes */
       ct->vgoutte[iaux] = 0.0;
     }
-    /* Initialisation en tenant compte de l'�cart de temp�rature impos�*/
-    aux = ct->deltat / ( (cs_real_t) (ct->nelect - 1)  ) ;
-    for (i = 0 ; i < ct->nnpsct_with_ghosts ; i++) {
-      for (j = 1 ; j < ct->nelect ; j++) {
-          ii = i*ct->nelect + j ;
-          ct->teau[ ii ] =  ct->teau[ ii - 1 ] - aux;
+    /* Initialisation en tenant compte de l'ecart de temperature impose*/
+    aux = ct->deltat / ((cs_real_t) (ct->nelect - 1));
+    for (i = 0; i < ct->nnpsct_with_ghosts; i++) {
+      for (j = 1; j < ct->nelect; j++) {
+          ii = i*ct->nelect + j;
+          ct->teau[ii] =  ct->teau[ii - 1] - aux;
         }
     }
 
@@ -1331,36 +1315,36 @@ void cs_ctwr_maille
   /*--------------------------------------------*
    * Initialisation des tableaux d interpolation*
    *--------------------------------------------*/
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
 
-    ct = cs_glob_ct_tab[ ict ];
+    ct = cs_glob_ct_tab[ict];
     /* Liste des voisins eau des cellules air */
-    nb = (int) fvm_locator_get_n_dist_points(ct->locat_air_water );
-    BFT_MALLOC(ct->voiseau,(nb * cs_ctwr_nmaxvoi ), cs_int_t );
+    nb = (int) fvm_locator_get_n_dist_points(ct->locat_air_water);
+    BFT_MALLOC(ct->voiseau,(nb * cs_ctwr_nmaxvoi), cs_int_t);
     /* Coefficients d interpolation eau pour l air*/
-    BFT_MALLOC(ct->coefeau , (nb * cs_ctwr_nmaxvoi ), cs_real_t );
+    BFT_MALLOC(ct->coefeau, (nb * cs_ctwr_nmaxvoi), cs_real_t);
     /* Positions dans la liste des voisins eau */
-    BFT_MALLOC(ct->pvoiseau, (nb + 1) , cs_int_t );
+    BFT_MALLOC(ct->pvoiseau, (nb + 1), cs_int_t);
     /* Liste des voisins air des noeuds eau */
 
-    ct->pvoiseau[ 0 ] = 0 ;
+    ct->pvoiseau[0] = 0;
 
-    for (iaux = 0 ; iaux < (nb *cs_ctwr_nmaxvoi) ; iaux++){
-      ct->voiseau[iaux] = -1 ;
+    for (iaux = 0; iaux < (nb *cs_ctwr_nmaxvoi); iaux++) {
+      ct->voiseau[iaux] = -1;
     }
 
-    nb = (int) fvm_locator_get_n_dist_points(ct->locat_water_air );
+    nb = (int) fvm_locator_get_n_dist_points(ct->locat_water_air);
 
-    BFT_MALLOC(ct->voisair  ,(nb * cs_ctwr_nmaxvoi ), cs_int_t  );
+    BFT_MALLOC(ct->voisair,(nb * cs_ctwr_nmaxvoi), cs_int_t);
     /* Positions dans la liste voisins air */
-    BFT_MALLOC(ct->pvoisair ,(    nb + 1   ), cs_int_t  );
+    BFT_MALLOC(ct->pvoisair, (nb + 1), cs_int_t);
     /* Coefficients d interpolation air pour l eau */
-    BFT_MALLOC(ct->coefair  ,( nb * cs_ctwr_nmaxvoi ), cs_real_t );
+    BFT_MALLOC(ct->coefair,(nb * cs_ctwr_nmaxvoi), cs_real_t);
 
     ct->pvoisair[0] = 0;
 
-    for (iaux = 0 ; iaux < (nb* cs_ctwr_nmaxvoi) ; iaux++){
-      ct->voisair[iaux] = -1 ;
+    for (iaux = 0; iaux < (nb* cs_ctwr_nmaxvoi); iaux++) {
+      ct->voisair[iaux] = -1;
     }
   }
   /*------------------------------------------------------*
@@ -1379,30 +1363,31 @@ void cs_ctwr_adeau
   const cs_mesh_quantities_t  *mesh_quantities
 )
 {
-  /* Coordonn�es des centres des cellules  */
+  /* Coordonnees des centres des cellules  */
   const cs_real_t *coo_cel        = mesh_quantities->cell_cen;
-  const cs_int_t  *i_face_cells   = mesh->i_face_cells       ;
-#if 0 // Is it no more needed?
-  const cs_int_t  *cell_cells_idx = mesh->cell_cells_idx     ;
-  const cs_int_t  *cell_cells_lst = mesh->cell_cells_lst     ;
-  const cs_int_t  *cell_family    = mesh->cell_family        ;
+  const cs_int_t  *i_face_cells   = mesh->i_face_cells;
+#if 0 /* Is it no more needed? */
+  const cs_int_t  *cell_cells_idx = mesh->cell_cells_idx;
+  const cs_int_t  *cell_cells_lst = mesh->cell_cells_lst;
+  const cs_int_t  *cell_family    = mesh->cell_family;
 #endif
 
   cs_int_t   ict, iwat,nb_node_water, ii, jj, iair, nbvois,
-             nbn, nvois[ cs_ctwr_nmaxvoi ], ifac, icel_1, icel_2,icel, lf, indice, dim;
+             nbn, ifac, icel_1, icel_2, lf, indice, dim;
+  cs_int_t   nvois[cs_ctwr_nmaxvoi];
   cs_real_t  dhi, dmin;
-  cs_real_t  xwat, ywat, zwat,
-             dx, dy, dz, dxx, dyy, dzz, coeff[ cs_ctwr_nmaxvoi ], ouv, aux;
+  cs_real_t  xwat, ywat, zwat, dx, dy, dz, dxx, dyy, dzz, ouv, aux;
+  cs_real_t  coeff[cs_ctwr_nmaxvoi];
   cs_real_t  vectBase[3][3];
   cs_real_t  cx, cy, cz, epgauss, w,
              pp[4][4],ppInv[4][4];
 
   const fvm_coord_t *lst_xyz_water = NULL;
-  fvm_coord_t *lst_xyz_cel  ;
-  fvm_lnum_t  *lst_par_fac  ;
-  fvm_lnum_t  *lst_par_cel  ;
+  fvm_coord_t *lst_xyz_cel ;
+  fvm_lnum_t  *lst_par_fac ;
+  fvm_lnum_t  *lst_par_cel ;
 
-  const fvm_lnum_t  *location_cel  = NULL;
+  const fvm_lnum_t  *location_cel = NULL;
 
   /*--------------------------------------------*
    * parametres et initialisation               *
@@ -1415,7 +1400,7 @@ void cs_ctwr_adeau
 
   /* Make sure with have extended neighborhood */
 
-#if 0 // Is it no more needed?
+#if 0 /* Is it no more needed ? */
   assert(cell_cells_idx != NULL);
 #endif
 
@@ -1423,13 +1408,13 @@ void cs_ctwr_adeau
    * Construction des coefficient d'interpolation*
    * sur chaque zone d echange ict               *
    *---------------------------------------------*/
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
 
     ct = cs_glob_ct_tab[ict];
 
-    nbn = 3 ;
+    nbn = 3;
     if (ct->idimct==3) {
-      nbn = 4 ;
+      nbn = 4;
     }
 
     /* Calcul de dh */
@@ -1445,81 +1430,83 @@ void cs_ctwr_adeau
     /* */
     lst_xyz_water   = fvm_locator_get_dist_coords(ct->locat_air_water);
 
-    BFT_MALLOC(lst_xyz_cel , ct->nbevct*3, fvm_coord_t );
-    fvm_nodal_get_element_centers(ct->cell_mesh, FVM_INTERLACE , 3 , lst_xyz_cel);
+    BFT_MALLOC(lst_xyz_cel, ct->nbevct*3, fvm_coord_t);
+    fvm_nodal_get_element_centers(ct->cell_mesh, FVM_INTERLACE, 3, lst_xyz_cel);
 
-    BFT_MALLOC(lst_par_cel , ct->nbevct, fvm_lnum_t );
+    BFT_MALLOC(lst_par_cel, ct->nbevct, fvm_lnum_t);
     fvm_nodal_get_parent_num(ct->cell_mesh, 3, lst_par_cel);
 
-    BFT_MALLOC(lst_par_fac , ct->nbfac_ct, fvm_lnum_t );
+    BFT_MALLOC(lst_par_fac, ct->nbfac_ct, fvm_lnum_t);
     fvm_nodal_get_parent_num(ct->fac_mesh, 2, lst_par_fac);
 
 
     /* boucle sur les noeuds eau */
-    for (iwat = 0 ; iwat < nb_node_water ; iwat++) {
+    for (iwat = 0; iwat < nb_node_water; iwat++) {
 
       /*--------------------------------------------*
        * Calcul des coord. du noeud a partir de     *
        *  celles du noeud de la face sup            *
        *   Noeud  = NoeudSup + iloc * dh *g / ||g|| *
        *--------------------------------------------*/
-      xwat = (cs_real_t) lst_xyz_water[ iwat*3     ] ;
-      ywat = (cs_real_t) lst_xyz_water[ iwat*3 + 1 ] ;
-      zwat = (cs_real_t) lst_xyz_water[ iwat*3 + 2 ] ;
+      xwat = (cs_real_t) lst_xyz_water[iwat*3    ];
+      ywat = (cs_real_t) lst_xyz_water[iwat*3 + 1];
+      zwat = (cs_real_t) lst_xyz_water[iwat*3 + 2];
 
       /*--------------------------------------------*
        * boucle sur les cellules appartenant a la ct*
        * recherche du noeud air le plus proche      *
        *--------------------------------------------*/
-      dmin = 1000. ;
+      dmin = 1000.;
       iair = location_cel[iwat] -1;
 
       /*--------------------------------------------*
        * initialiation matrice d interpolation et   *
-       *  tableau nvois[] et coeff[]          *
+       *  tableau nvois[] et coeff[]                *
        *--------------------------------------------*/
 
-      for (ii=0;ii<4;ii++){
-        for (jj=0;jj<4;jj++) {
+      for (ii=0; ii<4; ii++) {
+        for (jj=0; jj<4; jj++) {
           pp[jj][ii]   = 0.0;
           ppInv[jj][ii]= 0.0;
         }
       }
 
       for (jj=0;jj< cs_ctwr_nmaxvoi;jj++) {
-        coeff[jj]= -1.0 ;
-        nvois[jj]= -1  ;
+        coeff[jj]= -1.0;
+        nvois[jj]= -1 ;
       }
       /* fin initialisation */
 
       /*-------------------------------------------------*
        * Recherche des voisins du noeuds air le + proche *
-       *  boucle sur les faces internes du maillage        *
+       *  boucle sur les faces internes du maillage      *
        *-------------------------------------------------*/
-      nbvois = 1 ;
-      nvois[0] = iair ;
 
-      for (ifac = 0 ; ifac < ct->nbfac_ct ; ifac++) {
-        icel_1 = i_face_cells[ (lst_par_fac[ifac]- mesh->n_b_faces - 1) * 2    ]-1 ;
-        icel_2 = i_face_cells[ (lst_par_fac[ifac]- mesh->n_b_faces - 1) * 2 + 1]-1 ;
+      nbvois = 1;
+      nvois[0] = iair;
+
+      for (ifac = 0; ifac < ct->nbfac_ct; ifac++) {
+        icel_1 = i_face_cells[(lst_par_fac[ifac]- mesh->n_b_faces - 1) * 2    ]-1;
+        icel_2 = i_face_cells[(lst_par_fac[ifac]- mesh->n_b_faces - 1) * 2 + 1]-1;
         if (icel_1==iair) {
-          nvois[nbvois]=icel_2 ;
-          nbvois += 1 ;
+          nvois[nbvois]=icel_2;
+          nbvois += 1;
         }
         else if (icel_2==iair) {
-          nvois[nbvois]=icel_1 ;
-          nbvois += 1 ;
+          nvois[nbvois]=icel_1;
+          nbvois += 1;
         }
       }
 
-#if 0 // Is it no more needed?
-      for (icel = cell_cells_idx[ iair     ];
-            icel < cell_cells_idx[ iair + 1 ]; icel++) {
+#if 0 /* Is it no more needed ? */
+      for (icel = cell_cells_idx[iair    ];
+           icel < cell_cells_idx[iair + 1];
+           icel++) {
 
-         indice = cell_cells_lst[ icel ] - 1;
-         if (ct->mark_ze[indice+1]==1){
-            nvois[nbvois]= indice ;
-            nbvois += 1 ;
+         indice = cell_cells_lst[icel] - 1;
+         if (ct->mark_ze[indice+1]==1) {
+            nvois[nbvois]= indice;
+            nbvois += 1;
          }
       }
 #endif
@@ -1530,118 +1517,118 @@ void cs_ctwr_adeau
        *nombre de voisins insuffisant               *
        *--------------------------------------------*/
 
-      if (nbvois<nbn){
-        nbvois = 1 ;
-        nvois[0] = iair ;
-        coeff[0] = 1.0 ;
-        goto enregistre ;
+      if (nbvois<nbn) {
+        nbvois = 1;
+        nvois[0] = iair;
+        coeff[0] = 1.0;
+        goto enregistre;
       }
 
       dim = ct->idimct;
       vectBase[0][0] = 1.0; vectBase[1][0] = 0.0; vectBase[2][0] = 0.0;
       vectBase[0][1] = 0.0; vectBase[1][1] = 1.0; vectBase[2][1] = 0.0;
       vectBase[0][2] = 0.0; vectBase[1][2] = 0.0; vectBase[2][2] = 1.0;
-      passage2D : ;
+      passage2D :;
 
 
       /*--------------------------------------------*/
-      /* Calcul de l'ouverture de la fonction  de pond�ration*/
+      /* Calcul de l'ouverture de la fonction  de ponderation*/
       /*  egale au max de la distance entre le noeud eau et les voisins air */
       /*--------------------------------------------*/
-      ouv = 0. ;
-      for (ii = 0 ; ii < nbvois ; ii++) {
+      ouv = 0.;
+      for (ii = 0; ii < nbvois; ii++) {
         iair = nvois[ii];
-        dxx  =  (cs_real_t) (coo_cel[iair*3+0] - xwat );
-        dyy  =  (cs_real_t) (coo_cel[iair*3+1] - ywat );
-        dzz  =  (cs_real_t) (coo_cel[iair*3+2] - zwat );
+        dxx  =  (cs_real_t) (coo_cel[iair*3+0] - xwat);
+        dyy  =  (cs_real_t) (coo_cel[iair*3+1] - ywat);
+        dzz  =  (cs_real_t) (coo_cel[iair*3+2] - zwat);
 
         dx = dxx * vectBase[0][0] + dyy * vectBase[0][1] + dzz * vectBase[0][2];
         dy = dxx * vectBase[1][0] + dyy * vectBase[1][1] + dzz * vectBase[1][2];
         dz = dxx * vectBase[2][0] + dyy * vectBase[2][1] + dzz * vectBase[2][2];
 
-        aux =  pow(dx,2.)+pow(dy,2.)+pow(dz,2.) ;
+        aux =  pow(dx,2.)+pow(dy,2.)+pow(dz,2.);
         if (ouv<aux) {
           ouv = aux;
         }
       }
-      ouv = sqrt(ouv)*1.1 ;
+      ouv = sqrt(ouv)*1.1;
       /* fin calcul de l'ouverture */
 
       /*--------------------------------------------*/
       /*Construction de la matrice A               */
       /*--------------------------------------------*/
-      for (ii = 0 ; ii < nbvois ; ii++) {
+      for (ii = 0; ii < nbvois; ii++) {
 
         indice = nvois[ii];
-        dxx = (cs_real_t) (coo_cel[indice*3+0] - xwat) ;
-        dyy = (cs_real_t) (coo_cel[indice*3+1] - ywat) ;
-        dzz = (cs_real_t) (coo_cel[indice*3+2] - zwat) ;
+        dxx = (cs_real_t) (coo_cel[indice*3+0] - xwat);
+        dyy = (cs_real_t) (coo_cel[indice*3+1] - ywat);
+        dzz = (cs_real_t) (coo_cel[indice*3+2] - zwat);
 
         dx = dxx * vectBase[0][0] + dyy * vectBase[0][1] + dzz * vectBase[0][2];
         dy = dxx * vectBase[1][0] + dyy * vectBase[1][1] + dzz * vectBase[1][2];
         dz = dxx * vectBase[2][0] + dyy * vectBase[2][1] + dzz * vectBase[2][2];
 
         /* parametre de la fonction de ponderation*/
-        cx = 1.0 ;
-        cy = 1.0 ;
-        cz = 1.e10 ;
+        cx = 1.0;
+        cy = 1.0;
+        cz = 1.e10;
         lf = 3;
-        epgauss = 5.0 ;
+        epgauss = 5.0;
         if (dim==3) {
-          cz = 1.0 ;
+          cz = 1.0;
         }
         if (dim==1) {
-          cy = 1.e10 ;
-          cz = 1.e10 ;
+          cy = 1.e10;
+          cz = 1.e10;
         }
         /*fonction de ponderation*/
-        w  = _weighting(dx,dy,dz,ouv,lf,epgauss,cx,cy,cz) ;
-        if (dim == 1)/* 1D */{
-          pp[0][0] = w      + pp[0][0] ;
-          pp[0][1] = w*dx    + pp[0][1] ;
-          pp[1][0] = w*dx    + pp[1][0] ;
-          pp[1][1] = w*dx*dx + pp[1][1] ;
-        }else
-          if (dim == 2) /* 2D */{
-            pp[0][0] = w       + pp[0][0] ;
-            pp[0][1] = w*dx    + pp[0][1] ;
-            pp[0][2] = w*dy    + pp[0][2] ;
-            pp[1][0] = w*dx    + pp[1][0] ;
-            pp[1][1] = w*dx*dx + pp[1][1] ;
-            pp[1][2] = w*dx*dy + pp[1][2] ;
-            pp[2][0] = w*dy    + pp[2][0] ;
-            pp[2][1] = w*dx*dy + pp[2][1] ;
-            pp[2][2] = w*dy*dy + pp[2][2] ;
-          }
-          else if (dim == 3)/* 3D */{
-            pp[0][0] = w       + pp[0][0] ;
-            pp[0][1] = w*dx    + pp[0][1] ;
-            pp[0][2] = w*dy    + pp[0][2] ;
-            pp[0][3] = w*dz    + pp[0][3] ;
-            pp[1][0] = w*dx    + pp[1][0] ;
-            pp[1][1] = w*dx*dx + pp[1][1] ;
-            pp[1][2] = w*dy*dx + pp[1][2] ;
-            pp[1][3] = w*dz*dx + pp[1][3] ;
-            pp[2][0] = w*dy    + pp[2][0] ;
-            pp[2][1] = w*dx*dy + pp[2][1] ;
-            pp[2][2] = w*dy*dy + pp[2][2] ;
-            pp[2][3] = w*dz*dy + pp[2][3] ;
-            pp[3][0] = w*dz    + pp[3][0] ;
-            pp[3][1] = w*dx*dz + pp[3][1] ;
-            pp[3][2] = w*dy*dz + pp[3][2] ;
-            pp[3][3] = w*dz*dz + pp[3][3] ;
+        w  = _weighting(dx,dy,dz,ouv,lf,epgauss,cx,cy,cz);
+        if (dim == 1) { /* 1D */
+          pp[0][0] = w      + pp[0][0];
+          pp[0][1] = w*dx    + pp[0][1];
+          pp[1][0] = w*dx    + pp[1][0];
+          pp[1][1] = w*dx*dx + pp[1][1];
+        }
+        else if (dim == 2) { /* 2D */
+          pp[0][0] = w       + pp[0][0];
+          pp[0][1] = w*dx    + pp[0][1];
+          pp[0][2] = w*dy    + pp[0][2];
+          pp[1][0] = w*dx    + pp[1][0];
+          pp[1][1] = w*dx*dx + pp[1][1];
+          pp[1][2] = w*dx*dy + pp[1][2];
+          pp[2][0] = w*dy    + pp[2][0];
+          pp[2][1] = w*dx*dy + pp[2][1];
+          pp[2][2] = w*dy*dy + pp[2][2];
+        }
+        else if (dim == 3) {/* 3D */
+          pp[0][0] = w       + pp[0][0];
+          pp[0][1] = w*dx    + pp[0][1];
+          pp[0][2] = w*dy    + pp[0][2];
+          pp[0][3] = w*dz    + pp[0][3];
+          pp[1][0] = w*dx    + pp[1][0];
+          pp[1][1] = w*dx*dx + pp[1][1];
+          pp[1][2] = w*dy*dx + pp[1][2];
+          pp[1][3] = w*dz*dx + pp[1][3];
+          pp[2][0] = w*dy    + pp[2][0];
+          pp[2][1] = w*dx*dy + pp[2][1];
+          pp[2][2] = w*dy*dy + pp[2][2];
+          pp[2][3] = w*dz*dy + pp[2][3];
+          pp[3][0] = w*dz    + pp[3][0];
+          pp[3][1] = w*dx*dz + pp[3][1];
+          pp[3][2] = w*dy*dz + pp[3][2];
+          pp[3][3] = w*dz*dz + pp[3][3];
         }
       }
       /*Fin Construction de la matrice A */
-      if(ct->idimct == 3 && dim == 3){
-          dim  = _is_coplanar(coo_cel, nvois, nbvois, pp, vectBase, 0, dhi);
-
-            if(dim!= 3){
-              for (ii=0;ii<3;ii++)
-                for (jj=0;jj<3;jj++)
-                  pp[jj][ii]=0.0;
-              goto passage2D ;
-            }
+      if (ct->idimct == 3 && dim == 3) {
+        dim  = _is_coplanar(coo_cel, nvois, nbvois, pp, vectBase, 0, dhi);
+
+        if (dim!= 3) {
+          for (ii=0; ii<3; ii++)
+            for (jj=0; jj<3; jj++)
+              pp[jj][ii]=0.0;
+          goto passage2D;
+        }
 
       }
 
@@ -1655,68 +1642,68 @@ void cs_ctwr_adeau
       /*--------------------------------------------*/
       /* Calcul des coefficients                    */
       /*--------------------------------------------*/
-      for (ii = 0 ; ii < nbvois ; ii++){
+      for (ii = 0; ii < nbvois; ii++) {
 
         indice = nvois[ii];
-        dxx = (cs_real_t) (coo_cel[indice*3+0] - xwat );
-        dyy = (cs_real_t) (coo_cel[indice*3+1] - ywat );
-        dzz = (cs_real_t) (coo_cel[indice*3+2] - zwat );
+        dxx = (cs_real_t) (coo_cel[indice*3+0] - xwat);
+        dyy = (cs_real_t) (coo_cel[indice*3+1] - ywat);
+        dzz = (cs_real_t) (coo_cel[indice*3+2] - zwat);
 
         dx = dxx * vectBase[0][0] + dyy * vectBase[0][1] + dzz * vectBase[0][2];
         dy = dxx * vectBase[1][0] + dyy * vectBase[1][1] + dzz * vectBase[1][2];
         dz = dxx * vectBase[2][0] + dyy * vectBase[2][1] + dzz * vectBase[2][2];
 
         /* parametre de la fonction de ponderation*/
-        cx = 1.0 ;
-        cy = 1.0 ;
-        cz = 1.e10 ;
+        cx = 1.0;
+        cy = 1.0;
+        cz = 1.e10;
         lf = 3;
-        epgauss = 5.0 ;
+        epgauss = 5.0;
         if (dim==3) {
-          cz = 1.0 ;
+          cz = 1.0;
         }
         if (dim==1) {
-          cy = 1.e10 ;
-          cz = 1.e10 ;
+          cy = 1.e10;
+          cz = 1.e10;
         }
 
-        w  = _weighting(dx,dy,dz,ouv,lf,epgauss,cx,cy,cz) ;
+        w  = _weighting(dx,dy,dz,ouv,lf,epgauss,cx,cy,cz);
 
-        if (dim == 1){
+        if (dim == 1) {
           coeff[ii] = w*(ppInv[0][0]+ppInv[0][1]*dx);
         }
-        else if (dim ==2){
+        else if (dim ==2) {
           coeff[ii] = w*(ppInv[0][0]+ppInv[0][1]*dx+ppInv[0][2]*dy);
         }
-        else if (dim ==3){
-          coeff[ii] = w*(  ppInv[0][0]
+        else if (dim ==3) {
+          coeff[ii] = w*( ppInv[0][0]
                           +ppInv[0][1]*dx
                           +ppInv[0][2]*dy
-                          +ppInv[0][3]*dz );
+                          +ppInv[0][3]*dz);
         }
 
       }
       /* Fin Calcul des coefficients */
 
-      enregistre : ;
+      enregistre :;
 
       /*--------------------------------------------*/
       /* boucle while sur pvoiseau pour trouver le  */
       /* dernier indice                             */
       /*--------------------------------------------*/
-      indice = 0 ;
+      indice = 0;
       while (ct->voiseau[indice]!=-1) {
-        indice += 1 ;
+        indice += 1;
       }
       /*--------------------------------------------*
        * Ajout des voisins et des coefficients      *
        *--------------------------------------------*/
-      for (ii = 0 ; ii < nbvois ; ii++) {
-        ct->voiseau[indice+ii]  = nvois[ii] ;
+      for (ii = 0; ii < nbvois; ii++) {
+        ct->voiseau[indice+ii]  = nvois[ii];
         ct->coefeau[indice+ii]  = coeff[ii];
       }
 
-      ct->pvoiseau[iwat+1] = ct->pvoiseau[iwat] + nbvois ;
+      ct->pvoiseau[iwat+1] = ct->pvoiseau[iwat] + nbvois;
 
     }/* fin boucle sur iseg */
     BFT_FREE(lst_par_fac);
@@ -1733,18 +1720,19 @@ void cs_ctwr_adeau
  *-----------------------------------------------------------------------------*/
 void cs_ctwr_adair (void)
 {
-  /* Coordonn�es des centres des cellules  */
+  /* Coordonnees des centres des cellules  */
 
   const fvm_coord_t  *lst_xyz_cel   = NULL;
   fvm_coord_t  *lst_xyz_water = NULL;
   const fvm_lnum_t   *location_cel  = NULL;
-  cs_int_t   ict,icol, ilig,ieau,ii,jj,iair,nbvois,
-             nbn,nvois[ cs_ctwr_nmaxvoi ],lf,indice;
+  cs_int_t   ict,icol, ilig,ieau,ii,jj,iair,nbvois,nbn,lf,indice;
+  cs_int_t   nvois[cs_ctwr_nmaxvoi];
   cs_int_t   dim, nb_air_node;
-  cs_real_t  dhi,dmin,dist,coeff[ cs_ctwr_nmaxvoi ],ouv,aux;
+  cs_real_t  dhi,dmin,dist,ouv,aux;
+  cs_real_t  coeff[cs_ctwr_nmaxvoi];
   cs_real_t  dx,dy,dz,dxx,dyy,dzz;
   cs_real_t  cx,cy,cz,epgauss,w;
-  cs_real_t  pp[4][4], ppInv[4][4] ;
+  cs_real_t  pp[4][4], ppInv[4][4];
   cs_real_t  vectBase[3][3];
   fvm_lnum_t loca_cel;
   cs_ctwr_zone_t  *ct;
@@ -1753,13 +1741,13 @@ void cs_ctwr_adair (void)
    * Construction des coefficient d'interpolation*
    * sur chaque zone d echange ict               *
    *---------------------------------------------*/
-  for (ict=0 ; ict < cs_glob_ct_nbr ; ict++) {
+  for (ict=0; ict < cs_glob_ct_nbr; ict++) {
 
     ct = cs_glob_ct_tab[ict];
 
-    nbn = 3 ;
+    nbn = 3;
     if (ct->idimct==3) {
-      nbn = 4 ;
+      nbn = 4;
     }
 
 
@@ -1776,11 +1764,11 @@ void cs_ctwr_adair (void)
     location_cel = fvm_locator_get_dist_locations(ct->locat_water_air);
 
 
-    BFT_MALLOC(lst_xyz_water, (3*ct->nelect*ct->nnpsct) ,fvm_coord_t);
-    fvm_nodal_get_element_centers(ct->water_mesh,FVM_INTERLACE,3, lst_xyz_water );
+    BFT_MALLOC(lst_xyz_water, (3*ct->nelect*ct->nnpsct), fvm_coord_t);
+    fvm_nodal_get_element_centers(ct->water_mesh,FVM_INTERLACE,3, lst_xyz_water);
 
     if (ct->water_halo != NULL) {
-      BFT_REALLOC(lst_xyz_water, (3*ct->nelect*ct->nnpsct_with_ghosts) ,fvm_coord_t);
+      BFT_REALLOC(lst_xyz_water, (3*ct->nelect*ct->nnpsct_with_ghosts), fvm_coord_t);
       cs_halo_sync_var_strided(ct->water_halo, ct->halo_type, lst_xyz_water, 3);
 
     }
@@ -1788,7 +1776,7 @@ void cs_ctwr_adair (void)
      * Loops on the air nodes of teh exchange area*
      *--------------------------------------------*/
 
-    for (iair = 0 ; iair < nb_air_node ; iair++)  {
+    for (iair = 0; iair < nb_air_node; iair++)  {
 
        loca_cel = location_cel[iair] -1;
       /*--------------------------------------------*
@@ -1796,16 +1784,16 @@ void cs_ctwr_adair (void)
        * tableau nvois[] et coeff[]                 *
        *--------------------------------------------*/
 
-      for (ii=0;ii<4;ii++) {
-        for (jj=0;jj<4;jj++) {
+      for (ii=0; ii<4; ii++) {
+        for (jj=0; jj<4; jj++) {
           pp[jj][ii]=0.0;
           ppInv[jj][ii]=0.0;
         }
       }
 
-      for (jj=0;jj< cs_ctwr_nmaxvoi;jj++) {
-        coeff[jj]=0.0 ;
-        nvois[jj]= -1  ;
+      for (jj=0; jj< cs_ctwr_nmaxvoi; jj++) {
+        coeff[jj]=0.0;
+        nvois[jj]= -1;
       }/* fin initialisation */
 
       /*--------------------------------------------*
@@ -1814,28 +1802,28 @@ void cs_ctwr_adair (void)
        *--------------------------------------------*/
 
       /* indice du noeud air dans le maillage */
-      dmin   = 1000. ;
-
-        if ((loca_cel%(ct->nelect) == 0 ) ||
-                  (loca_cel% (ct->nelect) == (ct->nelect-1) ))  {
-          for (jj = 0 ; jj < (ct->nelect*ct->nnpsct_with_ghosts); jj++) {
-            dx = (cs_real_t) (lst_xyz_water[3*jj  ] - lst_xyz_cel[iair*3  ]) ;
-            dy = (cs_real_t) (lst_xyz_water[3*jj+1] - lst_xyz_cel[iair*3+1]) ;
-            dz = (cs_real_t) (lst_xyz_water[3*jj+2] - lst_xyz_cel[iair*3+2]) ;
-            dist = (pow(dx,2.)+pow(dy,2.)+pow(dz,2.)) ;
-            if (dmin>dist ) {
-              dmin = dist ;
-              ieau = jj ;
+      dmin   = 1000.;
+
+        if ((loca_cel%(ct->nelect) == 0) ||
+                  (loca_cel% (ct->nelect) == (ct->nelect-1)))  {
+          for (jj = 0; jj < (ct->nelect*ct->nnpsct_with_ghosts); jj++) {
+            dx = (cs_real_t) (lst_xyz_water[3*jj  ] - lst_xyz_cel[iair*3  ]);
+            dy = (cs_real_t) (lst_xyz_water[3*jj+1] - lst_xyz_cel[iair*3+1]);
+            dz = (cs_real_t) (lst_xyz_water[3*jj+2] - lst_xyz_cel[iair*3+2]);
+            dist = (pow(dx,2.)+pow(dy,2.)+pow(dz,2.));
+            if (dmin>dist) {
+              dmin = dist;
+              ieau = jj;
             }
           }
         }
 
       if (dmin<1000.) {
         /* Cellule air est en bordure inf ou sup, on saute l'etape suivante */
-        nbvois   = 1 ;
-        nvois[0] = ieau ;
-        coeff[0] = 1.0 ;
-        goto enregistre ;
+        nbvois   = 1;
+        nvois[0] = ieau;
+        coeff[0] = 1.0;
+        goto enregistre;
       }
       /*------------------------------------------------*
        * Fin Traitement particulier pour les noeuds air *
@@ -1849,7 +1837,7 @@ void cs_ctwr_adair (void)
        * les noeuds air qui ne sont                 *
        *  pas en bordure inferieure ou superieure   *
        *--------------------------------------------*/
-      nbvois = 1 ;
+      nbvois = 1;
       nvois[0] = loca_cel;
       /*---------------------------------------------*
        * Recherche du nombre de voisins du noeuds air*
@@ -1863,12 +1851,13 @@ void cs_ctwr_adair (void)
       nbvois+=2;
       icol = loca_cel/(ct->nelect);
       ilig = loca_cel%(ct->nelect);
-      for (ii = ct->fac_sup_connect_idx[ icol ] ;
-           ii < ct->fac_sup_connect_idx[ icol + 1 ] ; ii++) {
+      for (ii = ct->fac_sup_connect_idx[icol];
+           ii < ct->fac_sup_connect_idx[icol + 1];
+           ii++) {
 
-           nvois[indice++] = ct->nelect*ct->fac_sup_connect_lst[ ii ] + ilig-1;
-           nvois[indice++] = ct->nelect*ct->fac_sup_connect_lst[ ii ] + ilig  ;
-           nvois[indice++] = ct->nelect*ct->fac_sup_connect_lst[ ii ] + ilig+1;
+           nvois[indice++] = ct->nelect*ct->fac_sup_connect_lst[ii] + ilig-1;
+           nvois[indice++] = ct->nelect*ct->fac_sup_connect_lst[ii] + ilig ;
+           nvois[indice++] = ct->nelect*ct->fac_sup_connect_lst[ii] + ilig+1;
            nbvois += 3;
 
       }
@@ -1879,9 +1868,9 @@ void cs_ctwr_adair (void)
        *-------------------------------------------- */
 
       if (nbvois<nbn) {
-        nbvois   = 1 ;
-        coeff[0] = 1.0 ;
-        goto enregistre ;
+        nbvois   = 1;
+        coeff[0] = 1.0;
+        goto enregistre;
       }
 
        dim = ct->idimct;
@@ -1889,16 +1878,16 @@ void cs_ctwr_adair (void)
        vectBase[0][1] = 0.0; vectBase[1][1] = 1.0; vectBase[2][1] = 0.0;
        vectBase[0][2] = 0.0; vectBase[1][2] = 0.0; vectBase[2][2] = 1.0;
 
-       passage2D : ;
+       passage2D :;
 
       /*--------------------------------------------*
        * Calcul de l'ouverture de la fonction  de   *
-       * pond�ration egale au max de la distance    *
+       * ponderation egale au max de la distance    *
        *  entre le noeud air et les voisins eau     *
        *--------------------------------------------*/
-      ouv = 0. ;
-      for (ii = 0 ; ii < nbvois ; ii++) {
-        ieau = nvois[ii] ;
+      ouv = 0.;
+      for (ii = 0; ii < nbvois; ii++) {
+        ieau = nvois[ii];
         dxx = (cs_real_t) (lst_xyz_water[3*ieau]   - lst_xyz_cel[iair*3+0]);
         dyy = (cs_real_t) (lst_xyz_water[3*ieau+1] - lst_xyz_cel[iair*3+1]);
         dzz = (cs_real_t) (lst_xyz_water[3*ieau+2] - lst_xyz_cel[iair*3+2]);
@@ -1907,87 +1896,88 @@ void cs_ctwr_adair (void)
         dy = dxx * vectBase[1][0] + dyy * vectBase[1][1] + dzz * vectBase[1][2];
         dz = dxx * vectBase[2][0] + dyy * vectBase[2][1] + dzz * vectBase[2][2];
 
-        aux =  pow(dx,2.)+pow(dy,2.)+pow(dz,2.) ;
+        aux =  pow(dx,2.)+pow(dy,2.)+pow(dz,2.);
         if (ouv<aux) {
           ouv = aux;
         }
       }
-      ouv = sqrt(ouv)*1.1 ;
+      ouv = sqrt(ouv)*1.1;
       /* Fin de calcul de l'ouverture */
 
       /*--------------------------------------------*
        *Construction de la matrice A                *
        *--------------------------------------------*/
 
-      for (ii = 0 ; ii < nbvois ; ii++) {
+      for (ii = 0; ii < nbvois; ii++) {
 
-        ieau = nvois[ii] ;
-        dxx = (cs_real_t) (lst_xyz_water[3*ieau +0] - lst_xyz_cel[iair*3+0]) ;
-        dyy = (cs_real_t) (lst_xyz_water[3*ieau +1] - lst_xyz_cel[iair*3+1]) ;
-        dzz = (cs_real_t) (lst_xyz_water[3*ieau +2] - lst_xyz_cel[iair*3+2]) ;
+        ieau = nvois[ii];
+        dxx = (cs_real_t) (lst_xyz_water[3*ieau +0] - lst_xyz_cel[iair*3+0]);
+        dyy = (cs_real_t) (lst_xyz_water[3*ieau +1] - lst_xyz_cel[iair*3+1]);
+        dzz = (cs_real_t) (lst_xyz_water[3*ieau +2] - lst_xyz_cel[iair*3+2]);
 
         dx = dxx * vectBase[0][0] + dyy * vectBase[0][1] + dzz * vectBase[0][2];
         dy = dxx * vectBase[1][0] + dyy * vectBase[1][1] + dzz * vectBase[1][2];
         dz = dxx * vectBase[2][0] + dyy * vectBase[2][1] + dzz * vectBase[2][2];
         /* parametre de la fonction de ponderation*/
-        cx = 1.0 ;
-        cy = 1.0 ;
-        cz = 1.e10 ;
+        cx = 1.0;
+        cy = 1.0;
+        cz = 1.e10;
         lf = 3;
-        epgauss = 5.0 ;
+        epgauss = 5.0;
         if (dim==3) {
-          cz = 1.0 ;
+          cz = 1.0;
         }
         if (dim==1) {
-          cy = 1.e10 ;
-          cz = 1.e10 ;
+          cy = 1.e10;
+          cz = 1.e10;
         }
         /*fonction de ponderation*/
-        w  = _weighting(dx,dy,dz,ouv,lf,epgauss,cx,cy,cz) ;
-
-        if (dim == 1)/* 1D */{
-            pp[0][0] = w       + pp[0][0] ;
-            pp[0][1] = w*dx    + pp[0][1] ;
-            pp[1][0] = w*dx    + pp[1][0] ;
-            pp[1][1] = w*dx*dx + pp[1][1] ;
-        }else if (dim == 2)/* 2D */{
-                  pp[0][0] = w     + pp[0][0] ;
-                  pp[0][1] = w*dx    + pp[0][1] ;
-                  pp[0][2] = w*dy    + pp[0][2] ;
-                  pp[1][0] = w*dx    + pp[1][0] ;
-                  pp[1][1] = w*dx*dx + pp[1][1] ;
-                  pp[1][2] = w*dx*dy + pp[1][2] ;
-                  pp[2][0] = w*dy    + pp[2][0] ;
-                  pp[2][1] = w*dx*dy + pp[2][1] ;
-                  pp[2][2] = w*dy*dy + pp[2][2] ;
-             }else if (dim == 3)/* 3D */{
-                        pp[0][0] = w       + pp[0][0] ;
-                        pp[0][1] = w*dx    + pp[0][1] ;
-                        pp[0][2] = w*dy    + pp[0][2] ;
-                        pp[0][3] = w*dz    + pp[0][3] ;
-                        pp[1][0] = w*dx    + pp[1][0] ;
-                        pp[1][1] = w*dx*dx + pp[1][1] ;
-                        pp[1][2] = w*dy*dx + pp[1][2] ;
-                        pp[1][3] = w*dz*dx + pp[1][3] ;
-                        pp[2][0] = w*dy    + pp[2][0] ;
-                        pp[2][1] = w*dx*dy + pp[2][1] ;
-                        pp[2][2] = w*dy*dy + pp[2][2] ;
-                        pp[2][3] = w*dz*dy + pp[2][3] ;
-                        pp[3][0] = w*dz    + pp[3][0] ;
-                        pp[3][1] = w*dx*dz + pp[3][1] ;
-                        pp[3][2] = w*dy*dz + pp[3][2] ;
-                        pp[3][3] = w*dz*dz + pp[3][3] ;
-
-             }
-
-      }/* Fin de construction de la matrice A*/
-      if(ct->idimct == 3 && dim == 3){
+        w  = _weighting(dx,dy,dz,ouv,lf,epgauss,cx,cy,cz);
+
+        if (dim == 1) { /* 1D */
+          pp[0][0] = w       + pp[0][0];
+          pp[0][1] = w*dx    + pp[0][1];
+          pp[1][0] = w*dx    + pp[1][0];
+          pp[1][1] = w*dx*dx + pp[1][1];
+        }
+        else if (dim == 2) { /* 2D */
+          pp[0][0] = w     + pp[0][0];
+          pp[0][1] = w*dx    + pp[0][1];
+          pp[0][2] = w*dy    + pp[0][2];
+          pp[1][0] = w*dx    + pp[1][0];
+          pp[1][1] = w*dx*dx + pp[1][1];
+          pp[1][2] = w*dx*dy + pp[1][2];
+          pp[2][0] = w*dy    + pp[2][0];
+          pp[2][1] = w*dx*dy + pp[2][1];
+          pp[2][2] = w*dy*dy + pp[2][2];
+        }
+        else if (dim == 3) { /* 3D */
+          pp[0][0] = w       + pp[0][0];
+          pp[0][1] = w*dx    + pp[0][1];
+          pp[0][2] = w*dy    + pp[0][2];
+          pp[0][3] = w*dz    + pp[0][3];
+          pp[1][0] = w*dx    + pp[1][0];
+          pp[1][1] = w*dx*dx + pp[1][1];
+          pp[1][2] = w*dy*dx + pp[1][2];
+          pp[1][3] = w*dz*dx + pp[1][3];
+          pp[2][0] = w*dy    + pp[2][0];
+          pp[2][1] = w*dx*dy + pp[2][1];
+          pp[2][2] = w*dy*dy + pp[2][2];
+          pp[2][3] = w*dz*dy + pp[2][3];
+          pp[3][0] = w*dz    + pp[3][0];
+          pp[3][1] = w*dx*dz + pp[3][1];
+          pp[3][2] = w*dy*dz + pp[3][2];
+          pp[3][3] = w*dz*dz + pp[3][3];
+        }
+
+      } /* Fin de construction de la matrice A */
+      if (ct->idimct == 3 && dim == 3) {
         dim  = _is_coplanar(lst_xyz_water, nvois, nbvois, pp, vectBase,0,dhi);
-        if(dim!= 3) {
-          for (ii=0;ii<3;ii++)
-            for (jj=0;jj<3;jj++)
+        if (dim!= 3) {
+          for (ii=0; ii<3; ii++)
+            for (jj=0; jj<3; jj++)
               pp[jj][ii]=0.;
-          goto passage2D ;
+          goto passage2D;
         }
       }
 
@@ -2000,8 +1990,8 @@ void cs_ctwr_adair (void)
       /*--------------------------------------------*
        * Calcul des coefficients                    *
        *--------------------------------------------*/
-      for (ii = 0 ; ii < nbvois ; ii++) {
-        ieau = nvois[ii] ;
+      for (ii = 0; ii < nbvois; ii++) {
+        ieau = nvois[ii];
         dxx = (cs_real_t) (lst_xyz_water[3*ieau   ] - lst_xyz_cel[iair*3+0]);
         dyy = (cs_real_t) (lst_xyz_water[3*ieau +1] - lst_xyz_cel[iair*3+1]);
         dzz = (cs_real_t) (lst_xyz_water[3*ieau +2] - lst_xyz_cel[iair*3+2]);
@@ -2011,34 +2001,34 @@ void cs_ctwr_adair (void)
         dz = dxx * vectBase[2][0] + dyy * vectBase[2][1] + dzz * vectBase[2][2];
 
         /*parametre de la fonction de ponderation*/
-        cx = 1.0 ;
-        cy = 1.0 ;
-        cz = 1.e10 ;
+        cx = 1.0;
+        cy = 1.0;
+        cz = 1.e10;
         lf = 3;
-        epgauss = 5.0 ;
+        epgauss = 5.0;
         if (dim==3) {
-          cz = 1.0 ;
+          cz = 1.0;
         }
         if (dim==1) {
-          cy = 1.e10 ;
-          cz = 1.e10 ;
+          cy = 1.e10;
+          cz = 1.e10;
         }
 
-        w = _weighting(dx,dy,dz,ouv,lf,epgauss,cx,cy,cz) ;
+        w = _weighting(dx,dy,dz,ouv,lf,epgauss,cx,cy,cz);
 
 
 
-        if (dim == 1){
+        if (dim == 1) {
           coeff[ii] = w*(ppInv[0][0]+ppInv[0][1]*dx);
         }
-        else if (dim == 2){
+        else if (dim == 2) {
           coeff[ii] = w*(ppInv[0][0]+ppInv[0][1]*dx+ppInv[0][2]*dy);
         }
-        else if (dim == 3){
+        else if (dim == 3) {
           coeff[ii] = w*(ppInv[0][0]
                          +ppInv[0][1]*dx
                          +ppInv[0][2]*dy
-                         +ppInv[0][3]*dz );
+                         +ppInv[0][3]*dz);
         }
 
       }
@@ -2048,27 +2038,27 @@ void cs_ctwr_adair (void)
        * note :Reprise pour les noeuds air en bordure*
        * ou avec un nbre de voisin insuffisant       *
        *---------------------------------------------*/
-      enregistre : ;
+      enregistre :;
 
       /*--------------------------------------------*
        * trouver le dernier indice sur pvoisair     *
        *--------------------------------------------*/
-      indice = 0 ;
+      indice = 0;
       while (ct->voisair[indice]!=-1) {
-        indice += 1 ;
+        indice += 1;
       }
 
       /*--------------------------------------------*
        * Ajout des voisins et des coefficients      *
        *--------------------------------------------*/
-      for (icol = 0 ; icol < nbvois ; icol++)
+      for (icol = 0; icol < nbvois; icol++)
         {
-          ct->voisair[indice + icol]  = nvois[ icol ];
-          ct->coefair[indice + icol]  = coeff[ icol ];
+          ct->voisair[indice + icol]  = nvois[icol];
+          ct->coefair[indice + icol]  = coeff[icol];
          }
 
 
-      ct->pvoisair[iair+1] = ct->pvoisair[iair] + nbvois ;
+      ct->pvoisair[iair+1] = ct->pvoisair[iair] + nbvois;
     }
     /*---------------------------------------------*
      * fin de la boucle sur les noeuds air de la ct*
@@ -2095,10 +2085,10 @@ cs_ctwr_stacking(void)
   cs_real_t tmp;
   cs_real_t gravite[3];
   fvm_coord_t * lst_xyz;
+  cs_ctwr_fluid_props_t  *ct_prop = cs_glob_ctwr_props;
   const double tolerance = 0.1;
 
   nb = cs_glob_ct_nbr  * cs_glob_ct_nbr;
-  cs_ctwr_fluid_props_t  *ct_prop = cs_glob_ctwr_props;
 
   BFT_MALLOC(cs_stack_ct, nb, cs_int_t);
   BFT_MALLOC(cs_chain_ct, cs_glob_ct_nbr, cs_int_t);
@@ -2107,12 +2097,12 @@ cs_ctwr_stacking(void)
   gravite[1]= ct_prop->gravy;
   gravite[2]= ct_prop->gravz;
 
-  for (i=0 ; i < cs_glob_ct_nbr ; i++)
-    for (j=0 ; j < cs_glob_ct_nbr ; j++)
+  for (i=0; i < cs_glob_ct_nbr; i++)
+    for (j=0; j < cs_glob_ct_nbr; j++)
       cs_stack_ct[i*cs_glob_ct_nbr + j]=0;
 
-  for (i=0 ; i < cs_glob_ct_nbr; i++)
-    for (j=0 ; j < cs_glob_ct_nbr ; j++)
+  for (i=0; i < cs_glob_ct_nbr; i++)
+    for (j=0; j < cs_glob_ct_nbr; j++)
       if (CS_ABS(cs_glob_ct_tab[i]->hmax - cs_glob_ct_tab[j]->hmin)< 1.e-6)
         cs_stack_ct[i*cs_glob_ct_nbr + j] =1;
 
@@ -2124,13 +2114,13 @@ cs_ctwr_stacking(void)
     rank = cs_glob_rank_id;
 
     for (dist_rank = 0; dist_rank < cs_glob_n_ranks; dist_rank++)
-      if (dist_rank != rank){
+      if (dist_rank != rank) {
 
-        MPI_Sendrecv(cs_stack_ct, nb, CS_MPI_INT , dist_rank, CS_CT_MPI_TAG,
+        MPI_Sendrecv(cs_stack_ct, nb, CS_MPI_INT, dist_rank, CS_CT_MPI_TAG,
                      aux, nb, CS_MPI_INT, dist_rank, CS_CT_MPI_TAG,
                      cs_glob_mpi_comm, &status);
-        for (i=0 ; i < cs_glob_ct_nbr ; i++)
-          for (j=0 ; j < cs_glob_ct_nbr ; j++){
+        for (i=0; i < cs_glob_ct_nbr; i++)
+          for (j=0; j < cs_glob_ct_nbr; j++) {
             if (aux[i*cs_glob_ct_nbr + j] > cs_stack_ct[i*cs_glob_ct_nbr + j])
               cs_stack_ct[i*cs_glob_ct_nbr + j] = aux[i*cs_glob_ct_nbr + j];
           }
@@ -2143,42 +2133,42 @@ cs_ctwr_stacking(void)
 
   /* to order the exchange area */
     /*Init the chaining array */
-  for(i = 0; i < cs_glob_ct_nbr ; i++)
+  for (i = 0; i < cs_glob_ct_nbr; i++)
     cs_chain_ct[i] = i;
 
-  for (i = 0; i < cs_glob_ct_nbr ; i++)
-    for (j = i+1; j < cs_glob_ct_nbr ; j++)
-      if (cs_stack_ct[cs_chain_ct[i]*cs_glob_ct_nbr + cs_chain_ct[j]] == 1 ){
+  for (i = 0; i < cs_glob_ct_nbr; i++)
+    for (j = i+1; j < cs_glob_ct_nbr; j++)
+      if (cs_stack_ct[cs_chain_ct[i]*cs_glob_ct_nbr + cs_chain_ct[j]] == 1) {
         itmp = cs_chain_ct [i];
         cs_chain_ct [i] = cs_chain_ct [j];
         cs_chain_ct [j] = itmp;
       }
 
-  for(ict = 0; ict< cs_glob_ct_nbr ; ict++){
+  for (ict = 0; ict< cs_glob_ct_nbr; ict++) {
 
     ct = cs_glob_ct_tab[cs_chain_ct[ict]];
     nb_ct = 0;
 
-    for (ict_uw = 0 ; ict_uw < cs_glob_ct_nbr ; ict_uw++)
-      if (cs_stack_ct[cs_chain_ct[ict]*cs_glob_ct_nbr + cs_chain_ct[ict_uw]]
-          == 1){
+    for (ict_uw = 0; ict_uw < cs_glob_ct_nbr; ict_uw++)
+      if (   cs_stack_ct[cs_chain_ct[ict]*cs_glob_ct_nbr + cs_chain_ct[ict_uw]]
+          == 1) {
 
         nb_ct++;
         ct_upw = cs_glob_ct_tab[cs_chain_ct[ict_uw]];
 
-        BFT_MALLOC( lst_xyz ,
-                    3*(ct_upw->nbfac_ict+ct_upw->nbfbr_ict) ,fvm_coord_t);
+        BFT_MALLOC(lst_xyz,
+                   3*(ct_upw->nbfac_ict+ct_upw->nbfbr_ict), fvm_coord_t);
 
         fvm_nodal_get_element_centers
-                    ( ct_upw->face_inf_mesh,FVM_INTERLACE,2,lst_xyz );
+          (ct_upw->face_inf_mesh,FVM_INTERLACE,2,lst_xyz);
 
         tmp  = CS_ABS(ct_upw->hmax - ct_upw->hmin)/(ct_upw->nelect-1);
         tmp /= CS_LOC_MODULE(gravite);
 
-        for (i=0 ; i < (ct_upw->nbfac_ict+ct_upw->nbfbr_ict) ; i++){
-          lst_xyz[3*i + 0 ] -= tmp * gravite[0];
-          lst_xyz[3*i + 1 ] -= tmp * gravite[1];
-          lst_xyz[3*i + 2 ] -= tmp * gravite[2];
+        for (i=0; i < (ct_upw->nbfac_ict+ct_upw->nbfbr_ict); i++) {
+          lst_xyz[3*i + 0] -= tmp * gravite[0];
+          lst_xyz[3*i + 1] -= tmp * gravite[1];
+          lst_xyz[3*i + 2] -= tmp * gravite[2];
         }
 
         BFT_REALLOC(ct->locat_cell_ct_upwind, nb_ct, fvm_locator_t *);
diff --git a/src/ctwr/ctini1.f90 b/src/ctwr/ctini1.f90
index 13c1fd3..068ff45 100644
--- a/src/ctwr/ctini1.f90
+++ b/src/ctwr/ctini1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine ctini1
+subroutine ctini1
 !================
 
 
@@ -39,7 +39,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,7 +69,7 @@ include "ctincl.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer iphas, ii, jj, isc, ipp
 
@@ -193,4 +193,4 @@ call uscti1
 '@                                                            ',/)
 
 return
-end
+end subroutine
diff --git a/src/ctwr/ctiniv.f90 b/src/ctwr/ctiniv.f90
index c1d4acd..f3c8d2e 100644
--- a/src/ctwr/ctiniv.f90
+++ b/src/ctwr/ctiniv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -82,78 +82,65 @@ subroutine ctiniv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -165,7 +152,7 @@ subroutine ctiniv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -203,7 +190,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -250,4 +237,4 @@ call usctiv                                                       &
 
 return
 
-end
+end subroutine
diff --git a/src/ctwr/ctphyv.f90 b/src/ctwr/ctphyv.f90
index 03d0d01..44c3012 100644
--- a/src/ctwr/ctphyv.f90
+++ b/src/ctwr/ctphyv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -104,82 +104,69 @@ subroutine ctphyv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -191,7 +178,7 @@ subroutine ctphyv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -235,7 +222,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          iel   , iphas
@@ -472,4 +459,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/ctwr/cttssc.f90 b/src/ctwr/cttssc.f90
index 05dd0d5..dfe1469 100644
--- a/src/ctwr/cttssc.f90
+++ b/src/ctwr/cttssc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -53,84 +53,71 @@ subroutine cttssc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
 ! nckpdp           ! e  ! <-- ! nbr de coef du tenseur de pdc (3 ou 6          !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 ! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
 ! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc(ncepdp    ! tr ! <-- ! tableau de travail pour pdc                    !
 !     , nckpdp)    !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -142,9 +129,9 @@ subroutine cttssc &
 ! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
 ! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -157,7 +144,7 @@ subroutine cttssc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -215,7 +202,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -260,4 +247,4 @@ chaine = nomvar(ipprtp(ivar))
 !----
 
 return
-end
+end subroutine
diff --git a/src/ctwr/ctvarp.f90 b/src/ctwr/ctvarp.f90
index fedfe2f..3f9848d 100644
--- a/src/ctwr/ctvarp.f90
+++ b/src/ctwr/ctvarp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine ctvarp
+subroutine ctvarp
 !================
 
 
@@ -39,7 +39,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,7 +69,7 @@ include "ctincl.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer        isc, iphas
 
@@ -110,5 +110,5 @@ iphas      = iphsca(itemp4)
 icp(iphas) = 1
 
 return
-end
+end subroutine
 
diff --git a/src/elec/Makefile.in b/src/elec/Makefile.in
index 3611e43..c9d55af 100644
--- a/src/elec/Makefile.in
+++ b/src/elec/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -42,8 +43,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -66,6 +68,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -81,6 +84,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcselec_la_LIBADD =
 am_libcselec_la_OBJECTS = elflux.lo elini1.lo eliniv.lo ellecd.lo \
@@ -88,17 +92,17 @@ am_libcselec_la_OBJECTS = elflux.lo elini1.lo eliniv.lo ellecd.lo \
 	uselcl.lo uselen.lo useli1.lo useliv.lo uselph.lo uselrc.lo \
 	usetcl.lo
 libcselec_la_OBJECTS = $(am_libcselec_la_OBJECTS)
-libcselec_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+libcselec_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(libcselec_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcselec_la_SOURCES)
 DIST_SOURCES = $(libcselec_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -106,12 +110,25 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(elecdir)" \
 	"$(DESTDIR)$(saturneincludedir)"
-elecDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(elec_DATA)
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -158,6 +175,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -194,11 +213,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -213,15 +230,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -266,7 +286,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -283,8 +304,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -352,14 +376,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/elec/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/elec/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/elec/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/elec/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -377,6 +401,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -405,25 +430,25 @@ distclean-compile:
 	$(LTFCCOMPILE) -c -o $@ $<
 
 uselcl.lo: $(top_srcdir)/users/elec/uselcl.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uselcl.lo `test -f '$(top_srcdir)/users/elec/uselcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/uselcl.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uselcl.lo `test -f '$(top_srcdir)/users/elec/uselcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/uselcl.f90
 
 uselen.lo: $(top_srcdir)/users/elec/uselen.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uselen.lo `test -f '$(top_srcdir)/users/elec/uselen.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/uselen.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uselen.lo `test -f '$(top_srcdir)/users/elec/uselen.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/uselen.f90
 
 useli1.lo: $(top_srcdir)/users/elec/useli1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o useli1.lo `test -f '$(top_srcdir)/users/elec/useli1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/useli1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o useli1.lo `test -f '$(top_srcdir)/users/elec/useli1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/useli1.f90
 
 useliv.lo: $(top_srcdir)/users/elec/useliv.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o useliv.lo `test -f '$(top_srcdir)/users/elec/useliv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/useliv.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o useliv.lo `test -f '$(top_srcdir)/users/elec/useliv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/useliv.f90
 
 uselph.lo: $(top_srcdir)/users/elec/uselph.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uselph.lo `test -f '$(top_srcdir)/users/elec/uselph.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/uselph.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uselph.lo `test -f '$(top_srcdir)/users/elec/uselph.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/uselph.f90
 
 uselrc.lo: $(top_srcdir)/users/elec/uselrc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uselrc.lo `test -f '$(top_srcdir)/users/elec/uselrc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/uselrc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uselrc.lo `test -f '$(top_srcdir)/users/elec/uselrc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/uselrc.f90
 
 usetcl.lo: $(top_srcdir)/users/elec/usetcl.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usetcl.lo `test -f '$(top_srcdir)/users/elec/usetcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/usetcl.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usetcl.lo `test -f '$(top_srcdir)/users/elec/usetcl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/elec/usetcl.f90
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -433,51 +458,57 @@ clean-libtool:
 install-elecDATA: $(elec_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(elecdir)" || $(MKDIR_P) "$(DESTDIR)$(elecdir)"
-	@list='$(elec_DATA)'; for p in $$list; do \
+	@list='$(elec_DATA)'; test -n "$(elecdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(elecDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(elecdir)/$$f'"; \
-	  $(elecDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(elecdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(elecdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(elecdir)" || exit $$?; \
 	done
 
 uninstall-elecDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(elec_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(elecdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(elecdir)/$$f"; \
-	done
+	@list='$(elec_DATA)'; test -n "$(elecdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(elecdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(elecdir)" && rm -f $$files
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -485,29 +516,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -528,13 +564,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -565,6 +605,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -585,6 +626,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -593,18 +636,28 @@ install-data-am: install-elecDATA install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -643,6 +696,7 @@ uninstall-am: uninstall-elecDATA uninstall-saturneincludeHEADERS
 	tags uninstall uninstall-am uninstall-elecDATA \
 	uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/elec/elflux.f90 b/src/elec/elflux.f90
index c395ecf..26b0ca0 100644
--- a/src/elec/elflux.f90
+++ b/src/elec/elflux.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,86 +55,73 @@ subroutine elflux &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! iappel           ! e  ! <-- ! numero d'appel                                 !
 !                  !    !     ! 1 : j, e, j.e                                  !
 !                  !    !     ! 2 : b,    jxb                                  !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
 ! (ncesmp,*   )    !    !     !  source de masse                               !
 !                  !    !     !  pour ivar=ipr, smacel=flux de masse           !
 ! viscf(nfac)      ! tr ! --- ! tableau de travail    faces internes           !
 ! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..9(ncelet     ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -147,7 +134,7 @@ subroutine elflux &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -197,7 +184,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel
@@ -222,7 +209,11 @@ idebra = idbra0
 
 ! --- Numero des grandeurs physiques
 ipcsig = ipproc(ivisls(ipotr))
-ipcsii = ipproc(ivisls(ipoti))
+
+if(ippmod(ieljou).eq.2 .or. ippmod(ieljou).eq.4) then
+  ipcsii = ipproc(ivisls(ipoti))
+endif
+
 ipcefj = ipproc(iefjou)
 ipcdc1 = ipproc(idjr(1))
 ipcdc2 = ipproc(idjr(2))
@@ -1034,4 +1025,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/elec/elini1.f90 b/src/elec/elini1.f90
index c3e2ba3..040d64b 100644
--- a/src/elec/elini1.f90
+++ b/src/elec/elini1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine elini1
+subroutine elini1
 !================
 
 
@@ -39,7 +39,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,7 +69,7 @@ include "elincl.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idimve , iesp
 integer          ipp , ii , iok
@@ -192,7 +192,7 @@ if(ippmod(ielarc).ge.2) then
     idiff (ivar) = 1
     idifft(ivar) = 0
     idircl(ivar) = 1
-    imgr  (ivar) = 1
+    imgr  (ivar) = 0
   enddo
 endif
 
@@ -519,4 +519,4 @@ endif
 '@                                                            ',/)
 
 return
-end
+end subroutine
diff --git a/src/elec/eliniv.f90 b/src/elec/eliniv.f90
index 010d60d..6126be5 100644
--- a/src/elec/eliniv.f90
+++ b/src/elec/eliniv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -82,78 +82,65 @@ subroutine eliniv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -165,7 +152,7 @@ subroutine eliniv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -203,7 +190,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, mode, iphas , idimve , iesp
@@ -401,4 +388,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/elec/ellecd.f90 b/src/elec/ellecd.f90
index 91e308d..cabe17e 100644
--- a/src/elec/ellecd.f90
+++ b/src/elec/ellecd.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine ellecd
+subroutine ellecd
 !================
 !===============================================================================
 !  FONCTION  :
@@ -37,7 +37,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -50,7 +50,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -67,7 +67,7 @@ include "elincl.h"
 
 ! Arguments
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          it, ios , iesp, ii , i
 
@@ -364,6 +364,6 @@ call csexit (1)
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
 
-end
+end subroutine
 
 
diff --git a/src/elec/elphyv.f90 b/src/elec/elphyv.f90
index 68c3391..a9bf158 100644
--- a/src/elec/elphyv.f90
+++ b/src/elec/elphyv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -115,82 +115,69 @@ subroutine elphyv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -202,7 +189,7 @@ subroutine elphyv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -247,7 +234,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 integer          iel   , iphas
@@ -854,4 +841,4 @@ call uselph                                                       &
 !----
 
 return
-end
+end subroutine
diff --git a/src/elec/elprop.f90 b/src/elec/elprop.f90
index fcc70d6..8a9587d 100644
--- a/src/elec/elprop.f90
+++ b/src/elec/elprop.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine elprop &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ipropp           ! e  ! ->  ! numero de la derniere case utlisee             !
 !                  !    !     ! dans ipproc, ipprob, ipprof                    !
@@ -60,7 +60,7 @@ subroutine elprop &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -81,7 +81,7 @@ include "elincl.h"
 
 integer       ipropp , ipppst
 
-! VARIABLES LOCALES
+! Local variables
 
 integer       iprop, idimve
 
@@ -260,4 +260,4 @@ nproce = iprop
  nprofa = iprop
 
 return
-end
+end subroutine
diff --git a/src/elec/elthht.f90 b/src/elec/elthht.f90
index 4ead423..5a2b49f 100644
--- a/src/elec/elthht.f90
+++ b/src/elec/elthht.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -42,7 +42,7 @@ subroutine elthht &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! mode             ! e  ! <-- !  -1 : t -> h  ;   1 : h -> t                   !
 ! nesp             ! e  ! <-- ! nb de constituants                             !
@@ -60,7 +60,7 @@ subroutine elthht &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -82,7 +82,7 @@ integer          mode , nesp
 double precision enthal , temper , yesp(nesp)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          it , iesp
 
@@ -207,4 +207,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/elec/eltssc.f90 b/src/elec/eltssc.f90
index 5e65df8..7f34370 100644
--- a/src/elec/eltssc.f90
+++ b/src/elec/eltssc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -81,83 +81,70 @@ subroutine eltssc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 ! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
 ! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -169,9 +156,9 @@ subroutine eltssc &
 ! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
 ! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -184,7 +171,7 @@ subroutine eltssc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -242,7 +229,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -401,4 +388,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/elec/elvarp.f90 b/src/elec/elvarp.f90
index 56345d0..4774c59 100644
--- a/src/elec/elvarp.f90
+++ b/src/elec/elvarp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine elvarp
+subroutine elvarp
 !================
 
 
@@ -39,7 +39,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,7 +69,7 @@ include "elincl.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer        is, iesp , idimve, isc, iphas
 
@@ -166,5 +166,5 @@ iphas      = iphsca(ihm)
 icp(iphas) = 1
 
 return
-end
+end subroutine
 
diff --git a/src/elec/elveri.f90 b/src/elec/elveri.f90
index e5c3cee..3fefba5 100644
--- a/src/elec/elveri.f90
+++ b/src/elec/elveri.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,7 +40,7 @@ subroutine elveri &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -53,7 +53,7 @@ subroutine elveri &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -75,7 +75,7 @@ include "radiat.h"
 
 integer          iok
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iphas , imono , ntf
 
@@ -539,4 +539,4 @@ endif
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/fuel/Makefile.in b/src/fuel/Makefile.in
index 06aa689..5f0bc3c 100644
--- a/src/fuel/Makefile.in
+++ b/src/fuel/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -42,8 +43,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -66,6 +68,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -81,6 +84,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcsfuel_la_LIBADD =
 am_libcsfuel_la_OBJECTS = fucym1.lo fucyno.lo fuflux.lo fuini1.lo \
@@ -89,17 +93,17 @@ am_libcsfuel_la_OBJECTS = fucym1.lo fucyno.lo fuflux.lo fuini1.lo \
 	futhp2.lo futssc.lo futsvc.lo futsvi.lo fuvarp.lo fuveri.lo \
 	memfu1.lo usfucl.lo usfui1.lo usfuiv.lo
 libcsfuel_la_OBJECTS = $(am_libcsfuel_la_OBJECTS)
-libcsfuel_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+libcsfuel_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(libcsfuel_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcsfuel_la_SOURCES)
 DIST_SOURCES = $(libcsfuel_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -107,12 +111,25 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(fueldir)" \
 	"$(DESTDIR)$(saturneincludedir)"
-fuelDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(fuel_DATA)
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -159,6 +176,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -195,11 +214,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -214,15 +231,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -267,7 +287,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -284,8 +305,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -350,14 +374,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/fuel/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/fuel/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/fuel/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/fuel/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -375,6 +399,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -403,13 +428,13 @@ distclean-compile:
 	$(LTFCCOMPILE) -c -o $@ $<
 
 usfucl.lo: $(top_srcdir)/users/fuel/usfucl.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usfucl.lo `test -f '$(top_srcdir)/users/fuel/usfucl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/fuel/usfucl.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usfucl.lo `test -f '$(top_srcdir)/users/fuel/usfucl.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/fuel/usfucl.f90
 
 usfui1.lo: $(top_srcdir)/users/fuel/usfui1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usfui1.lo `test -f '$(top_srcdir)/users/fuel/usfui1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/fuel/usfui1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usfui1.lo `test -f '$(top_srcdir)/users/fuel/usfui1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/fuel/usfui1.f90
 
 usfuiv.lo: $(top_srcdir)/users/fuel/usfuiv.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usfuiv.lo `test -f '$(top_srcdir)/users/fuel/usfuiv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/fuel/usfuiv.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usfuiv.lo `test -f '$(top_srcdir)/users/fuel/usfuiv.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/fuel/usfuiv.f90
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -419,51 +444,57 @@ clean-libtool:
 install-fuelDATA: $(fuel_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(fueldir)" || $(MKDIR_P) "$(DESTDIR)$(fueldir)"
-	@list='$(fuel_DATA)'; for p in $$list; do \
+	@list='$(fuel_DATA)'; test -n "$(fueldir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(fuelDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(fueldir)/$$f'"; \
-	  $(fuelDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(fueldir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(fueldir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(fueldir)" || exit $$?; \
 	done
 
 uninstall-fuelDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(fuel_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(fueldir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(fueldir)/$$f"; \
-	done
+	@list='$(fuel_DATA)'; test -n "$(fueldir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(fueldir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(fueldir)" && rm -f $$files
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -471,29 +502,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -514,13 +550,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -551,6 +591,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -571,6 +612,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -579,18 +622,28 @@ install-data-am: install-fuelDATA install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -629,6 +682,7 @@ uninstall-am: uninstall-fuelDATA uninstall-saturneincludeHEADERS
 	tags uninstall uninstall-am uninstall-fuelDATA \
 	uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/fuel/fucym1.f90 b/src/fuel/fucym1.f90
index 255a3ed..b003fef 100644
--- a/src/fuel/fucym1.f90
+++ b/src/fuel/fucym1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine fucym1                               &
+subroutine fucym1 &
 !================
 
  ( ncelet , ncel   ,                                              &
@@ -46,10 +46,10 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant)                  !
 ! fvap             ! tr ! <-- ! moyenne du traceur 1 mvl [fovm+co]             !
@@ -80,7 +80,7 @@
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -119,7 +119,7 @@ double precision xiner(ncelet)
 double precision xh2s(ncelet) , xso2(ncelet)
 double precision f4s3no(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel, icla
 
@@ -677,4 +677,4 @@ write(nfecra,2200) n3 , n4, n5, n6, n7, n8,                       &
 '    ARRET DU CALCUL : VERIFIER USPPMO')
 
 return
-end
+end subroutine
diff --git a/src/fuel/fucyno.f90 b/src/fuel/fucyno.f90
index 277363b..66a2c3b 100644
--- a/src/fuel/fucyno.f90
+++ b/src/fuel/fucyno.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -51,10 +51,10 @@ subroutine fucyno &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant)                  !
 ! fvap             ! tr ! <-- ! moyenne du traceur 1 mvl [fovm+co]             !
@@ -85,7 +85,7 @@ subroutine fucyno &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -123,7 +123,7 @@ double precision oxyd(ncelet) , prod1(ncelet), prod2(ncelet)
 double precision xiner(ncelet)
 double precision xh2s(ncelet) , xso2(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel , icla , i
 
@@ -469,4 +469,4 @@ if ( ipdf1 .eq. 1 .or. ipdf2 .eq. 1 .or. ipdf3 .eq. 1 ) then
 endif
 
 return
-end
+end subroutine
diff --git a/src/fuel/fuflux.f90 b/src/fuel/fuflux.f90
index b14b14a..1eb39ac 100644
--- a/src/fuel/fuflux.f90
+++ b/src/fuel/fuflux.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,20 +44,18 @@ subroutine fuflux &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant precedent)                !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! w1, w2, w3       ! tr ! --- ! tableaux de travail                            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -69,7 +67,7 @@ subroutine fuflux &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -98,7 +96,7 @@ double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision volume(ncelet)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel    , iphas  , icla
@@ -375,4 +373,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/fuel/fuini1.f90 b/src/fuel/fuini1.f90
index 209644f..559fda5 100644
--- a/src/fuel/fuini1.f90
+++ b/src/fuel/fuini1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine fuini1
+subroutine fuini1
 !================
 
 !===============================================================================
@@ -39,7 +39,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -553,4 +553,4 @@ endif
 '@                                                            ',/)
 
 return
-end
+end subroutine
diff --git a/src/fuel/fuiniv.f90 b/src/fuel/fuiniv.f90
index 67c1385..2c42a82 100644
--- a/src/fuel/fuiniv.f90
+++ b/src/fuel/fuiniv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -82,78 +82,65 @@ subroutine fuiniv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -165,7 +152,7 @@ subroutine fuiniv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -207,7 +194,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, ige, mode, iphas, icla
@@ -375,4 +362,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/fuel/fulecd.f90 b/src/fuel/fulecd.f90
index 14ddc9d..81942a1 100644
--- a/src/fuel/fulecd.f90
+++ b/src/fuel/fulecd.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine fulecd
+subroutine fulecd
 !================
 !===============================================================================
 !  FONCTION  :
@@ -37,7 +37,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -50,7 +50,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -70,7 +70,7 @@ include "ppcpfu.h"
 
 ! Arguments
 
-! VARIABLES LOCALES
+! Local variables
 
 character *150 chain1,chain2
 character *12   nomcoe(ngazem)
@@ -724,6 +724,6 @@ call csexit (1)
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
 
-end
+end subroutine
 
 
diff --git a/src/fuel/fupdfr.f90 b/src/fuel/fupdfr.f90
index 81e4b65..61d9b0d 100644
--- a/src/fuel/fupdfr.f90
+++ b/src/fuel/fupdfr.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,10 +41,10 @@ subroutine fupdfr &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! fvap             ! tr ! <-- ! moyenne du traceur 1 mvl [fovm+co]             !
 ! fhet             ! tr !  ->           ! moyenne du traceur 3 c h�terog�ne    !
 ! f4p2m            ! tr ! <-- ! variance du traceur 4 (air)                    !
@@ -65,7 +65,7 @@ subroutine fupdfr &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -94,7 +94,7 @@ double precision fvap(ncelet) , fhtf(ncelet) , f4p2m(ncelet)
 double precision f4m1(ncelet) , f4m2(ncelet) , d4cl(ncelet)
 double precision d4f4(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel
 
@@ -232,4 +232,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/fuel/fuphy1.f90 b/src/fuel/fuphy1.f90
index e12f753..e2e0b5b 100644
--- a/src/fuel/fuphy1.f90
+++ b/src/fuel/fuphy1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine fuphy1                               &
+subroutine fuphy1 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -89,12 +89,12 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! nitbfu           ! e  ! <-- ! taille du macro tableau fuel entiers           !
 ! nrtbfu           ! e  ! <-- ! taille du macro tableau fuel reels             !
 ! nitbwo           ! e  ! <-- ! taille du macro tableau work entiers           !
@@ -107,8 +107,7 @@
 !                  !    !     !                    soit du melange             !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant)                  !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! itbfu            ! tr ! <-- ! macro tableau entier fuel travail              !
 ! rtbfu            ! tr ! <-- ! macro tableau reel   fuel travail              !
 ! itbwo            ! tr ! <-- ! macro tableau entier travail                   !
@@ -124,7 +123,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -159,7 +158,7 @@ double precision rom1(ncelet)
 double precision rtbfu(ncelet,nrtbfu)
 double precision rtbwo(ncelet,nrtbwo)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel    , iphas  , ice
@@ -362,4 +361,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/fuel/fuphy2.f90 b/src/fuel/fuphy2.f90
index 2872d1f..af71bf3 100644
--- a/src/fuel/fuphy2.f90
+++ b/src/fuel/fuphy2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine fuphy2                               &
+subroutine fuphy2 &
 !================
 
  ( ncelet , ncel   ,                                              &
@@ -47,14 +47,13 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant)                  !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -66,7 +65,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -91,7 +90,7 @@ integer          ncelet , ncel
 
 double precision rtp(ncelet,*) , propce(ncelet,*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel
 integer          n1     , n2     , ipcdia , icla
@@ -201,4 +200,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/fuel/fuphyv.f90 b/src/fuel/fuphyv.f90
index f6bf18b..cfa28e5 100644
--- a/src/fuel/fuphyv.f90
+++ b/src/fuel/fuphyv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -109,82 +109,69 @@ subroutine fuphyv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -196,7 +183,7 @@ subroutine fuphyv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -245,7 +232,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ntbfui, ifuwi, ntbfur, ifuwr
@@ -549,4 +536,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/fuel/fuprop.f90 b/src/fuel/fuprop.f90
index 51c01d8..41764a3 100644
--- a/src/fuel/fuprop.f90
+++ b/src/fuel/fuprop.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine fuprop &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ipropp           ! e  ! <-- ! numero de la derniere propriete                !
 !                  !    !     !  (les proprietes sont dans propce,             !
@@ -61,7 +61,7 @@ subroutine fuprop &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -85,7 +85,7 @@ include "ppincl.h"
 
 integer       ipropp, ipppst
 
-! VARIABLES LOCALES
+! Local variables
 
 integer       iprop, ige , icla , iprop2
 
@@ -247,4 +247,4 @@ iprop  = nprofa
 nprofa = iprop
 
 return
-end
+end subroutine
diff --git a/src/fuel/fuptcl.f90 b/src/fuel/fuptcl.f90
index c82ad4d..d4518a9 100644
--- a/src/fuel/fuptcl.f90
+++ b/src/fuel/fuptcl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,45 +55,36 @@ subroutine fuptcl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -103,40 +94,36 @@ subroutine fuptcl &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -149,13 +136,13 @@ subroutine fuptcl &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -167,7 +154,7 @@ subroutine fuptcl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 ! Arguments
@@ -222,7 +209,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefol(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ii, iphas, ifac, izone, mode, iel, ige, iok
@@ -699,4 +686,4 @@ endif
 
 
 return
-end
+end subroutine
diff --git a/src/fuel/furays.f90 b/src/fuel/furays.f90
index d791f4e..fdbce24 100644
--- a/src/fuel/furays.f90
+++ b/src/fuel/furays.f90
@@ -29,7 +29,7 @@ subroutine furays &
 !================
 
   ( ivar   , ncelet , ncel   ,                                    &
-    volume , propce , smbrs  , rovsdt )
+    volume , rtpa   , propce , smbrs  , rovsdt )
 
 
 !===============================================================================
@@ -44,16 +44,17 @@ subroutine furays &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ivar             ! e  ! <-- ! numero de la variable scalaire                 !
 !                  !    !     !   energie (enthalpie h2) pour le               !
 !                  !    !     !   charbon                                      !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! volume(ncelet    ! tr ! <-- ! volume des cellules                            !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! smbrs(ncelet     ! tr ! <-- ! second membre du systeme                       !
 ! rovsdt(ncelet    ! tr ! <-- ! diagonale du systeme                           !
 !__________________!____!_____!________________________________________________!
@@ -67,7 +68,7 @@ subroutine furays &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -89,9 +90,10 @@ integer          ivar , ncelet, ncel
 double precision volume(ncelet)
 double precision smbrs(ncelet)
 double precision rovsdt(ncelet)
+double precision rtpa(ncelet,*)
 double precision propce(ncelet,*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel , numcla , ipcl
 
@@ -119,8 +121,8 @@ do iel = 1,ncel
 
 !--> PARTIE EXPLICITE
 
-    smbrs(iel)  = smbrs(iel) +  propce(iel,ipproc(itsre(ipcl)))*volume(iel)        &
-                               *propce(iel,ipproc(iyfol(numcla)))
+    smbrs(iel)  = smbrs(iel) +  propce(iel,ipproc(itsre(ipcl)))*volume(iel)  &
+                               *rtpa(iel,isca(iyfol(numcla)))
 
 !--> PARTIE IMPLICITE
 
@@ -136,4 +138,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/fuel/futeh1.f90 b/src/fuel/futeh1.f90
index b15a417..cef0113 100644
--- a/src/fuel/futeh1.f90
+++ b/src/fuel/futeh1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine futeh1                               &
+subroutine futeh1 &
 !================
 
  ( ncelet , ncel   ,                                              &
@@ -43,10 +43,10 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! eh               ! tr ! <-- ! enthalpie du gaz                               !
 !                  !    !     ! (j/kg de melange gazeux)                       !
 ! fuel1            ! tr ! <-- ! fraction massique chx1                         !
@@ -70,7 +70,7 @@
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -100,7 +100,7 @@ double precision xh2s(ncelet) , xso2(ncelet)
 double precision tp(ncelet)
 double precision eh0(ncelet), eh1(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, icel
 
@@ -173,4 +173,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/fuel/futeh2.f90 b/src/fuel/futeh2.f90
index 7ed298a..b2b2d50 100644
--- a/src/fuel/futeh2.f90
+++ b/src/fuel/futeh2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine futeh2                               &
+subroutine futeh2 &
 !================
 
  ( ncelet , ncel   , nrtuse ,                                     &
@@ -39,14 +39,13 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant)                  !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! eh0              ! tr ! <-- ! tableau reel de travail                        !
 ! eh1              ! tr ! <-- ! tableau reel de travail                        !
 !__________________!____!_____!________________________________________________!
@@ -60,7 +59,7 @@
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -84,7 +83,7 @@ integer          ncelet, ncel , nrtuse
 double precision rtp(ncelet,*), propce(ncelet,*)
 double precision rtuser(nrtuse)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          icel , icla
 integer          ipcte1 , ipcte2
@@ -170,4 +169,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/fuel/futhp1.f90 b/src/fuel/futhp1.f90
index c12b7a3..23b91f9 100644
--- a/src/fuel/futhp1.f90
+++ b/src/fuel/futhp1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine futhp1                               &
+subroutine futhp1 &
 !================
 
  ( mode  , eh     , xesp   , tp  )
@@ -42,7 +42,7 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! eh               ! tr ! <-- ! enthalpie du gaz                               !
 !                  !    !     ! (j/kg de melange gazeux)                       !
@@ -59,7 +59,7 @@
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -83,7 +83,7 @@ integer          mode
 double precision eh,tp
 double precision xesp(ngazem)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii
 
@@ -269,5 +269,5 @@ endif
 !----
 
 return
-end
+end subroutine
 
diff --git a/src/fuel/futhp2.f90 b/src/fuel/futhp2.f90
index a82e27f..11976d7 100644
--- a/src/fuel/futhp2.f90
+++ b/src/fuel/futhp2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine futhp2                               &
+subroutine futhp2 &
 !================
 
  ( mode   , enthal , xsolid , temper )
@@ -43,7 +43,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! mode             ! e  ! <-- !  -1 : t -> h  ;   1 : h -> t                   !
 ! enthal           ! r  ! <-- ! enthalpie massique j/kg                        !
@@ -60,7 +60,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -85,7 +85,7 @@ integer          mode
 double precision xsolid(2)
 double precision temper , enthal
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          it , isol , ihflt2
 
@@ -237,4 +237,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/fuel/futssc.f90 b/src/fuel/futssc.f90
index ac588d8..295048d 100644
--- a/src/fuel/futssc.f90
+++ b/src/fuel/futssc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -82,83 +82,70 @@ subroutine futssc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 ! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
 ! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -170,9 +157,9 @@ subroutine futssc &
 ! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
 ! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -185,7 +172,7 @@ subroutine futssc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -247,7 +234,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -892,4 +879,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/fuel/futsvc.f90 b/src/fuel/futsvc.f90
index 32ec053..6e15234 100644
--- a/src/fuel/futsvc.f90
+++ b/src/fuel/futsvc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -56,90 +56,77 @@ subroutine futsvc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
 ! iscala           ! e  ! <-- ! numero du scalaire associe                     !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! smbrs(ncelet)    ! tr ! --> ! second membre explicite                        !
 ! rovsdt(ncelet    ! tr ! --> ! partie diagonale implicite                     !
 ! wfb(nfabor)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..8(ncelet)    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -152,7 +139,7 @@ subroutine futsvc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -208,7 +195,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          ivar   , ivarsc , ivarut , ivar0
@@ -430,4 +417,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/fuel/futsvi.f90 b/src/fuel/futsvi.f90
index 715391d..11c741a 100644
--- a/src/fuel/futsvi.f90
+++ b/src/fuel/futsvi.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,17 +46,15 @@ subroutine futsvi &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! numtra           ! e  ! <-- ! numero du traceur concerne (1,2,3,4)           !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant precedent)                !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! smbrs(ncelet)    ! tr ! --> ! second membre explicite                        !
 ! rovsdt(ncelet    ! tr ! --> ! partie diagonale implicite                     !
 ! w1(ncelet)       ! tr ! --- ! tableau de travail                             !
@@ -72,7 +70,7 @@ subroutine futsvi &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -99,7 +97,7 @@ double precision volume(ncelet)
 double precision smbrs(ncelet), rovsdt(ncelet)
 double precision w1(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel    , icla   , iphas
 integer          ipcrom
@@ -232,4 +230,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/fuel/fuvarp.f90 b/src/fuel/fuvarp.f90
index dfbba50..3281edf 100644
--- a/src/fuel/fuvarp.f90
+++ b/src/fuel/fuvarp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine fuvarp
+subroutine fuvarp
 !================
 !===============================================================================
 !  FONCTION  :
@@ -37,7 +37,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -50,7 +50,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -144,4 +144,4 @@ iphas = iphsca(ihm)
 icp(iphas)    = 0
 
 return
-end
+end subroutine
diff --git a/src/fuel/fuveri.f90 b/src/fuel/fuveri.f90
index 341ad33..e46e498 100644
--- a/src/fuel/fuveri.f90
+++ b/src/fuel/fuveri.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine fuveri &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -54,7 +54,7 @@ subroutine fuveri &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -77,7 +77,7 @@ include "ppincl.h"
 
 integer          iok
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iphas
 
@@ -173,4 +173,4 @@ endif
 !===============================================================================
 
 return
-end
+end subroutine
diff --git a/src/fuel/memfu1.f90 b/src/fuel/memfu1.f90
index cf2791e..9be79ad 100644
--- a/src/fuel/memfu1.f90
+++ b/src/fuel/memfu1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine memfu1                               &
+subroutine memfu1 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -46,15 +46,15 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idbia0/idbra0    ! e  ! <-- ! pointeur de la premiere cas libre des          !
 !                  !    !     !  tableaux ia/ra                                !
 ! nvar             ! e  ! <-- ! nombre de variables                            !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! ntbcpi           ! e  ! <-- ! taille du macro tableau cp entiers             !
 ! icpwi            ! e  ! --> ! pointeur  macro tableau cp entiers             !
 ! ntbcpr           ! e  ! <-- ! taille du macro tableau cp reels               !
@@ -67,10 +67,8 @@
 ! iwori            ! e  ! --> ! pointeur  macro tableau work entiers           !
 ! ntbwor           ! e  ! <-- ! taille du macro tableau work reels             !
 ! iworr            ! e  ! --> ! pointeur  macro tableau work reels             !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre              !
-!                  !    !     !  dans ra en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -82,7 +80,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -99,7 +97,7 @@ integer          ntbfui , ifuwi  , ntbfur , ifuwr
 integer          ntbwoi , iwori  , ntbwor , iworr
 integer          ifinia , ifinra
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 
@@ -129,4 +127,4 @@ CALL RASIZE('MEMFU1',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/lagr/Makefile.am b/src/lagr/Makefile.am
index 81e16ae..2bdfc83 100644
--- a/src/lagr/Makefile.am
+++ b/src/lagr/Makefile.am
@@ -25,7 +25,7 @@
 AM_CPPFLAGS = \
 -I$(top_srcdir)/include/base \
 -I$(top_srcdir)/include/lagr \
- at BFT_CPPFLAGS@ @FVM_CPPFLAGS@ @MPI_CPPFLAGS@
+ at FVM_CPPFLAGS@ @BFT_CPPFLAGS@ @MPI_CPPFLAGS@
 
 AM_CFLAGS = @CFLAGS_DBG@ @CFLAGS_OPT@ @CFLAGS_EXT@
 
diff --git a/src/lagr/Makefile.in b/src/lagr/Makefile.in
index 54d20d8..bc3d291 100644
--- a/src/lagr/Makefile.in
+++ b/src/lagr/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -42,8 +43,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -66,6 +68,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -81,6 +84,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcslagr_la_LIBADD =
 am_libcslagr_la_OBJECTS = cs_lagr.lo cs_lagr_perio.lo diverv.lo \
@@ -95,12 +99,13 @@ am_libcslagr_la_OBJECTS = cs_lagr.lo cs_lagr_perio.lo diverv.lo \
 	uslag2.lo uslain.lo uslapr.lo uslaru.lo uslast.lo uslatc.lo \
 	uslatp.lo
 libcslagr_la_OBJECTS = $(am_libcslagr_la_OBJECTS)
-libcslagr_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+libcslagr_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(libcslagr_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
@@ -111,12 +116,12 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcslagr_la_SOURCES)
 DIST_SOURCES = $(libcslagr_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -124,12 +129,25 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(lagrdir)" \
 	"$(DESTDIR)$(saturneincludedir)"
-lagrDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(lagr_DATA)
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -176,6 +194,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -212,11 +232,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -231,15 +249,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -284,7 +305,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -301,8 +323,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -328,7 +353,7 @@ top_srcdir = @top_srcdir@
 AM_CPPFLAGS = \
 -I$(top_srcdir)/include/base \
 -I$(top_srcdir)/include/lagr \
- at BFT_CPPFLAGS@ @FVM_CPPFLAGS@ @MPI_CPPFLAGS@
+ at FVM_CPPFLAGS@ @BFT_CPPFLAGS@ @MPI_CPPFLAGS@
 
 AM_CFLAGS = @CFLAGS_DBG@ @CFLAGS_OPT@ @CFLAGS_EXT@
 AM_FCFLAGS = \
@@ -400,14 +425,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lagr/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lagr/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/lagr/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/lagr/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -425,6 +450,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -448,21 +474,21 @@ distclean-compile:
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
@@ -477,43 +503,43 @@ distclean-compile:
 	$(LTFCCOMPILE) -c -o $@ $<
 
 uslabo.lo: $(top_srcdir)/users/lagr/uslabo.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslabo.lo `test -f '$(top_srcdir)/users/lagr/uslabo.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslabo.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslabo.lo `test -f '$(top_srcdir)/users/lagr/uslabo.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslabo.f90
 
 usladp.lo: $(top_srcdir)/users/lagr/usladp.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usladp.lo `test -f '$(top_srcdir)/users/lagr/usladp.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/usladp.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usladp.lo `test -f '$(top_srcdir)/users/lagr/usladp.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/usladp.f90
 
 uslaed.lo: $(top_srcdir)/users/lagr/uslaed.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslaed.lo `test -f '$(top_srcdir)/users/lagr/uslaed.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslaed.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslaed.lo `test -f '$(top_srcdir)/users/lagr/uslaed.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslaed.f90
 
 uslaen.lo: $(top_srcdir)/users/lagr/uslaen.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslaen.lo `test -f '$(top_srcdir)/users/lagr/uslaen.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslaen.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslaen.lo `test -f '$(top_srcdir)/users/lagr/uslaen.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslaen.f90
 
 uslafe.lo: $(top_srcdir)/users/lagr/uslafe.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslafe.lo `test -f '$(top_srcdir)/users/lagr/uslafe.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslafe.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslafe.lo `test -f '$(top_srcdir)/users/lagr/uslafe.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslafe.f90
 
 uslag1.lo: $(top_srcdir)/users/lagr/uslag1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslag1.lo `test -f '$(top_srcdir)/users/lagr/uslag1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslag1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslag1.lo `test -f '$(top_srcdir)/users/lagr/uslag1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslag1.f90
 
 uslag2.lo: $(top_srcdir)/users/lagr/uslag2.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslag2.lo `test -f '$(top_srcdir)/users/lagr/uslag2.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslag2.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslag2.lo `test -f '$(top_srcdir)/users/lagr/uslag2.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslag2.f90
 
 uslain.lo: $(top_srcdir)/users/lagr/uslain.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslain.lo `test -f '$(top_srcdir)/users/lagr/uslain.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslain.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslain.lo `test -f '$(top_srcdir)/users/lagr/uslain.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslain.f90
 
 uslapr.lo: $(top_srcdir)/users/lagr/uslapr.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslapr.lo `test -f '$(top_srcdir)/users/lagr/uslapr.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslapr.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslapr.lo `test -f '$(top_srcdir)/users/lagr/uslapr.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslapr.f90
 
 uslaru.lo: $(top_srcdir)/users/lagr/uslaru.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslaru.lo `test -f '$(top_srcdir)/users/lagr/uslaru.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslaru.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslaru.lo `test -f '$(top_srcdir)/users/lagr/uslaru.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslaru.f90
 
 uslast.lo: $(top_srcdir)/users/lagr/uslast.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslast.lo `test -f '$(top_srcdir)/users/lagr/uslast.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslast.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslast.lo `test -f '$(top_srcdir)/users/lagr/uslast.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslast.f90
 
 uslatc.lo: $(top_srcdir)/users/lagr/uslatc.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslatc.lo `test -f '$(top_srcdir)/users/lagr/uslatc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslatc.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslatc.lo `test -f '$(top_srcdir)/users/lagr/uslatc.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslatc.f90
 
 uslatp.lo: $(top_srcdir)/users/lagr/uslatp.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslatp.lo `test -f '$(top_srcdir)/users/lagr/uslatp.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslatp.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o uslatp.lo `test -f '$(top_srcdir)/users/lagr/uslatp.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/lagr/uslatp.f90
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -523,51 +549,57 @@ clean-libtool:
 install-lagrDATA: $(lagr_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(lagrdir)" || $(MKDIR_P) "$(DESTDIR)$(lagrdir)"
-	@list='$(lagr_DATA)'; for p in $$list; do \
+	@list='$(lagr_DATA)'; test -n "$(lagrdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(lagrDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(lagrdir)/$$f'"; \
-	  $(lagrDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(lagrdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(lagrdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(lagrdir)" || exit $$?; \
 	done
 
 uninstall-lagrDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(lagr_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(lagrdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(lagrdir)/$$f"; \
-	done
+	@list='$(lagr_DATA)'; test -n "$(lagrdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(lagrdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(lagrdir)" && rm -f $$files
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -575,29 +607,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -618,13 +655,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -655,6 +696,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -676,6 +718,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -684,18 +728,28 @@ install-data-am: install-lagrDATA install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -735,6 +789,7 @@ uninstall-am: uninstall-lagrDATA uninstall-saturneincludeHEADERS
 	tags uninstall uninstall-am uninstall-lagrDATA \
 	uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/lagr/cs_lagr.c b/src/lagr/cs_lagr.c
index eaf1959..1ed0d0e 100644
--- a/src/lagr/cs_lagr.c
+++ b/src/lagr/cs_lagr.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/lagr/cs_lagr_perio.c b/src/lagr/cs_lagr_perio.c
index dd0d4c8..9e581fb 100644
--- a/src/lagr/cs_lagr_perio.c
+++ b/src/lagr/cs_lagr_perio.c
@@ -3,7 +3,7 @@
  *     This file is part of the Code_Saturne Kernel, element of the
  *     Code_Saturne CFD tool.
  *
- *     Copyright (C) 1998-2008 EDF S.A., France
+ *     Copyright (C) 1998-2009 EDF S.A., France
  *
  *     contact: saturne-support at edf.fr
  *
diff --git a/src/lagr/diverv.f90 b/src/lagr/diverv.f90
index 64ce9ac..480e0e4 100644
--- a/src/lagr/diverv.f90
+++ b/src/lagr/diverv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -60,35 +60,30 @@ subroutine diverv &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 !  (nfml,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -99,23 +94,23 @@ subroutine diverv &
 !   (lndfbr)       !    !     !  face de bord dans nodfbr                      !
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (nfabor+1)     !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! div(ncelet)      ! tr ! --> ! divergence du vecteur                          !
 ! ux,uy,uz         ! tr ! --> ! composante du vecteur                          !
 ! (ncelet)         !    !     !                                                !
@@ -123,9 +118,9 @@ subroutine diverv &
 ! coefbz           !    !     ! faces de bord                                  !
 ! (nfabor)         !    !     !                                                !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -138,7 +133,7 @@ subroutine diverv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -185,7 +180,7 @@ double precision w7(ncelet) , w8(ncelet) , w9(ncelet)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ivar0
@@ -323,4 +318,4 @@ enddo
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/enslag.f90 b/src/lagr/enslag.f90
index 8f41af0..3f1e3a7 100644
--- a/src/lagr/enslag.f90
+++ b/src/lagr/enslag.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -58,10 +58,10 @@ subroutine enslag &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -90,7 +90,7 @@ subroutine enslag &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -109,7 +109,7 @@ integer          itepa(nbpmax,nivep)
 double precision ettp(nbpmax,nvp) , tepa(nbpmax,nvep)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          nl , np
@@ -874,4 +874,4 @@ call csexit(1)
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/enswaf.f90 b/src/lagr/enswaf.f90
index 575ede0..3dcadf4 100644
--- a/src/lagr/enswaf.f90
+++ b/src/lagr/enswaf.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,7 +50,7 @@ subroutine enswaf &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
@@ -79,7 +79,7 @@ subroutine enswaf &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -99,7 +99,7 @@ double precision ettp(nbpmax,nvp)
 double precision tepa(nbpmax,nvep)
 double precision trav(nbpmax,3)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          npt , ipt
 integer          np , nl
@@ -621,7 +621,7 @@ if (nfin.eq.1) then
   FICH = ' '
   fich = entet
   call verlon (fich,ii1,ii2,lpos)
-  FICH(II2+1:II2+8) = '.geo===='
+  FICH(II2+1:II2+8) = '.geo****'
   call verlon (fich,ii1,ii2,lpos)
   NAME = ' '
   NAME = 'model:                 1    '
@@ -649,7 +649,7 @@ if (nfin.eq.1) then
     name(ii2+1:ii2+n2)=fich(n1:n2)
     ii2 = ii2 + n2
     call verlon (name,ii1,ii2,lpos)
-    NAME(II2+1:II2+11) = '.tpssej===='
+    NAME(II2+1:II2+11) = '.tpssej****'
     ii2 = ii2 + 11
     WRITE(IMPLA1,'(A)') NAME(II1:II2)
   endif
@@ -661,7 +661,7 @@ if (nfin.eq.1) then
     name(ii2+1:ii2+n2)=fich(n1:n2)
     ii2 = ii2 + n2
     call verlon (name,ii1,ii2,lpos)
-    NAME(II2+1:II2+11) = '.temper===='
+    NAME(II2+1:II2+11) = '.temper****'
     ii2 = ii2 + 11
     WRITE(IMPLA1,'(A)') NAME(II1:II2)
   endif
@@ -673,7 +673,7 @@ if (nfin.eq.1) then
     name(ii2+1:ii2+n2)=fich(n1:n2)
     ii2 = ii2 + n2
     call verlon (name,ii1,ii2,lpos)
-    NAME(II2+1:II2+11) = '.diamet===='
+    NAME(II2+1:II2+11) = '.diamet****'
     ii2 = ii2 + 11
     WRITE(IMPLA1,'(A)') NAME(II1:II2)
   endif
@@ -685,7 +685,7 @@ if (nfin.eq.1) then
     name(ii2+1:ii2+n2)=fich(n1:n2)
     ii2 = ii2 + n2
     call verlon (name,ii1,ii2,lpos)
-    NAME(II2+1:II2+11) = '.massep===='
+    NAME(II2+1:II2+11) = '.massep****'
     ii2 = ii2 + 11
     WRITE(IMPLA1,'(A)') NAME(II1:II2)
   endif
@@ -697,7 +697,7 @@ if (nfin.eq.1) then
     name(ii2+1:ii2+n2)=fich(n1:n2)
     ii2 = ii2 + n2
     call verlon (name,ii1,ii2,lpos)
-    NAME(II2+1:II2+11) = '.tempch===='
+    NAME(II2+1:II2+11) = '.tempch****'
     ii2 = ii2 + 11
     WRITE(IMPLA1,'(A)') NAME(II1:II2)
   endif
@@ -709,7 +709,7 @@ if (nfin.eq.1) then
     name(ii2+1:ii2+n2)=fich(n1:n2)
     ii2 = ii2 + n2
     call verlon (name,ii1,ii2,lpos)
-    NAME(II2+1:II2+11) = '.dck===='
+    NAME(II2+1:II2+11) = '.dck****'
     ii2 = ii2 + 8
     WRITE(IMPLA1,'(A)') NAME(II1:II2)
   endif
@@ -721,7 +721,7 @@ if (nfin.eq.1) then
     name(ii2+1:ii2+n2)=fich(n1:n2)
     ii2 = ii2 + n2
     call verlon (name,ii1,ii2,lpos)
-    NAME(II2+1:II2+11) = '.mch===='
+    NAME(II2+1:II2+11) = '.mch****'
     ii2 = ii2 + 8
     WRITE(IMPLA1,'(A)') NAME(II1:II2)
   endif
@@ -733,7 +733,7 @@ if (nfin.eq.1) then
     name(ii2+1:ii2+n2)=fich(n1:n2)
     ii2 = ii2 + n2
     call verlon (name,ii1,ii2,lpos)
-    NAME(II2+1:II2+11) = '.mck===='
+    NAME(II2+1:II2+11) = '.mck****'
     ii2 = ii2 + 8
     WRITE(IMPLA1,'(A)') NAME(II1:II2)
   endif
@@ -745,7 +745,7 @@ if (nfin.eq.1) then
     name(ii2+1:ii2+n2)=fich(n1:n2)
     ii2 = ii2 + n2
     call verlon (name,ii1,ii2,lpos)
-    NAME(II2+1:II2+11) = '.vitflu===='
+    NAME(II2+1:II2+11) = '.vitflu****'
     ii2 = ii2 + 11
     WRITE(IMPLA1,'(A)') NAME(II1:II2)
   endif
@@ -757,7 +757,7 @@ if (nfin.eq.1) then
     name(ii2+1:ii2+n2)=fich(n1:n2)
     ii2 = ii2 + n2
     call verlon (name,ii1,ii2,lpos)
-    NAME(II2+1:II2+11) = '.vitpar===='
+    NAME(II2+1:II2+11) = '.vitpar****'
     ii2 = ii2 + 11
     WRITE(IMPLA1,'(A)') NAME(II1:II2)
   endif
@@ -809,4 +809,4 @@ return
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagaff.f90 b/src/lagr/lagaff.f90
index 8edec2b..e53a448 100644
--- a/src/lagr/lagaff.f90
+++ b/src/lagr/lagaff.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -62,25 +62,24 @@ subroutine lagaff &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -89,18 +88,14 @@ subroutine lagaff &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -111,33 +106,30 @@ subroutine lagaff &
 !   (lndfbr  )     !    !     !  (optionnel)                                   !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -151,9 +143,9 @@ subroutine lagaff &
 ! statis(ncelet    ! tr ! <-- ! cumul des statistiques volumiques              !
 !    nvlsta)       !    !     !                                                !
 ! w1..w3(ncelet    ! tr ! --- ! tableaux de travail                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -166,7 +158,7 @@ subroutine lagaff &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -217,7 +209,7 @@ double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 
@@ -455,4 +447,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/lagr/lagcar.f90 b/src/lagr/lagcar.f90
index edeed2a..2de0b19 100644
--- a/src/lagr/lagcar.f90
+++ b/src/lagr/lagcar.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,25 +55,24 @@ subroutine lagcar &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -82,36 +81,32 @@ subroutine lagcar &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
 ! ia(*)            ! te ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -133,9 +128,9 @@ subroutine lagcar &
 ! energi(ncelet    ! tr ! --- ! tableau de travail                             !
 ! dissip(ncelet    ! tr ! --- ! tableau de travail                             !
 ! romp(nbpmax)     ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -148,7 +143,7 @@ subroutine lagcar &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -196,7 +191,7 @@ double precision gradpr(ncelet,3) , gradvf(ncelet,9)
 double precision energi(ncelet) , dissip(ncelet), romp(nbpmax)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel , ip , id , igvx , igvy , igvz , ivt
@@ -699,4 +694,4 @@ enddo
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagcel.f90 b/src/lagr/lagcel.f90
index b009942..46c027f 100644
--- a/src/lagr/lagcel.f90
+++ b/src/lagr/lagcel.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -61,26 +61,25 @@ subroutine lagcel &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
 ! lndnod           ! e  ! <-- ! dim. connectivite cellules->faces              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -89,16 +88,12 @@ subroutine lagcel &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 !  (nfml,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -109,8 +104,8 @@ subroutine lagcel &
 !   (lndfbr)       !    !     !  face de bord dans nodfbr                      !
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (nfabor+1)     !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas)          !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! itrifb(nfabor    ! te ! --> ! tab d'indirection pour tri des faces           !
 !  nphas)          !    !     !                                                !
 ! icocel           ! te ! --> ! connectivite cellules -> faces                 !
@@ -125,34 +120,31 @@ subroutine lagcel &
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
 ! indep            ! te ! --> ! pour chaque particule :                        !
 !   (nbpmax)       !    !     !   numero de la cellule de depart               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
 ! surfbn(nfabor    ! tr ! ->  ! surface des faces de bord                      !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant et prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -162,9 +154,9 @@ subroutine lagcel &
 ! parbor(nfabor    ! tr ! <-- ! cumul des statistiques aux frontieres          !
 !    nvisbr)       !    !     !                                                !
 ! auxl(nbpmax,3    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -177,7 +169,7 @@ subroutine lagcel &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -231,7 +223,7 @@ double precision parbor(nfabor,nvisbr) , auxl(nbpmax,3)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 
@@ -1408,4 +1400,4 @@ call csexit (1)
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagcou.f90 b/src/lagr/lagcou.f90
index e6e4ede..7087c52 100644
--- a/src/lagr/lagcou.f90
+++ b/src/lagr/lagcou.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -69,20 +69,20 @@ subroutine lagcou &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -91,22 +91,21 @@ subroutine lagcou &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
 ! indep            ! te ! <-- ! pour chaque particule :                        !
 !  (nbpmax)        !    !     !    numero de la cellule de depart              !
 ! ibord            ! te ! <-- ! contient le numero de la                       !
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -129,9 +128,9 @@ subroutine lagcou &
 ! auxl1(nbpmax)    ! tr ! --- ! tableau de travail                             !
 ! auxl2(nbpmax)    ! tr ! --- ! tableau de travail                             !
 ! auxl3(nbpmax)    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -146,7 +145,7 @@ subroutine lagcou &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -193,7 +192,7 @@ double precision auxl1(nbpmax) , auxl2(nbpmax) , auxl3(nbpmax)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          npt , iel , ivar , icha , iphas
 double precision tvmax , tauv , taum , aux1
@@ -532,4 +531,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagdeb.f90 b/src/lagr/lagdeb.f90
index d6ff6ac..247e5f5 100644
--- a/src/lagr/lagdeb.f90
+++ b/src/lagr/lagdeb.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -90,33 +90,28 @@ subroutine lagdeb &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
 ! lndnod           ! e  ! <-- ! dim. connectivite cellules->faces              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 !  (nfml,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -131,12 +126,12 @@ subroutine lagdeb &
 ! (lndnod)         !    !     !    face de bord si numero negatif              !
 ! itycel           ! te ! --> ! connectivite cellules -> faces                 !
 ! (ncelet+1)       !    !     !    pointeur du tableau icocel                  !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -149,7 +144,7 @@ subroutine lagdeb &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -183,7 +178,7 @@ integer          ia(*)
 double precision rdevel(nrdeve) , rtuser(nrtuse) , ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -420,4 +415,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/lagr/lageli.f90 b/src/lagr/lageli.f90
index 18f18f0..aa0e113 100644
--- a/src/lagr/lageli.f90
+++ b/src/lagr/lageli.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -49,7 +49,7 @@ subroutine lageli &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
@@ -58,13 +58,13 @@ subroutine lageli &
 ! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
 ! npars            ! e  ! --> ! nombre max de particules sorties               !
 !                  !    !     !   eliminees                                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! dnpars           ! e  ! --> ! nombre max de particules sorties               !
 !                  !    !     !   eliminees  (poids stat inclus)               !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
@@ -73,9 +73,9 @@ subroutine lageli &
 !  (nbpmax,nvp)    !    !     !   aux particules etape precedente              !
 ! tepa             ! tr ! <-- ! info particulaires (reels)                     !
 ! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -88,7 +88,7 @@ subroutine lageli &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -207,4 +207,4 @@ dnbpar = dnbp
 ! FIN
 !====
 
-end
+end subroutine
diff --git a/src/lagr/lagent.f90 b/src/lagr/lagent.f90
index 8406a0b..9b88798 100644
--- a/src/lagr/lagent.f90
+++ b/src/lagr/lagent.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -68,26 +68,25 @@ subroutine lagent &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
 ! lndnod           ! e  !  ->           ! longueur du tableau icocel
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -96,16 +95,12 @@ subroutine lagent &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 !  (nfml,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -120,45 +115,42 @@ subroutine lagent &
 ! (lndnod)         !    !     !    face de bord si numero negatif              !
 ! itycel           ! te ! <-- ! connectivite cellules -> faces                 !
 ! (ncelet+1)       !    !     !    pointeur du tableau icocel                  !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas)          !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! itrifb(nfabor    ! te ! <-- ! tab d'indirection pour tri des faces           !
 !  nphas)          !    !     !                                                !
 ! ifrlag           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module lagrangien                     !
 ! itepa            ! te ! --> ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
 ! surfbn(nfabor    ! tr ! <-- ! surface des faces de bord                      !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant prec ou                   !
 !                  !    !     !    instant courant si ntcabs = 1)              !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! tepa             ! tr ! <-- ! info particulaires (reels)                     !
@@ -167,7 +159,7 @@ subroutine lagent &
 !(nbpmax,nvgaus    !    !     !                                                !
 ! auxl(nbpmax,3    ! tr ! --- ! tableau de travail                             !
 ! w1..w3(ncelet    ! tr ! --- ! tableaux de travail                            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -180,7 +172,7 @@ subroutine lagent &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -240,7 +232,7 @@ double precision w1(ncelet) ,  w2(ncelet) ,  w3(ncelet)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifinia, ifinra
@@ -800,7 +792,7 @@ npt = nbpart
 !       on garde IIWORK jusqu'a lagnwc
 
 iiwork = idebia
-ifinia = iiwork + nbpnew
+ifinia = iiwork + nbpmax
 ifinra = idebra
 CALL IASIZE('LAGENT',IFINIA)
 !==========
@@ -2142,4 +2134,4 @@ nbptot = nbptot + nbpnew
 
 return
 
-end
+end subroutine
diff --git a/src/lagr/lageqp.f90 b/src/lagr/lageqp.f90
index 83de878..a2d317e 100644
--- a/src/lagr/lageqp.f90
+++ b/src/lagr/lageqp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -62,35 +62,30 @@ subroutine lageqp &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 !  (nfml,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -101,30 +96,27 @@ subroutine lageqp &
 !   (lndfbr)       !    !     !  face de bord dans nodfbr                      !
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (nfabor+1)     !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
 ! (ndim,ncelet)    !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! viscf(nfac)      ! tr ! --- ! visc*surface/dist aux faces internes           !
 ! viscb(nfabor     ! tr ! --- ! visc*surface/dist aux faces de bord            !
 ! dam(ncelet)      ! tr ! --- ! tableau de travail pour matrice                !
@@ -141,9 +133,9 @@ subroutine lageqp &
 ! phi , phia       ! tr ! --> ! terme de correction en n et n-1                !
 ! (ncelet)         !    !     !                                                !
 ! w1..w9(ncelet    ! tr ! --- ! tableaux de travail                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -156,7 +148,7 @@ subroutine lageqp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -208,7 +200,7 @@ double precision w10(ncelet), w11(ncelet), w12(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra , ifinia , ifinra
@@ -505,4 +497,4 @@ call codits                                                       &
 
 return
 
-end
+end subroutine
diff --git a/src/lagr/lagerr.f90 b/src/lagr/lagerr.f90
index 8bf0451..b6312a8 100644
--- a/src/lagr/lagerr.f90
+++ b/src/lagr/lagerr.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine lagerr
+subroutine lagerr
 !================
 
 
@@ -43,7 +43,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !                  !    !     !                                                !
 !__________________.____._____.________________________________________________.
@@ -57,7 +57,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -82,4 +82,4 @@ WRITE(IMPSTP,'(A)') ' '
 close (impstp)
 
 return
-end
+end subroutine
diff --git a/src/lagr/lages1.f90 b/src/lagr/lages1.f90
index 1c3609a..ec23c64 100644
--- a/src/lagr/lages1.f90
+++ b/src/lagr/lages1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine lages1                               &
+subroutine lages1 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -56,25 +56,24 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -83,35 +82,32 @@
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (pas de temps precedent)           !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! --> ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -131,9 +127,9 @@
 ! romp             ! tr ! <-- ! masse volumique des particules                 !
 ! fextla           ! tr ! <-- ! champ de forces exterieur                      !
 !(ncelet,3)        !    !     !    utilisateur (m/s2)                          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -146,7 +142,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -196,7 +192,7 @@ double precision fextla(nbpmax,3)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel , ip , id , i0 , iromf , iphas , mode
@@ -495,4 +491,4 @@ enddo
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lages2.f90 b/src/lagr/lages2.f90
index 61bfaa4..4ca0579 100644
--- a/src/lagr/lages2.f90
+++ b/src/lagr/lages2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine lages2                               &
+subroutine lages2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -61,25 +61,24 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -88,37 +87,34 @@
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
 ! ibord            ! te ! --> ! si nordre=2, contient le numero de la          !
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant et prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! --> ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -144,9 +140,9 @@
 ! romp             ! tr ! <-- ! masse volumique des particules                 !
 ! fextla           ! tr ! <-- ! champ de forces exterieur                      !
 !(ncelet,3)        !    !     !    utilisateur (m/s2)                          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -159,7 +155,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -211,7 +207,7 @@ double precision fextla(nbpmax,3)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel , ip , id , i0 , iromf , iphas
@@ -537,4 +533,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagesp.f90 b/src/lagr/lagesp.f90
index 144cc21..9944a08 100644
--- a/src/lagr/lagesp.f90
+++ b/src/lagr/lagesp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -57,25 +57,24 @@ subroutine lagesp &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -84,37 +83,34 @@ subroutine lagesp &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
 ! ibord            ! te ! --> ! si nordre=2, contient le numero de la          !
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -142,9 +138,9 @@ subroutine lagesp &
 ! romp             ! tr ! --- ! masse volumique des particules                 !
 ! auxl2            ! tr ! --- ! tableau de travail                             !
 !    (nbpmax,7)    !    !     !                                                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -157,7 +153,7 @@ subroutine lagesp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -208,7 +204,7 @@ double precision romp(nbpmax) , auxl2(nbpmax,7)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          ip , ifinia , ifinra, ifexla
@@ -354,4 +350,4 @@ endif
 
 !===============================================================================
 
-end
+end subroutine
diff --git a/src/lagr/lagfch.f90 b/src/lagr/lagfch.f90
index fef6af7..755d8b1 100644
--- a/src/lagr/lagfch.f90
+++ b/src/lagr/lagfch.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -64,25 +64,24 @@ subroutine lagfch &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -91,37 +90,34 @@ subroutine lagfch &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
 ! ibord            ! te ! --> ! si nordre=2, contient le numero de la          !
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -149,9 +145,9 @@ subroutine lagfch &
 ! romp             ! tr ! --- ! masse volumique des particules                 !
 ! fextla           ! tr ! --> ! champ de forces exterieur                      !
 !(ncelet,3)        !    !     !    utilisateur (m/s2)                          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -164,7 +160,7 @@ subroutine lagfch &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -216,7 +212,7 @@ double precision fextla(nbpmax,3)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra,ifinia , ifinra
 integer          idppar, inxpar, inypar, inzpar
@@ -492,4 +488,4 @@ enddo
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/laggra.f90 b/src/lagr/laggra.f90
index 3c926f0..91c0b51 100644
--- a/src/lagr/laggra.f90
+++ b/src/lagr/laggra.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -56,36 +56,31 @@ subroutine laggra &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
 ! lndnod           ! e  ! <-- ! dim. connectivite cellules->faces              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 !  (nfml,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -96,34 +91,33 @@ subroutine laggra &
 !   (lndfbr)       !    !     !  face de bord dans nodfbr                      !
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (nfabor+1)     !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! coefa,coefb      ! tr ! <-- ! tableaux des cond lim pour pvar                !
 !   (nfabor)       !    !     !  sur la normale a la face de bord              !
 ! gradpr(ncel,3    ! tr ! --> ! gradient de pression                           !
 ! gradvf(ncel,9    ! tr ! --> ! gradient de vitesse fluide                     !
 ! w1...w3(ncel)    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -136,7 +130,7 @@ subroutine laggra &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -183,7 +177,7 @@ double precision gradpr(ncelet,3) , gradvf(ncelet,9)
 double precision w1(ncelet) ,  w2(ncelet) ,  w3(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -417,4 +411,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/lagr/laghis.f90 b/src/lagr/laghis.f90
index 4f1d1b1..0d1ef4a 100644
--- a/src/lagr/laghis.f90
+++ b/src/lagr/laghis.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -43,24 +43,24 @@ subroutine laghis &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! modhis           ! e  ! <-- ! indicateur valant 0,1 ou 2                     !
 !                  !    !               ! 1,2 = ecriture intermediaire, finale |
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
 ! (ndim,ncelet)    !    !     !                                                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
 ! ra               ! tr !  -- ! tableau des reels                              !
 !__________________!____!_____!________________________________________________!
 
@@ -73,7 +73,7 @@ subroutine laghis &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -99,7 +99,7 @@ double precision statis(ncelet,nvlsta)
 double precision stativ(ncelet,nvlsta-1)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character        nomfic*300, nenvar*300
 integer          ii, ii1, ii2, lpos, inam1, inam2, lng
@@ -108,6 +108,7 @@ integer          idmoyd, idebia, idebra, ifinia ,ifinra
 integer          iel   , ivarl
 integer          nbcap(nvppmx)
 integer          ipas  , ilpd1 , il , ilfv1 , icla , ilts1
+integer          iokhis, iok2
 
 double precision xtcabs,xyztmp(3)
 double precision varcap(ncaptm)
@@ -335,10 +336,14 @@ if(modhis.eq.1.or.modhis.eq.2.or.ipass.eq.1) then
       icla  = ipas -1
     endif
 
-    if ( (ipp .le. nvlsta .and. ihslag(ipp).ge. 1 )               &
-        .or.                                                      &
-         (ipp .gt. nvlsta .and. (ipp-nvlsta).ne.ilpd              &
-                     .and. ihslag(ipp-nvlsta).eq. 2 ) )then
+    iokhis = 0
+    if (ipp.le.nvlsta) then
+      if (ihslag(ipp).ge.1) iokhis = 1
+    else
+      if ((ipp-nvlsta).ne.ilpd .and. ihslag(ipp-nvlsta).eq.2) iokhis = 1
+    endif
+
+    if (iokhis.eq.1) then
 
       if(irangp.le.0) then
 !           --> nom du fichier
@@ -428,20 +433,25 @@ if(modhis.eq.1.or.modhis.eq.2.or.ipass.eq.1) then
         rewind(impli1)
         do ii = 1, nbpdte
           do ipp2 = 1, 2*nvlsta
-            if ( (ipp2 .le.nvlsta                                 &
-                   .and. ihslag(ipp2) .ge. 1 )                    &
-                .or.                                              &
-                 (ipp2 .gt.nvlsta                                 &
-                   .and. ihslag(ipp2-nvlsta) .eq. 2 ) ) then
 
-            read(impli1)                                          &
-            jtcabs, xtcabs, (varcap(icap),icap=1,nbcap(ipp2))
+            iok2 = 0
+            if (ipp2.le.nvlsta) then
+              if (ihslag(ipp2).ge.1) iok2 = 1
+            else
+              if (ihslag(ipp2-nvlsta).eq.2) iok2 = 1
+            endif
 
-            if(ipp2.eq.ipp)                                       &
-              write(impli2,1000)                                  &
-               jtcabs, xtcabs, (varcap(icap),icap=1,nbcap(ipp))
+            if (iok2.eq.1) then
+
+              read(impli1) jtcabs, xtcabs, (varcap(icap),icap=1,nbcap(ipp2))
+
+              if (ipp2.eq.ipp) then
+                write(impli2,1000) &
+                     jtcabs, xtcabs, (varcap(icap),icap=1,nbcap(ipp))
+              endif
 
             endif
+
           enddo
         enddo
 
@@ -502,4 +512,4 @@ return
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagich.f90 b/src/lagr/lagich.f90
index 7ed494d..85b25d1 100644
--- a/src/lagr/lagich.f90
+++ b/src/lagr/lagich.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -60,20 +60,20 @@ subroutine lagich &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -86,29 +86,26 @@ subroutine lagich &
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
 ! ibord            ! te ! <-- ! contient le numero de la                       !
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! --> ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -130,7 +127,7 @@ subroutine lagich &
 ! gamhet(nbpmax    ! tr ! --- ! tableau de travail                             !
 ! deltah(nbpmax    ! tr ! --- ! tableau de travail                             !
 ! tempf(ncelet)    ! tr ! --- ! tableau de travail                             !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -143,7 +140,7 @@ subroutine lagich &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -189,7 +186,7 @@ double precision gamhet(nbpmax) , deltah(nbpmax) , tempf(ncelet)
 double precision cpgd1(nbpmax), cpgd2(nbpmax), cpght(nbpmax)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          npt , iel , icha , mode , ige
 integer          iromf , iphas
@@ -718,4 +715,4 @@ enddo
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagidp.f90 b/src/lagr/lagidp.f90
index 5bbd25b..37b69d8 100644
--- a/src/lagr/lagidp.f90
+++ b/src/lagr/lagidp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,20 +52,20 @@ subroutine lagidp &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -78,29 +78,26 @@ subroutine lagidp &
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
 ! ibord            ! te ! <-- ! contient le numero de la                       !
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! --> ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -116,7 +113,7 @@ subroutine lagidp &
 !                  !    !     !   correction au 2eme sous-pas                  !
 ! auxl1(nbpmax)    ! tr ! --- ! tableau de travail                             !
 ! auxl2(nbpmax)    ! tr ! --- ! tableau de travail                             !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -129,7 +126,7 @@ subroutine lagidp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -168,7 +165,7 @@ double precision tsvar(nbpmax,nvp1)
 double precision auxl1(nbpmax) , auxl2(nbpmax)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          npt
 
@@ -199,4 +196,4 @@ call lagitg                                                       &
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagimp.f90 b/src/lagr/lagimp.f90
index dabb2ee..86cf5c1 100644
--- a/src/lagr/lagimp.f90
+++ b/src/lagr/lagimp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,20 +52,20 @@ subroutine lagimp &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -78,29 +78,26 @@ subroutine lagimp &
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
 ! ibord            ! te ! <-- ! contient le numero de la                       !
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! --> ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -116,7 +113,7 @@ subroutine lagimp &
 !                  !    !     !   correction au 2eme sous-pas                  !
 ! auxl1(nbpmax)    ! tr ! --- ! tableau de travail                             !
 ! auxl2(nbpmax)    ! tr ! --- ! tableau de travail                             !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -129,7 +126,7 @@ subroutine lagimp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -168,7 +165,7 @@ double precision tsvar(nbpmax,nvp1)
 double precision auxl1(nbpmax) , auxl2(nbpmax)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          npt
 
@@ -198,4 +195,4 @@ call lagitg                                                       &
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagini.f90 b/src/lagr/lagini.f90
index 5bf398f..65f178d 100644
--- a/src/lagr/lagini.f90
+++ b/src/lagr/lagini.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,22 +47,20 @@ subroutine lagini &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
 ! ncel             ! e  ! <-- ! nombre d'elements                              !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! lndnod           ! e  ! --> ! dim. connect. cellules->faces                  !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! nbrfac(ncel)     ! te ! --- ! tableau de travail entier                      !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -75,7 +73,7 @@ subroutine lagini &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -98,7 +96,7 @@ integer          ia(*)
 
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 
 integer          idebia , idebra
@@ -225,4 +223,4 @@ rewind(implal)
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagipn.f90 b/src/lagr/lagipn.f90
index 7ccccd7..2db62ae 100644
--- a/src/lagr/lagipn.f90
+++ b/src/lagr/lagipn.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -53,12 +53,12 @@ subroutine lagipn &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -66,13 +66,13 @@ subroutine lagipn &
 ! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
 ! npar1 ,npar2     ! e  ! <-- ! borne min et max des particules                !
 !                  !    !     !    a initialiser                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
@@ -82,9 +82,9 @@ subroutine lagipn &
 ! vagaus           ! tr ! --> ! variables aleatoires gaussiennes               !
 !(nbpmax,nvgaus    !    !     !                                                !
 ! w1...w3(ncel)    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -97,7 +97,7 @@ subroutine lagipn &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -132,7 +132,7 @@ double precision w1(ncelet) ,  w2(ncelet) ,  w3(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel , npt , nomb , iphas
@@ -251,4 +251,4 @@ enddo
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagitf.f90 b/src/lagr/lagitf.f90
index 4817dac..fe4e33e 100644
--- a/src/lagr/lagitf.f90
+++ b/src/lagr/lagitf.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -53,20 +53,20 @@ subroutine lagitf &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -79,29 +79,26 @@ subroutine lagitf &
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
 ! ibord            ! te ! <-- ! contient le numero de la                       !
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! --> ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -118,7 +115,7 @@ subroutine lagitf &
 ! auxl1(nbpmax)    ! tr ! --- ! tableau de travail                             !
 ! auxl2(nbpmax)    ! tr ! --- ! tableau de travail                             !
 ! tempf(ncelet)    ! tr ! --- ! tableau de travail                             !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -131,7 +128,7 @@ subroutine lagitf &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -174,7 +171,7 @@ double precision auxl1(nbpmax) , auxl2(nbpmax)
 double precision tempf(ncelet)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          npt   , iel   , iphas  , mode
 double precision ct    , aux1  , aux2   , ter1   , ter2
@@ -326,4 +323,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagitg.f90 b/src/lagr/lagitg.f90
index 913868a..5132b6f 100644
--- a/src/lagr/lagitg.f90
+++ b/src/lagr/lagitg.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -54,7 +54,7 @@ subroutine lagitg &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
@@ -89,7 +89,7 @@ subroutine lagitg &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -113,7 +113,7 @@ double precision ettp(nbpmax,nvp) ,  ettpa(nbpmax,nvp)
 double precision tcarac(nbpmax) , pip(nbpmax)
 double precision tsvar(nbpmax,nvp1)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          npt
 double precision aux1 , aux2 , ter1 , ter2 , ter3
@@ -228,4 +228,4 @@ double precision aux1 , aux2 , ter1 , ter2 , ter3
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagitp.f90 b/src/lagr/lagitp.f90
index 68c75e3..c7f5fac 100644
--- a/src/lagr/lagitp.f90
+++ b/src/lagr/lagitp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,20 +52,20 @@ subroutine lagitp &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -78,29 +78,26 @@ subroutine lagitp &
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
 ! ibord            ! te ! <-- ! contient le numero de la                       !
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
 ! (ndim,ncelet)    !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! --> ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -116,7 +113,7 @@ subroutine lagitp &
 !                  !    !     !   correction au 2eme sous-pas                  !
 ! auxl1(nbpmax)    ! tr ! --- ! tableau de travail                             !
 ! auxl2(nbpmax)    ! tr ! --- ! tableau de travail                             !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -129,7 +126,7 @@ subroutine lagitp &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -170,7 +167,7 @@ double precision tsvar(nbpmax,nvp1)
 double precision auxl1(nbpmax) , auxl2(nbpmax)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          npt , iel
 double precision srad
@@ -249,4 +246,4 @@ call lagitg                                                       &
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/laglec.f90 b/src/lagr/laglec.f90
index 7a8c316..92a58b7 100644
--- a/src/lagr/laglec.f90
+++ b/src/lagr/laglec.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -58,15 +58,15 @@ subroutine laglec &
 ! Arguments
 !TODO cartouche
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -77,11 +77,10 @@ subroutine laglec &
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules instant precedent                  !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! tepa             ! tr ! <-- ! info particulaires (reels)                     !
@@ -95,7 +94,7 @@ subroutine laglec &
 !(nfabor,nvisbr    !    !     !   aux faces de bord                            !
 ! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
 !(ncelet,ntersl    !    !     !   lagrangien sur la phase porteuse             !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -108,7 +107,7 @@ subroutine laglec &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -145,7 +144,7 @@ double precision tslagr(ncelet,ntersl)
 double precision parbor(nfabor,nvisbr)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character        rubriq*64 , car4*4, car8*8, kar8*8
 character        nomnvl(nvplmx)*60 , nomtsl(nvplmx)*60
@@ -2094,4 +2093,4 @@ write(nfecra,2000)
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/laglis.f90 b/src/lagr/laglis.f90
index 2c14b9e..72b1490 100644
--- a/src/lagr/laglis.f90
+++ b/src/lagr/laglis.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -56,25 +56,24 @@ subroutine laglis &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -83,56 +82,44 @@ subroutine laglis &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! tepa             ! tr ! <-- ! info particulaires (reels)                     !
@@ -146,9 +133,9 @@ subroutine laglis &
 !(ncelet,ntersl    !    !     !   lagrangien sur la phase porteuse             !
 ! parbor           ! tr ! <-- ! infos sur interaction des particules           !
 !(nfabor,nvisbr    !    !     !   aux faces de bord                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -160,7 +147,7 @@ subroutine laglis &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -207,7 +194,7 @@ double precision tslagr(ncelet,ntersl)
 double precision parbor(nfabor,nvisbr)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifinia, ifinra
@@ -357,7 +344,7 @@ if (istala.eq.1) then
 
         do iel = 1,ncel
           bb = ra(itabvr+iel-1)
-          if (bb.gt.seuil) then
+          if (statis(iel,ilpd).gt.seuil) then
             nbrcel = nbrcel + 1
             gmax = max (gmax, bb)
             gmin = min (gmin, bb)
@@ -552,7 +539,7 @@ endif
 ! FIN
 !====
 
-end
+end subroutine
 
 !-----------------------------------------------------------------------
 !Iterations Lagrangiennes absolues/relatives : 1234567 /1234567
diff --git a/src/lagr/lagnew.f90 b/src/lagr/lagnew.f90
index 630fb41..6d1fdbb 100644
--- a/src/lagr/lagnew.f90
+++ b/src/lagr/lagnew.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -60,24 +60,23 @@ subroutine lagnew &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !                  !    !     !                                                !
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
 ! lndnod           ! e  ! <-- ! dim. connectivite cellules->faces              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -91,17 +90,13 @@ subroutine lagnew &
 !                  !    !     ! pour toutes les zones d'injection              !
 ! new              ! e  ! <-- ! nombre de nouvelles part a injecter            !
 !                  !    !     ! pour la zone d'injection courante              !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! izone            ! e  ! <-- ! numero  de la zone d'injection                 !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 !  (nfml,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -117,29 +112,29 @@ subroutine lagnew &
 ! isorti           ! te ! --> ! pour chaque particule :                        !
 !   (nbpmax)       !    !     !    * numero de sa cellule                      !
 !                  !    !     !    * 0 si sortie du domaine                    !
-! iworkp(nptnew    ! te ! --> ! numero de la face d'injection                  !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! iworkp(nbpmax    ! te ! --> ! numero de la face d'injection                  !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
 ! surfbn(nfabor    ! tr ! <-- ! surface des faces de bord                      !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -152,7 +147,7 @@ subroutine lagnew &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -179,7 +174,7 @@ integer          ifmfbr(nfabor) , ifmcel(ncelet)
 integer          iprfml(nfml,nprfml)
 integer          ipnfac(nfac+1), nodfac(lndfac)
 integer          ipnfbr(nfabor+1), nodfbr(lndfbr)
-integer          ifrlag(nfabor) , isorti(nbpmax) , iworkp(nptnew)
+integer          ifrlag(nfabor) , isorti(nbpmax) , iworkp(nbpmax)
 integer          idevel(nideve), ituser(nituse)
 integer          ia(*)
 
@@ -192,7 +187,7 @@ double precision ettp(nbpmax,nvp)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          nnn , nnnn , ifac , np , ii
 integer          ifrbr , minfac , maxfac
@@ -482,4 +477,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/lagr/lagnpr.f90 b/src/lagr/lagnpr.f90
index 5d73707..c4cdce7 100644
--- a/src/lagr/lagnpr.f90
+++ b/src/lagr/lagnpr.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,24 +59,23 @@ subroutine lagnpr &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !                  !    !     !                                                !
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
 ! lndnod           ! e  ! <-- ! dim. connectivite cellules->faces              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -90,17 +89,13 @@ subroutine lagnpr &
 !                  !    !     ! pour toutes les zones d'injection              !
 ! new              ! e  ! <-- ! nombre de nouvelles part a injecter            !
 !                  !    !     ! pour la zone d'injection courante              !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! izone            ! e  ! <-- ! numero  de la zone d'injection                 !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 !  (nfml,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -116,29 +111,29 @@ subroutine lagnpr &
 ! isorti           ! te ! --> ! pour chaque particule :                        !
 !   (nbpmax)       !    !     !    * numero de sa cellule                      !
 !                  !    !     !    * 0 si sortie du domaine                    !
-! iworkp(nptnew    ! te ! --> ! numero de la face d'injection                  !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! iworkp(nbpmax    ! te ! --> ! numero de la face d'injection                  !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
 ! surfbn(nfabor    ! tr ! <-- ! surface des faces de bord                      !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -151,7 +146,7 @@ subroutine lagnpr &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -178,7 +173,7 @@ integer          ifmfbr(nfabor) , ifmcel(ncelet)
 integer          iprfml(nfml,nprfml)
 integer          ipnfac(nfac+1), nodfac(lndfac)
 integer          ipnfbr(nfabor+1), nodfbr(lndfbr)
-integer          ifrlag(nfabor) , isorti(nbpmax) , iworkp(nptnew)
+integer          ifrlag(nfabor) , isorti(nbpmax) , iworkp(nbpmax)
 integer          idevel(nideve), ituser(nituse)
 integer          ia(*)
 
@@ -191,7 +186,7 @@ double precision ettp(nbpmax,nvp)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          nnn , nnnn , ifac , ii
 integer          ifrbr , minfac , maxfac
@@ -458,4 +453,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/lagr/lagnwc.f90 b/src/lagr/lagnwc.f90
index c74ff66..3023c27 100644
--- a/src/lagr/lagnwc.f90
+++ b/src/lagr/lagnwc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -56,24 +56,23 @@ subroutine lagnwc &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !                  !    !     !                                                !
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
 ! lndnod           ! e  ! <-- ! dim. connectivite cellules->faces              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -84,12 +83,10 @@ subroutine lagnwc &
 !                  !    !     ! pour toutes les zones d'injection              !
 ! new              ! e  ! <-- ! nombre de nouvelles part a injecter            !
 !                  !    !     ! pour la zone d'injection courante              !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-!   (nfabor)       !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
 !   (nfabor)       !    !     !                                                !
 ! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
@@ -111,29 +108,29 @@ subroutine lagnwc &
 ! isorti           ! te ! <-- ! pour chaque particule :                        !
 !   (nbpmax)       !    !     !    * numero de sa cellule                      !
 !                  !    !     !    * 0 si sortie du domaine                    !
-! iworkp(nptnew    ! te ! <-- ! numero de la face d'injection                  !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! iworkp(npbmax    ! te ! <-- ! numero de la face d'injection                  !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
 ! surfbn(nfabor    ! tr ! <-- ! surface des faces de bord                      !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -146,7 +143,7 @@ subroutine lagnwc &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -175,7 +172,7 @@ integer          ipnfac(nfac+1) , nodfac(lndfac)
 integer          ipnfbr(nfabor+1) , nodfbr(lndfbr)
 integer          icocel(lndnod) , itycel(ncelet+1)
 integer          isorti(nbpmax)
-integer          ifrlag(nfabor) , iworkp(nptnew)
+integer          ifrlag(nfabor) , iworkp(nbpmax)
 integer          idevel(nideve), ituser(nituse)
 integer          ia(*)
 
@@ -188,7 +185,7 @@ double precision ettp(nbpmax,nvp)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, ifinia
 
@@ -506,4 +503,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/lagr/lagopt.f90 b/src/lagr/lagopt.f90
index 09f5884..d2b45fb 100644
--- a/src/lagr/lagopt.f90
+++ b/src/lagr/lagopt.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -51,7 +51,7 @@ subroutine lagopt
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -64,7 +64,7 @@ subroutine lagopt
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -3388,4 +3388,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/lagr/lagout.f90 b/src/lagr/lagout.f90
index 3e5e546..4d096b4 100644
--- a/src/lagr/lagout.f90
+++ b/src/lagr/lagout.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -67,26 +67,25 @@ subroutine lagout &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
 ! lndnod           ! e  ! <-- ! dim. connectivite cellules->faces              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -95,16 +94,12 @@ subroutine lagout &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 !  (nfml,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -121,33 +116,30 @@ subroutine lagout &
 ! (ncelet+1)       !    !     !    pointeur du tableau icocel                  !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! tepa             ! tr ! <-- ! info particulaires (reels)                     !
@@ -161,9 +153,9 @@ subroutine lagout &
 !(ncelet,ntersl    !    !     !   lagrangien sur la phase porteuse             !
 ! parbor           ! tr ! <-- ! infos sur interaction des particules           !
 !(nfabor,nvisbr    !    !     !   aux faces de bord                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -176,7 +168,7 @@ subroutine lagout &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -233,7 +225,7 @@ double precision parbor(nfabor,nvisbr)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 
 character        rubriq*64 , car4*4
@@ -695,6 +687,8 @@ if ( (istala.eq.1 .and. iplas.ge.idstnt) .or.                     &
       enddo
 
       do jj = 1,nvlsta-1
+
+        ii = ipas*nvlsta +jj
         if (ipas.gt.0) then
           WRITE(CAR4,'(I4.4)') IPAS
           RUBRIQ = 'var_stat_vol_groupe_'//CAR4//'_'//NOMLAV(II)
@@ -1239,4 +1233,4 @@ return
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagphy.f90 b/src/lagr/lagphy.f90
index 4014ea8..641107c 100644
--- a/src/lagr/lagphy.f90
+++ b/src/lagr/lagphy.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -64,20 +64,20 @@ subroutine lagphy &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -86,37 +86,34 @@ subroutine lagphy &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
 ! ibord            ! te ! <-- ! contient le numero de la                       !
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -135,9 +132,9 @@ subroutine lagphy &
 !  cpght(nbpmax    !    !     !   de combusion heterogene (charbon             !
 !                  !    !     !   avec couplage retour thermique)              !
 ! w1..w3(ncelet    ! tr ! --- ! tableaux de travail                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -150,7 +147,7 @@ subroutine lagphy &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -193,7 +190,7 @@ double precision w1(ncelet) ,  w2(ncelet) ,  w3(ncelet)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          ifinia , ifinra
@@ -363,4 +360,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagpoi.f90 b/src/lagr/lagpoi.f90
index b529200..748b0bc 100644
--- a/src/lagr/lagpoi.f90
+++ b/src/lagr/lagpoi.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -61,26 +61,25 @@ subroutine lagpoi &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
 ! lndnod           ! e  ! <-- ! dim. connectivite cellules->faces              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -89,16 +88,12 @@ subroutine lagpoi &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 !  (nfml,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -117,33 +112,30 @@ subroutine lagpoi &
 ! (nfabor)         !    !     !  pour le module lagrangien                     !
 ! itepa            ! te ! --> ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! tepa             ! tr ! <-- ! info particulaires (reels)                     !
@@ -151,9 +143,9 @@ subroutine lagpoi &
 ! statis           ! tr ! <-- ! moyennes statistiques                          !
 !(ncelet,nvlsta    !    !     !                                                !
 ! w1...w3(ncel)    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -166,7 +158,7 @@ subroutine lagpoi &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -217,7 +209,7 @@ double precision w1(ncelet) ,  w2(ncelet) ,  w3(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifinia, ifinra
@@ -431,4 +423,4 @@ enddo
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagrus.f90 b/src/lagr/lagrus.f90
index 2634321..96c6d72 100644
--- a/src/lagr/lagrus.f90
+++ b/src/lagr/lagrus.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,12 +50,12 @@ subroutine lagrus &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -63,14 +63,14 @@ subroutine lagrus &
 ! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
 ! indep(nbpmax)    ! te ! <-- ! numero de sa cellule de depart                 !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -78,9 +78,9 @@ subroutine lagrus &
 ! tepa             ! tr ! <-- ! info particulaires (reels)                     !
 ! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
 ! croule(ncelet    ! tr ! <-- ! critere d'importance                           !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -93,7 +93,7 @@ subroutine lagrus &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -122,7 +122,7 @@ double precision croule(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel    , ield    , nclo    , npars
 integer          npt    , n       , n1      , iva    , nc
@@ -334,4 +334,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagsta.f90 b/src/lagr/lagsta.f90
index 23461c3..1ba9454 100644
--- a/src/lagr/lagsta.f90
+++ b/src/lagr/lagsta.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -76,25 +76,24 @@ subroutine lagsta &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -103,35 +102,32 @@ subroutine lagsta &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! tepa             ! tr ! <-- ! info particulaires (reels)                     !
@@ -142,9 +138,9 @@ subroutine lagsta &
 !(ncelet,          !    !     !    statistiques volumiques                     !
 !   nvlsta-1)      !    !     !                                                !
 ! w1(ncelet)       ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -157,7 +153,7 @@ subroutine lagsta &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -201,7 +197,7 @@ double precision w1(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          npt , nv , iel, nv1, izcl
@@ -586,4 +582,4 @@ endif
 ! FIN
 !====
 
-end
+end subroutine
diff --git a/src/lagr/lagstf.f90 b/src/lagr/lagstf.f90
index f11a8b1..817cf45 100644
--- a/src/lagr/lagstf.f90
+++ b/src/lagr/lagstf.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,10 +46,10 @@ subroutine lagstf &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
 ! ivar             ! e  ! <-- ! numero de la variable a integrer               !
 ! gmin...gmoy      ! e  ! --> ! variations min max et moyenne                  !
@@ -69,7 +69,7 @@ subroutine lagstf &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 
 include "paramx.h"
 include "numvar.h"
@@ -154,4 +154,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/lagr/lagtri.f90 b/src/lagr/lagtri.f90
index 06b53df..4966d59 100644
--- a/src/lagr/lagtri.f90
+++ b/src/lagr/lagtri.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine lagtri
+subroutine lagtri
 !================
 
 
@@ -46,7 +46,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !                  !    !     !                                                !
 !__________________.____._____.________________________________________________.
@@ -60,7 +60,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,7 +69,7 @@ include "lagran.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer i , i1 , i2 , ii , ind , j , tlist(nliste)
 
@@ -152,4 +152,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/lagune.f90 b/src/lagr/lagune.f90
index a0fbda5..4556922 100644
--- a/src/lagr/lagune.f90
+++ b/src/lagr/lagune.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -62,26 +62,25 @@ subroutine lagune &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
 ! lndnod           ! e  ! <-- ! dim. connectivite cellules->faces              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -90,16 +89,12 @@ subroutine lagune &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 !  (nfml,nprfml    !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
@@ -122,33 +117,30 @@ subroutine lagune &
 !   (nbpmax)       !    !     !   numero de la cellule de depart               !
 ! ibord            ! te ! --> ! contient le numero de la                       !
 !   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
 ! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
 ! (ndim,nnod)      !    !     !                                                !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant courant et prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ettp             ! tr ! --> ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! --> ! tableaux des variables liees                   !
@@ -190,9 +182,9 @@ subroutine lagune &
 ! auxl(nbpmax,3    ! tr ! --- ! tableau de travail                             !
 ! auxl2            ! tr ! --- ! tableau de travail                             !
 !    (nbpmax,7)    !    !     !                                                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -205,7 +197,7 @@ subroutine lagune &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -271,7 +263,7 @@ double precision auxl(nbpmax,3) , auxl2(nbpmax,7)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifinia, ifinra
@@ -1041,4 +1033,4 @@ endif
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/lagr/memla1.f90 b/src/lagr/memla1.f90
index c4203da..b062ac1 100644
--- a/src/lagr/memla1.f90
+++ b/src/lagr/memla1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine memla1                               &
+subroutine memla1 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -56,17 +56,17 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idbia0           ! e  ! <-- ! pointeur de la premiere cas libre              !
 !                  !    !     !  dans ia en entree                             !
 ! idbra0           ! e  ! <-- ! pointeur de la premiere cas libre              !
 !                  !    !     !  dans ra en entree                             !
 ! ndim             ! e  ! <-- ! dimension (3)                                  !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! lndnod           ! e  ! <-- ! dim. connectivite cellules->faces              !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
@@ -85,10 +85,8 @@
 ! istatc           ! e  ! --> ! pointeur sur statis                            !
 ! itslag           ! e  ! --> ! pointeur sur tslagr                            !
 ! istatf           ! e  ! --> ! pointeur sur parbor                            !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ra en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -100,7 +98,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -122,7 +120,7 @@ integer          iettp  , iettpa
 integer          iitepa , istatc , istatv , itslag , istatf
 integer          ifinia , ifinra
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 
@@ -186,4 +184,4 @@ CALL RASIZE('MEMLA1',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/lagr/memla2.f90 b/src/lagr/memla2.f90
index a5ab7f8..1afdcd5 100644
--- a/src/lagr/memla2.f90
+++ b/src/lagr/memla2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine memla2                               &
+subroutine memla2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -55,12 +55,12 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! idbia0/idbra0    ! tr ! <-- ! pointeur de la premiere cas libre des          !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
 ! ncelet           ! e  ! <-- ! nombre d'elements                              !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
+! nfac             ! i  ! <-- ! number of interior faces                       !
 ! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
@@ -107,7 +107,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -132,7 +132,7 @@ integer          ibrgau , itebru
 integer          iw1     , iw2    , iw3
 integer          ifinia , ifinra
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 
@@ -215,6 +215,7 @@ if ( lamvbr .eq. 1 ) then
   ifinra = itebru + nbpmax
 else
   ibrgau = 1
+  itebru = 1
 endif
 
 if (nordre.eq.2) then
@@ -233,4 +234,4 @@ CALL RASIZE('MEMLA2',IFINRA)
 !     ==========
 
 return
-end
+end subroutine
diff --git a/src/lagr/ouestu.f90 b/src/lagr/ouestu.f90
index afad20e..67fb545 100644
--- a/src/lagr/ouestu.f90
+++ b/src/lagr/ouestu.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -60,7 +60,7 @@ subroutine ouestu &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nfecra           ! e  ! <-- ! unite du fichier de sortie listing             !
 ! ndim             ! e  ! <-- ! dimension de l'espace (=3)                     !
@@ -88,7 +88,7 @@ subroutine ouestu &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "cstnum.h"
@@ -108,7 +108,7 @@ double precision cdgx , cdgy , cdgz
 double precision celx , cely , celz
 double precision xyznod(ndim,npoint)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          in , is , isign , il , it , ii
 integer          ijklug , ittour , ipturb , isensf , ipos
@@ -582,4 +582,4 @@ indian = -isign * isensf
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/mati/Makefile.in b/src/mati/Makefile.in
index b56320b..c4a6727 100644
--- a/src/mati/Makefile.in
+++ b/src/mati/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -41,8 +42,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -65,6 +67,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -80,22 +83,23 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcsmati_la_LIBADD =
 am_libcsmati_la_OBJECTS = memmat.lo mtimpi.lo mtini1.lo mtkpdc.lo \
 	mtphyv.lo mtproj.lo mttsns.lo mttssc.lo mttycl.lo
 libcsmati_la_OBJECTS = $(am_libcsmati_la_OBJECTS)
-libcsmati_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+libcsmati_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(libcsmati_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcsmati_la_SOURCES)
 DIST_SOURCES = $(libcsmati_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -103,9 +107,23 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(saturneincludedir)"
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -152,6 +170,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -188,11 +208,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -207,15 +225,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -260,7 +281,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -277,8 +299,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -337,14 +362,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/mati/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/mati/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/mati/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/mati/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -362,6 +387,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -397,34 +423,37 @@ clean-libtool:
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -432,29 +461,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -475,13 +509,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -512,6 +550,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -532,6 +571,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -540,18 +581,28 @@ install-data-am: install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -589,6 +640,7 @@ uninstall-am: uninstall-saturneincludeHEADERS
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags uninstall uninstall-am uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/mati/memmat.f90 b/src/mati/memmat.f90
index ad488cd..8850b02 100644
--- a/src/mati/memmat.f90
+++ b/src/mati/memmat.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -48,35 +48,32 @@ subroutine memmat &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! ncofab           ! e  ! <-- ! nombre de couple de cl a prevoir               !
 ! nproce           ! e  ! <-- ! nombre de prop phy aux centres                 !
 ! nprofa           ! e  ! <-- ! nombre de prop phy aux faces internes          !
 ! nprofb           ! e  ! <-- ! nombre de prop phy aux faces de bord           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -88,7 +85,7 @@ subroutine memmat &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -108,7 +105,7 @@ integer          ncofab , nproce , nprofa , nprofb
 integer          nideve , nrdeve , nituse , nrtuse
 integer          ifinia , ifinra
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 
@@ -144,4 +141,4 @@ CALL RASIZE('MEMMAT',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/mati/mtimpi.f90 b/src/mati/mtimpi.f90
index cf44480..9f8ae15 100644
--- a/src/mati/mtimpi.f90
+++ b/src/mati/mtimpi.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine mtimpi
+subroutine mtimpi
 !================
 
 
@@ -37,7 +37,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -50,7 +50,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -64,7 +64,7 @@ include "optcal.h"
 
 ! Arguments
 
-! VARIABLES LOCALES
+! Local variables
 
 character*15     name
 integer          kechrg, kergrs, keclgr, kergch, keciel
@@ -86,9 +86,8 @@ double precision ureel , betmat, hrfmat, richar
 ! --- Ouverture du fichier
 !       (il sera ferme au dernier pas de temps par mtproj)
 
-NAME='resuMatisse'
-open(unit=impmat,file=name,                                       &
-         FORM='FORMATTED', STATUS='UNKNOWN', ERR=900)
+name='resuMatisse'
+open(unit=impmat,file=name, form='formatted', status='unknown', err=900)
 goto 950
 
 !   - En cas d'erreur : message et stop
@@ -116,9 +115,9 @@ write(impmat,1002)
 write(impmat,1001)
 
 if (itypen.eq.1) then
-   WRITE(IMPMAT,2096) ' Emm  '
+   write(impmat,2096) ' Emm  '
 else
-   WRITE(IMPMAT,2096) ' Vault'
+   write(impmat,2096) ' Vault'
 endif
 
 if (ialveo.eq.0) then
@@ -200,9 +199,9 @@ write(impmat,1001)
 
 write(impmat,4107) icofor
 if (iconlg.eq.1) then
-  WRITE(IMPMAT,4108) ' En ligne        '
+  write(impmat,4108) ' En ligne        '
 else
-  WRITE(IMPMAT,4108) ' Pas triangulaire'
+  write(impmat,4108) ' Pas triangulaire'
 endif
 write(impmat,4109) ialveo
 write(impmat,4110) debmas
@@ -531,9 +530,9 @@ endif
 ! --- Erreurs
 
  9998 format(/,                                                   &
-'Code_Saturne : Erreur d''initialisation :',/,              &
+'Code_Saturne : Erreur d''initialisation :',/,                    &
 'Impossible d''ouvrir le fichier : ',A,/)
- 9999 format(                                                           &
+ 9999 format(                                                     &
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
@@ -550,4 +549,4 @@ endif
 
 
 return
-end
+end subroutine
diff --git a/src/mati/mtini1.f90 b/src/mati/mtini1.f90
index aeb9bc0..6b4fba0 100644
--- a/src/mati/mtini1.f90
+++ b/src/mati/mtini1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine mtini1
+subroutine mtini1
 !================
 
 
@@ -37,7 +37,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -50,7 +50,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -67,7 +67,7 @@ include "parall.h"
 
 ! Arguments
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii    , jj    , kk
 integer          iphas
@@ -678,4 +678,4 @@ endif
 
 
 return
-end
+end subroutine
diff --git a/src/mati/mtkpdc.f90 b/src/mati/mtkpdc.f90
index 9c6aea9..480074d 100644
--- a/src/mati/mtkpdc.f90
+++ b/src/mati/mtkpdc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -96,82 +96,69 @@ subroutine mtkpdc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
 ! iappel           ! e  ! <-- ! indique les donnes a renvoyer                  !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncepdp    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -184,7 +171,7 @@ subroutine mtkpdc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -230,7 +217,7 @@ double precision ckupdc(ncepdp,6)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel   , ielpdc, ikpdc
@@ -413,4 +400,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/mati/mtphyv.f90 b/src/mati/mtphyv.f90
index 4481594..6754b0c 100644
--- a/src/mati/mtphyv.f90
+++ b/src/mati/mtphyv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -104,80 +104,67 @@ subroutine mtphyv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -189,7 +176,7 @@ subroutine mtphyv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "cstnum.h"
@@ -234,7 +221,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel   , icoul , ifml
@@ -505,4 +492,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/src/mati/mtproj.f90 b/src/mati/mtproj.f90
index f15d2c8..7046c37 100644
--- a/src/mati/mtproj.f90
+++ b/src/mati/mtproj.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -54,25 +54,24 @@ subroutine mtproj &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! nbpmax           ! e  ! <-- ! nombre max de particules autorise              !
 ! nvp              ! e  ! <-- ! nombre de variables particulaires              !
 ! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
@@ -80,18 +79,14 @@ subroutine mtproj &
 ! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
 ! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
 ! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -102,34 +97,30 @@ subroutine mtproj &
 !   (lndfbr  )     !    !     !  (optionnel)                                   !
 ! itepa            ! te ! <-- ! info particulaires (entiers)                   !
 ! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ettp             ! tr ! <-- ! tableaux des variables liees                   !
 !  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
 ! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
@@ -142,9 +133,9 @@ subroutine mtproj &
 !(ncelet,ntersl    !    !     !   lagrangien sur la phase porteuse             !
 ! parbor           ! tr ! <-- ! infos sur interaction des particules           !
 !(nfabor,nvisbr    !    !     !   aux faces de bord                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -156,7 +147,7 @@ subroutine mtproj &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -207,7 +198,7 @@ double precision statis(ncelet,nvlsta) , tslagr(ncelet,ntersl)
 double precision parbor(nfabor,nvisbr)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel    , ifac   , ifml   , icoul
@@ -392,4 +383,4 @@ endif
 '  :',E12.5, ' �C')
 
 return
-end
+end subroutine
diff --git a/src/mati/mttsns.f90 b/src/mati/mttsns.f90
index 8dbb93a..6017dcf 100644
--- a/src/mati/mttsns.f90
+++ b/src/mati/mttsns.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -87,81 +87,68 @@ subroutine mttsns &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ivar             ! e  ! <-- ! numero de variable                             !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ivar             ! i  ! <-- ! variable number                                !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules (instant            prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -172,9 +159,9 @@ subroutine mttsns &
 ! dam(ncelet       ! tr ! --- ! tableau de travail pour matrice                !
 ! xam(nfac,*)      ! tr ! --- ! tableau de travail pour matrice                !
 ! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -187,7 +174,7 @@ subroutine mttsns &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -238,7 +225,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -1156,4 +1143,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/mati/mttssc.f90 b/src/mati/mttssc.f90
index 6bbf54b..2717652 100644
--- a/src/mati/mttssc.f90
+++ b/src/mati/mttssc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -87,82 +87,69 @@ subroutine mttssc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
 ! iconra           ! te ! <-- ! tab de connectivite pour                       !
 ! (ncelet+1)       !    !     !  le rayonnement et les panaches                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -174,9 +161,9 @@ subroutine mttssc &
 ! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
 ! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -189,7 +176,7 @@ subroutine mttssc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "cstnum.h"
@@ -245,7 +232,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -1347,4 +1334,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/mati/mttycl.f90 b/src/mati/mttycl.f90
index 20d7897..2dd3d15 100644
--- a/src/mati/mttycl.f90
+++ b/src/mati/mttycl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,47 +52,38 @@ subroutine mttycl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas)          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! itrifb(nfabor    ! te ! --> ! tab d'indirection pour tri des faces           !
 !  nphas)          !    !     !                                                !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
@@ -106,34 +97,30 @@ subroutine mttycl &
 !                  !    !     !  entrante eventuelle     bloquee               !
 ! isostd           ! te ! --> ! indicateur de sortie standard                  !
 !    (nfabor+1)    !    !     !  +numero de la face de reference               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -148,13 +135,13 @@ subroutine mttycl &
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
 ! frcxt(ncelet,    ! tr ! <-- ! force exterieure generant la pression          !
 !   3,nphas)       !    !     !  hydrostatique                                 !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
 ! rijipb           ! tr ! --- ! tab de trav pour valeurs en iprime             !
 ! (nfabor,6   )    !    !     !  des rij au bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -166,7 +153,7 @@ subroutine mttycl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -217,7 +204,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,3)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iphas , ifac  , ifml  , icoul
@@ -378,4 +365,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/pprt/Makefile.in b/src/pprt/Makefile.in
index ec51f92..2d12872 100644
--- a/src/pprt/Makefile.in
+++ b/src/pprt/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -42,8 +43,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -66,6 +68,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -81,6 +84,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcspprt_la_LIBADD =
 am_libcspprt_la_OBJECTS = memppt.lo ppcabs.lo ppclim.lo ppcsca.lo \
@@ -88,17 +92,17 @@ am_libcspprt_la_OBJECTS = memppt.lo ppcabs.lo ppclim.lo ppcsca.lo \
 	ppphyv.lo ppprcl.lo ppprop.lo ppray4.lo pptbht.lo pptssc.lo \
 	pptycl.lo ppvarp.lo usppmo.lo
 libcspprt_la_OBJECTS = $(am_libcspprt_la_OBJECTS)
-libcspprt_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+libcspprt_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(libcspprt_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcspprt_la_SOURCES)
 DIST_SOURCES = $(libcspprt_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -106,12 +110,25 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(pprtdir)" \
 	"$(DESTDIR)$(saturneincludedir)"
-pprtDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(pprt_DATA)
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -158,6 +175,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -194,11 +213,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -213,15 +230,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -266,7 +286,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -283,8 +304,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -352,14 +376,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/pprt/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/pprt/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/pprt/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/pprt/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -377,6 +401,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -405,7 +430,7 @@ distclean-compile:
 	$(LTFCCOMPILE) -c -o $@ $<
 
 usppmo.lo: $(top_srcdir)/users/pprt/usppmo.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usppmo.lo `test -f '$(top_srcdir)/users/pprt/usppmo.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/pprt/usppmo.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usppmo.lo `test -f '$(top_srcdir)/users/pprt/usppmo.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/pprt/usppmo.f90
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -415,51 +440,57 @@ clean-libtool:
 install-pprtDATA: $(pprt_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(pprtdir)" || $(MKDIR_P) "$(DESTDIR)$(pprtdir)"
-	@list='$(pprt_DATA)'; for p in $$list; do \
+	@list='$(pprt_DATA)'; test -n "$(pprtdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(pprtDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pprtdir)/$$f'"; \
-	  $(pprtDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pprtdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pprtdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pprtdir)" || exit $$?; \
 	done
 
 uninstall-pprtDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(pprt_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pprtdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pprtdir)/$$f"; \
-	done
+	@list='$(pprt_DATA)'; test -n "$(pprtdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(pprtdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pprtdir)" && rm -f $$files
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -467,29 +498,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -510,13 +546,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -547,6 +587,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -567,6 +608,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -575,18 +618,28 @@ install-data-am: install-pprtDATA install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -625,6 +678,7 @@ uninstall-am: uninstall-pprtDATA uninstall-saturneincludeHEADERS
 	tags uninstall uninstall-am uninstall-pprtDATA \
 	uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/pprt/memppt.f90 b/src/pprt/memppt.f90
index abcaf5b..6ac34e5 100644
--- a/src/pprt/memppt.f90
+++ b/src/pprt/memppt.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2007 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -43,22 +43,20 @@ subroutine memppt &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -70,7 +68,7 @@ subroutine memppt &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -95,7 +93,7 @@ integer          nvar   , nscal  , nphas
 integer          ifinia , ifinra
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -122,5 +120,5 @@ endif
 !----
 
 return
-end
+end subroutine
 
diff --git a/src/pprt/ppcabs.f90 b/src/pprt/ppcabs.f90
index 36151df..cce1431 100644
--- a/src/pprt/ppcabs.f90
+++ b/src/pprt/ppcabs.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -62,79 +62,66 @@ subroutine ppcabs &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! iphas            ! e  ! <-- ! numero de la phase courante                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! iphas            ! i  ! <-- ! phase number                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...3(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -147,7 +134,7 @@ subroutine ppcabs &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -197,7 +184,7 @@ double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra, iel, ifac, icla, ipck, icha, iok
 double precision xm, d2, vv, sf, xlc, xkmin, pp
@@ -424,10 +411,7 @@ endif
     vv = 0.d0
 
     do ifac = 1,nfabor
-       sf = sf + sqrt(                                            &
-               surfbo(1,ifac)**2 +                                &
-               surfbo(2,ifac)**2 +                                &
-               surfbo(3,ifac)**2 )
+       sf = sf + sqrt(surfbo(1,ifac)**2 + surfbo(2,ifac)**2 + surfbo(3,ifac)**2)
     enddo
     if (irangp.ge.0) then
       call parsom(sf)
@@ -448,21 +432,21 @@ endif
 
     xkmin = 1.d0 / xlc
 
-    iok = 0.d0
+    iok = 0
     do iel = 1,ncel
       if (w3(iel).lt.xkmin) then
         iok = iok +1
       endif
     enddo
+    if (irangp.ge.0) then
+      call parcpt(iok)
+    endif
 
 !     Arret en fin de pas de temps si epaisseur optique trop grande
     pp = xnp1mx/100.0d0
-    if (dble(iok).gt.pp*dble(ncel)) then
-       write(nfecra,1000) xkmin, dble(iok)/dble(ncel)*100.d0,     &
-                          xnp1mx
+    if (dble(iok).gt.pp*dble(ncelgb)) then
+       write(nfecra,1000) xkmin, dble(iok)/dble(ncelgb)*100.d0, xnp1mx
        istpp1 = 1
-!             CALL CSEXIT (1)
-       !==========
     endif
 
   endif
@@ -501,4 +485,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/pprt/ppclim.f90 b/src/pprt/ppclim.f90
index 91c696d..9f31d59 100644
--- a/src/pprt/ppclim.f90
+++ b/src/pprt/ppclim.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -54,45 +54,36 @@ subroutine ppclim &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -102,40 +93,36 @@ subroutine ppclim &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -148,13 +135,13 @@ subroutine ppclim &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -166,7 +153,7 @@ subroutine ppclim &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -217,7 +204,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          idbia1, maxelt, ils
@@ -496,4 +483,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/pprt/ppcsca.f90 b/src/pprt/ppcsca.f90
index 0ab3528..0c677a3 100644
--- a/src/pprt/ppcsca.f90
+++ b/src/pprt/ppcsca.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -39,7 +39,7 @@ subroutine ppcsca
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@ subroutine ppcsca
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -74,7 +74,7 @@ include "atincl.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iok
 
@@ -257,4 +257,4 @@ endif
 
 
 return
-end
+end subroutine
diff --git a/src/pprt/ppini1.f90 b/src/pprt/ppini1.f90
index f0c62b4..5a470f0 100644
--- a/src/pprt/ppini1.f90
+++ b/src/pprt/ppini1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine ppini1
+subroutine ppini1
 !================
 
 
@@ -40,7 +40,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -53,7 +53,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -141,4 +141,4 @@ if ( ippmod(iaeros).ge.0) then
 endif
 
 return
-end
+end subroutine
diff --git a/src/pprt/ppinii.f90 b/src/pprt/ppinii.f90
index 9c357f2..b75a885 100644
--- a/src/pprt/ppinii.f90
+++ b/src/pprt/ppinii.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine ppinii
+subroutine ppinii
 !================
 
 
@@ -38,7 +38,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -52,7 +52,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -70,7 +70,7 @@ include "atincl.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer         ipp, icla, icha, iesp, igg, it, ir, ih, if, izone
 integer         isol, ige, iat , iii
@@ -589,5 +589,5 @@ do izone = 1, nozppm
 enddo
 
 return
-end
+end subroutine
 
diff --git a/src/pprt/ppiniv.f90 b/src/pprt/ppiniv.f90
index b3d6839..eaa4c5a 100644
--- a/src/pprt/ppiniv.f90
+++ b/src/pprt/ppiniv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -81,78 +81,65 @@ subroutine ppiniv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -164,7 +151,7 @@ subroutine ppiniv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -205,7 +192,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -426,4 +413,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/pprt/ppinv2.f90 b/src/pprt/ppinv2.f90
index a3f0a58..dd457d0 100644
--- a/src/pprt/ppinv2.f90
+++ b/src/pprt/ppinv2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine ppinv2                               &
+subroutine ppinv2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -81,78 +81,65 @@
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -164,7 +151,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -205,7 +192,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -291,4 +278,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/pprt/pplecd.f90 b/src/pprt/pplecd.f90
index 0d44997..9f8de65 100644
--- a/src/pprt/pplecd.f90
+++ b/src/pprt/pplecd.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine pplecd
+subroutine pplecd
 !================
 !===============================================================================
 !  FONCTION  :
@@ -36,7 +36,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -49,7 +49,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -68,7 +68,7 @@ include "ppincl.h"
 ! Arguments
 
 
-! VARIABLES LOCALES
+! Local variables
 
 
 !===============================================================================
@@ -125,5 +125,5 @@ endif
 !----
 
 return
-end
+end subroutine
 
diff --git a/src/pprt/pppdfr.f90 b/src/pprt/pppdfr.f90
index 78a59f2..1d40795 100644
--- a/src/pprt/pppdfr.f90
+++ b/src/pprt/pppdfr.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,10 +55,10 @@ subroutine pppdfr &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! indpdf           ! te ! --> ! indicateur passage ou non par pdf              !
 ! fm               ! tr ! <-- ! moyenne de la fraction de melange              !
 ! fp2m             ! tr ! <-- ! variance de la fraction de melange             !
@@ -84,7 +84,7 @@ subroutine pppdfr &
 implicit none
 
 !==============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !==============================================================================
 
 include "paramx.h"
@@ -115,7 +115,7 @@ double precision fdeb(ncelet), ffin(ncelet)
 double precision hrec(ncelet)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel, n1, n2, n3, n4, n5 , nfp2 , nbspdf
 double precision t1, t2, t3, t1mod, t2mod , fp2max
@@ -358,4 +358,4 @@ write(nfecra,2000) n5, n2, n3, n4
 !----
 
 return
-end
+end subroutine
diff --git a/src/pprt/ppphyv.f90 b/src/pprt/ppphyv.f90
index 3a632e1..0090eae 100644
--- a/src/pprt/ppphyv.f90
+++ b/src/pprt/ppphyv.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -103,80 +103,67 @@ subroutine ppphyv &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -188,7 +175,7 @@ subroutine ppphyv &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -233,7 +220,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra , ifinia , ifinra
 integer          if3max, iw9    , iw10
@@ -517,4 +504,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/pprt/ppprcl.f90 b/src/pprt/ppprcl.f90
index 2622182..889ec5b 100644
--- a/src/pprt/ppprcl.f90
+++ b/src/pprt/ppprcl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -56,45 +56,36 @@ subroutine ppprcl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -106,34 +97,30 @@ subroutine ppprcl &
 !                  !    !     !  entrante eventuelle     bloquee               !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -148,11 +135,11 @@ subroutine ppprcl &
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
 ! coefu            ! tr ! --- ! tab de trav                                    !
 !  nfabor,3        !    !     !  (vitesse en i'                 )              !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -164,7 +151,7 @@ subroutine ppprcl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -217,7 +204,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, izone, icha, iclapc
@@ -429,4 +416,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/pprt/ppprop.f90 b/src/pprt/ppprop.f90
index 729113d..5ba9c55 100644
--- a/src/pprt/ppprop.f90
+++ b/src/pprt/ppprop.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -41,7 +41,7 @@ subroutine ppprop &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ipropp           ! e  ! <-- ! numero de la derniere propriete                !
 !                  !    !     !  (les proprietes sont dans propce,             !
@@ -61,7 +61,7 @@ subroutine ppprop &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -139,4 +139,4 @@ if ( ippmod(iatmos).ge.1 ) then
   !==========
 endif
 
-end
+end subroutine
diff --git a/src/pprt/ppray4.f90 b/src/pprt/ppray4.f90
index 0273523..f140a0f 100644
--- a/src/pprt/ppray4.f90
+++ b/src/pprt/ppray4.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine ppray4                               &
+subroutine ppray4 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -73,75 +73,62 @@
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! iphas            ! e  ! <-- ! numero de la phase courante                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! iphas            ! i  ! <-- ! phase number                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! mode             ! e  ! <-- ! type de conversion enthal<->tempk              !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! cofrua,cofrub    ! tr ! --> ! conditions aux limites aux                     !
 !(nfabor)          !    !     !    faces de bord pour la luminances            !
 ! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
@@ -149,9 +136,9 @@
 ! hparop(nfabor    ! tr ! --> ! enthalpie massique de paroi en j/kg            !
 !                  !    !     ! (en degres celsius ou kelvin)                  !
 ! tparop(nfabor    ! tr ! <-- ! temperature de paroi en kelvin                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -164,7 +151,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -219,7 +206,7 @@ double precision tparop(nfabor), hparop(nfabor)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel , ifac , icla , icha , isol , ige
@@ -479,4 +466,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/pprt/pptbht.f90 b/src/pprt/pptbht.f90
index 701c33f..499287f 100644
--- a/src/pprt/pptbht.f90
+++ b/src/pprt/pptbht.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -62,7 +62,7 @@ subroutine pptbht &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -86,7 +86,7 @@ character*12     nomcoe(ngazem)
 double precision ehcoel(ngazem,npot) , cpcoel(ngazem)
 double precision wmolce (ngazem)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*40     dummy
 character*12     nomesp
@@ -258,4 +258,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/pprt/pptssc.f90 b/src/pprt/pptssc.f90
index 5f99848..d718ef6 100644
--- a/src/pprt/pptssc.f90
+++ b/src/pprt/pptssc.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -81,80 +81,67 @@ subroutine pptssc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! scalar number                                  !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -168,9 +155,9 @@ subroutine pptssc &
 ! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
 ! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -183,7 +170,7 @@ subroutine pptssc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -243,7 +230,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -447,4 +434,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/pprt/pptycl.f90 b/src/pprt/pptycl.f90
index c056993..9166514 100644
--- a/src/pprt/pptycl.f90
+++ b/src/pprt/pptycl.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,45 +55,36 @@ subroutine pptycl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -103,40 +94,36 @@ subroutine pptycl &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -150,13 +137,13 @@ subroutine pptycl &
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -168,7 +155,7 @@ subroutine pptycl &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 ! Arguments
@@ -223,7 +210,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, iok, ifvu, ii, izone, izonem
@@ -535,4 +522,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/src/pprt/ppvarp.f90 b/src/pprt/ppvarp.f90
index 0014397..d2d7fb0 100644
--- a/src/pprt/ppvarp.f90
+++ b/src/pprt/ppvarp.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine ppvarp
+subroutine ppvarp
 !================
 
 
@@ -40,7 +40,7 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -53,7 +53,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -137,4 +137,4 @@ if ( ippmod(iaeros).ge.0 ) then
 endif
 
 return
-end
+end subroutine
diff --git a/src/rayt/Makefile.in b/src/rayt/Makefile.in
index c9cd4d7..5631cda 100644
--- a/src/rayt/Makefile.in
+++ b/src/rayt/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -42,8 +43,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -66,6 +68,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/cs_bft.m4 \
 	$(top_srcdir)/config/cs_blas.m4 \
 	$(top_srcdir)/config/cs_config_info.m4 \
+	$(top_srcdir)/config/cs_fortran.m4 \
 	$(top_srcdir)/config/cs_fvm.m4 \
 	$(top_srcdir)/config/cs_libxml2.m4 \
 	$(top_srcdir)/config/cs_mei.m4 $(top_srcdir)/config/cs_mpi.m4 \
@@ -81,6 +84,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/cs_config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libcsrayt_la_LIBADD =
 am_libcsrayt_la_OBJECTS = memra1.lo memra2.lo memra3.lo raycli.lo \
@@ -88,17 +92,17 @@ am_libcsrayt_la_OBJECTS = memra1.lo memra2.lo memra3.lo raycli.lo \
 	raypar.lo raypun.lo raysca.lo raysol.lo rmodak.lo usray1.lo \
 	usray2.lo usray3.lo usray4.lo usray5.lo
 libcsrayt_la_OBJECTS = $(am_libcsrayt_la_OBJECTS)
-libcsrayt_la_LINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+libcsrayt_la_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(libcsrayt_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
+FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 SOURCES = $(libcsrayt_la_SOURCES)
 DIST_SOURCES = $(libcsrayt_la_SOURCES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -106,12 +110,25 @@ am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(raytdir)" \
 	"$(DESTDIR)$(saturneincludedir)"
-raytDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(rayt_DATA)
-saturneincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(saturneinclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -158,6 +175,8 @@ FCLIBS = @FCLIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLIBS = @FLIBS@
+FVM_COUPL_LDFLAGS = @FVM_COUPL_LDFLAGS@
+FVM_COUPL_LIBS = @FVM_COUPL_LIBS@
 FVM_CPPFLAGS = @FVM_CPPFLAGS@
 FVM_LDFLAGS = @FVM_LDFLAGS@
 FVM_LIBS = @FVM_LIBS@
@@ -194,11 +213,9 @@ MEI_CPPFLAGS = @MEI_CPPFLAGS@
 MEI_LDFLAGS = @MEI_LDFLAGS@
 MEI_LIBS = @MEI_LIBS@
 MKDIR_P = @MKDIR_P@
-MPI_BIN = @MPI_BIN@
 MPI_CPPFLAGS = @MPI_CPPFLAGS@
 MPI_LDFLAGS = @MPI_LDFLAGS@
 MPI_LIBS = @MPI_LIBS@
-MPI_TYPE = @MPI_TYPE@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -213,15 +230,18 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
 PYEXE = @PYEXE@
+PYRCC4 = @PYRCC4@
 PYTHON = @PYTHON@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC4 = @PYUIC4@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -266,7 +286,8 @@ datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
-ecs_prefix = @ecs_prefix@
+ecs = @ecs@
+ecs_bindir = @ecs_bindir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
@@ -283,8 +304,11 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 lt_ECHO = @lt_ECHO@
 mandir = @mandir@
-mei_libdir = @mei_libdir@
+mei_prefix = @mei_prefix@
 mkdir_p = @mkdir_p@
+mpi_bindir = @mpi_bindir@
+mpi_libdir = @mpi_libdir@
+mpi_type = @mpi_type@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
@@ -351,14 +375,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/rayt/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/rayt/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rayt/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/rayt/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -376,6 +400,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@@ -404,19 +429,19 @@ distclean-compile:
 	$(LTFCCOMPILE) -c -o $@ $<
 
 usray1.lo: $(top_srcdir)/users/rayt/usray1.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usray1.lo `test -f '$(top_srcdir)/users/rayt/usray1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/rayt/usray1.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usray1.lo `test -f '$(top_srcdir)/users/rayt/usray1.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/rayt/usray1.f90
 
 usray2.lo: $(top_srcdir)/users/rayt/usray2.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usray2.lo `test -f '$(top_srcdir)/users/rayt/usray2.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/rayt/usray2.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usray2.lo `test -f '$(top_srcdir)/users/rayt/usray2.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/rayt/usray2.f90
 
 usray3.lo: $(top_srcdir)/users/rayt/usray3.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usray3.lo `test -f '$(top_srcdir)/users/rayt/usray3.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/rayt/usray3.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usray3.lo `test -f '$(top_srcdir)/users/rayt/usray3.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/rayt/usray3.f90
 
 usray4.lo: $(top_srcdir)/users/rayt/usray4.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usray4.lo `test -f '$(top_srcdir)/users/rayt/usray4.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/rayt/usray4.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usray4.lo `test -f '$(top_srcdir)/users/rayt/usray4.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/rayt/usray4.f90
 
 usray5.lo: $(top_srcdir)/users/rayt/usray5.f90
-	$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usray5.lo `test -f '$(top_srcdir)/users/rayt/usray5.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/rayt/usray5.f90
+	$(LIBTOOL)  --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o usray5.lo `test -f '$(top_srcdir)/users/rayt/usray5.f90' || echo '$(srcdir)/'`$(top_srcdir)/users/rayt/usray5.f90
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -426,51 +451,57 @@ clean-libtool:
 install-raytDATA: $(rayt_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(raytdir)" || $(MKDIR_P) "$(DESTDIR)$(raytdir)"
-	@list='$(rayt_DATA)'; for p in $$list; do \
+	@list='$(rayt_DATA)'; test -n "$(raytdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(raytDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(raytdir)/$$f'"; \
-	  $(raytDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(raytdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(raytdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(raytdir)" || exit $$?; \
 	done
 
 uninstall-raytDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(rayt_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(raytdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(raytdir)/$$f"; \
-	done
+	@list='$(rayt_DATA)'; test -n "$(raytdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(raytdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(raytdir)" && rm -f $$files
 install-saturneincludeHEADERS: $(saturneinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(saturneincludedir)" || $(MKDIR_P) "$(DESTDIR)$(saturneincludedir)"
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(saturneincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  $(saturneincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(saturneincludedir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(saturneincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(saturneincludedir)" || exit $$?; \
 	done
 
 uninstall-saturneincludeHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(saturneinclude_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(saturneincludedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(saturneincludedir)/$$f"; \
-	done
+	@list='$(saturneinclude_HEADERS)'; test -n "$(saturneincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(saturneincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(saturneincludedir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -478,29 +509,34 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -521,13 +557,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -558,6 +598,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -578,6 +619,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -586,18 +629,28 @@ install-data-am: install-raytDATA install-saturneincludeHEADERS
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -636,6 +689,7 @@ uninstall-am: uninstall-raytDATA uninstall-saturneincludeHEADERS
 	tags uninstall uninstall-am uninstall-raytDATA \
 	uninstall-saturneincludeHEADERS
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/rayt/memra1.f90 b/src/rayt/memra1.f90
index 2411386..cfc05c5 100644
--- a/src/rayt/memra1.f90
+++ b/src/rayt/memra1.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine memra1                               &
+subroutine memra1 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -45,22 +45,20 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -72,7 +70,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -114,4 +112,4 @@ CALL IASIZE('MEMRA1',IFINIA)
 !     ==========
 
 return
-end
+end subroutine
diff --git a/src/rayt/memra2.f90 b/src/rayt/memra2.f90
index 07e5c01..4fdb24c 100644
--- a/src/rayt/memra2.f90
+++ b/src/rayt/memra2.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine memra2                               &
+subroutine memra2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -55,27 +55,26 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! idtr             ! e  ! --> ! "pointeur" sur dtr                             !
 ! iviscf, b        ! e  ! --> ! "pointeur" sur viscf, viscb                    !
 ! idam, ixam       ! e  ! --> ! "pointeur" sur dam, xam                        !
@@ -86,10 +85,8 @@
 ! iflxma,iflxmb    ! e  ! --> ! "pointeur" sur flumas et flumab                !
 ! itek             ! e  ! --> ! "pointeur" sur tempk                           !
 ! iw1,2,...,11     ! e  ! --> ! "pointeur" sur w1 a w10                       !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -101,7 +98,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -133,7 +130,7 @@ integer          icorua , icorub
 integer          iflxma , iflxmb
 integer          itek
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -184,4 +181,4 @@ CALL RASIZE('MEMRA2',IFINRA)
 
 return
 
-end
+end subroutine
diff --git a/src/rayt/memra3.f90 b/src/rayt/memra3.f90
index 7183e2b..45bfd6e 100644
--- a/src/rayt/memra3.f90
+++ b/src/rayt/memra3.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -25,7 +25,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine memra3                               &
+subroutine memra3 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -48,33 +48,30 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
 ! iisoth           ! e  ! --> ! "pointeur" sur isoth                           !
 ! itext            ! e  ! --> ! "pointeur" sur text                            !
 ! itint            ! e  ! --> ! "pointeur" sur tint                            !
 ! itek             ! e  ! --> ! "pointeur" sur tempk                           !
-! ifinia           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
-! ifinra           ! e  ! --> ! pointeur de la premiere cas libre dan          !
-!                  !    !     !  dans ia en sortie                             !
+! ifinia           ! i  ! --> ! number of first free position in ia (at exit)  !
+! ifinra           ! i  ! --> ! number of first free position in ra (at exit)  !
 !__________________.____._____.________________________________________________.
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -86,7 +83,7 @@
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -110,7 +107,7 @@ integer          ifinia , ifinra
 
 integer          iisoth , itext  , itint  , itek
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -141,4 +138,4 @@ CALL RASIZE('MEMRA3',IFINRA)
 !==========
 
 return
-end
+end subroutine
diff --git a/src/rayt/raycli.f90 b/src/rayt/raycli.f90
index dfc7039..a543955 100644
--- a/src/rayt/raycli.f90
+++ b/src/rayt/raycli.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -59,49 +59,40 @@ subroutine raycli &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! isvhb            ! e  ! <-- ! indicateur de sauvegarde des                   !
 !                  !    !     !  coefficients d'echange aux bords              !
 ! isvtb            ! e  ! <-- ! indicateur de sauvegarde des                   !
 !                  !    !     !  temperatures aux bords                        !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -111,38 +102,34 @@ subroutine raycli &
 !                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
 !                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
 !                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfrad(nfabor    ! te ! <-- ! numero de zone des faces de bord               !
 ! isothm(nfabor    ! te ! <-- ! type de condition de paroi                     !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -155,20 +142,20 @@ subroutine raycli &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! hbord            ! tr ! --> ! coefficients d'echange aux bords               !
 ! (nfabor)         !    !     !                                                !
 ! tbord            ! tr ! --> ! temperature aux bords           i              !
 ! (nfabor)         !    !     !                                                !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
 ! text (nfabor     ! tr ! --> ! temperature de bord externe                    !
 ! tint (nfabor     ! tr ! --> ! temperature de bord interne                    !
 ! tempk(ncelet)    ! tr ! --> ! temperature en kelvin                          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -180,7 +167,7 @@ subroutine raycli &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -237,7 +224,7 @@ double precision text(nfabor), tint(nfabor)
 
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, iel, ideb, ivart, iscat
@@ -1348,4 +1335,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/rayt/raydak.f90 b/src/rayt/raydak.f90
index 588d45a..50a5aec 100644
--- a/src/rayt/raydak.f90
+++ b/src/rayt/raydak.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,10 +44,10 @@ subroutine raydak &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
+! ncel             ! i  ! <-- ! number of cells                                !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
 ! ck (ncelet)      ! tr ! --> ! coefficient d'absorption du milieu             !
 !                  !    !     ! (nul si transparent)                           !
 ! pco2(ncelet)     ! tr ! <-- ! pression partielle de co2                      !
@@ -65,7 +65,7 @@ subroutine raydak &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -80,7 +80,7 @@ integer          ncelet, ncel
 double precision ck(ncelet), temp(ncelet), fv(ncelet)
 double precision pco2(ncelet), ph2o(ncelet)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel
 double precision alpha, path, te, ts, sootk, tmin, tmax
@@ -172,4 +172,4 @@ enddo
 !----
 return
 
-end
+end subroutine
diff --git a/src/rayt/raydir.f90 b/src/rayt/raydir.f90
index f524974..fb57078 100644
--- a/src/rayt/raydir.f90
+++ b/src/rayt/raydir.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,7 +44,7 @@ subroutine raydir &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !sx,sy,sz          ! r  ! --> ! cosinus directeurs du rayonnement              !
 !  ndirs           ! e  ! ->  ! nombre de directions par 1/8 de                !
@@ -60,7 +60,7 @@ subroutine raydir &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 !===============================================================================
@@ -70,7 +70,7 @@ implicit none
 integer          ndirs
 double precision sx(ndirs),sy(ndirs),sz(ndirs)
 
-! VARIABLES LOCALES
+! Local variables
 
 double precision  teta(6,3)
 double precision  phi1,teta1
@@ -120,4 +120,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/rayt/raydom.f90 b/src/rayt/raydom.f90
index 0135c1e..57e7dfd 100644
--- a/src/rayt/raydom.f90
+++ b/src/rayt/raydom.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -68,76 +68,63 @@ subroutine raydom &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! izfrad(nfabor    ! te ! <-- ! numero de zone des faces de bord               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! cofrua,cofrub    ! tr ! --- ! conditions aux limites aux                     !
 !(nfabor)          !    !     !    faces de bord pour la luminances            !
 ! flurds,flurdb    ! tr ! --- ! pseudo flux de masse (faces internes           !
@@ -153,9 +140,9 @@ subroutine raydom &
 ! tempk(ncelet)    ! tr ! --> ! temperature en kelvin                          !
 !   ,nphasc)       !    !     !                                                !
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -168,7 +155,7 @@ subroutine raydom &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -238,7 +225,7 @@ double precision tempk(ncelet,nphasc)
 
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iappel
@@ -1494,16 +1481,11 @@ propce(iel,ipproc(icak(1)))*propce(iel,ipproc(itsre(1)))
     write(nfecra,5050)
     write(nfecra,5000)
 
-!--> Correction du terme source explicite si
-!    la variable transportee est la temperature
-!    (il faudra multiplier ce terme par VOLUME(IEL) dans COVOFI->RAYSCA)
-
-    if (abs(iscsth(iscalt(irapha))).eq.1) then
-      do iel = 1,ncel
-        propce(iel,ipproc(itsre(1))) =                       &
-          propce(iel,ipproc(itsre(1))) * w9(iel)
-      enddo
-    endif
+!--> Correction du terme source explicite dans raysca pour permettre un
+!    post-processing correct du terme source explicite
+!    lorsque la variable transportee est la temperature
+!    (pour les calculs en combustion la variable transportee est toujours
+!    l'enthalpie)
 
   else
     write(nfecra,5000)
@@ -1691,5 +1673,5 @@ propce(iel,ipproc(icak(1)))*propce(iel,ipproc(itsre(1)))
 ! FIN
 !----
 
-end
+end subroutine
 
diff --git a/src/rayt/raylec.f90 b/src/rayt/raylec.f90
index 25befc2..e704ec7 100644
--- a/src/rayt/raylec.f90
+++ b/src/rayt/raylec.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -48,27 +48,25 @@ subroutine raylec &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -80,7 +78,7 @@ subroutine raylec &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -111,7 +109,7 @@ double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 double precision propce(ncelet,*)
 double precision propfb(nfabor,*)
 !
-! VARIABLES LOCALES
+! Local variables
 
 character        rubriq*64
 character        cphase(nphsmx)*2
@@ -387,4 +385,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/rayt/rayopt.f90 b/src/rayt/rayopt.f90
index 0f4490b..3bedc3b 100644
--- a/src/rayt/rayopt.f90
+++ b/src/rayt/rayopt.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,7 +44,7 @@ subroutine rayopt
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
@@ -57,7 +57,7 @@ subroutine rayopt
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -76,7 +76,7 @@ include "radiat.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj, iphas, iok , iiscal, iscaok, ipp, iph, nmodpp, iverif
 character        car4*4
@@ -789,4 +789,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/src/rayt/rayout.f90 b/src/rayt/rayout.f90
index 1201b79..6447585 100644
--- a/src/rayt/rayout.f90
+++ b/src/rayt/rayout.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,78 +55,65 @@ subroutine rayout &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
 ! lndnod           ! e  ! <-- ! longueur du tableau icocel (optionnel          !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 !                  !    !     ! le module lagrangien                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -139,7 +126,7 @@ subroutine rayout &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -186,7 +173,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character        rubriq*64
 character        cphase(nphsmx)*2
@@ -450,4 +437,4 @@ return
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/src/rayt/raypar.f90 b/src/rayt/raypar.f90
index 485ac6d..fb1d350 100644
--- a/src/rayt/raypar.f90
+++ b/src/rayt/raypar.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -60,46 +60,37 @@ subroutine raypar &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! iphas            ! e  ! <-- ! numero de la phase                             !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! iphas            ! i  ! <-- ! phase number                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! te ! --> ! code de condition limites aux faces            !
 !  (nfabor,nvar    !    !     !  de bord                                       !
 !                  !    !     ! = 1   -> dirichlet                             !
@@ -111,34 +102,30 @@ subroutine raypar &
 !                  !    !     !  entrante eventuelle     bloquee               !
 ! isothp(nfabor    ! te ! <-- ! liste des frontieres isothermes                !
 ! izfrap(nfabor    ! te ! <-- ! numero de zone des faces de bord               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
 !  (nfabor,nvar    !    !     !  aux faces de bord                             !
 !                  !    !     ! rcodcl(1) = valeur du dirichlet                !
@@ -151,8 +138,8 @@ subroutine raypar &
 !                  !    !     ! pour la pression             dt*gradp          !
 !                  !    !     ! pour les scalaires                             !
 !                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! tparop(nfabor    ! tr ! --> ! temperature de paroi en kelvin                 !
 ! qincip(nfabor    ! tr ! <-- ! densite de flux radiatif aux bords             !
 ! textp(nfabor)    ! tr ! <-- ! temperature de bord externe                    !
@@ -167,9 +154,9 @@ subroutine raypar &
 !                  !    !     ! faces de bord                                  !
 ! flconp(nfabor    ! tr ! <-- ! densite de flux convectif aux faces            !
 ! tempkp(ncelet    ! tr ! <-- ! temperature en kelvin                          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -182,7 +169,7 @@ subroutine raypar &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -238,7 +225,7 @@ double precision tempkp(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 
@@ -985,7 +972,7 @@ endif
 
 return
 
-end
+end subroutine
 
 !   ---------------------------------------------------------------------------------
 !   Variation maximale : .1484E-13%
diff --git a/src/rayt/raypun.f90 b/src/rayt/raypun.f90
index 6c15abb..05c32c5 100644
--- a/src/rayt/raypun.f90
+++ b/src/rayt/raypun.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -64,76 +64,63 @@ subroutine raypun &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! iphas            ! e  ! <-- ! numero de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! iphas            ! i  ! --> ! phase number                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! cofrua,cofrub    ! tr ! --- ! conditions aux limites aux                     !
 !(nfabor)          !    !     !    faces de bord pour la luminance             !
 ! flurds,flurdb    ! tr ! --- ! pseudo flux de masse (faces internes           !
@@ -157,9 +144,9 @@ subroutine raypun &
 ! w1...9(ncelet    ! tr ! --- ! tableau de travail                             !
 ! ckmel(ncelet)    ! tr ! <-- ! coeff d'absorption du melange                  !
 !                  !    !     !   gaz-particules de charbon                    !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -172,7 +159,7 @@ subroutine raypun &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -240,7 +227,7 @@ double precision ckmel(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     cnom
 
@@ -288,7 +275,7 @@ ircflp  = 1
 ischcp  = 1
 isstpp  = 0
 iescap  = 0
-imgr1   = 1
+imgr1   = 0
 ncymap  = 100
 nitmgp  = 10
 iwarnp  = iimlum
@@ -515,4 +502,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/rayt/raysca.f90 b/src/rayt/raysca.f90
index e8825bd..bbcc428 100644
--- a/src/rayt/raysca.f90
+++ b/src/rayt/raysca.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,16 +45,15 @@ subroutine raysca &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! iisca            ! e  ! <-- ! num scalaire temperature ou enthalpie          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
 ! smbrs(ncelet)    ! tr ! <-- ! tableau de travail pour sec mem                !
 ! rovsdt(ncelet    ! tr ! <-- ! tableau de travail pour terme instat           !
 ! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -66,12 +65,13 @@ subroutine raysca &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
 include "cstnum.h"
 include "cstphy.h"
+include "optcal.h"
 include "ppppar.h"
 include "ppthch.h"
 include "cpincl.h"
@@ -91,42 +91,53 @@ double precision smbrs(ncelet)
 double precision rovsdt(ncelet)
 double precision propce(ncelet,*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iel
 
 !===============================================================================
 
 !===============================================================================
-! 1. PRISE EN COMPTE DES TERMES SOURCES RADIATIFS
+! Radiative source terms (thermal scalar only)
 !===============================================================================
 
-
 if (abs(iscsth(iisca)).eq.1 .or. iscsth(iisca).eq.2) then
 
+  ! Implicit part
+
   do iel = 1,ncel
     propce(iel,ipproc(itsri(1))) = max(-propce(iel,ipproc(itsri(1))),zero)
+    rovsdt(iel) = rovsdt(iel) + propce(iel,ipproc(itsri(1)))*volume(iel)
   enddo
 
-  do iel = 1,ncel
+  ! Explicit part
 
-!--> PARTIE EXPLICITE
+  if (abs(iscsth(iisca)).eq.1) then
 
-    smbrs(iel) = smbrs(iel)  + propce(iel,ipproc(itsre(1)))*volume(iel)
+    ! Source term correction if the thermal scalar is the temperature
+    if (icp(irapha).gt.0) then
+      do iel = 1,ncel
+        smbrs(iel) = smbrs(iel) +                                         &
+           propce(iel,ipproc(itsre(1))) / propce(iel,ipproc(icp(irapha))) &
+         * volume(iel)
+      enddo
+    else
+      do iel = 1,ncel
+        smbrs(iel) = smbrs(iel) +  propce(iel,ipproc(itsre(1))) / cp0(irapha) &
+         * volume(iel)
+      enddo
+    endif
 
-!--> PARTIE IMPLICITE
+  else
 
-    rovsdt(iel)= rovsdt(iel) + propce(iel,ipproc(itsri(1)))*volume(iel)
+    ! No correction if the thermal scalar is the enthalpy
+    do iel = 1,ncel
+      smbrs(iel) = smbrs(iel) + propce(iel,ipproc(itsre(1)))*volume(iel)
+    enddo
 
-  enddo
+  endif
 
 endif
-!
-
-!----
-! FIN
-!----
 
 return
-
-end
+end subroutine
diff --git a/src/rayt/raysol.f90 b/src/rayt/raysol.f90
index 9d6e70b..16d5f55 100644
--- a/src/rayt/raysol.f90
+++ b/src/rayt/raysol.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -95,76 +95,63 @@ subroutine raysol &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! iphas            ! e  ! <-- ! numero de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! iphas            ! i  ! --> ! phase number                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! cofrua,cofrub    ! tr ! --- ! conditions aux limites aux                     !
 !(nfabor)          !    !     !    faces de bord pour la luminance             !
 ! flurds,flurdb    ! tr ! --- ! pseudo flux de masse (faces internes           !
@@ -185,9 +172,9 @@ subroutine raysol &
 !                  !    !     ! radiatif explicite                             !
 ! qincid(nfabor    ! tr ! --> ! densite de flux radiatif aux bords             !
 ! snplus(nfabor    ! tr ! --- ! integration du demi-espace egale a pi          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
 !     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
@@ -200,7 +187,7 @@ subroutine raysol &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -266,7 +253,7 @@ double precision qincid(nfabor), snplus(nfabor)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     cnom
 
@@ -576,4 +563,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/src/rayt/rmodak.f90 b/src/rayt/rmodak.f90
index 358948d..fd1f084 100644
--- a/src/rayt/rmodak.f90
+++ b/src/rayt/rmodak.f90
@@ -3,7 +3,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -81,7 +81,7 @@ subroutine absorb &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! ts               ! r  ! <-- ! temperature du corps noir (k)                  !
 ! te               ! r  ! <-- ! temperature du melange (k)                     !
@@ -104,7 +104,7 @@ subroutine absorb &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -116,7 +116,7 @@ include "entsor.h"
 
 double precision ts, te, path, sootk, pco2, ph2o, alpha
 
-! VARIABLES LOCALES
+! Local variables
 
 double precision tmax, tmin, ptotal, ratio, pathl, pcl, pwl
 double precision as, taus, ag, power, zeta
@@ -258,7 +258,7 @@ alpha= 1.d-8
 '@                                                            ',/)
 
 return
-end
+end subroutine
 
 !==============================================================================
 
@@ -276,7 +276,7 @@ subroutine chebyc &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! norpol           ! e  ! <-- ! ordre du polynome de  chebychev                !
 ! argpol           ! r  ! <-- ! argument du polynome de chebychev              !
@@ -292,7 +292,7 @@ subroutine chebyc &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -303,7 +303,7 @@ implicit none
 integer          norpol
 double precision argpol , valpol
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ict
 double precision f, vm2,vm1
@@ -338,7 +338,7 @@ do ict = 2, norpol
 enddo
 
 return
-end
+end subroutine
 
 !==============================================================================
 
@@ -356,7 +356,7 @@ subroutine asympt &
 !FONCC
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! zz               ! r  ! <-- !                                                !
 ! zzv              ! r  ! --> !                                                !
@@ -371,7 +371,7 @@ subroutine asympt &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -381,7 +381,7 @@ implicit none
 
 double precision zz, zzv
 
-! VARIABLES LOCALES
+! Local variables
 
 double precision zi1, zi2, zi3, d1s3
 
@@ -403,7 +403,7 @@ zzv = zi3 * (                                                     &
             )
 
 return
-end
+end subroutine
 
 !==============================================================================
 
@@ -422,7 +422,7 @@ subroutine tasoot &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! zkled            ! r  ! <-- !                                                !
 ! pathl            ! r  ! <-- ! penetration du rayonnement dans le             !
@@ -441,7 +441,7 @@ subroutine tasoot &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -451,7 +451,7 @@ implicit none
 
 double precision zkled, pathl, tblack, taus
 
-! VARIABLES LOCALES
+! Local variables
 
 double precision arg , val
 
@@ -473,7 +473,7 @@ return
  1    taus = 1.d0
 
 return
-end
+end subroutine
 
 !==============================================================================
 
@@ -494,7 +494,7 @@ subroutine pentag &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! argfpe           ! r  ! <-- ! argument de la fonction pentagamma             !
 ! valfpe           ! r  ! --> ! valeur de la fonction pentagamma               !
@@ -509,7 +509,7 @@ subroutine pentag &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -519,7 +519,7 @@ implicit none
 
 double precision argfpe, valfpe
 
-! VARIABLES LOCALES
+! Local variables
 
 double precision zz, zzv, zs
 
@@ -573,11 +573,11 @@ call asympt                                                       &
 valfpe = zzv+zs
 
 return
-end
+end subroutine
 
 !==============================================================================
 
-                 function fdleck                                  &
+function fdleck &
 !==============
 
  ( val    , pl     , te     )
@@ -593,7 +593,7 @@ end
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! val              ! r  ! ->  !                                                !
 ! pl               ! r  ! ->  !                                                !
@@ -609,7 +609,7 @@ end
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -619,7 +619,7 @@ implicit none
 
 double precision val, pl, te, fdleck
 
-! VARIABLES LOCALES
+! Local variables
 
 double precision term, term2, term3, tt, tt2, aa, bb, cc
 
@@ -648,11 +648,11 @@ return
  1    fdleck= 0.d0
 
 return
-end
+end function
 
 !==============================================================================
 
-                 function emigas                                  &
+function emigas &
 !==============
 !      -------------------------------------------------------------
  ( pathl  , pc     , pw     , te     )
@@ -667,7 +667,7 @@ end
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! pathl            ! r  ! ->  ! valeur du path                                 !
 ! pc               ! r  ! ->  ! pression partielle de co2                      !
@@ -684,7 +684,7 @@ end
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -694,7 +694,7 @@ implicit none
 
 double precision pathl, pc, pw, te, emigas
 
-! VARIABLES LOCALES
+! Local variables
 
 double precision tmin, tmax, pcl, ec
 double precision pwl, pcwl, dels, ew, pcpw, xi, fdleck
@@ -753,7 +753,7 @@ return
 emigas = ec
 
 return
-end
+end function
 
 !==============================================================================
 
@@ -771,7 +771,7 @@ subroutine scrtch &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! pp               ! r  ! ->  !                                                !
 ! pl               ! r  ! ->  !                                                !
@@ -789,7 +789,7 @@ subroutine scrtch &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 
@@ -800,7 +800,7 @@ implicit none
 integer          index
 double precision pp, pl, te, val
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii, jj, kk, iii, jjj, kkk
 double precision cc(3,4,4), cw(3,4,4), sc(3,4,4)
@@ -961,4 +961,4 @@ enddo
 val = exp(val)
 
 return
-end
+end subroutine
diff --git a/users/atmo/usatcl.f90 b/users/atmo/usatcl.f90
index e9752d8..e704dc8 100644
--- a/users/atmo/usatcl.f90
+++ b/users/atmo/usatcl.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,431 +55,126 @@ subroutine usatcl &
 !    (ICODCL,RCODCL) POUR LES VARIABLES INCONNUES
 
 
-
-! INTRODUCTION
+! Introduction
 ! ============
 
-! On donne ici les conditions aux limites par face de bord.
+! Here one defines boundary conditions on a per-face basis.
+
+! Boundary faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
+
+! Boundary condition types
+! ========================
 
-! On balaye les faces de bord et selon un critere on affecte tel
-!    ou tel type de conditions aux limites. Dans l'exemple donne
-!    ci dessous, c'est la couleur (propriete 1 de la famille)
-!    qui permet de distinguer les differents types de bord. On
-!    aurait pu aussi travailler avec les coordonnees du centre
-!    des faces, mais "c'eut ete moins pratique".
+! Boundary conditions setup for standard variables (pressure, velocity,
+! turbulence, scalars) is described precisely in the 'usclim' subroutine.
 
+! Detailed explanation will be found in the theory guide.
 
-! TYPE DE CONDITIONS AUX LIMITES
-! ==============================
-
-! On peut affecter les conditions aux limites de deux manieres.
-
-
-!    Pour les conditions "standard" :
-!    --------------------------------
-
-!     (entree, sortie libre, paroi, symetrie), on donne un code
-!     stocke dans le tableau ITYPFB (dimensionne au nombre de
-!     faces de bord,nombre de phases). Ce code sera ensuite
-!     utilise par un sous-programme non utilisateur pour affecter
-!     les conditions correspondantes (les scalaires, en
-!     particulier, recevront alors les conditions de la phase a
-!     laquelle ils sont associes). Ainsi :
-
-!     Code      |  Type de bord
-!     -------------------------
-!      IENTRE   |   Entree
-!      ISOLIB   |   Sortie libre
-!      ISYMET   |   Symetrie
-!      IPAROI   |   Paroi (lisse)
-!      IPARUG   |   Paroi rugueuse
-
-!     Les entiers IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!     sont affectes par ailleurs (include param.h). Leur valeur
-!     est superieure ou egale a 1 et
-!         inferieure ou egale a NTYPMX (valeur fixee dans paramx.h)
-
-
-
-!     En outre, il faut donner certaines valeurs :
-
-
-!     - Entree (plus precisement entree/sortie a debit impose, car le debit
-!               peut etre impose sortant) :
-
-!       -> Conditions de Dirichlet sur les variables
-!         autres que la pression obligatoire si le flux est entrant,
-!         optionnelle si le flux est sortant (le code affecte flux nul
-!         si aucun Dirichlet n'est specifie) ; ainsi
-!         en face IFAC, sur la variable IVAR : RCODCL(IFAC,IVAR,1)
-
-
-!     - Paroi lisse : (= solide impermeable, avec frottement lisse)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 5
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
-!                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-
-!     - Paroi rugueuse : (= solide impermeable, avec frottement rugueux)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Valeur de la hauteur de rugosite dynamique a specifier dans
-!                       RCODCL(IFAC,IU,3) (valeur pour IV et IW non utilisee)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi rugueuse s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 6
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!                       RCODCL(IFAC,IVAR,3) = Hauteur de rugosite thermique
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
-!                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-!     - Symetrie (= paroi impermeable avec glissement) :
-
-!       -> Rien a preciser
-
-
-!     - Sortie libre (plus precisement entree/sortie libre a pression imposee)
-
-!       -> Rien a preciser pour la pression et la vitesse
-!          Pour les scalaires et grandeurs turbulentes, une valeur de Dirichlet
-!            peut etre specifiee de maniere optionnelle. Le comportement est le
-!            suivant :
-!              * la pression est toujours traitee en Dirichlet
-!              * si flux de masse entrant :
-!                  on retient la vitesse a l'infini
-!                  condition de Dirichlet pour les scalaires et grandeurs
-!                    turbulentes (ou flux nul si l'utilisateur n'a pas
-!                    specifie de Dirichlet)
-!                 si flux de masse sortant :
-!                    on impose un flux nul sur la vitesse, les scalaires et
-!                    les grandeurs turbulentes
-
-!       Noter que la pression sera recalee a P0
-!           sur la premiere face de sortie libre trouvee
-
-
-!    Pour les conditions "non standard" :
-!    ------------------------------------
-
-!     Autres que (entree, sortie libre, paroi, symetrie), on donne
-!      - d'une part, pour chaque face :
-!        -> une valeur de ITYPFB admissible
-!           ie superieure ou egale a 1 et inferieure ou egale a
-!           NTYPMX (voir sa valeur dans paramx.h).
-!           Les valeurs predefinies dans paramx.h
-!           IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG sont dans cet
-!           intervalle et il est preferable de ne pas affecter
-!           inconsidrement et par hasard a ITYPFB la valeur
-!           d'un de ces entiers. Pour eviter cela, on peut
-!           utiliser IINDEF si l'on souhaite eviter de verifier
-!           les valeurs dans paramx.h. IINDEF est une valeur
-!           admissible a laquelle n'est attachee aucune condition
-!           limite predefinie.
-!           Noter que le tableau ITYPFB est
-!           reinitialise a chaque pas de temps a la valeur
-!           non admissible 0. Si on oublie de modifier ITYPFB pour
-!           une face, le code s'arretera.
-
-!      - et d'autre part pour chaque face et chaque variable :
-!        -> un code     ICODCL(IFAC,IVAR)
-!        -> trois reels RCODCL(IFAC,IVAR,1)
-!                       RCODCL(IFAC,IVAR,2)
-!                       RCODCL(IFAC,IVAR,3)
-!     La valeur de ICODCL est prise parmi les suivantes :
-!       1 : Dirichlet      (utilisable pour toute variable)
-!       3 : Neumann        (utilisable pour toute variable)
-!       4 : Symetrie       (utilisable uniquement pour la vitesse et
-!                                   les composantes du tenseur Rij)
-!       5 : Paroi lisse    (utilisable pour toute variable sauf la
-!                                                         pression)
-!       6 : Paroi rugueuse (utilisable pour toute variable sauf la
-!                                                         pression)
-!       9 : Sortie libre   (utilisable uniquement pour la vitesse)
-!     Les valeurs des 3 reels RCODCL sont les suivantes
-!      RCODCL(IFAC,IVAR,1) :
-!         Dirichlet sur la variable        si ICODCL(IFAC,IVAR)=  1
-!         valeur en paroi (defilmnt, temp) si ICODCL(IFAC,IVAR)=  5
-!         La dimension de RCODCL(IFAC,IVAR,1) est celle de la
-!           variable resolue : ex U (vitesse en m/s),
-!                                 T (temperature en degres)
-!                                 H (enthalpie en J/kg)
-!                                 F (scalaire passif en -)
-!      RCODCL(IFAC,IVAR,2) :
-!         coefficient d'echange "exterieur" (entre la valeur
-!                          imposee et la valeur au bord du domaine)
-!                          RINFIN = infini par defaut
-!         Pour les vitesses U,             en kg/(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =            (VISCL+VISCT) / D
-!         Pour la  pression P,             en  s/m          :
-!           RCODCL(IFAC,IVAR,2) =                       DT / D
-!         Pour les temperatures T,         en Watt/(m2 degres) :
-!           RCODCL(IFAC,IVAR,2) = CP*(VISCLS+VISCT/SIGMAS) / D
-!         Pour les enthalpies H,           en kg /(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!              (D a la dimension d'une distance en m)
-
-!      RCODCL(IFAC,IVAR,3) si ICODCL(IFAC,IVAR)<>6 :
-!        Densite de flux (< 0 si gain, n normale orientee vers l'exterieur)
-!                         si ICODCL(IFAC,IVAR)= 3
-!         Pour les vitesses U,             en kg/(m s2) = J :
-!           RCODCL(IFAC,IVAR,3) =           -(VISCL+VISCT) * (GRAD U).n
-!         Pour la  pression P,             en kg/(m2 s)     :
-!           RCODCL(IFAC,IVAR,3) =                      -DT * (GRAD P).n
-!         Pour les temperatures T,         en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =-CP*(VISCLS+VISCT/SIGMAS) * (GRAD T).n
-!         Pour les enthalpies H,           en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD H).n
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD F).n
-
-!      RCODCL(IFAC,IVAR,3) SI ICODCL(IFAC,IVAR)=6 :
-!        Rugosites de la loi rugueuse
-!         Pour les vitesses U, rugosite dynamique
-!           RCODCL(IFAC,IVAR,3) = RUGD
-!         Pour les autres scalaires, rugosite thermique
-!           RCODCL(IFAC,IVAR,3) = RUGT
-
-
-!      Noter bien que si l'utilisateur affecte une valeur a ITYPFB
-!       parmi     IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!       et qu'il ne modifie pas ICODCL (valeur nulle par defaut),
-!       c'est ITYPFB qui imposera la condition limite.
-
-!      Par contre, si l'utilisateur impose
-!        ICODCL(IFAC,IVAR) (non nul),
-!        ce sont alors les valeurs de RCODCL qu'il aura fournies
-!        qui sont retenues pour la face et la variable consideree
-!        (s'il ne precise pas RCODCL, ce sont les valeurs
-!        par defaut qui sont retenues pour la face et
-!        la variable consideree soit :
-!                                 RCODCL(IFAC,IVAR,1) = 0.D0
-!                                 RCODCL(IFAC,IVAR,2) = RINFIN
-!                                 RCODCL(IFAC,IVAR,3) = 0.D0)
-!        En particulier, on peut par exemple
-!        -> donner ITYPFB(IFAC,IPHAS) = IPAROI
-!        qui impose les conditions de paroi par defaut pour toutes
-!        les variables sur la face IFAC,
-!        -> et preciser EN OUTRE pour la variable IVAR sur cette
-!        face IFAC des conditions paarticulieres en imposant
-!        ICODCL(IFAC,IVAR) et les 3 RCODCL.
-
-
-!      L'utilisateur peut egalement affecter a ITYPFB une valeur
-!       non egale a IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG, IINDEF
-!       mais superieure ou egale a 1 et inferieure ou egale a
-!       NTYPMX (voir les valeurs dans param.h) pour reperer
-!       des groupes de couleurs dans d'autres sous programmes
-!       qui lui seraient propres et ou ITYPFB serait disponible.
-!       Dans ce cas cependant, il faudra
-!       imposer les conditions limites en donnant des valeurs a
-!       ICODCL et aux trois RCODCL (puisque la valeur de ITYPFB
-!       ne sera pas predefinie dans le code).
-
-
-! REGLES DE COHERENCE
-! ===================
-
-!       Quelques regles de coherence entre les codes ICODCL
-!         des variables pour les conditions non standard :
-
-!           Les codes des vitesses doivent etre identiques
-!           Les codes des Rij      doivent etre identiques
-!           Si code (vitesse ou Rij) = 4
-!             il faut code (vitesse et Rij) = 4
-!           Si code (vitesse ou turbulence) = 5
-!             il faut code (vitesse et turbulence) = 5
-!           Si code (vitesse ou turbulence) = 6
-!             il faut code (vitesse et turbulence) = 6
-!           Si code scalaire (hormis pression ou fluctuations) = 5
-!             il faut code vitesse = 5
-!           Si code scalaire (hormis pression ou fluctuations) = 6
-!             il faut code vitesse = 6
-
-
-! REMARQUES
-! ==========
-
-!       Attention : pour imposer un flux (non nul) sur les Rij,
-!                   la viscosite a prendre en compte est VISCL
-!                   meme si VISCT existe (VISCT=RHO CMU K2/EPSILON)
-
-
-!       On dispose du tableau de tri des faces de bord au pas
-!           de temps precedent (sauf au premier pas de temps, ou
-!           ITRIFB n'a pas ete renseigne).
-!       Le tableau du type des faces de bord ITYPFB a ete
-!           reinitialise avant d'entrer dans le sous programme.
-
-
-
-!       Noter comment acceder a certaines variables :
-
-! Valeurs aux cellules
-!               Soit        IEL = IFABOR(IFAC)
-
-! * Masse vol                       phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IROM (IPHAS)))
-! * Viscosite moleculaire dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCL(IPHAS)))
-! * Viscosite turbulente  dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCT(IPHAS)))
-! * Chaleur specifique              phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(ICP   (IPHAS)))
-! * Diffusivite lambda           scalaire ISCAL, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISLS(ISCAL)))
-
-! Valeurs aux faces de bord
-
-! * Masse vol                      phase IPHAS, face de bord IFAC :
-!                  PROPFB(IFAC,IPPROB(IROM (IPHAS)))
-! * Flux de masse relatif a la variable  IVAR , face de bord IFAC :
-!      (i.e. le flux de masse servant a la convection de IVAR)
-!                  PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))
-! * Pour les autres grandeurs              a la face de bord IFAC :
-!      prendre pour approximation la valeur dans la cellule  IEL
-!      adjacente i.e. comme plus haut avec IEL = IFABOR(IFAC).
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! --> ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2 ou                !
-!                  !    !     !  hauteur de rugosite (m) si icodcl=6           !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!  (nfabor,nvar,3) !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -530,7 +225,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, iel, ii, ivar, iphas
@@ -767,8 +462,10 @@ do ilelt = 1, nlelt
   do iphas = 1, nphas
     itypfb(ifac,iphas)   = iparug
 
-!     Rugosite pour la vitesse
+    ! Rugosite pour la vitesse
     rcodcl(ifac,iu(iphas),3) = rugd
+    ! Rugosite pour les scalaires
+    !rcodcl(ifac,iv(iphas),3) = rugt
   enddo
 
   if(nscal.gt.0) then
@@ -778,7 +475,7 @@ do ilelt = 1, nlelt
 !            II = 1
 !            ICODCL(IFAC,ISCA(II))   = 6
 !            RCODCL(IFAC,ISCA(II),1) = 20.D0
-!            RCODCL(IFAC,ISCA(II),3) = 0.001D0
+!            RCODCL(IFAC,IV(II),3) = 0.001D0
 
 ! SI FLUX IMPOSE A 4.D0 (SCALAIRE II=2)
 !            II = 2
@@ -819,4 +516,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/users/atmo/usati1.f90 b/users/atmo/usati1.f90
index cfca1b9..f096fec 100644
--- a/users/atmo/usati1.f90
+++ b/users/atmo/usati1.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine usati1
+subroutine usati1
 !================
 
 
@@ -43,20 +43,19 @@
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -109,4 +108,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/users/atmo/usativ.f90 b/users/atmo/usativ.f90
index e38b384..645a814 100644
--- a/users/atmo/usativ.f90
+++ b/users/atmo/usativ.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -92,119 +92,86 @@ subroutine usativ &
 !     ET PAS ICI
 
 
+! Cells identification
+! ====================
 
-! POUR LA COMBUSTION, LE CHARBON, L'INITIALISATION EST FAITE
-!   PAR DEFAUT : IL EST CONSEILLE DE LA CONSERVER.
+! Cells may be identified using the 'getcel' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
 
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -250,7 +217,7 @@ double precision rprom(nbmett,nbmetm)  , tpprom(nbmett,nbmetm)
 double precision phprom(nbmett,nbmetm)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, iutile,iphas
@@ -376,4 +343,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/users/base/usalcl.f90 b/users/base/usalcl.f90
index 0675bd2..5f5673a 100644
--- a/users/base/usalcl.f90
+++ b/users/base/usalcl.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2010 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,403 +46,346 @@ subroutine usalcl &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
+! Purpose:
+! -------
 
-!    ROUTINE UTILISATEUR
-!    REMPLISSAGE DU TABLEAU DE CONDITIONS AUX LIMITES
-!      (IALTYB,ICODCL,RCODCL) POUR LA VITESSE DE MAILLAGE
+! --- User subroutine dedicated the use of ALE (Arbitrary Lagrangian Eulerian Method) :
+!                 Fills boundary conditions (ialtyb, icodcl, rcodcl) for mesh velocity.
+!                 This subroutine also enables one to fix displacement on nodes.
 
-!    POSSIBILITE DE FIXER DIRECTEMENT LE DEPLACEMENT DES
-!      NOEUDS
-
-
-
-!    CE SOUS PROGRAMME UTILISATEUR EST OBLIGATOIRE EN ALE
-!    ====================================================
-
-
-
-! INTRODUCTION
+!
+! Introduction
 ! ============
 
-! On donne ici les conditions aux limites par face de bord, pour
-!    pour la vitesse de maillage uniquement (pour les autres
-!    variables, se reporter a l'Interface Graphique ou a usclim)
-
-
-! On balaye les faces de bord et selon un critere on affecte tel
-!    ou tel type de conditions aux limites. Dans l'exemple donne
-!    ci dessous, c'est la couleur (propriete 1 de la famille)
-!    qui permet de distinguer les differents types de bord. On
-!    aurait pu aussi travailler avec les coordonnees du centre
-!    des faces, mais "c'eut ete moins pratique".
-
-
-! TYPE DE CONDITIONS AUX LIMITES
-! ==============================
-
-! On peut affecter les conditions aux limites de deux manieres.
-
-
-!    Pour les conditions "standards" :
-!    --------------------------------
-
-! Trois types de conditions "standards" sont disponibles. On
-!     specifie pour chaque face le type de condition choisi.
-!     Le choix se fait en remplissant le tableau IALTYB.
-
-
-! * IALTYB(IFAC) = IBFIXE : la face IFAC correspond a un bord
-!     de maillage fixe. Une condition de Dirichlet nulle sera
-!     affectee automatiquement a la vitesse de maillage. En
-!     outre, le deplacement des noeuds sera automatiquement
-!     impose a 0 (cf. plus base sur IMPALE), sauf si
-!     l'utilisateur a modifie la condition pour au moins une
-!     des conposantes de la vitesse de maillage (ICODCL modifie,
-!     cf. conditions non standards)
-
-
-! * IALTYB(IFAC) = IGLISS : la face IFAC est une face a maillage
-!     glissant. La composante normale a la face de la vitesse
-!     de maillage sera forcee a 0, les autres composantes seront
-!     traitees en Neumann homogene (pour les faces non alignees
-!     avec les axes, la condition de Neumann homogene est
-!     seulement partiellement implicitee), comme pour les
-!     conditions de symetrie de la vitesse fluide.
-
-
-! * IALTYB(IFAC) = IVIMPO : la face IFAC a une vitesse de maillage
-!     imposee. Cette vitesse est specifiee en remplissant le
-!     tableau RCODCL correspondant :
-!     RCODCL(IFAC,IUMA,1) = vitesse de maillage selon X
-!     RCODCL(IFAC,IVMA,1) = vitesse de maillage selon Y
-!     RCODCL(IFAC,IWMA,1) = vitesse de maillage selon Z
-!     Les composantes non specifiees de RCODCL(.,I.MA,1) seront mises
-!     a 0 (seules les composantes non nulles sont donc a specifier)
-
-
-
-!    Pour les conditions "non standards" :
-!    ------------------------------------
-
-!     Autres que fixe, glissement ou vitesse imposee, on donne
-
-!      - pour chaque face et chaque composante IVAR=IUMA, IVMA, IWMA :
-!        -> un code     ICODCL(IFAC,IVAR)
-!        -> trois reels RCODCL(IFAC,IVAR,1)
-!                       RCODCL(IFAC,IVAR,2)
-!                       RCODCL(IFAC,IVAR,3)
-!     La valeur de ICODCL est prise parmi les suivantes :
-!       1 : Dirichlet
-!       3 : Neumann
-!       4 : Symetrie
-!     Les valeurs des 3 reels RCODCL sont les suivantes
-
-!      RCODCL(IFAC,IVAR,1) :
-!         Dirichlet sur la variable si ICODCL(IFAC,IVAR)=  1
-!         La dimension de RCODCL(IFAC,IVAR,1) est en m/s
-
-!      RCODCL(IFAC,IVAR,2) :
-!         coefficient d'echange "exterieur" en kg/(m2 s) (entre la
-!                    valeur imposee et la valeur au bord du domaine)
-!                    RINFIN = infini par defaut
-!           RCODCL(IFAC,IVAR,2) =            (VISCMA) / D
-!              (D a la dimension d'une distance en m, VISCMA est
-!               la viscosite de maillage)
-!         NB : la definition de RCODCL(.,.,2) est calquee sur le cas
-!              des autres variables standards de l'ecoulement. Il n'a pas
-!              grand sens physique dans le cas de la vitesse de maillage.
-
-!      RCODCL(IFAC,IVAR,3) :
-!        Densite de flux en kg/(m s2) = J si ICODCL(IFAC,IVAR)= 3
-!                       (< 0 si gain, n normale orientee vers l'exterieur)
-!           RCODCL(IFAC,IVAR,3) =           -(VISCMA) * (GRAD Um).n
-!            (ou Um represente la vitesse de maillage)
-!         NB : la definition de RCODCL(.,.,3) est calquee sur le cas
-!              des autres variables standards de l'ecoulement.
-!              RCODCL(.,.,3) = 0.D0 permet de specifier un Neumann
-!              homogene sur la vitesse de maillage. Toute autre valeur
-!              aura une signification physique plus discutable.
-
-
-
-!      Noter bien que si l'utilisateur affecte une valeur a IALTYB
-!       parmi IBFIXE, IGLISS, IVIMPO,
-!       et qu'il ne modifie pas ICODCL (valeur nulle par defaut),
-!       c'est ITYPFB qui imposera la condition limite.
-
-!      Par contre, si l'utilisateur impose
-!        ICODCL(IFAC,IVAR) (non nul),
-!        ce sont alors les valeurs de ICODCL et RCODCL qu'il aura
-!        fournies qui sont retenues pour la face et la composante
-!        consideree (s'il ne precise pas RCODCL, ce sont les valeurs
-!        par defaut qui sont retenues pour la face et
-!        la variable consideree soit :
-!                                 RCODCL(IFAC,IVAR,1) = 0.D0
-!                                 RCODCL(IFAC,IVAR,2) = RINFIN
-!                                 RCODCL(IFAC,IVAR,3) = 0.D0)
-
-
-!      Si l'utilisateur specifie de lui-meme la valeur de ICODCL
-!         et de RCODCL pour TOUTES les composantes de la vitesse
-!         de maillage, il n'est pas necessaire de specifier IALTYB
-!         pour la face concernee (sa valeur ne sera pas utilisee)
-
-
-! REGLE DE COHERENCE
-! ==================
-
-!       Si une condition de symetrie (ICODCL=4) a ete imposee sur
-!          une des composantes, elle doit l'etre sur toutes les
-!          composantes.
-
-
-! DEPLACEMENT FORCE DES NOEUDS
+! Here one defines boundary conditions on a per-face basis.
+
+! Boundary faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
+! Boundary conditions setup for standard variables (pressure, velocity,
+! turbulence, scalars) is described precisely in 'usclim' subroutine.
+
+! Detailed explanation will be found in the theory guide.
+
+! Boundary condition types
+! ========================
+
+! Boundary conditions may be assigned in two ways.
+
+!
+!    For "standard" boundary conditions:
+!    -----------------------------------
+
+!     (fixed boundary, sliding mesh boundary, fixed velocity), one defines a code in the 'ialtyb'
+!     array (of dimensions number of boundary faces, number of phases).
+
+! * ialtyb(ifac) = ibfixe : the face IFAC is considered to be motionless. A zero Dirichlet
+!         boundary condition is automatically imposed on mesh velocity. Moreover the displacement
+!         of corresponding nodes will automatically be set to 0 (for further information please
+!         read the paragraph dedicated to the description of IMPALE array in 'usalcl' subroutine),
+!         unless the USER has modified the condition of at least one  component of mesh velocity
+!         (modification of ICOCL array, please read the following paragraph 'For "non-standard"
+!         conditions')
+
+! * ialtyb(ifac) = igliss : The mesh slides on corresponding face IFAC. The normal component of mesh
+!          viscosity is automatically set to 0. A homogeneous Neumann condition is automatically
+!          prescribed for the other components, as it's the case for 'Symmetry' fluid condition (Please
+!          note that homogeneous Neumann condition is only partially implicit in case of boudary face
+!          that is not aligned with axis).
+
+! * ialtyb(ifac) = ivimpo : the mesh velocity is imposed on face IFAC. Thus, the users needs to
+!          specify the mesh velocity values filling RCODCL arrays as follows :
+!          rcodcl(ifac,iuma,1) = mesh velocity in 'x' direction
+!          rcodcl(ifac,ivma,1) = mesh velocity in 'y' direction
+!          rcodcl(ifac,iwma,1) = mesh velocity in 'z' direction
+!          Components of rcodcl(.,i.ma,1) arrays that are not specified by user
+!          will automatically be set to 0, meaning that user only needs to specify
+!          non zero mesh velocity components.
+
+!    For "non-standard" conditions:
+!    ------------------------------
+
+!     Other than (fixed boundary, sliding mesh boundary, fixed velocity), one defines
+!     for each face and each component IVAR = IUMA, IVMA, IWMA :
+!        -> a code             icodcl(ifac, ivar)
+!        -> three real values  rcodcl(ifac, ivar, 1)
+!                              rcodcl(ifac, ivar, 2)
+!                              rcodcl(ifac, ivar, 3)
+!     The value of 'icodcl' is taken from the following:
+!       1: Dirichlet
+!       3: Neumann
+!       4: Symmetry
+!     The values of the 3 'rcodcl' components are:
+!      rcodcl(ifac, ivar, 1):
+!         Dirichlet for the variable if icodcl(ifac, ivar) =  1
+!         The dimension of rcodcl(ifac, ivar, 1) is in m/s
+!      rcodcl(ifac, ivar, 2):
+!         "exterior" exchange coefficient (between the prescribed value
+!                          and the value at the domain boundary)
+!                          rinfin = infinite by default
+!           rcodcl(ifac,ivar,2) =  (VISCMA) / d
+!              (D has the dimension of a distance in m, VISCMA stands for
+!              the mesh viscosity)
+!         NB : the definition of rcodcl(.,.,2) is based on the manner
+!              other standard variables are managed in the same case.
+!              This type of boundary condition appears nonsense
+!              concerning mesh in that context.
+
+!      rcodcl(ifac,ivar,3) :
+!        Flux density (in kg/m s2) = J if icodcl(ifac, ivar) = 3
+!                     (<0 if gain, n outwards-facing normal)
+!             rcodcl(ifac,ivar,3) = -(VISCMA)* (grad Um).n
+!                  (Um represents mesh velocity)
+!         NB : note that the definition of condition rcodcl(ifac,ivar,3)
+!              is based on the manner other standard variables are
+!              managed in the same case.
+!              rcodcl(.,.,3) = 0.d0 enables one to specify a homogeneous
+!              Neuman condition on mesh velocity. Any other value will be
+!              physically nonsense in that context.
+
+!      Note that if the user assigns a value to ialtyb equal to ibfixe, igliss,
+!      or ivimpo and does not modify icodcl (zero value by
+!       default), ialtyb will define the boundary condition type.
+
+!      To the contrary, if the user prescribes icodcl(ifac, ivar) (nonzero),
+!        the values assigned to rcodcl will be used for the considered face
+!        and variable (if rcodcl values are not set, the default values will
+!        be used for the face and variable, so:
+!                                 rcodcl(ifac, ivar, 1) = 0.d0
+!                                 rcodcl(ifac, ivar, 2) = rinfin
+!                                 rcodcl(ifac, ivar, 3) = 0.d0)
+
+
+!      If the user decides to prescribe his own non-standard boundary conditions
+!      it will be necessary to assign values to icodcl AND to rcodcl for ALL
+!      mesh viscosity components. Thus, the user does not need to assign values
+!      to IALTYB for each associated face, as it will not be taken into account
+!      in the code.
+
+
+
+! Consistency rules
+! =================
+
+!       A consistency rules between 'icodcl' codes for variables with
+!       non-standard boundary conditions:
+!            If a symmetry code (ICODCL=4) is imposed for one mesh velocity
+!            component, one must have the same condition for all other mesh
+!            velocity components.
+
+
+! Fixed displacement on nodes
 ! ============================
-
-! Pour plus de precision dans le deplacement du maillage, on peut
-!   aussi forcer directement le deplacement de certains noeuds,
-!   internes ou de bord. Pour cela on remplit les tableaux DEPALE
-!   et IMPALE :
-!   DEPALE(INOD,1) = deplacement du noeud INOD dans la direction X
-!   DEPALE(INOD,2) = deplacement du noeud INOD dans la direction Y
-!   DEPALE(INOD,3) = deplacement du noeud INOD dans la direction Z
-!   Ce deplacement s'entend comme le deplacement absolu du noeud
-!   a partir de sa position dans le maillage d'origine.
-!   IMPALE(INOD) = 1 indique que le noeud INOD est a deplacement
-!   impose (IMPALE est initialise a 0 ; si sa valeur est laissee
-!   nulle, DEPALE ne sera pas pris en compte).
-
-! Lors de la mise a jour du maillage, les noeuds tels que IMPALE=1
-!   (internes ou de bord) ne seront pas deplaces a partir de la
-!   vitesse de maillage mais directement a partir de DEPALE.
-! Dans le cas ou tous les noeuds d'une face sont a deplacement
-!   impose, il n'est pas necessaire de remplir les tableaux de
-!   conditions aux limites de vitesse de maillage pour cette faces,
-!   ils seront ecrases :
-!    -> ICODCL sera mis a 1 (Dirichlet)
-!    -> RCODCL sera mis a la valeur moyenne des vitesses des noeuds
-!       de la face (vitesses calculees a partir de DEPALE)
-
-! Dans le cas de faces specifies a maillage fixes (IALTYB(IFAC)=IBFIXE),
-!   tous les noeuds de la face sont automatiquement mis en
-!   deplacement impose, avec une valeur nulle de DEPALE.
-
-
-! CARACTERISTIQUES DES NOEUDS
-! ===========================
-! Le nombre total de noeuds est stocke dans la variable NNOD.
-! Les coordonnees des noeuds sont accessibles par le tableau
-!   XYZNOD(3,NNOD).
-! Les coordonnees des noeuds dans le maillage initiale sont
-!   accessibles par le tableau XYZNO0(3,NNOD).
-
-! Le reperage des noeuds est possible a partir des faces internes et
-!   de bord, grace aux tableaux IPNFAC, NODFAC, IPNFBR, NODFBR.
-!   NODFAC (NODFBR) contient sequentiellement la liste des noeuds de
-!     toutes les faces internes (de bord).
-!   IPNFAC (IPNFBR) contient pour chaque face interne (de bord) le
-!     numero de la premiere case de NODFAC (NODFBR) lui correspondant.
-
-! Par exemple, pour recuperer sequentiellement tous les noeuds de la
-!   face interne IFAC, il suffit d'ecrire la boucle suivante :
-!   DO II = IPNFAC(IFAC), IPNFAC(IFAC+1)-1 <- indices des elements
-!                                             de NODFAC correspondant
-!                                             a IFAC
-!     INOD = NODFAC(II)                    <- recuperation du numero
-!                                             du IIeme noeud de la face
-!                                             IFAC
+!  For a better precision concerning mesh displacement, one can also assign values
+!    of displacement to certain internal and/or boundary nodes. Thus, one
+!    need to fill DEPALE and IMPALE arrays :
+!    depale(inod,1) = displacement of node inod in 'x' direction
+!    depale(inod,2) = displacement of node inod in 'y' direction
+!    depale(inod,3) = displacement of node inod in 'z' direction
+!    This array is defined as the total displacement of the node compared
+!    its initial position in initial mesh.
+!    impale(inod) = 1 indicates that the displacement of node inod is imposed
+!    (Note that IMPALE array is initialized to the value of 0; if its value
+!    is not modified, corresponding value in DEPALE array will not be
+!    taken into account)
+
+!  During mesh's geometry re-calculation at each time step, the position of the nodes, which
+!    displacement is fixed ( i.e. IMPALE=1), is not calculated using the value of mesh viscosity
+!    at the center of corresponding cell, but directly filled using the values of DEPALE.
+!  If the displacement is fixed for all nodes of a boundary face it's not necessary to
+!    prescribe boundary conditions at this face on mesh viscosity. ICODCL and RCODCL values will
+!    be overwritten :
+!    -> ICODCL is automatically set to 1 (Dirichlet)
+!    -> RCODCL value will be automatically set to face's mean mesh velocity value, that is
+!       calculated using DEPALE array.
+
+!  If a fixed boundary condition (ialtyb(ifac)=ibfixe) is imposed to the face ifac,
+!    the displacement of each node inod belonging to ifac is considered to be fixed,
+!    meaning that impale(inod) = 1 and depale(inod,.) = 0.d0.
+
+
+! Description of nodes
+! ====================
+! NNOD gives the total (internal and boundary) number of nodes.
+! Vertices coordinates are given by XYZNOD(3, NNOD) array. This table is
+! updated at each time step of the calculation.
+! XYZNO0(3,NNOD) gives the coordinates of initial mesh at the beginning
+! of the calculation.
+
+! The faces - nodes connectivity is stored by means of four integer arrays :
+! IPNFAC, NODFAC, IPNFBR, NODFBR.
+
+! NODFAC (NODFBR) stores sequentially the index-numbers of the nodes of each
+! internal (boundary) face.
+
+! IPNFAC (IPNFBR) gives the position of the first node of each internal
+! (boundary) face in the array NODFAC (NODFBR).
+
+! For example, in order to get all nodes of internal face IFAC, one can
+! use the following loop :
+!   DO II = IPNFAC(IFAC), IPNFAC(IFAC+1)-1 <- index number of NODFAC array
+!                                             corresponding to IFAC
+!
+!     INOD = NODFAC(II)                    <- index-number IIth node of face IFAC.
+!
+!
 !     ...
 !   ENDDO
 
-
-! INFLUENCE SUR LES CONDITIONS AUX LIMITES DE VITESSE FLUIDE EN PAROI
-! ===================================================================
-! Dans le cas de faces de paroi pour le fluide (ITYPFB=IPAROI ou IPARUG),
-!  l'influence de la vitesse de maillage depend de sa signification
-!  physique.
-!  En effet, dans le cas d'une structure immergee par exemple, le
-!  mouvement des faces de paroi de la structure correspond a un mouvement
-!  physique et doit donc entrainer le fluide.
-!  Dans le cas d'un piston au contraire, les bords lateraux sont des
-!  parois ou le mouvement des noeuds n'a aucune signification physique et
-!  ne doit pas entrainer le fluide.
-!  Dans tous les cas, la vitesse de maillage normale a la face est prise
-!  en compte (u.n=w.n a la face), c'est le traitement de la vitesse
-!  tangentielle qui differe suivant les cas.
-
-! Par defaut, Code_Saturne gere la relation entre vitesse fluide et vitesse
-!  de maillage pour les parois de la maniere suivante :
-!  - Si IALTYB(IFAC) = IBFIXE, la vitesse de maillage est nulle, il n'y a
-!    pas de probleme (et si la paroi est defilante, l'utilisateur le
-!    specifiera dans l'interface ou dans usclim).
-!  - Si IALTYB(IFAC) = IGLISS, la vitesse tangentielle de maillage n'est
-!    pas prise en compte dans les conditions aux limites de paroi pour le
-!    fluide (et si la paroi est defilante, l'utilisateur le specifiera
-!    dans l'interface ou dans usclim).
-!  - Si IALTYB(IFAC) = IVIMPO, la vitesse tangentielle de maillage est
-!    prise en compte comme une vitesse de defilement dans les conditions
-!    aux limites de paroi pour le fluide, sauf si une vitesse de
-!    defilement de paroi a ete specifiee par l'utilisateur dans l'interface
-!    ou dans usclim (auquel cas c'est cette vitesse qui est consideree).
-!  - Si IMPALE(INOD) = 1 pour tous les noeuds d'une face, la vitesse
-!    tangentielle de maillage deduite de ce deplacement sera prise en
-!    compte comme une vitesse de defilement dans les conditions
-!    aux limites de paroi pour le fluide, sauf si une vitesse de
-!    defilement de paroi a ete specifiee par l'utilisateur dans l'interface
-!    ou dans usclim (auquel cas c'est cette vitesse qui est consideree).
-
-! Pour les autres types de conditions aux limites pour le fluide (IENTRE et
-!  ISOLIB), la vitesse de maillage n'a pas d'influence.
-
-! Dans le cas de conditions aux limites non standards, c'est a l'utilisateur
-!  de gerer directement la relation entre les conditions sur la vitesse de
-!  maillage et celles sur la vitesse fluide (les conditions aux limites du
-!  fluide pouvant etre modifiees dans cette routine).
-
-
-
-! IDENTIFICATION DES FACES DE BORD
-! ================================
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
-
-
+! Influence on boundary conditions related to fluid velocity
+! ==========================================================
+! The effect of fluid velocity and ALE modeling on boundary faces that
+! are declared as walls (ITYPFB = IPAROI or IPARUG) really depends on
+! the physical nature of this interface.
+! Indeed when studying an immersed structure the motion of corresponding
+! boundary faces is the one of the structure, meaning that it leads to
+! fluid motion. On the other hand when studying a piston the motion of vertices
+! belonging to lateral boundaries has no physical meaning therefore it has
+! no influence on fluid motion.
+! Whatever the case, mesh velocity component that is normal to the boundary
+! face is always taken into account (Ufluid.n = Wmesh.n). The modeling
+!                                    -      -   -     -
+! of tangential mesh velocity component differs from one case to another.
+
+! The influence of mesh velocity on boundary conditions for fluid modeling is
+! managed and modeled in Code_Saturne as follows :
+!  - If ialtyb(ifac) = ibfixe : mesh velocity equals 0. (In case of 'fluid sliding
+!  wall' modeling corresponding condition will be specified in Code_Saturne
+!  Interface or in 'usclim' subroutine.)
+!  - If ialtyb(ifac) = ivimpo : tangential mesh velocity is modeled as a sliding
+!  wall velocity in fluid boundary conditions unless a value for fluid sliding
+!  wall velocity has been specified by USER in Code_Saturne Interface
+!  or in 'usclim' subroutine.
+!  - If ialtyb(ifac) = igliss : tangential mesh velocity is not taken into account
+!  in fluid boundary conditions (In case of 'fluid sliding wall' modeling
+!  corresponding condition will be specified in Code_Saturne Interface
+!  or in 'usclim' subroutine.)
+!  - If impale(inod) = 1 for all vertices of a boundary face : tangential mesh
+!  velocity value that has been derived from nodes displacement is modeled as a
+!  sliding wall velocity in fluid boundary conditions unless a value for fluid
+!  sliding wall velocity has been specified by USER in Code_Saturne Interface or
+!  in 'usclim' subroutine.
+
+! Note that mesh velocity has no influence on modeling of
+! boundary faces with 'inlet' or 'free outlet' fluid boundary condition.
+
+! For "non standard" conditions USER has to manage the influence of boundary
+! conditions for ALE method (i.e. mesh velocity) on the ones for Navier Stokes
+! equations(i.e. fluid velocity). (Note that fluid boundary conditions can be
+! specified in this subroutine.)
+
+! Cells identification
+! ====================
+
+! Cells may be identified using the 'getcel' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
+! Faces identification
+! ====================
+
+! Faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
-!__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! itrale           ! e  ! <-- ! numero d'iteration pour l'ale                  !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! --> ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord pour le fluide          !
-!  nphas      )    !    !     !                                                !
-! ialtyb(nfabor    ! te ! --> ! type des faces de bord pour la                 !
-!                  ! te !     !                  vitesse de maillage           !
-! impale(nnod)     ! te ! <-- ! indicateur de delacement impose                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2                   !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! depale(nnod,3    ! tr ! <-- ! deplacement aux noeuds                         !
-! xyzno0(3,nnod    ! tr ! <-- ! coordonnees noeuds maillage initial            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! name             !type!mode ! role                                           !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! itrale           ! i  ! <-- ! number of iterations for ALE method            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! ialtyb (nfabor)  ! ia ! --> ! boundary face types for mesh velocity          !
+! impale(nnod)     ! ia ! <-- ! indicator for fixed node displacement          !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!  (nfabor,nvar,3) !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! depale(nnod,3)   ! ra ! <-- ! nodes displacement                             !
+! xyzno0           ! ra ! <-- ! vertex coordinates of initial mesh             !
+!  (3, nnod)       !    !     !                                                !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -490,7 +433,7 @@ double precision rcodcl(nfabor,nvar,3)
 double precision depale(nnod,3), xyzno0(3,nnod)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, iel, ii
@@ -503,14 +446,11 @@ double precision delta, deltaa
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
-!     SI UN FICHIER ISSU DE L'IHM EST UTILISE, LE SOUS-PROGRAMME N'EST
-!       PAS NECESSAIREMENT INDISPENSABLE (RETURN DANS LA VERSION DE
-!       LA BIBLIOTHEQUE)
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     If a file from the GUI is used, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
 !===============================================================================
-
 if(iihmpr.eq.1) then
   return
 else
@@ -522,12 +462,12 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DE L''ENTREE DES COND. LIM.      ',/,&
+'@ @@ ATTENTION : stop in definition of boundary conditions   ',/,&
 '@    =========                                               ',/,&
-'@     LA METHODE ALE A ETE ENCLENCHEE                        ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR usalcl DOIT ETRE COMPLETE',/,&
+'@     ALE Method has been activated                          ',/,&
+'@     User subroutine ''usalcl'' must be completed           ',/, &
 '@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@  The calculation will not be run                           ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
@@ -536,7 +476,7 @@ endif
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 1.  INITIALISATIONS
+! 1.  Initialization
 
 !===============================================================================
 
@@ -545,20 +485,18 @@ idebra = idbra0
 
 
 !===============================================================================
-! 2.  REMPLISSAGE DU TABLEAU DES CONDITIONS LIMITES
-!       ON BOUCLE SUR LES FACES DE BORD
-!         ON DETERMINE LA FAMILLE ET SES PROPRIETES
-!           ON IMPOSE LA CONDITION LIMITE
-
-!          IMPOSER ICI LES CONDITIONS LIMITES SUR LES FACES DE BORD
+! 2.  Assign boundary conditions to boundary faces here
 
+!     One may use selection criteria to filter boundary case subsets
+!       Loop on faces from a subset
+!         Set the boundary condition for each face
 !===============================================================================
 
-!     Calcul du deplacement au temps courant
+!     Calculation of displacement at current time step
 deltaa = sin(3.141596d0*(ntcabs-1)/50.d0)
 delta  = sin(3.141596d0*ntcabs/50.d0)
 
-! --- On impose en couleur 4 une vitesse de deplacement des faces
+! --- For boundary faces of color 4 assign a fixed velocity
 
 CALL GETFBR('4',NLELT,LSTELT)
 !==========
@@ -577,7 +515,7 @@ do ilelt = 1, nlelt
 
 enddo
 
-! --- On impose en couleur 5 un deplacement des noeuds
+! --- For boundary faces of color 5 assign a fixed displacement on nodes
 
 CALL GETFBR('5',NLELT,LSTELT)
 !==========
@@ -598,7 +536,7 @@ do ilelt = 1, nlelt
 
 enddo
 
-! --- On impose en couleur 6 un glissement
+! --- For boundary faces of color 6 assign a sliding boundary
 
 CALL GETFBR('6',NLELT,LSTELT)
 !==========
@@ -611,7 +549,7 @@ do ilelt = 1, nlelt
 
 enddo
 
-! --- On impose ailleurs une condition de bord fixe
+! --- prescribe elsewhere a fixed boundary
 
 CALL GETFBR( 'not (4 or 5 or 6)',NLELT,LSTELT)
 !==========
@@ -633,4 +571,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/users/base/usalin.f90 b/users/base/usalin.f90
index b6bc764..0cbc664 100644
--- a/users/base/usalin.f90
+++ b/users/base/usalin.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2010 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -32,83 +32,62 @@ subroutine usalin
 !================
 
 !===============================================================================
-!  FONCTION  :
-!  ---------
-
-! ROUTINE UTILISATEUR POUR ENTREE
-!   DES PARAMETRES DE DE L'ALE
-
+!  Purpose :
+! --------
+
+! --- User subroutine dedicated to the use of ALE (Arbitrary Lagrangian Eulerian)
+!     method :
+!
+!          Here one defines parameters and input data dedicated to the use ALE
+!          method
+!
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
-
 include "paramx.h"
 include "optcal.h"
 include "albase.h"
 
-
 !===============================================================================
 
 ! Arguments
 
-
-! VARIABLES LOCALES
-
+! Local variables
 
 !===============================================================================
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
-!===============================================================================
 
 if(1.eq.1) return
 
+
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-
-
-!     CE SOUS-PROGRAMME PERMET DE RENSEIGNER LES PARAMETRES
-
-!       SPECIFIQUES AU MODULE ALE
-
-
-!     IL EST POSSIBLE D'AJOUTER OU DE RETRANCHER DES PARAMETRES
-
-
-! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
-
-!     SI L'ON    DISPOSE     DE L'INTERFACE DE CODE_SATURNE :
-
-!       on trouvera ci-dessous des exemples commentes.
-
-!       L'utilisateur pourra, si necessaire, les decommenter et les
-!       adapter a ses besoins.
-
-! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
-
+!
+!     Here are some examples that can be adapted and changed by Code Saturne
+!     users.
+!
+!
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
 
-! --- Activation de la methode ALE
+! --- Activation of ALE (Arbitrary Lagrangian Eulerian) method
 iale = 1
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
@@ -116,10 +95,11 @@ iale = 1
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
 
-! --- Nombre de sous-iterations d'initialisation du fluide. Dans le cas
-!     d'un calcul suite, il s'agit du nombre d'iterations a partir du
-!     debut de l'iteration en cours (i.e. pas un nombre absolu).
-!     Dans le cas general, NALINF = 0 pour une suite de calcul.
+! --- Number of iterations for fluid initialization. Contrary to ntmabs (for example)
+!     nalinf is not an absolute iteration number, meaning that in case of
+!     restart calculation nalinf corresponds to the number of iterations
+!     for fuid initialization beginning from the first current iteration of
+!     the calculation restart. In general nalinf = 0 in that case.
 
   nalinf = 75
 
@@ -127,24 +107,25 @@ iale = 1
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
 
-! --- Nombre maximal d'iterations d'implicitation du deplacement des
-!     structures (=1 pour le couplage explicite)
+! --- Maximum number of iterations in case of implicit Fluid Structure Coupling with structural
+!     calculations (internal and/or external(i.e. using Code_Aster)). NALIMX = 1, in case of
+!     explicit FSI algorithm.
+
 nalimx = 15
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
 
-! --- Precision relative d'implicitation du deplacement des structures
+! --- Relative precision of sub-cycling Fluid Structure Coupling algorithm.
 epalim = 1.d-5
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
-
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
 
-! --- Type de viscosite de maillage (cf. usvima)
-!     0 : isotrope
-!     1 : orthotrope
+! --- Mesh viscosity modeling (cf. usvima)
+!     0 : isotropic
+!     1 : orthotropic
 iortvm = 0
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
@@ -153,8 +134,9 @@ iortvm = 0
 ! FORMATS
 !----
 
-
+!----
+! End
+!----
 
 return
-end
-
+end subroutine
diff --git a/users/base/usaste.f90 b/users/base/usaste.f90
index 002ea60..5ac2d55 100644
--- a/users/base/usaste.f90
+++ b/users/base/usaste.f90
@@ -44,100 +44,85 @@ subroutine usaste &
 
 
 !===============================================================================
-! FONCTION :
-! ----------
+! Purpose:
+! -------
 
-! GESTION DES STRUCTURES MOBILES EN ALE AVEC COUPLAGE EXTERNE
+!    User subroutine dedicated the Fluid-Structure external coupling
+!    with Code_Aster :
+!          Here one defines the boundary faces coupled
+!          with Code_Aster and the fluid forces components
+!          which are given to structural calculations
 
-!   DEFINITION DES STRUCTURES
-!   DEPLACEMENT ET VITESSE INITIAUX
+!    Boundary faces identification
+!    =============================
+
+!    Boundary faces may be identified using the 'getfbr' subroutine.
+!    The syntax of this subroutine is described in the 'usclim' subroutine,
+!    but a more thorough description can be found in the user guide.
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (lndfac)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (nfabor+1)     !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (lndfbr)       !    !     !  (optionnel)                                   !
-! idfstr(nfabor    ! te ! <-- ! definition des structures                      !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! aexxst,bexxst    ! r  ! <-- ! coefficients de prediction du deplact          !
-! cfopre           ! r  ! <-- ! coeff de prediction des efforts                !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! xstr0(ndim,      ! tr ! <-- ! deplacement initial des structures             !
-!       nbstru)    !    !     !                                                !
-! vstr0(ndim,      ! tr ! <-- ! vitesse initiale des structures                !
-!       nbstru)    !    !     !                                                !
-! xstreq(ndim,     ! tr ! <-- ! deplacement du maillage initial par            !
-!       nbstru)    !    !     ! rapport a l'equilibre                          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idfstr(nfabor)   ! ia ! <-- ! boundary faces -> structure definition         !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -177,14 +162,13 @@ double precision cdgfac(ndim,nfac), cdgfbo(ndim,nfabor)
 double precision xyznod(ndim,nnod), volume(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac
 integer          ilelt, nlelt
 
 !===============================================================================
-
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 
 
@@ -196,7 +180,7 @@ endif
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 1.  INITIALISATIONS
+! 1.  INITIALIZATION
 
 !===============================================================================
 
@@ -204,20 +188,36 @@ idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 2.  DEFINITION DES STRUCTURES (appel a l'initialisation)
+! 2.  Definition of external structures
 !===============================================================================
 
-!     On remplit le tableau IDFSTR(NFABOR)
-!     IDFSTR(IFAC) est le numero de la structure a laquelle appartient
-!       la face de bord IFAC (0 si elle n'appartient a aucune structure)
-!     Le nombre de structure est automatiquement determine a partir du
-!       plus grand element de IDFSTR (les numeros des structures doivent
-!       donc etre affectes de maniere sequentielle sans trou en commencant
-!       par 1).
+!    Here one fills array IDFSTR(NFABOR)
+!    For each boundary face IFAC, IDFSTR(IFAC) is the number of the structure
+!    the face belongs to (if IDFSTR(IFAC) = 0, the face IFAC doesn't
+!    belong to any structure.)
+!    When using external coupling with Code_Aster, structure number necessarily
+!    needs to be negative (as shown in following examples).
+
+!    The number of "external" structures with Code Aster is automatically
+!    defined with the maximum absolute value of IDFSTR table, meaning that
+!    external structure numbers must be defined sequentially with negative values
+!    beginning with integer value '-1'.
+
+
+!    In following example, boundary faces with color 2 and which abscissa X < 2.0
+!    belong to external structure '-1'.
+!    Boundary faces with color 2 and which abscissa X > 2.0 belong to external
+!    structure '-2'. The total number of external structures coupled with Code_Aster
+!    equals 2.
 
-! Dans l'exemple ci-dessous la structure 1 est bordee par les faces de
-!   couleur 4, la structure 2 par les faces de couleur 6
+!    Boundary faces identification
+!    =============================
 
+!    Boundary faces may be identified using the 'getfbr' subroutine.
+!    The syntax of this subroutine is described in the 'usclim' subroutine,
+!    but a more thorough description can be found in the user guide.
+
+!================================================================================
 
 CALL GETFBR('2 and X < 2.0',NLELT,LSTELT)
 !==========
@@ -242,22 +242,26 @@ do ilelt = 1, nlelt
 
 enddo
 
-!     On bloque les efforts selon Z des structures 1 et 2
+! --- The movement of external structure called '-1' is blocked in Z direction.
 
 asddlf(3,1) = 0
-asddlf(3,2) = 0
-
 
+! --- The movement of external structure called '-2' is blocked in Z direction.
 
-! --- Indicateur d'impression au meme instant des sorties
-!     Code_Saturne et Code_Aster (sortie EnSight pour Code_Aster)
-!     (1: OUI, 0: NON)
+asddlf(3,2) = 0
 
-!     Si 0, aucune sortie Code_Aster n'est enclenchee
-!     l'utilisateur doit le specifie lui-meme dans le fichier de commande
+! --- Activation of Code_Saturne/Code_Aster synchronized chronological output.
+!     (ISYNCP = 1 : Synchronized output, ISYNCP = 0: Non synchronized output)
 
 isyncp = 1
 
+!----
+! Formats
+!----
+
+!----
+! End
+!----
 return
 
-end
+end subroutine
diff --git a/users/base/usclim.f90 b/users/base/usclim.f90
index aaeb995..9d56d3c 100644
--- a/users/base/usclim.f90
+++ b/users/base/usclim.f90
@@ -52,37 +52,42 @@ subroutine usclim &
 
 !    User subroutine.
 
-!    Fill boundary conditions arrays (icodcl, rcodcl)
-!    for unknown variables.
+!    Fill boundary conditions arrays (icodcl, rcodcl) for unknown variables.
 
 
 ! Introduction
 ! ============
 
-! Here we define boundary conditions on a per-face basis.
+! Here one defines boundary conditions on a per-face basis.
 
 ! Boundary faces may be identified using the 'getfbr' subroutine.
 
-!  getfbr(string, nelts, eltlst) :
-!  - string is a user-supplied character string containing
-!    selection criteria;
-!  - nelts is set by the subroutine. It is an integer value
-!    corresponding to the number of boundary faces verifying the
-!    selection criteria;
-!  - lstelt is set by the subroutine. It is an integer array of
-!    size nelts containing the list of boundary faces verifying
-!    the selection criteria.
+!  getfbr(string, nelts, eltlst):
+!  - string is a user-supplied character string containing selection criteria;
+!  - nelts is set by the subroutine. It is an integer value corresponding to
+!    the number of boundary faces verifying the selection criteria;
+!  - lstelt is set by the subroutine. It is an integer array of size nelts
+!    containing the list of boundary faces verifying the selection criteria.
 
 !  string may contain:
-!  - references to colors (ex.: 1, 8, 26, ...
+!  - references to colors (ex.: 1, 8, 26, ...)
 !  - references to groups (ex.: inlet, group1, ...)
 !  - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
-!  These criteria may be combined using logical operators
-!  ('and', 'or') and parentheses.
-!  Example: '1 and (group2 or group3) and y < 1' will select boundary
-!  faces of color 1, belonging to groups 'group2' or 'group3' and
-!  with face center coordinate y less than 1.
+!  These criteria may be combined using logical operators ('and', 'or') and
+!  parentheses.
+!  Example: '1 and (group2 or group3) and y < 1' will select boundary faces
+!  of color 1, belonging to groups 'group2' or 'group3' and with face center
+!  coordinate y less than 1.
 
+!  Operators priority, from highest to lowest:
+!    '( )' > 'not' > 'and' > 'or' > 'xor'
+
+! Similarly, interior faces and cells can be identified using the 'getfac'
+! and 'getcel' subroutines (respectively). Their syntax are identical to
+! 'getfbr' syntax.
+
+! For a more thorough description of the criteria syntax, it can be referred
+! to the user guide.
 
 
 ! Boundary condition types
@@ -94,12 +99,11 @@ subroutine usclim &
 !    For "standard" boundary conditions:
 !    -----------------------------------
 
-!     (inlet, free outlet, wall, symmetry), we define a code
-!     in the 'itypfb' array (of dimensions number of boundary faces,
-!     number of phases). This code will then be used by a non-user
-!     subroutine to assign the following conditions (scalars in
-!     particular will receive the conditions of the phase to which
-!     they are assigned). Thus:
+!     (inlet, free outlet, wall, symmetry), one defines a code in the 'itypfb'
+!     array (of dimensions number of boundary faces, number of phases).
+!     This code will then be used by a non-user subroutine to assign the
+!     following conditions (scalars in particular will receive the conditions
+!     of the phase to which they are assigned). Thus:
 
 !     Code      |  Boundary type
 !     --------------------------
@@ -109,22 +113,20 @@ subroutine usclim &
 !      iparoi   |   Wall (smooth)
 !      iparug   |   Rough wall
 
-!     Integers ientre, isolib, isymet, iparoi, iparug
-!     are defined elsewhere (param.h). Their value is greater than
-!     or equal to 1 and less than or equal to ntypmx
-!     (value fixed in paramx.h)
+!     These integers are defined elsewhere (in paramx.h header).
+!     Their value is greater than or equal to 1 and less than or  equal to
+!     ntypmx (value fixed in paramx.h)
 
 
 !     In addition, some values must be defined:
 
 
-!     - Inlet (more precisely, inlet/outlet with prescribed flow, as
-!              the flow may be prescribed as an outflow):
+!     - Inlet (more precisely, inlet/outlet with prescribed flow, as the flow
+!              may be prescribed as an outflow):
 
-!       -> Dirichlet conditions on variables
-!         other than pressure are mandatory if the flow is incoming,
-!         optional if the flow is outgoing (the code assigns 0 flux
-!         if no Dirichlet is specified); thus,
+!       -> Dirichlet conditions on variables other than pressure are mandatory
+!         if the flow is incoming, optional if the flow is outgoing (the code
+!         assigns zero flux if no Dirichlet is specified); thus,
 !         at face 'ifac', for the variable 'ivar': rcodcl(ifac, ivar, 1)
 
 
@@ -134,17 +136,15 @@ subroutine usclim &
 !         at face ifac, rcodcl(ifac, iu, 1)
 !                       rcodcl(ifac, iv, 1)
 !                       rcodcl(ifac, iw, 1)
-!       -> Specific code and prescribed temperature value
-!         at wall, if applicable:
+!       -> Specific code and prescribed temperature value at wall if applicable:
 !         at face ifac, icodcl(ifac, ivar)    = 5
 !                       rcodcl(ifac, ivar, 1) = prescribed temperature
-!       -> Specific code and prescribed flux value
-!         at wall, if applicable:
+!       -> Specific code and prescribed flux value at wall if applicable:
 !         at face ifac, icodcl(ifac, ivar)    = 3
 !                       rcodcl(ifac, ivar, 3) = prescribed flux
-!                                        =
-!        Note that the default condition for scalars
-!         (other than k and epsilon) is homogeneous Neumann.
+
+!        Note that the default condition for scalars (other than k and epsilon)
+!        is homogeneous Neumann.
 
 
 !     - Rough wall: (= impermeable solid, with rough friction)
@@ -154,62 +154,60 @@ subroutine usclim &
 !                       rcodcl(ifac, iv, 1)
 !                       rcodcl(ifac, iw, 1)
 !       -> Value of the dynamic roughness height to specify in
-!                       rcodcl(ifac, iu, 3) (value for iv et iw not used)
-!       -> Specific code and prescribed temperature value
-!         at rough wall, if applicable:
+!                       rcodcl(ifac, iu, 3)
+!       -> Value of the scalar roughness height (if required) to specify in
+!                       rcodcl(ifac, iv, 3) (values for iw are not used)
+!       -> Specific code and prescribed temperature value at wall if applicable:
 !         at face ifac, icodcl(ifac, ivar)    = 6
 !                       rcodcl(ifac, ivar, 1) = prescribed temperature
-!                       rcodcl(ifac, ivar, 3) = dynamic roughness height
-!       -> Specific code and prescribed flux value
-!         at rough wall, if applicable:
+!       -> Specific code and prescribed flux value at rough wall, if applicable:
 !         at face ifac, icodcl(ifac, ivar)    = 3
 !                       rcodcl(ifac, ivar, 3) = prescribed flux
-!                                        =
-!        Note that the default condition for scalars
-!         (other than k and epsilon) is homogeneous Neumann.
 
-!     - Symmetry (= impermeable frictionless wall):
+!        Note that the default condition for scalars (other than k and epsilon)
+!        is homogeneous Neumann.
+
+!     - Symmetry (= slip wall):
 
 !       -> Nothing to specify
 
 
 !     - Free outlet (more precisely free inlet/outlet with prescribed pressure)
 
-!       -> Nothing to prescribe for pressure and velocity
-!          For scalars and turbulent values, a Dirichlet value may optionally
-!            be specified. The behavior is as follows:
+!       -> Nothing to prescribe for pressure and velocity. For scalars and
+!          turbulent values, a Dirichlet value may optionally be specified.
+!          The behavior is as follows:
 !              * pressure is always handled as a Dirichlet condition
 !              * if the mass flow is inflowing:
-!                  we retain the velocity at infinity
+!                  one retains the velocity at infinity
 !                  Dirichlet condition for scalars and turbulent values
-!                    (or zero flux if the user has not specified a
+!                   (or zero flux if the user has not specified a
 !                    Dirichlet value)
 !                if the mass flow is outflowing:
-!                  we prescribe zero flux on the velocity, the scalars,
+!                  one prescribes zero flux on the velocity, the scalars,
 !                  and turbulent values
 
-!       Note that the pressure will be reset to P0
-!           on the first free outlet face found
+!       Note that the pressure will be reset to p0 on the first free outlet
+!       face found
 
 
 !    For "non-standard" conditions:
 !    ------------------------------
 
-!     Other than (inlet, free outlet, wall, symmetry), we define
+!     Other than (inlet, free outlet, wall, symmetry), one defines
 !      - on one hand, for each face:
-!        -> an admissible 'itypfb' value
-!           (i.e. greater than or equal to 1 and less than or equal to
-!            ntypmx; see its value in paramx.h).
+!        -> an admissible 'itypfb' value (i.e. greater than or equal to 1 and
+!           less than or equal to ntypmx; see its value in paramx.h).
 !           The values predefined in paramx.h:
-!           'ientre', 'isolib', 'isymet', 'iparoi', 'iparug' are in
-!           this range, and it is preferable not to assign one of these
-!           integers to 'itypfb' randomly or in an inconsiderate manner.
-!           To avoid this, we may use 'iindef' if we wish to avoid
-!           checking values in paramx.h. 'iindef' is an admissible
-!           value to which no predefined boundary condition is attached.
-!           Note that the 'itypfb' array is reinitialized at each time
-!           step to the non-admissible value of 0. If we forget to
-!           modify 'typfb' for a given face, the code will stop.
+!           'ientre', 'isolib', 'isymet', 'iparoi', 'iparug' are in this range,
+!           and it is preferable not to assign one of these integers to 'itypfb'
+!           randomly or in an inconsiderate manner. To avoid this, one may use
+!           'iindef' if one wish to avoid checking values in paramx.h. 'iindef'
+!           is an admissible value to which no predefined boundary condition
+!           is attached.
+!           Note that the 'itypfb' array is reinitialized at each time step to
+!           the non-admissible value of 0. If one forgets to modify 'typfb' for
+!           a given face, the code will stop.
 
 !      - and on the other hand, for each face and each variable:
 !        -> a code             icodcl(ifac, ivar)
@@ -219,15 +217,15 @@ subroutine usclim &
 !     The value of 'icodcl' is taken from the following:
 !       1: Dirichlet      (usable for any variable)
 !       3: Neumann        (usable for any variable)
-!       4: Symmetry       (usable only for the velocity and
-!                          components of the Rij tensor)
+!       4: Symmetry       (usable only for the velocity and components of
+!                          the Rij tensor)
 !       5: Smooth wall    (usable for any variable except for pressure)
 !       6: Rough wall     (usable for any variable except for pressure)
 !       9: Free outlet    (usable only for velocity)
-!     The values of the 3 'rcodcl' components are
+!     The values of the 3 'rcodcl' components are:
 !      rcodcl(ifac, ivar, 1):
 !         Dirichlet for the variable          if icodcl(ifac, ivar) =  1
-!         wall value (sliding velocity, temp) if icodcl(ifac, ivar) =  5
+!         Wall value (sliding velocity, temp) if icodcl(ifac, ivar) =  5
 !         The dimension of rcodcl(ifac, ivar, 1) is that of the
 !           resolved variable: ex U (velocity in m/s),
 !                                 T (temperature in degrees)
@@ -251,120 +249,107 @@ subroutine usclim &
 !
 !      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) <> 6:
 !        Flux density (< 0 if gain, n outwards-facing normal)
-!                         if icodcl(ifac, ivar)= 3
+!                            if icodcl(ifac, ivar)= 3
 !         For velocities U,                in kg/(m s2) = J:
 !           rcodcl(ifac, ivar, 3) =         -(viscl+visct) * (grad U).n
-!         For pressure P,                  en kg/(m2 s):
+!         For pressure P,                  in kg/(m2 s):
 !           rcodcl(ifac, ivar, 3) =                    -dt * (grad P).n
 !         For temperatures T,              in Watt/m2:
 !           rcodcl(ifac, ivar, 3) = -Cp*(viscls+visct/sigmas) * (grad T).n
 !         For enthalpies H,                in Watt/m2:
 !           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad H).n
-!         For other scalars F in :
+!         For other scalars F              in:
 !           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad F).n
 
 !      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) = 6:
 !        Roughness for the rough wall law
 !         For velocities U, dynamic roughness
-!           rcodcl(ifac, ivar, 3) = rugd
+!           rcodcl(ifac, iu, 3) = roughd
 !         For other scalars, thermal roughness
-!           rcodcl(ifac, ivar, 3) = rugt
+!           rcodcl(ifac, iv, 3) = rought
 
 
-!      Note that if the user assigns a value to itypfb equal to
-!       ientre, isolib, isymet, iparoi, or iparug
-!       and does not modify icodcl (zero value by default),
-!       itypfb will define the boundary condition type.
+!      Note that if the user assigns a value to itypfb equal to ientre, isolib,
+!       isymet, iparoi, or iparug and does not modify icodcl (zero value by
+!       default), itypfb will define the boundary condition type.
 
-!      To the contrary, if the user prescribes
-!        icodcl(ifac, ivar) (nonzero),
-!        the values assigned to rcodcl will be used for the considered
-!        face and variable (if rcodcl values are not set, the default
-!        values will be used for the face and variable, so:
+!      To the contrary, if the user prescribes icodcl(ifac, ivar) (nonzero),
+!        the values assigned to rcodcl will be used for the considered face
+!        and variable (if rcodcl values are not set, the default values will
+!        be used for the face and variable, so:
 !                                 rcodcl(ifac, ivar, 1) = 0.d0
 !                                 rcodcl(ifac, ivar, 2) = rinfin
 !                                 rcodcl(ifac, ivar, 3) = 0.d0)
-!        Especially, we may have for example:
-!        -> set itypfb(ifac, iphas) = iparoi
-!        which prescribes default wall conditions for all variables at
-!        face ifac,
-!        -> and define IN ADDITION for variable ivar on this face
-!        specific conditions by specifying
-!        icodcl(ifac, ivar) and the 3 rcodcl values.
-
-
-!      The user may also assign to itypfb a value not equal to
-!       ientre, isolib, isymet, iparoi, iparug, iindef
-!       but greater than or equal to 1 and less than or equal to
-!       ntypmx (see values in param.h) to distinguish
-!       groups or colors in other subroutines which are specific
-!       to the case and in which itypfb is accessible.
-!       In this case though it will be necessary to
-!       prescribe boundary conditions by assigning values to
-!       icodcl and to the 3 rcodcl fields (as the value of itypfb
-!       will not be predefined in the code).
+!        Especially, one may have for example:
+!        -> set itypfb(ifac, iphas) = iparoi which prescribes default wall
+!        conditions for all variables at face ifac,
+!        -> and define IN ADDITION for variable ivar on this face specific
+!        conditions by specifying icodcl(ifac, ivar) and the 3 rcodcl values.
+
+
+!      The user may also assign to itypfb a value not equal to ientre, isolib,
+!       isymet, iparoi, iparug, iindef but greater than or equal to 1 and less
+!       than or equal to ntypmx (see values in param.h) to distinguish groups
+!       or colors in other subroutines which are specific to the case and in
+!       which itypfb is accessible.  In this case though it will be necessary
+!       to prescribe boundary conditions by assigning values to icodcl and to
+!       the 3 rcodcl fields (as the value of itypfb will not be predefined in
+!       the code).
 
 
 ! Consistency rules
 ! =================
 
-!       A few consistency rules between 'icodcl' codes for
-!         variables with non-standard boundary conditions:
+!       A few consistency rules between 'icodcl' codes for variables with
+!       non-standard boundary conditions:
 
 !           Codes for velocity components must be identical
 !           Codes for Rij components must be identical
 !           If code (velocity or Rij) = 4
-!             we must have code (velocity and Rij) = 4
+!             one must have code (velocity and Rij) = 4
 !           If code (velocity or turbulence) = 5
-!             we must have code (velocity and turbulence) = 5
+!             one must have code (velocity and turbulence) = 5
 !           If code (velocity or turbulence) = 6
-!             we must have code (velocity and turbulence) = 6
+!             one must have code (velocity and turbulence) = 6
 !           If scalar code (except pressure or fluctuations) = 5
-!             we must have velocity code = 5
+!             one must have velocity code = 5
 !           If scalar code (except pressure or fluctuations) = 6
-!             we must have velocity code = 6
+!             one must have velocity code = 6
 
 
 ! Remarks
 ! =======
 
-!       Caution: to prescribe a flux (nonzero) to Rij,
-!                the viscosity to take into account is viscl
-!                even if visct exists (visct=rho cmu k2/epsilon)
+!       Caution: to prescribe a flux (nonzero) to Rij, the viscosity to take
+!                into account is viscl even if visct exists
+!                (visct=rho cmu k2/epsilon)
 
-!       We have the ordering array for boundary faces from the
-!           previous time step (except for the fist time step,
-!           where 'itrifb' has not been set yet).
-!       The array of boundary face types 'itypfb' has been
-!           reset before entering the subroutine.
+!       One have the ordering array for boundary faces from the previous time
+!         step (except for the fist one, where 'itrifb' has not been set yet).
+!       The array of boundary face types 'itypfb' has been reset before
+!         entering the subroutine.
 
 
-!       Note how to access some variables:
+!       Note how to access some variables (for phase    'iphas'
+!                                              variable 'ivar'
+!                                              scalar   'iscal'):
 
-! Cell values
-!               Let         iel = ifabor(ifac)
+! Cell values  (let iel = ifabor(ifac))
 
-! * Density                         phase iphas, cell iel:
-!                  propce(iel, ipproc(irom(iphas)))
-! * Dynamic molecular viscosity     phase iphas, cell iel:
-!                  propce(iel, ipproc(iviscl(iphas)))
-! * Turbulent viscosity   dynamique phase iphas, cell iel:
-!                  propce(iel, ipproc(ivisct(iphas)))
-! * Specific heat                   phase iphas, cell iel:
-!                  propce(iel, ipproc(icp(iphasl))
-! * Diffusivity: lambda          scalaire iscal, cell iel:
-!                  propce(iel, ipproc(ivisls(iscal)))
+! * Density:                                 propce(iel, ipproc(irom(iphas)))
+! * Dynamic molecular viscosity:             propce(iel, ipproc(iviscl(iphas)))
+! * Turbulent viscosity:                     propce(iel, ipproc(ivisct(iphas)))
+! * Specific heat:                           propce(iel, ipproc(icp(iphas))
+! * Diffusivity(lambda):                     propce(iel, ipproc(ivisls(iscal)))
 
 ! Boundary face values
 
-! * Density                        phase iphas, boundary face ifac :
-!                  propfb(ifac, ipprob(irom(iphas)))
-! * Mass flow relative to variable ivar, boundary face ifac:
-!      (i.e. the mass flow used for convecting ivar)
-!                  propfb(ifac, pprob(ifluma(ivar )))
-! * For other values                  at boundary face ifac:
-!      take as an approximation the value in the adjacent cell iel
-!      i.e. as above with iel = ifabor(ifac).
+! * Density:                                 propfb(ifac, ipprob(irom(iphas)))
+! * Mass flux (for convecting 'ivar'):       propfb(ifac, ipprob(ifluma(ivar)))
+
+! * For other values: take as an approximation the value in the adjacent cell
+!                     i.e. as above with iel = ifabor(ifac).
+
 
 !-------------------------------------------------------------------------------
 ! Arguments
@@ -395,12 +380,12 @@ subroutine usclim &
 ! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! ia ! <-- ! property numbers per family                    !
 !  (nfml, nprfml)  !    !     !                                                !
-! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
 ! lstelt(maxelt)   ! ia ! --- ! work array                                     !
 ! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
 ! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
 ! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
-! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icodcl           ! ia ! --> ! boundary condition code                        !
 !  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
 !                  !    !     ! = 2  -> flux density                           !
@@ -409,19 +394,19 @@ subroutine usclim &
 !                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
 !                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
 !                  !    !     !         inflowing possibly blocked             !
-! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
 !  (nfabor, nphas) !    !     !                                                !
 ! itypfb           ! ia ! --> ! boundary face types                            !
 !  (nfabor, nphas) !    !     !                                                !
-! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
-! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
 ! ia(*)            ! ia ! --- ! main integer work array                        !
 ! xyzcen           ! ra ! <-- ! cell centers                                   !
 !  (ndim, ncelet)  !    !     !                                                !
 ! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 !  (ndim, nfac)    !    !     !                                                !
 ! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
-!  (ndim, nfavor)  !    !     !                                                !
+!  (ndim, nfabor)  !    !     !                                                !
 ! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 !  (ndim, nfac)    !    !     !                                                !
 ! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
@@ -431,14 +416,14 @@ subroutine usclim &
 ! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
 ! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
-!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
 ! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
 ! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
 ! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
 !  (nfabor, *)     !    !     !                                                !
 ! rcodcl           ! ra ! --> ! boundary condition values                      !
-!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!  (nfabor,nvar,3) !    !     ! rcodcl(1) = Dirichlet value                    !
 !                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
 !                  !    !     !  (infinite if no exchange)                     !
 !                  !    !     ! rcodcl(3) = flux density value                 !
@@ -449,11 +434,10 @@ subroutine usclim &
 !                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
 ! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
 !  (ncelet)        !    !     !  (computation of pressure gradient)            !
-! coefu            ! ra ! --- ! tab de trav                                    !
+! coefu            ! ra ! --- ! work array                                     !
 !  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
-! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
-! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
-! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
 ! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
@@ -546,7 +530,7 @@ endif
 '@',/,                                                            &
 '@ @@ WARNING:    stop in definition of boundary conditions',/,   &
 '@    =======',/,                                                 &
-'@     The user subroutine ''usclim'' must be completed.',/,      &
+'@     The user subroutine ''usclim'' must be completed.',/, &
 '@',/,                                                            &
 '@  The calculation will not be run.',/,                          &
 '@                                                            ',/,&
@@ -568,7 +552,7 @@ d2s3 = 2.d0/3.d0
 !===============================================================================
 ! 2.  Assign boundary conditions to boundary faces here
 
-!     We may use selection criteria to filter boundary case subsets
+!     One may use selection criteria to filter boundary case subsets
 !       Loop on faces from a subset
 !         Set the boundary condition for each face
 !===============================================================================
@@ -607,7 +591,7 @@ do ilelt = 1, nlelt
     !     the Reynolds number (especially if it is variable, it may be
     !     useful to take the law from 'usphyv'. Here, we use by default
     !     the 'viscl0" value given in 'usini1'.
-    !   Regarding the density, we have acess to its value at boundary
+    !   Regarding the density, we have access to its value at boundary
     !     faces (romb) so this value is the one used here (specifically,
     !     it is consistent with the processing in 'usphyv', in case of
     !     variable density)
@@ -829,8 +813,12 @@ do ilelt = 1, nlelt
   do iphas = 1, nphas
     itypfb(ifac,iphas)   = iparug
 
-  ! Roughness for velocity: 1cm
+    ! Roughness for velocity: 1cm
     rcodcl(ifac,iu(iphas),3) = 0.01d0
+
+    ! Roughness for scalar (if required): 1cm
+    ! rcodcl(ifac,iv(iphas),3) = 0.01d0
+
   enddo
 
   ! If sliding wall with velocity u(1) = 1:
@@ -839,12 +827,11 @@ do ilelt = 1, nlelt
   ! If sliding wall with velocity u = 0: nothing to do
   if(nscal.gt.0) then
 
-    ! If temperature prescribed to 20 with rough wall law (scalar ii=1)
-    !   with roughness of 1 cm:
+    ! If temperature prescribed to 20 (scalar ii=1)
+    ! (with thermal roughness specified in rcodcl(ifac,iv(iphas),3)) :
     ! ii = 1
-    ! icodcl(ifac, isca(ii))   = 5
+    ! icodcl(ifac, isca(ii))   = 6
     ! rcodcl(ifac, isca(ii), 1) = 20.d0
-    ! rcodcl(ifac, isca(ii), 3) = 0.01.d0
 
     ! If flux prescribed to 4.d0 (scalar ii=3):
     ! ii = 3
diff --git a/users/base/usdpst.f90 b/users/base/usdpst.f90
index 754991a..84b4b7d 100644
--- a/users/base/usdpst.f90
+++ b/users/base/usdpst.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-subroutine  usdpst &
+subroutine usdpst &
 !=================
 
  ( idbia0 , idbra0 ,                                              &
@@ -43,78 +43,75 @@ subroutine  usdpst &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
+! Purpose:
+! -------
 
-! ROUTINE UTILISATEUR POUR LOCALISER DES CELLULES, DES FACES
-! INTERNES ET/OU DES FACES DE BORD DEFINISSANT UN MAILLAGE DE
-! POST-TRAITEMENT.
+!    User subroutine.
+
+! Define additional post-processing writers and meshes.
+!
+! Post-processing writers allow outputs in different formats or with
+! different format options and output frequancy than the default writer.
+!
+! Post-processing meshes are defined as a subset of the main meshe's
+! cells or faces (interior and boundary).
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! (nfml,nprfml)    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (lndfac)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!  (nfabor+1)      !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (lndfbr  )     !    !     !  (optionnel)                                   !
-! lstcel           ! te ! --- ! tableau de travail (liste des                  !
-! (ncelet)         !    !     !  cellules d'un maillage de sortie)             !
-! lstfac           ! te ! --- ! tableau de travail (liste des faces            !
-! (nfac)           !    !     !  internes d'un maillage de sortie)             !
-! lstfbr           ! te ! --- ! tableau de travail (liste des faces            !
-! (nfabor)         !    !     !  de bord d'un maillage de sortie)              !
-! ia(*)            ! te ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! lstcel(ncelet)   ! ia ! --- ! work array (list of cells)                     !
+! lstfac(nfac)     ! ia ! --- ! work array (list of interior faces)            !
+! lstfbr(nfabor)   ! ia ! --- ! work array (list of boundary faces)            !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
@@ -122,7 +119,7 @@ implicit none
 !===============================================================================
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -157,9 +154,9 @@ double precision xyznod(ndim,nnod), volume(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
-integer          indmod, icas, nbcas, ipart, nbpart, ipref
+integer          indmod, icas, nbcas, ipart, nbpart, ipref, icat
 integer          ntchrl
 
 integer          nlcel, nlfac , nlfbr
@@ -171,7 +168,6 @@ character*96     nomrep, optfmt
 
 double precision xfac  , yfac  , zfac
 
-
 !===============================================================================
 
 
@@ -186,150 +182,150 @@ if(1.eq.1) return
 nbcas  = 0
 nbpart = 0
 
-! Entiers "pointeurs" sur la premiere case libre de IA et RA
+! "pointeurs" to the first free positions in 'ia' and 'ra'
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-!     CREATION DES GESTIONNAIRES D'ECRITURE POUR LE POST TRAITEMENT
-!         (UN PAR CAS ET PAR FORMAT, A RENSEIGNER PAR L'UTILISATEUR)
+! Create output writers for post-processing
+! (one per case and per format, to be adapted by the user)
 !===============================================================================
 
-!     NOMBRE DE GESTIONNAIRES (case au sens EnSight, etude au sens MED,
-!                              ou racine d'une arborescence CGNS)
+! Number of writers (case in the EnSight sense, study in the MED sense,
+!                    or root of a CGNS tree)
 
 nbcas = 4
 
 do icas = 1, nbcas
 
-!       INITIALISATIONS DIVERSES
+  ! Miscellaneous initializations
 
   do ii = 1, len(nomcas)
-    NOMCAS (II:II) = ' '
+    nomcas (II:II) = ' '
   enddo
   do ii = 1, len(nomrep)
-    NOMREP (II:II) = ' '
+    nomrep (ii:ii) = ' '
   enddo
   do ii = 1, len(nomfmt)
-    NOMFMT (II:II) = ' '
+    nomfmt (ii:ii) = ' '
   enddo
   do ii = 1, len(optfmt)
-    OPTFMT (II:II) = ' '
+    optfmt (ii:ii) = ' '
   enddo
 
-!       DEFINITION UTILISATEUR :
-
-!       NOMCAS et NOMREP indiquent respectivement le prefixe du nom
-!       des fichiers et le repertoire correspondant.
-!       Si NOMREP est de la forme xxxx.ensight ou xxxx.med, le lanceur le
-!       rapatriera automatiquement sous le nom XXXX.ENSIGHT.$DATE ou
-!       XXXX.MED.$DATE dans le repertoire RESU. Si NOMREP est d'une autre
-!       forme, il faudra gerer son rapatriement a la main.
-
-!       NOMFMT permet de choisir le format de sortie
-!       ("EnSight Gold", "MED_fichier", ou "CGNS").
-
-!       OPTFMT permet de fournir des options specifiques au format de
-!       sortie (separees par des virgules) ;
-!         Pour EnSight : "text" ou "binary" (defaut),
-!         Pour EnSight, MED, ou CGNS :
-!                        "discard_polygons" pour supprimer les polygones,
-!                        "discard_polyhedra" pour supprimer les polyedres.
-!         Pour EnSight  ou MED :
-!                        "divide_polygons" pour d�couper les polygones,
-!                        "divide_polyhedra" pour d�couper les polyedres.
-
-!       INDMOD indique si les maillages ecrits seront :
-!         0 : fixes,
-!         1 : deformables a topologie constante,
-!         2 : modifiables (pourront etre completement redefinis en
-!             cours de calcul via le sous-programme USMPST).
-!        10 : comme INDMOD = 0, avec champ de d�placement
-!        11 : comme INDMOD = 1, avec champ de d�placement
-!        12 : comme INDMOD = 2, avec champ de d�placement
-
-!       NTCHRL donne la frequence de sortie par defaut associee,
-!       (la sortie a un pas de temps donne pouvant etre forcee ou
-!       empechee via le sous-programme utilisateur USNPST).
+  ! User definition:
+
+  ! 'nomcas' and 'nomrep' respectively define the file names prefix and
+  ! the corresponding directory path.
+  ! If 'nomrep' is a local name of the "xxxx.ensight" or "xxxx.med" form,
+  ! the script will automatically retreive the results to the 'RESU'
+  ! directory, under a name such as XXXX.ENSIGHT.$DATE or XXXX.MED.$DATE.
+  ! If 'nomrep' is of another form, it will have to be defined as a
+  ! generic user output dire or directory so as to be copied.
+
+  ! A user may also defined 'nomrep' as an absolute path, outside of the
+  ! execution directory, in which case the results are output directly
+  ! to that directory, and not managed by the script.
+
+  ! 'nomfmt' allows choosing the output format ("EnSight Gold",
+  ! "MED_fichier", or "CGNS").
+
+  ! 'optfmt' allows the addition of a list of comma-separated
+  ! format-specific output options:
+  ! - EnSight:
+  !      "text" ou "binary" (default),
+  ! - EnSight, MED, or CGNS:
+  !     "discard_polygons" to ignore polygons in output.
+  !     "discard_polyhedra" to ignore polyhedra in output.
+  ! - EnSight or MED :
+  !     "divide_polygons" to divide polygons into triangles
+  !     "divide_polyhedra" to divide polyhedra into tetrahedra and pyramids
+
+  ! 'indmod' indicates if the meshes output using this writer will be:
+  !     0: fixed,
+  !     1: deformables with constant topology constante,
+  !     2 : modifyable (may be redefined during the calculation through
+  !         the 'usmpst' user subroutine).
+  !     10: as indmod = 0, with a vertex displacement field
+  !     11: as indmod = 1, with a vertex displacement field
+  !     12: as indmod = 2, with a vertex displacement field
+
+  ! 'ntchrl' defines the default output frequency (output at a specific
+  ! time may still be forced or inhibited using the 'usnpst' user subroutine).
 
   if (icas .eq. 1) then
 
-    NOMCAS = 'chr'
-    NOMREP = 'EnSight'
-    NOMFMT = 'EnSight Gold'
-    OPTFMT = 'binary, discard_polygons'
+    nomcas = 'chr'
+    nomrep = 'EnSight'
+    nomfmt = 'EnSight Gold'
+    optfmt = 'binary, discard_polygons'
     indmod = 0
     ntchrl = 4
 
   else if (icas .eq. 2) then
 
-    NOMCAS = 'chr'
-    NOMREP = 'EnSight_text'
-    NOMFMT = 'ensight'
-    OPTFMT = 'text, discard_polyhedra'
+    nomcas = 'chr'
+    nomrep = 'EnSight_text'
+    nomfmt = 'ensight'
+    optfmt = 'text, discard_polyhedra'
     indmod = 1
     ntchrl = ntchr
 
   else if (icas .eq. 3) then
 
-    NOMCAS = 'modif'
-    NOMREP = 'EnSight'
-    NOMFMT = 'ensight'
-    OPTFMT = 'discard_polyhedra'
+    nomcas = 'modif'
+    nomrep = 'EnSight'
+    nomfmt = 'ensight'
+    optfmt = 'discard_polyhedra'
     indmod = 2
     ntchrl = ntchr
     ntchrl = 2
 
   else if (icas .eq. 4) then
 
-    NOMCAS = 'CHR'
-    NOMREP = ' '
-    NOMFMT = 'MED'
-    OPTFMT = ' '
+    nomcas = 'CHR'
+    nomrep = ' '
+    nomfmt = 'MED'
+    optfmt = ' '
     indmod = 1
     ntchrl = ntchr
 
   endif
 
-!       DEFINITION EFFECTIVE
+  ! Create writer
 
   call pstcwr (icas  , nomcas, nomrep, nomfmt, optfmt, indmod, ntchrl)
   !==========
 
 enddo
 
-!===============================================================================
-!     NOMBRE DE MAILLAGES EXTRAITS POUR POST TRAITEMENT
-!         A RENSEIGNER PAR L'UTILISATEUR
-!===============================================================================
+! Define number of additional postprocessing output meshes
+!=========================================================
+
+! 'nbpart' is the number of parts which will be generated (in the EnSight
+! sense; the MED and CGNS equivalent terms are mesh and base respectively).
 
-!   NBPART est le nombre de "parts" qui seront generees
-!   (au sens EnSight ; les �quivalents MED et CGNS sont le maillage
-!    et la base respectivement)
+! A "part" may be any volume or surface defined through a selection of the
+! main meshe's cells of faces.
 
-!   Une "part" peut etre tout volume ou surface que l'on definira par
-!   l'identification des cellules ou faces du maillage
+! Example:
+!
+! 4 "parts", correspondant respectivey to a mixed "interior faces"
+! / "exterior faces" extraction, an extraction containing only
+! interior faces, and 2 time-varying mesh pieces.
 
-!   Exemple : 4 "parts", correspondant respectivement � une coupe
-!             mixte faces de bord / faces internes, puis � une coupe
-!             contenant uniquement des faces internes, puis � deux extraits
-!             evolutifs du maillage global. On ajoutera une 5eme "part",
-!             alias de la 2eme.
+! We will later add a 5th "part", which is an alias of the second.
 
 nbpart = 4
 
-!===============================================================================
-!     DEBUT DE LA BOUCLE SUR LES PARTS DEFINIES PAR L'UTILISATEUR
-!===============================================================================
+! Start of loop on user-defined parts
+!====================================
 
 do ipart = 1, nbpart
 
-
-!===============================================================================
-!       INITIALISATIONS DIVERSES
-!         PAS D'INTERVENTION UTILISATEUR REQUISE
-!===============================================================================
+  ! Miscellaneous initializations
+  !==============================
 
   nlcel = 0
   nlfac = 0
@@ -345,43 +341,36 @@ do ipart = 1, nbpart
   enddo
 
   do ii = 1, len(nommai)
-    NOMMAI(II:II) = ' '
+    nommai(ii:ii) = ' '
   enddo
 
-!===============================================================================
-!       REPERAGE DES CELLULES OU FACES INCLUSES DANS LE MAILLAGE
-!         A RENSEIGNER PAR L'UTILISATEUR
-!===============================================================================
-
-!       Ce sous programme est appele avant la definition des
-!        conditions aux limites
+  ! Mark cells or faces included in the mesh (to be adapted by the user)
+  !=====================================================================
 
+  ! Note that this subroutine is called before boundary conditions
+  ! are defined.
 
-!       POUR LA 1ere COUPE (PART 1) : coupe exemple
-
-!         Exemple : on selectionne
-!                   les faces internes situees entre une cellule de
-!                   couleur 2 et une cellule de couleur 3
-!                   et les faces de bord  de couleur 4
+  ! Part 1:
+  !   We select interior faces separating cells with color 2 from cells
+  !   with color 3, as well as boundary faces of color 4.
 
   if (ipart .eq. 1) then
 
-    NOMMAI = 'Coupe 1'
+    nommai = 'Cut 1'
 
-!         Pour les faces internes
+    ! Interior faces
 
     do ifac = 1, nfac
 
-!           Elements voisins
+      ! Adjacent cells
       iel1 = ifacel(1,ifac)
       iel2 = ifacel(2,ifac)
 
-!           Couleur des elements voisins
+      ! Adjacent cell colors (with only 1 property per cell)
       icoul1 = iprfml(ifmcel(iel1),1)
       icoul2 = iprfml(ifmcel(iel2),1)
 
-!           Determination si la face appartient a la coupe
-
+      ! Should the face belong to the extracted mesh ?
       if ((icoul1.eq.2.and.icoul2.eq.3).or.(icoul1.eq.3.and.icoul2.eq.2)) then
         nlfac = nlfac+1
         lstfac(nlfac)= ifac
@@ -389,14 +378,14 @@ do ipart = 1, nbpart
 
     enddo
 
-!         Pour les faces de bord
+    ! Boundary faces
 
     do ifac = 1, nfabor
 
-!           Couleur de la face
+      ! Face color (with only 1 property per cell)
       icoul = iprfml(ifmfbr(ifac),1)
 
-!           Determination si la face appartient a la coupe
+      ! Should the face belong to the extracted mesh ?
       if (icoul.eq.4) then
         nlfbr = nlfbr+1
         lstfbr(nlfbr)= ifac
@@ -405,55 +394,36 @@ do ipart = 1, nbpart
     enddo
 
 
-
-!       POUR LA 2eme COUPE (PART 2) : coupe exemple
-
-!         Exemple : on selectionne
-!                   les faces internes situees a y = 0.5
+  ! Part 2:
+  !   We select interior faces with y = 0.5
 
   else if (ipart .eq. 2) then
 
-    NOMMAI = 'Coupe 2'
-
-!         Pour les faces internes
-
-    do ifac = 1, nfac
-
-!           Determination si la face appartient a la coupe
-
-!           Centre de gravite de la face
-      xfac = cdgfac(1,ifac)
-      yfac = cdgfac(2,ifac)
-      zfac = cdgfac(3,ifac)
+    nommai = 'Cut 2'
 
-      if ((yfac .gt. 0.4999).and.(yfac .lt. 0.5001)) then
-        nlfac = nlfac+1
-        lstfac(nlfac)= ifac
-      endif
+    ! Interior faces
 
-    enddo
+    call getfac('plane[0, -1, 0, 0.5, epsilon = 0.0001]', nlfac, lstfac)
+    !==========
 
-!       POUR LA PART NUMERO 3 (EXTRAIT DU DOMAINE FLUIDE)
 
-!         Par defaut : on selectionne toutes les cellules, on modifiera
-!                      la selection dans USMPST
+  ! Part 3:
+  !   We select all cells, and will modify the selection in 'usmpst'.
 
   else if (ipart .eq. 3) then
 
-    NOMMAI = 'Volume v > 0.5'
+    nommai = 'Volume v > 0.5'
 
     nlcel = ncel
     nlfac = 0
     nlfbr = 0
 
-!       POUR LA PART NUMERO 4 (EXTRAIT DU DOMAINE FLUIDE)
-
-!         Par defaut : on selectionne toutes les faces de bord,
-!                      on modifiera la selection dans USMPST
+  ! Part 4:
+  !   We select all boundary faces, and will modify the selection in 'usmpst'.
 
   else if (ipart .eq. 4) then
 
-    NOMMAI = 'Surface "iso" v'
+    nommai = 'Surface "iso" v'
 
     nlcel = 0
     nlfac = 0
@@ -461,22 +431,18 @@ do ipart = 1, nbpart
 
   endif
 
-!===============================================================================
-!       CREATION DES STRUCTURES CONSERVANT LES DONNEES DES PARTS
-!         PAS D'INTERVENTION UTILISATEUR REQUISE
-!===============================================================================
+  ! Create post-processing mesh
+  !============================
 
   call pstcma (ipart, nommai, nlcel, nlfac, nlfbr, lstcel, lstfac, lstfbr)
   !==========
 
-!===============================================================================
-!       IDENTIFICATION DU MAILLAGE EXTRAIT ET GESTION DE SORTIE
-!         A RENSEIGNER PAR L'UTILISATEUR
-!===============================================================================
+  ! Associate extracted mesh and writer (to be adapted by the user)
+  !================================================================
 
   if ((ipart .eq. 1) .or. (ipart .eq. 2)) then
 
-!         Les maillages extraits numero 1 et 2 sont associes aux cas 1 et 2
+    ! Associate post-processing meshes 1 and 2 with writers  1 and 2.
     icas = 1
     call pstass(ipart, icas)
     !==========
@@ -486,28 +452,25 @@ do ipart = 1, nbpart
 
   else if ((ipart .eq. 3) .or. (ipart .eq. 4)) then
 
-!         Les maillages extraits numero 3 et 4 sont associes au cas 3
+    ! Associate post-processing meshes 1 and 2 with writer 3.
     icas = 3
     call pstass(ipart, icas)
     !==========
 
   endif
 
-!===============================================================================
-!     FIN   DE LA BOUCLE SUR LES PARTS DEFINIES PAR L'UTILISATEUR
-!===============================================================================
+  ! End of loop on user-defined parts
+  !==================================
 
 enddo
 
 !===============================================================================
-!     TRAITEMENT DES ALIAS EVENTUELS ; UN ALIAS EST SURTOUT UTILE
-!     LORSQU'ON LUI AFFECTE UN 'WRITER' DIFFERENT DU MAILLAGE AUQUEL
-!     IL FAIT REFERENCE, AVEC LEQUEL ON PEUT SORTIR DES VARIABLES
-!     DIFFERENTES, SANS DUPLICATION EN MEMOIRE DU MAILLAGE POST
+! Handle possible aliases; an alias is useful when we seek to assign an
+! additional writer to an already defined mesh, with which we choose
+! to output specific variables without duplicating the mesh in memory.
 !===============================================================================
 
-!     PART NUMERO 7 : ALIAS DE LA PART 2 (POUR SORTIES DE VARIABLES
-!                       ASSOCIEES INDEPENDANTE)
+! Part 5: alias for part 2 (for independent varibles output)
 
 ipart = 5
 ipref = 2
@@ -515,17 +478,31 @@ ipref = 2
 call pstalm(ipart, ipref)
 !==========
 
-!     Pour le maillage numero 5 : writer 3
+! Associate part 5 (alias of 2) with writer 3
 icas = 3
 call pstass(ipart, icas)
 !==========
 
+!===============================================================================
+! Assign optional categories to user meshes
+!===============================================================================
+
+! Available categories are -1 (volume mesh) and -2 (boundary mesh).
+! When a category is assigned to a user mesh, all standard
+! (i.e. non-user) outputs which apply to the main category mesh
+! also apply to the user mesh.
+
+! In this example, variables output on the main volume mesh will
+! also be output on the subset defined by post-processing mesh 3.
+ipart = -3
+icat = -1
+call pstcat(ipart, icat)
+!==========
 
 return
 
 !===============================================================================
-!     FORMATS
+! Formats
 !===============================================================================
 
-end
-
+end subroutine
diff --git a/users/base/ushist.f90 b/users/base/ushist.f90
index 337840a..78a6d7b 100644
--- a/users/base/ushist.f90
+++ b/users/base/ushist.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,96 +45,85 @@ subroutine ushist &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
+! Purpose:
+! -------
+
+!    User subroutine.
+
+!    Non-standard monitoring point definition.
 
-! SORTIE D'HISTORIQUES NON STD LIVREE A L'UTILISATEUR
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -174,13 +163,13 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ii, kk, node, ndrang, nvarpp, numcel, lng
 double precision xx, yy, zz, xyztmp(3)
 
-!   Numero des noeuds ou on sort des historiques
+! Monitoring points number (lower than a maximum of 100)
 integer          ncapmx
 parameter       (ncapmx=100)
 integer          icapt(ncapmx)
@@ -188,16 +177,16 @@ save             icapt
 integer          ircapt(ncapmx)
 save             ircapt
 
-!   Nombre de noeuds ou on sort des historiques
+! Number of monitoring points
 integer          ncapts
 save             ncapts
 
-!   Numero du passage actuel dans ce ss pgm
+! Current pass number
 integer          ipass
 data             ipass /0/
 save             ipass
 
-!   Tableau de valeurs temporaires
+! Temporary array
 double precision vacapt(ncapmx)
 
 !===============================================================================
@@ -210,34 +199,33 @@ if(1.eq.1) return
 !===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
-
 !===============================================================================
-! 1. INITIALISATION
+! 1.  Initialization
 !===============================================================================
 
-! ---> Gestion memoire
+! Memory management
 
 idebia = idbia0
 idebra = idbra0
 
-! ---> Numero du passage actuel dans ce ss pgm
+! Current pass number in this subroutine
 
 ipass = ipass + 1
 
 !===============================================================================
-! 2. RECHERCHE DES CAPTEURS
+! 2.  Search for the monitoring points
 !===============================================================================
-! Les numeros stockes dans IRCAPT donnent le rang du processeur sur
-!   lequel se trouve la sonde. L'utilisateur n'a pas a s'en preoccuper
-!   specialement tant qu'il utilise bien la fonction FINDPT pour reperer
-!   les sondes.
 
+! The numbers stored in the 'ircapt' array give the processor rank on which
+!   is the probes. The user should not have to care as soon as she/he is
+!   using the 'findpt' subroutine to find the monitoring points.
 
-!  Au premier passage : reperage des numeros de cellule dont le centre est
-!    le plus proche des coordonnees XX YY ZZ.
-!    En parallelisme, le numero de cellule ICAPT(II) est local au processeur
-!    dont le rang est donne par IRCAPT(II) (de 0 a nombre de processeurs-1).
-!    NCAPTS donne le nombre de sondes total.
+! At the first pass:
+!    Search for the cell number the centre of which is the closest of the
+!    coordinates (xx, yy, zz).
+!    In case of parallelism, the cell number 'icapt(ii)' is local to the
+!    processor of rank 'ircapt(ii)' (from 0 to the number of processor - 1).
+!    'ncapts' gives the total number of monitoring points.
 
 if (ipass.eq.1) then
 
@@ -246,9 +234,9 @@ if (ipass.eq.1) then
   xx = 0.20d0
   yy = 0.15d0
   zz = 0.01d0
-  call findpt                                                     &
+  call findpt &
   !==========
- ( ncelet , ncel   , xyzcen ,                                     &
+ ( ncelet , ncel   , xyzcen ,                 &
    xx     , yy     , zz     , node  , ndrang)
   ii = ii + 1
   icapt(ii) = node
@@ -257,9 +245,9 @@ if (ipass.eq.1) then
   xx = 0.70d0
   yy = 0.15d0
   zz = 0.01d0
-  call findpt                                                     &
+  call findpt &
   !==========
- ( ncelet , ncel   , xyzcen ,                                     &
+ ( ncelet , ncel   , xyzcen ,                  &
    xx     , yy     , zz     , node  , ndrang)
   ii = ii + 1
   icapt(ii) = node
@@ -268,9 +256,9 @@ if (ipass.eq.1) then
   xx = 0.20d0
   yy = 0.75d0
   zz = 0.01d0
-  call findpt                                                     &
+  call findpt &
   !==========
- ( ncelet , ncel   , xyzcen ,                                     &
+ ( ncelet , ncel   , xyzcen ,                  &
    xx     , yy     , zz     , node  , ndrang)
   ii = ii + 1
   icapt(ii) = node
@@ -290,76 +278,78 @@ if (ipass.eq.1) then
   ncapts = ii
 
   if(ii.gt.ncapmx) then
-    WRITE(NFECRA,*) ' USHIST : NCAPMX = ',II,' AU MINIMUM '
-    call csexit (1)
+    write(nfecra,*) ' ushist: ncapmx should at least be', ii
+    call csexit(1)
+    !==========
   endif
 
 endif
 
 
 !===============================================================================
-! 3. OUVERTURE DES FICHIERS
-!     EXEMPLE D'UNE VARIABLE PAR FICHIER
+! 3.  Open files: example for a variable per file
 !===============================================================================
 
-! ---> Nombre de variables = nombre de fichiers
+! Number of variables = number of files
 
 nvarpp = nvar
 
 
-! ---> Au premier passage, on ouvre les fichiers et on ecrit une entete
+! At the first pass: open files and write a header
 
-if(ipass.eq.1) then
+if (ipass.eq.1) then
 
-!   --> Test du nombre max de fichiers
+  ! Test the maximum number of user files
 
-  if(nvarpp.gt.nushmx) then
-    write(nfecra,*)                                               &
-  ' USHIST : PAS DROIT A PLUS DE ',NUSHMX,' FICHIERS HISTORIQUES'
-    call csexit (1)
+  if (nvarpp.gt.nushmx) then
+    write(nfecra,*) &
+      ' ushist: no more than ', nushmx,' monitoring files are allowed'
+    call csexit(1)
+    !==========
   endif
 
   do ii = 1, nvarpp
 
-!   --> Ouverture des fichiers avec les unites disponibles
+    ! Open the files with the availabe Fortran 'file units'
 
     if (irangp.le.0) then
-      open(file=ficush(ii),unit=impush(ii))
+      open(file=ficush(ii), unit=impush(ii))
     endif
 
-!   --> On imprime le numero (global) de la cellule et les coordonnees
-!        du centre
+    ! Print the (global) cell number and the center coordinates
 
     do kk = 1, ncapts
-!           Numero de cellule (en parallele : local au processeur courant)
-      numcel    = icapt(kk)
+
+      ! Cell number (in a parallel run: local to the current processor)
+      numcel = icapt(kk)
+
       if (irangp.lt.0 .or. irangp.eq.ircapt(kk)) then
-!           Coordonnees de la cellule (en parallele, c'est le processeur
-!             qui la contient qui travaille)
+        ! Cell coordinates (in a parallel run: only one processor gives values)
         xyztmp(1) = xyzcen(1,numcel)
         xyztmp(2) = xyzcen(2,numcel)
         xyztmp(3) = xyzcen(3,numcel)
       else
-!           Valeurs bidons sur les autres processeurs
+        ! Fake values on the other processors
         xyztmp(1) = 0.d0
         xyztmp(2) = 0.d0
         xyztmp(3) = 0.d0
       endif
-!           En parallele, le processeur qui a trouve la cellule
-!           envoie son numero global et ses coordonnees aux autres.
+
+      ! In case of parallelism, the processor on which the cell was found
+      ! sends its global number and coordinates to the others.
       if (irangp.ge.0) then
         call parcel(icapt(kk), ircapt(kk), numcel)
         !==========
         lng = 3
-        call parbcr(ircapt(kk), lng , xyztmp)
+        call parbcr(ircapt(kk), lng, xyztmp)
         !==========
       endif
-!           On ecrit les informations (seul le processeur 0
-!           travaille en parallele : on n'a pasa besoin de
-!           plusieurs exemplaires du fichier)
+
+      ! Write information
+      !   (only rank 0 works in a parallel run: only one file is needed)
       if (irangp.le.0) then
-        WRITE(IMPUSH(II),1000) '#',' Cellule ',NUMCEL,            &
-            ' Coord ',XYZTMP(1),XYZTMP(2),XYZTMP(3)
+        write(impush(ii),1000) &
+          '#', ' Cell ', numcel, ' Coord ', xyztmp(1), xyztmp(2), xyztmp(3)
       endif
 
     enddo
@@ -368,19 +358,18 @@ if(ipass.eq.1) then
 
 endif
 
- 1000 format(a,a9,i10,a7,3e14.5)
+1000 format(a,a9,i10,a7,3e14.5)
 
 !===============================================================================
-! 4. ECRITURE
-!     EXEMPLE D'UNE VARIABLE PAR FICHIER
+! 4.  Write values: example for a variable per file
 !===============================================================================
 
-! Ecriture du numero du pas de temps,
-!          de la valeur du temps physique
-!          de la variable en tous les points d'historiques
-! En sequentiel, la valeur a ecrire est simplement RTP(ICAPT(KK),II)
-! en parallele, la valeur a ecrire peut etre sur un autre processeur
-!  et il faut la determiner dans  VACAPT(KK) avec PARHIS.
+! Write the time step number,
+!       the physical time value
+!       the variable at each monitoring points
+! In a serial run:   the value is merely 'rtp(icapt(kk),ii)'
+! In a parallel run: the value may come from a different processor, to be
+!                    determined in 'vacapt(kk)' with the 'parhis' subroutine)
 
 do ii = 1 , nvarpp
   do kk = 1, ncapts
@@ -392,32 +381,28 @@ do ii = 1 , nvarpp
     endif
   enddo
   if (irangp.le.0) then
-    write (impush(ii),1010) ntcabs,ttcabs,                        &
-                            (vacapt(kk),kk=1,ncapts)
+    write(impush(ii),1010) ntcabs, ttcabs, (vacapt(kk),kk=1,ncapts)
   endif
 enddo
 
+! WARNING: The format must be modified in case of more than 9 monitoring points
 
-
-!   ATTENTION : IL FAUT ADAPTER LE FORMAT POUR PLUS DE  9 CAPTEURS
-
-
- 1010 format(i10,10e17.9)
+1010 format(i10,10e17.9)
 
 !===============================================================================
-! 4. FERMETURE
+! 4.  Close files
 !===============================================================================
 
-if(ntcabs.eq.ntmabs .and. irangp.le.0) then
+if (ntcabs.eq.ntmabs .and. irangp.le.0) then
   do ii = 1, nvarpp
     close(impush(ii))
   enddo
 endif
 
 
-!===============================================================================
-! 5. SORTIE
-!===============================================================================
+!----
+! End
+!----
 
 return
-end
+end subroutine
diff --git a/users/base/usini1.f90 b/users/base/usini1.f90
index 678e0ff..7da4e42 100644
--- a/users/base/usini1.f90
+++ b/users/base/usini1.f90
@@ -104,7 +104,7 @@ integer nphmax, nphas, iihmpu, nfecra
 integer iturb(nphmax), icp(nphmax)
 integer iverif
 
-! VARIABLES LOCALES
+! Local variables
 
 integer iphas
 
@@ -119,7 +119,7 @@ integer iphas
 !===============================================================================
 
 if (iverif.eq.0) then
-  if(iihmpu.eq.1) then
+  if (iihmpu.eq.1) then
     return
   else
     write(nfecra,9000)
@@ -133,7 +133,7 @@ endif
 '@',/,                                                            &
 '@ @@ WARNING:    stop in data input',/,                          &
 '@    =======',/,                                                 &
-'@     The user subroutine ''usipph'' must be completed',/,       &
+'@     The user subroutine ''usipph'' must be completed',/, &
 '@       in file usini1.f90',/,                                   &
 '@',/,                                                            &
 '@  The calculation will not be run.',/,                          &
@@ -289,7 +289,7 @@ integer iverif
 !===============================================================================
 
 if (iverif.eq.0) then
-  if(iihmpu.eq.1) then
+  if (iihmpu.eq.1) then
     return
   else
     write(nfecra,9000)
@@ -303,7 +303,7 @@ endif
 '@',/,                                                            &
 '@ @@ WARNING:    stop in data input',/,                          &
 '@    =======',/,                                                 &
-'@     The user subroutine ''usinsc'' must be completed',/,       &
+'@     The user subroutine ''usinsc'' must be completed',/, &
 '@       in file usini1.f90',/,                                   &
 '@',/,                                                            &
 '@  The calculation will not be run.',/,                          &
@@ -446,7 +446,7 @@ integer iutile, iscal
 !===============================================================================
 
 if (iverif.eq.0) then
-  if(iihmpu.eq.1) then
+  if (iihmpu.eq.1) then
     return
   else
     write(nfecra,9000)
@@ -460,7 +460,7 @@ endif
 '@',/,                                                            &
 '@ @@ WARNING:    stop in data input',/,                          &
 '@    =======',/,                                                 &
-'@     The user subroutine ''usipsc'' must be completed',/,       &
+'@     The user subroutine ''usipsc'' must be completed',/, &
 '@       in file usini1.f90',/,                                   &
 '@',/,                                                            &
 '@  The calculation will not be run.',/,                          &
@@ -528,7 +528,7 @@ endif
 !       (which are only given as an example).
 
 iutile = 0
-if(iutile.eq.1) then
+if (iutile.eq.1) then
   iscavr(3) = 2
 endif
 
@@ -562,7 +562,7 @@ endif
 do iscal = 1, nscaus
 
   ! For user scalars which do not represent the variance of another scalar
-  if(iscavr(iscal).le.0) then
+  if (iscavr(iscal).le.0) then
 
     ivisls(iscal) = 0
 
@@ -668,7 +668,7 @@ integer iphas, ialgce
 !===============================================================================
 
 if (iverif.eq.0) then
-  if(iihmpu.eq.1) then
+  if (iihmpu.eq.1) then
     return
   else
     write(nfecra,9000)
@@ -682,7 +682,7 @@ endif
 '@',/,                                                            &
 '@ @@ WARNING:    stop in data input',/,                          &
 '@    =======',/,                                                 &
-'@     The user subroutine ''usipgl'' must be completed',/,       &
+'@     The user subroutine ''usipgl'' must be completed',/, &
 '@       in file usini1.f90',/,                                   &
 '@',/,                                                            &
 '@  The calculation will not be run.',/,                          &
@@ -856,7 +856,7 @@ integer iphas, iutile, ii, jj, imom
 !===============================================================================
 
 if (iverif.eq.0) then
-  if(iihmpr.eq.1) then
+  if (iihmpr.eq.1) then
     return
   else
     write(nfecra,9000)
@@ -870,7 +870,7 @@ endif
 '@',/,                                                            &
 '@ @@ WARNING:    stop in data input',/,                          &
 '@    =======',/,                                                 &
-'@     The user subroutine ''usipsu'' must be completed',/,       &
+'@     The user subroutine ''usipsu'' must be completed',/, &
 '@       in file usini1.f90',/,                                   &
 '@',/,                                                            &
 '@  The calculation will not be run.',/,                          &
@@ -995,7 +995,7 @@ dtref  = 0.01d0
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
 
-if(nmodpp.eq.0) then
+if (nmodpp.eq.0) then
 
   iphas = 1
 
@@ -1006,7 +1006,7 @@ if(nmodpp.eq.0) then
   iscalt(iphas) = -1
 
 ! If there is a temperature or enthalpy variable:
-  if(iscalt(iphas).gt.0) then
+  if (iscalt(iphas).gt.0) then
     ! we indicate if it is the temperature (=1) or the enthalpy (=2).
     iscsth(iscalt(iphas)) = 1
   endif
@@ -1071,7 +1071,7 @@ iphas = 1
 blencv(iu(iphas)) = 1.0d0
 blencv(iv(iphas)) = 1.0d0
 blencv(iw(iphas)) = 1.0d0
-if(nscaus.ge.1) then
+if (nscaus.ge.1) then
   do ii = 1, nscaus
     blencv(isca(ii)) = 1.0d0
   enddo
@@ -1080,6 +1080,40 @@ endif
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
 
 
+! --- Linear solver parameters (for each unknown)
+
+!     iresol = -1:           default
+!     iresol = 1000*ipol +j: ipol is the degree of the Neumann polynomial
+!                            used for preconditioning,
+!                            j = 0: conjugate gradient,
+!                            j = 1: Jacobi
+!                            j = 2: bi-CgStab
+
+!     nitmax: maximum number of iterations for each unknown ivar
+!     epsilo: relative precision for the solution of the linear system.
+
+! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
+
+iutile = 0
+if (iutile.eq.1) then
+
+  iphas = 1
+  iresol(iu(iphas)) = 2
+  iresol(iv(iphas)) = 2
+  iresol(iw(iphas)) = 2
+  if (nscaus.ge.1) then
+    do ii = 1, nscaus
+      iresol(isca(ii)) = 2
+      nitmax(isca(ii)) = 5000
+      epsilo(isca(ii)) = 1.d-6
+    enddo
+  endif
+
+endif
+
+! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
+
+
 ! --- Algebraic multigrid parameters
 
 !     imgr = 0: no multigrid
@@ -1118,7 +1152,7 @@ imgr(ipr(iphas)) = 1
 !       (which are only given as an example).
 
 iutile = 0
-if(iutile.eq.1) then
+if (iutile.eq.1) then
 
   iphas = 1
   if (iturb(iphas).eq.20) then
@@ -1307,7 +1341,7 @@ p0(iphas) = 1.013d5
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
 
-if(nmodpp.eq.0) then
+if (nmodpp.eq.0) then
   iphas = 1
   irovar(iphas) = 0
   ivivar(iphas) = 0
@@ -1336,12 +1370,12 @@ endif
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
 
 ! If there are user scalars
-if(nscaus.gt.0) then
+if (nscaus.gt.0) then
 
   ! Loop on user scalars:
   do jj = 1, nscaus
     ! For scalars which are not variances
-    if(iscavr(jj).le.0) then
+    if (iscavr(jj).le.0) then
       ! We define the min and max bounds
       scamin(jj) =-grand
       scamax(jj) =+grand
@@ -1379,12 +1413,12 @@ endif
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
 
 ! If there are user scalars
-if(nscaus.gt.0) then
+if (nscaus.gt.0) then
 
   ! We loop on user scalars:
   do jj = 1, nscaus
     ! For scalars which are not variances
-    if(iscavr(jj).le.0) then
+    if (iscavr(jj).le.0) then
       ! We define the diffusivity
       visls0(jj) = viscl0(iphsca(jj))
     endif
@@ -1446,7 +1480,7 @@ almax(iphas) = -grand
 !       (which are only given as an example).
 
 iutile = 0
-if(iutile.eq.1) then
+if (iutile.eq.1) then
 
   ! First moment: <u>
   imom  = 1
@@ -1533,7 +1567,7 @@ integer iverif
 
 ! Local variables
 
-integer iphas, ipp, imom
+integer ii, iphas, ipp, imom, iutile
 
 !===============================================================================
 
@@ -1546,12 +1580,16 @@ integer iphas, ipp, imom
 !===============================================================================
 
 if (iverif.eq.0) then
-  if(iihmpr.eq.1) then
+  if (iihmpr.eq.1) then
     return
   else
     write(nfecra,9000)
     call csexit (1)
   endif
+else
+  if(iihmpr.eq.1) then
+    return
+  endif
 endif
 
  9000 format(                                                     &
@@ -1560,7 +1598,7 @@ endif
 '@',/,                                                            &
 '@ @@ WARNING:    stop in data input',/,                          &
 '@    =======',/,                                                 &
-'@     The user subroutine ''usipes'' must be completed',/,       &
+'@     The user subroutine ''usipes'' must be completed',/, &
 '@       in file usini1.f90',/,                                   &
 '@',/,                                                            &
 '@  The calculation will not be run.',/,                          &
@@ -1599,7 +1637,7 @@ endif
 !===============================================================================
 
 !===============================================================================
-! 1. Input-output (optcal.h)
+! 1. Input-output (entsor.h)
 !===============================================================================
 
 ! --- write auxiliary restart file iecaux = 1 yes, 0 no
@@ -1611,7 +1649,7 @@ iecaux = 1
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
 
 
-! --- no log (listing) output
+! Frequency of log output
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
 
@@ -1619,6 +1657,28 @@ ntlist = 1
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
 
+! Log (listing) verbosity
+
+! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
+
+iutile = 0
+if (iutile.eq.1) then
+
+  iphas = 1
+
+  do ii = 1, nvar
+    iwarni(ii) = 1
+  enddo
+
+  iwarni(ipr(iphas)) = 2
+  iwarni(iu(iphas)) = 2
+  iwarni(iv(iphas)) = 2
+  iwarni(iw(iphas)) = 2
+
+endif
+
+! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
+
 ! --- post-processing output
 
 !     ichrvl: post-processing of the fluid domain (yes 1/no 0)
@@ -1655,8 +1715,8 @@ ichrsy = 0
 
 ichrmd = 0
 
-FMTCHR = 'EnSight Gold'
-OPTCHR = 'binary'
+fmtchr = 'EnSight Gold'
+optchr = 'binary'
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
 
@@ -1732,134 +1792,146 @@ iphas = 1
 
 ! pressure variable
 ipp = ipprtp(ipr   (iphas))
-nomvar(ipp)   = 'Pression'
+nomvar(ipp)   = 'Pressure'
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
+if (icorio.eq.1) then
+  nomvar(ipp)   = 'Rel Pressure'
+endif
 
 ! variable v1x
 ipp = ipprtp(iu    (iphas))
-nomvar(ipp)   = 'VitesseX'
+nomvar(ipp)   = 'VelocityX'
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
+if (icorio.eq.1) then
+  nomvar(ipp)   = 'Rel VelocityX'
+endif
 
 ! v1y variable
 ipp = ipprtp(iv    (iphas))
-nomvar(ipp)   = 'VitesseY'
+nomvar(ipp)   = 'VelocityY'
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
+if (icorio.eq.1) then
+  nomvar(ipp)   = 'Rel VelocityY'
+endif
 
 ! v1z variable
 ipp = ipprtp(iw    (iphas))
-nomvar(ipp)   = 'VitesseZ'
+nomvar(ipp)   = 'VelocityZ'
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
+if (icorio.eq.1) then
+  nomvar(ipp)   = 'Rel VelocityZ'
+endif
 
-if(itytur(iphas).eq.2) then
+if (itytur(iphas).eq.2) then
 
   ! turbulent kinetic energy
   ipp = ipprtp(ik    (iphas))
-  nomvar(ipp)   = 'EnerTurb'
+  nomvar(ipp)   = 'Turb Kinetic Energy'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
   ! turbulent dissipation
   ipp = ipprtp(iep   (iphas))
-  nomvar(ipp)   = 'Dissip'
+  nomvar(ipp)   = 'Turb Dissipation'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-elseif(itytur(iphas).eq.3) then
+elseif (itytur(iphas).eq.3) then
 
   ! Reynolds stresses
   ipp = ipprtp(ir11  (iphas))
-  nomvar(ipp)   = 'Tens.R11'
+  nomvar(ipp)   = 'R11'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
   ! Reynolds stresses
   ipp = ipprtp(ir22  (iphas))
-  nomvar(ipp)   = 'Tens.R22'
+  nomvar(ipp)   = 'R22'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
   ! Reynolds stresses
   ipp = ipprtp(ir33  (iphas))
-  nomvar(ipp)   = 'Tens.R33'
+  nomvar(ipp)   = 'R33'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
   ! Reynolds stresses
   ipp = ipprtp(ir12  (iphas))
-  nomvar(ipp)   = 'Tens.R12'
+  nomvar(ipp)   = 'R12'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
   ! Reynolds stresses
   ipp = ipprtp(ir13  (iphas))
-  nomvar(ipp)   = 'Tens.R13'
+  nomvar(ipp)   = 'R13'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
   ! Reynolds stresses
   ipp = ipprtp(ir23  (iphas))
-  nomvar(ipp)   = 'Tens.R23'
+  nomvar(ipp)   = 'R23'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
   ! turbulent dissipation
   ipp = ipprtp(iep   (iphas))
-  nomvar(ipp)   = 'Dissip'
+  nomvar(ipp)   = 'Turb Dissipation'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-elseif(iturb(iphas).eq.50) then
+elseif (iturb(iphas).eq.50) then
 
-!     energie turbulente
+  ! turbulent kinetic energy
   ipp = ipprtp(ik    (iphas))
-  nomvar(ipp)   = 'EnerTurb'
+  nomvar(ipp)   = 'Turb Kinetic Energy'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-!     dissipation turbulente
+  ! turbulent dissipation
   ipp = ipprtp(iep   (iphas))
-  nomvar(ipp)   = 'Dissip'
+  nomvar(ipp)   = 'Turb Dissipation'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-!     phi
+  ! phi
   ipp = ipprtp(iphi  (iphas))
   nomvar(ipp)   = 'Phi'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-!     f_barre
+  ! f_bar
   ipp = ipprtp(ifb   (iphas))
-  nomvar(ipp)   = 'f_barre'
+  nomvar(ipp)   = 'f_bar'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-elseif(iturb(iphas).eq.60) then
+elseif (iturb(iphas).eq.60) then
 
   ! turbulent kinetic energy
   ipp = ipprtp(ik    (iphas))
-  nomvar(ipp)   = 'EnerTurb'
+  nomvar(ipp)   = 'Turb Kinetic Energy'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
@@ -1886,17 +1958,17 @@ endif
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
 
-if(isca(1).gt.0.and.nscaus.ge.1) then
+if (isca(1).gt.0.and.nscaus.ge.1) then
   ipp = ipprtp(isca  (1))
-  nomvar(ipp)  = 'scal 1'
+  nomvar(ipp)  = 'Scalar 1'
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
   ihisvr(ipp,1)= -1
 endif
 
-if(isca(2).gt.0.and.nscaus.ge.2) then
+if (isca(2).gt.0.and.nscaus.ge.2) then
   ipp = ipprtp(isca  (2))
-  nomvar(ipp)  = 'scal 2'
+  nomvar(ipp)  = 'Scalar 2'
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
   ihisvr(ipp,1)= -1
@@ -1914,15 +1986,15 @@ iphas = 1
 ! Density variable (output for post-processing only if variable or
 !                   in the case of specific physics)
 ipp = ipppro(ipproc(irom  (iphas)))
-nomvar(ipp)   = 'masse vol'
+nomvar(ipp)   = 'Density'
 ichrvr(ipp)   = max(irovar(iphas),nmodpp)
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
 ! specific heat
-if(icp   (iphas).gt.0) then
+if (icp   (iphas).gt.0) then
   ipp = ipppro(ipproc(icp   (iphas)))
-  nomvar(ipp)   = 'chal. spec.'
+  nomvar(ipp)   = 'Specific Heat'
   ichrvr(ipp)   = 0
   ilisvr(ipp)   = 0
   ihisvr(ipp,1) = 0
@@ -1930,35 +2002,35 @@ endif
 
 ! laminar viscosity
 ipp = ipppro(ipproc(iviscl(iphas)))
-nomvar(ipp)   = 'visc. laminaire'
+nomvar(ipp)   = 'Laminar Viscosity'
 ichrvr(ipp)   = 0
 ilisvr(ipp)   = 0
 ihisvr(ipp,1) = 0
 
 ! turbulent viscosity
 ipp = ipppro(ipproc(ivisct(iphas)))
-nomvar(ipp)   = 'visc. turb1'
+nomvar(ipp)   = 'Turb Viscosity'
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
 ! Courant number
 ipp = ipppro(ipproc(icour(iphas)))
-nomvar(ipp)   = 'Nb Courant'
+nomvar(ipp)   = 'CFL'
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 0
 ihisvr(ipp,1) = -1
 
 ! Fourier number
 ipp = ipppro(ipproc(ifour(iphas)))
-nomvar(ipp)   = 'Nb Fourier'
+nomvar(ipp)   = 'Fourier Number'
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 0
 ihisvr(ipp,1) = -1
 
 ! 'csmago' variable for dynamic L.E.S. models
 !    (square of the Samgorinsky "constant")
-if(ismago(iphas).gt.0) then
+if (ismago(iphas).gt.0) then
   ipp = ipppro(ipproc(ismago(iphas)))
   nomvar(ipp)   = 'Csdyn2'
   ichrvr(ipp)   = 1
@@ -1967,10 +2039,10 @@ if(ismago(iphas).gt.0) then
 endif
 
 ! temporal means (example for moment 1)
-if(nbmomt.gt.0) then
+if (nbmomt.gt.0) then
   imom = 1
   ipp = ipppro(ipproc(icmome(imom)))
-  nomvar(ipp) = 'MoyTps01'
+  nomvar(ipp) = 'Time Average 01'
   ichrvr(ipp) = 1
   ilisvr(ipp) = 1
   ihisvr(ipp,1) = -1
@@ -1979,7 +2051,7 @@ endif
 ! total pressure (not defined in compressible case)
 if (ippmod(icompf).lt.0) then
   ipp = ipppro(ipproc(iprtot(iphas)))
-  nomvar(ipp)   = 'Pression totale'
+  nomvar(ipp)   = 'Total Pressure'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
@@ -1987,7 +2059,7 @@ endif
 
 ! local time step
 ipp = ippdt
-nomvar(ipp)   = 'pdt local'
+nomvar(ipp)   = 'Local Time Step'
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
@@ -2088,13 +2160,13 @@ integer          nideve, nituse, nrdeve, nrtuse
 !     If a file from the GUI is used, this subroutine may not be mandatory,
 !       thus the default (library reference) version returns immediately.
 
-if(1.eq.1) return
+if (1.eq.1) return
 
 !===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 1. DIMENSION DES MACROS TABLEAUX IA ET RA :
+! 1. Size of macro arrays ia and ra:
 
 !  The user may need to modify the size of integer and real work
 !    arrays here: longia and longra respectively.
@@ -2129,7 +2201,7 @@ longra = 0
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_END
 
 !===============================================================================
-! 2. DIMENSIONS DES TABLEAUX UTILISATEUR ITUSER ET RTUSER
+! 2. Size of macro arrays ituser and rtuser:
 !===============================================================================
 
 ! EXAMPLE_CODE_TO_BE_ADAPTED_BY_THE_USER_START
diff --git a/users/base/usiniv.f90 b/users/base/usiniv.f90
index 762e404..ccc0314 100644
--- a/users/base/usiniv.f90
+++ b/users/base/usiniv.f90
@@ -44,161 +44,123 @@ subroutine usiniv &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
+! Purpose:
+! -------
 
-! ROUTINE UTILISATEUR : INITIALISATION DES VARIABLES DE CALCUL
+!    User subroutine.
 
-! Cette routine est appelee en debut de calcul (suite ou non)
-!     avant le debut de la boucle en temps
+!    Initialize variables
 
-! Elle permet d'INITIALISER ou de MODIFIER (pour les calculs suite)
-!     les variables de calcul,
-!     les valeurs du pas de temps
+! This subroutine is called at beginning of the computation
+! (restart or not) before the loop time step
 
+! This subroutine enables to initialize or modify (for restart)
+!     unkown variables and time step values
 
-! On dispose ici de ROM et VISCL initialises par RO0 et VISCL0
-!     ou relues d'un fichier suite
-! On ne dispose des variables VISCLS, CP (quand elles sont
-!     definies) que si elles ont pu etre relues dans un fichier
-!     suite de calcul
+! rom and viscl values are equal to ro0 and viscl0 or initialize
+! by reading the restart file
+! viscls and cp variables (when there are defined) have no value
+! excepted if they are read from a restart file
 
-! Les proprietes physiaues sont accessibles dans le tableau
-!     PROPCE (prop au centre), PROPFA (aux faces internes),
-!     PROPFB (prop aux faces de bord)
-!     Ainsi,
-!      PROPCE(IEL,IPPROC(IROM  (IPHAS))) designe ROM   (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISCL(IPHAS))) designe VISCL (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(ICP   (IPHAS))) designe CP    (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISLS(ISCAL))) designe VISLS (IEL ,ISCAL)
+! Physical quantities are defined in the following arrays:
+!  propce (physical quantities defined at cell center),
+!  propfa (physical quantities defined at interior face center),
+!  propfa (physical quantities defined at border face center).
+!
+! Examples:
+!  propce(iel, ipproc(irom  (iphas))) means rom  (iel, iphas)
+!  propce(iel, ipproc(iviscl(iphas))) means viscl(iel, iphas)
+!  propce(iel, ipproc(icp   (iphas))) means cp   (iel, iphas)
+!  propce(iel, ipproc(ivisls(iscal))) means visls(iel, iscal)
+!  propfa(ifac, ipprof(ifluma(ivar))) means flumas(ifac, ivar)
+!  propfb(ifac, ipprob(irom (iphas))) means romb  (ifac, iphas)
+!  propfb(ifac, ipprob(ifluma(ivar))) means flumab(ifac, ivar)
 
-!      PROPFA(IFAC,IPPROF(IFLUMA(IVAR ))) designe FLUMAS(IFAC,IVAR)
+! Modification of the behaviour law of physical quantities (rom, viscl,
+! viscls, cp) is not done here. It is the purpose of the user subroutine
+! usphyv
 
-!      PROPFB(IFAC,IPPROB(IROM  (IPHAS))) designe ROMB  (IFAC,IPHAS)
-!      PROPFB(IFAC,IPPROB(IFLUMA(IVAR ))) designe FLUMAB(IFAC,IVAR)
+! Cells identification
+! ====================
 
+! Cells may be identified using the 'getcel' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
 
 
-
-
-! LA MODIFICATION DES PROPRIETES PHYSIQUES (ROM, VISCL, VISCLS, CP)
-!     SE FERA EN STANDARD DANS LE SOUS PROGRAMME USPHYV
-!     ET PAS ICI
-
-
-
-! POUR LA COMBUSTION, LE CHARBON, L'INITIALISATION EST FAITE
-!   PAR DEFAUT : IL EST CONSEILLE DE LA CONSERVER.
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
-
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
-! rtp              ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp(ncelet, *)   ! ra ! <-- ! computed variables at cell centers at current  !
+!                  !    !     ! time steps                                     !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -212,6 +174,8 @@ include "period.h"
 
 !===============================================================================
 
+! Arguments
+
 integer          idbia0 , idbra0
 integer          ndim   , ncelet , ncel   , nfac   , nfabor
 integer          nfml   , nprfml
@@ -235,7 +199,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, iutile
@@ -246,7 +210,7 @@ integer          iel, iutile
 !===============================================================================
 
 if(1.eq.1) then
-!       Indicateur de non passage dans le sous-programme
+!       Tag to know if a call to this subroutine has already been done
   iusini = 0
   return
 endif
@@ -256,25 +220,21 @@ endif
 
 
 !===============================================================================
-! 1.  INITIALISATION VARIABLES LOCALES
+! 1.  Initialization of local variables
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 2. INITIALISATION DES INCONNUES :
-!      UNIQUEMENT SI ON NE FAIT PAS UNE SUITE
+! 2. Unknown variables initialization:
+!      ONLY done if there is no restart computation
 !===============================================================================
 
-! --- INCONNUES
-!     Exemple : 1 est le numero du scalaire utilisateur 1
-!                 parmi tous les scalaires (utilisateurs + physiques
-!                 particulieres).
-!               ISCA(1) est le numero de la variable de calcul
-!                 associee.
-!               RTP(IEL,ISCA(1)) est la valeur de la variable
-!                 de calcul dans la cellule IEL.
+! --- Example:  isca(1) is the variable number in RTP related to the first
+!               user-defined scalar variable
+!               rtp(iel,isca(1)) is the value of this variable in cell number
+!               iel.
 
 if (isuite.eq.0) then
 
@@ -286,17 +246,17 @@ endif
 
 
 !===============================================================================
-! 3. PAS DE TEMPS : EXEMPLE
-!       SI ON FAIT UNE SUITE EN PAS DE TEMPS NON UNIFORME ET CONSTANT
-!       ET QU'ON DESIRE MODIFIER LE PAS DE TEMPS STOCKE DANS LE SUITE
-!         (POUR S'AFFRANCHIR D'UNE EVOLUTION TROP PROGRESSIVE PAR EX)
+! 3. Time step:
 !===============================================================================
 
-! ----------------------------------------------
+! --- Example: We do a computation restart with a variable in time and constant
+!              in space time step or with a variable in time and space time
+!              step. We want to modify the time step given by the reading of
+!              the restart file (in order to overcome a too slow evolution
+!              for instance)
 
-! Il est assez courant que l'on oublie d'eliminer cet exemple
-!   de ce sous-programme.
-! On a donc prevu le test suivant pour eviter les mauvaises surprises
+! The test below allows checking that the following example compiles
+! while disabling it by default.
 
 iutile = 0
 
@@ -311,13 +271,13 @@ if(isuite.eq.1.and.(idtvar.eq.1.or.idtvar.eq.2)) then
   enddo
 endif
 
-!----
-! FORMATS
-!----
+!--------
+! Formats
+!--------
 
 !----
-! FIN
+! End
 !----
 
 return
-end
+end subroutine
diff --git a/users/base/usjoin.f90 b/users/base/usjoin.f90
index bcecec9..c9132cb 100644
--- a/users/base/usjoin.f90
+++ b/users/base/usjoin.f90
@@ -42,21 +42,19 @@ subroutine usjoin &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -69,9 +67,10 @@ include "parall.h"
 
 ! Variables locales
 
-integer          nbjoin, ii
+integer          iutile, ii, nbjoin
 integer          iwarnj
-double precision fract, plane, rtf, mtf, etf
+integer          tml, tmb, tcm, icm, maxsf, maxbrk
+double precision fract, plane, mtf, pmf, tmr
 
 !===============================================================================
 
@@ -83,70 +82,125 @@ if(1.eq.1) return
 !===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
-! Parameters (default values)
-! ---------------------------
+! Get the number of joining operations already defined
+! (equal to zero at the moment)
 
-fract = 0.15d0  ! The initial tolerance radius associated to each
-                ! vertex is equal to the lenght of the shortest
-                ! incident edge, multiplied by this fraction.
+call numjoi(nbjoin)
+! ==========
 
-plane = 30.0    ! When subdividing faces, 2 faces are considered
-                ! coplanar and may be joined if angle between their
-                ! unit normals (cosine) does not exceed this parameter.
+! ---------------
+! Main parameters
+! ---------------
 
-iwarnj = 1      ! associated verbosity level
+! The initial tolerance radius associated to each
+! vertex is equal to the lenght of the shortest
+! incident edge, multiplied by this fraction.
+
+fract = 0.10d0
+
+! When subdividing faces, 2 faces are considered
+! coplanar and may be joined if angle between their
+! unit normals (in degree) does not exceed this parameter.
+
+plane = 25.0
+
+! associated verbosity level (debug level if >= 3)
+
+iwarnj = 1
 
-! Advanced parameters
-! -------------------
 
-etf = 0.50d0    ! Edge equivalence tolerance factor
-                ! Used to locally modify the tolerance associated to each
-                ! vertex BEFORE adding equivalences between vertices, and
-                ! after edge intersections.
-                !   = 0 => add no equivalence (may produce very small faces);
-                !   < 1 => reduce the number of equivalences between
-                !          vertices sharing the same edge (more stable);
-                !   = 1 => no change;
-                !   > 1 => increase the number of equivalences between
-                !          vertices sharing the same edge (more merges).
-                !          Not recommmended.
-
-rtf = 0.85d0    ! Reduction tolerance factor during vertices merge
-                ! Used when the combination of merges would lead to a
-                ! resulting merged vertex from a set of vertices not lying
-                ! within the initial tolerance radius of at least one of
-                ! its parent vertices.
-                ! new tol. = tol * coef. Values between [0.0, 1.0[
-
-mtf = 1.00d0    ! Merge tolerance factor
-                ! Used to locally modify the tolerance associated to each
-                ! vertex AFTER adding equivalences between vertices.
-                !   = 0 => add no equivalence (may produce very small faces);
-                !   < 1 => reduce the number of equivalences between
-                !          vertices sharing the same edge (more stable);
-                !   = 1 => no change;
-                !   > 1 => increase the number of equivalences between
-                !          vertices sharing the same edge (more merges).
-                !          Not recommmended.
+! Joining definition
+
+nbjoin = nbjoin + 1
+call defjoi(nbjoin, '98 or 99', fract, plane, iwarnj)
+!==========
+
 
 ! -------------------
-! Joinings definition
+! Advanced parameters
 ! -------------------
 
-nbjoin = 1 ! Number of joinings
+! Use advanced parameters in case of problem during the joining step
+! or to get a better mesh quality
 
-do ii = 1, nbjoin
+! Merge tolerance factor
+! Used to locally modify the tolerance associated to each
+! vertex BEFORE the merge step.
+!   = 0 => no vertex merge;
+!   < 1 => vertex merge is more strict. It may increase the number
+!          of tolerance reduction and so define smaller subset of
+!          vertices to merge together but it can drive to loose
+!          intersections;
+!   = 1 => no change;
+!   > 1 => vertex merge is less strict. The subset of vertices able
+!          to be merged together is greater.
 
-  if (ii .eq. 1) then
+mtf = 1.00d0
 
-    call defjoi('98 or 99', fract, plane, rtf, mtf, etf, iwarnj)
-    !==========
+! Pre-merge factor. This parameter is used to define a limit
+! under which two vertices are merged before the merge step.
+! Tolerance limit for the pre-merge = pmf * fraction
 
-  endif
+pmf = 0.10d0
 
-enddo
+! Tolerance computation mode: tcm
+!
+!   1: (default) tol = min. edge length related to a vertex * fraction
+!   2: tolerance is computed like in mode 1 with in addition, the
+!      multiplication by a coef. which is equal to the max sin(e1, e2)
+!      where e1 and e2 are two edges sharing the same vertex V for which
+!      we want to compute the tolerance
+!  11: like 1 but only in taking into account only the selected faces
+!  12: like 2 but only in taking into account only the selected faces
 
-return
+tcm = 1
 
-end subroutine
+! Intersection computation mode: icm
+!  1: (default) Original algorithm. Try to clip intersection on extremity
+!  2: New intersection algorithm. Avoid to clip intersection on extremity
+
+icm = 1
+
+! Maximum number of equivalence breaks which is
+! enabled during the merge step
+
+maxbrk = 500
 
+! Maximum number of sub-faces when splitting a selected face
+
+maxsf = 100
+
+! tml, tmb and tmr are parameters of the searching algorithm for
+! face intersections between selected faces (octree structure).
+! Useful if there is a memory limitation.
+
+! Tree Max Level: deepest level reachable during the tree building
+
+tml = 30
+
+! Tree Max. Boxes: max. number of bounding boxes (BB) which can be
+! linked to a leaf of the tree (not necessary true for the deepest level)
+
+tmb = 25
+
+! Tree Max. Ratio: stop to build the tree structure when
+! number of BB linked in the tree > tmr * initial number of BB
+! Efficient parameter to reduce memory consumption.
+
+tmr = 5.0
+
+
+! Advanced parameters setup
+
+! Each ii'th call to the advanced parameters setup routine stands
+! the joining number in their order of definition.
+
+iutile = 0
+if (iutile.eq.1) then
+  ii = 1
+  call setajp(ii, mtf, pmf, tcm, icm, maxbrk, maxsf, tml, tmb, tmr)
+  !==========
+endif
+
+return
+end subroutine
diff --git a/users/base/uskpdc.f90 b/users/base/uskpdc.f90
index d380aad..be84595 100644
--- a/users/base/uskpdc.f90
+++ b/users/base/uskpdc.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -90,129 +90,92 @@ subroutine uskpdc &
 !           ON A CHOISI DE REPRESENTER LA ZONE DE PDC SINGULIERE
 
 
-! IDENTIFICATION DES CELLULES/FACES DE BORD/FACES INTERNES
-! ========================================================
+! Cells identification
+! ====================
 
-!  Les commandes GETCEL, GETFBR et GETFAC permettent d'identifier
-!  respectivement les cellules, faces ou faces de bord en fonction
-!  de differents criteres.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
-
-!  La syntaxe des commandes GETFBR et GETFAC est identique.
+! Cells may be identified using the 'getcel' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
 
 
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! iappel           ! e  ! <-- ! indique les donnes a renvoyer                  !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncepdp    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -256,7 +219,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision ckupdc(ncepdp,6)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, ielpdc, iphas, ikpdc
@@ -267,6 +230,17 @@ double precision alpha, cosalp, sinalp, vit, ck1, ck2
 
 !===============================================================================
 
+! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
+!===============================================================================
+
+if(1.eq.1) return
+
+!===============================================================================
+! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
+
+
+!===============================================================================
+
 idebia = idbia0
 idebra = idbra0
 
@@ -453,4 +427,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/users/base/usmodg.f90 b/users/base/usmodg.f90
index 1ee04e1..70ea2cb 100644
--- a/users/base/usmodg.f90
+++ b/users/base/usmodg.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,50 +46,41 @@ subroutine usmodg &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! --- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! --- ! longueur du tableau nodfbr (optionnel          !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! --- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! --- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! --- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! --- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! xyznod           ! tr ! --- ! coordonnes des noeuds (optionnel)              !
 ! (ndim,nnod)      !    !     !                                                !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -115,7 +106,7 @@ integer          ipnfbr(nfabor+1), nodfbr(lndfbr)
 
 double precision xyznod(ndim,nnod)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          iutile
 integer          inod
@@ -171,4 +162,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/users/base/usmpst.f90 b/users/base/usmpst.f90
index 5c26192..645ba49 100644
--- a/users/base/usmpst.f90
+++ b/users/base/usmpst.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,120 +45,108 @@ subroutine usmpst &
    dt     , rtpa   , rtp    , propce , propfa , propfb ,          &
    coefa  , coefb  , statis ,                                     &
    tracel , trafac , trafbr , rdevel , rtuser , ra     )
+
 !===============================================================================
-! FONCTION :
-! --------
-
-! ROUTINE UTILISATEUR POUR LA MODIFICATION DES LISTES DE CELLULES
-! OU FACES INTERNES ET DE BORD DEFINISSANT UN MAILLAGE DE POST
-! TRAITEMENT EXISTANT ; CETTE ROUTINE EST APPELEE AUX PAS DE
-! TEMPS AUQUEL CE MAILLAGE EST ACTIF, ET UNIQUEMENT POUR LES
-! MAILLAGES POST UTILISATEUR PRINCIPAUX (NON ALIAS), SI TOUS LES
-! "WRITERS" ASSOCIES A CE MAILLAGE OU SES ALIAS PERMETTENT
-! CETTE MODIFICATION
+! Purpose:
+! -------
+
+!    User subroutine.
+
+! Modify list of cells or faces defining an existing post-processing
+! output mesh; this subroutine is called for true (non-alias) user meshes,
+! for each time step at which output on this mesh is active, and only if
+! all writers associated with this mesh allow mesh modification
+! (i.e. were defined with 'indmod' = 2 or 12).
+
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ipart            ! e  ! <-- ! numero du maillage post                        !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nvlsta           ! e  ! <-- ! nombre de variables stat. lagrangien           !
-! ncelps           ! e  ! <-- ! nombre de cellules du maillage post            !
-! nfacps           ! e  ! <-- ! nombre de faces interieur post                 !
-! nfbrps           ! e  ! <-- ! nombre de faces de bord post                   !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! imodif           ! e  ! <-- ! 0 si maillage non modifie par cette            !
-!                  !    !     ! fonction, 1 si modifie                         !
-! itypps(3)        ! te ! <-- ! indicateur de presence (0 ou 1) de             !
-!                  !    !     ! cellules (1), faces (2), ou faces de           !
-!                  !    !     ! de bord (3) dans le maillage post              !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! lstcel(ncelps    ! te ! <-- ! liste des cellules du maillage post            !
-! lstfac(nfacps    ! te ! <-- ! liste des faces interieures post               !
-! lstfbr(nfbrps    ! te ! <-- ! liste des faces de bord post                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! te ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet)         !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! statis           ! tr ! <-- ! statistiques (lagrangien)                      !
-!ncelet,nvlsta)    !    !     !                                                !
-! tracel(*)        ! tr ! <-- ! tab reel valeurs cellules post                 !
-! trafac(*)        ! tr ! <-- ! tab reel valeurs faces int. post               !
-! trafbr(*)        ! tr ! <-- ! tab reel valeurs faces bord post               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ipart            ! i  ! <-- ! number of the post-processing mesh (< 0 or > 0)!
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nvlsta           ! i  ! <-- ! number of Lagrangian statistical variables     !
+! ncelps           ! i  ! <-- ! number of cells in post-processing mesh        !
+! nfacps           ! i  ! <-- ! number of interior faces in post-process. mesh !
+! nfbrps           ! i  ! <-- ! number of boundary faces in post-process. mesh !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! imodif           ! i  ! --> ! 0 if the mesh was not modified by this call,   !
+!                  !    !     ! 1 if it has been modified.                     !
+! itypps(3)        ! ia ! <-- ! global presence flag (0 or 1) for cells (1),   !
+!                  !    !     ! interior faces (2), or boundary faces (3) in   !
+!                  !    !     ! post-processing mesh                           !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! lstcel(ncelps)   ! ia ! --> ! list of cells in post-processing mesh          !
+! lstfac(nfacps)   ! ia ! --> ! list of interior faces in post-processing mesh !
+! lstfbr(nfbrps)   ! ia ! --> ! list of boundary faces in post-processing mesh !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! statis           ! ra ! <-- ! statistic means                                !
+!  (ncelet, nvlsta)!    !     !                                                !
+! tracel(*)        ! ra ! --- ! work array for post-processed cell values      !
+! trafac(*)        ! ra ! --- ! work array for post-processed face values      !
+! trafbr(*)        ! ra ! --- ! work array for post-processed boundary face v. !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -205,27 +193,24 @@ double precision trafac(nfacps*3), trafbr(nfbrps*3)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ifac  , iphas
 integer          ii   , jj
 double precision vmin2, v2, w2
 
-
 !===============================================================================
 
-!     Remarque : le tableau ITYPPS permet de savoir si le maillage post
-!                contient a l'origine des cellules, des faces internes,
-!                ou des faces de bord (sur l'ensemble des processeurs).
+! Note:
+
+! The 'itypps" array allows determining if the mesh contains at first cells,
+! interior faces, or boundary faces (in a global sense when in parallel).
 
-!                Ceci permet d'avoir un traitement "generique" qui
-!                peut fonctionner pour tous les numeros de maillage,
-!                mais si le maillage post est vide a un instant de
-!                post traitement donne, on ne saura plus s'il contenait
-!                des cellules ou faces. Dans ce cas, il est preferable
-!                d'utiliser explicitement le numero du maillage post
-!                pour bien determiner s'il doit contenir des cellules
-!                ou des faces.
+! This enables using "generic" selection criteria, which may function on any
+! post-processing mesh, but if such a mesh is empty for a given call to this
+! function, we will not know at the next call if it contained cells of faces.
+! In this case, it may be preferable to use its number to decide if it should
+! contain cells or faces.
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
@@ -240,11 +225,8 @@ if(1.eq.1) return
 !         A RENSEIGNER PAR L'UTILISATEUR aux endroits indiques
 !===============================================================================
 
-!     Exemple :
-!               pour les maillage post utilisateur, on ne conserve que
-!               les mailles auxquelles la vitesse est superieure �
-!               un seuil donne.
-
+! Example: for user meshes 3 and 4, we only keep the cells of faces
+!          at which the velocity is greater than a given threshold.
 
 if (ipart.eq.3) then
 
@@ -256,8 +238,8 @@ if (ipart.eq.3) then
 
   vmin2 = (0.5d0)**2
 
-!       SI LE MAILLAGE POST CONTIENT DES CELLULES
-!       -----------------------------------------
+  ! If the mesh contains cells
+  ! --------------------------
 
   if (itypps(1) .eq. 1) then
 
@@ -274,8 +256,8 @@ if (ipart.eq.3) then
 
     enddo
 
-!       SI LE MAILLAGE POST CONTIENT DES FACES INTERNES
-!       -----------------------------------------------
+  ! If the mesh contains interior faces
+  ! -----------------------------------
 
   else if (itypps(2) .eq. 1) then
 
@@ -286,9 +268,11 @@ if (ipart.eq.3) then
       ii = ifacel(1, ifac)
       jj = ifacel(2, ifac)
 
-      v2 =   rtp(ii, iu(iphas))**2 + rtp(ii, iv(iphas))**2        &
+      v2 =   rtp(ii, iu(iphas))**2   &
+           + rtp(ii, iv(iphas))**2   &
            + rtp(ii, iw(iphas))**2
-      w2 =   rtp(jj, iu(iphas))**2 + rtp(jj, iv(iphas))**2        &
+      w2 =   rtp(jj, iu(iphas))**2   &
+           + rtp(jj, iv(iphas))**2   &
            + rtp(jj, iw(iphas))**2
 
       if (v2 .ge. vmin2 .or. w2 .ge. vmin2) then
@@ -298,8 +282,8 @@ if (ipart.eq.3) then
 
     enddo
 
-!       SI LE MAILLAGE POST CONTIENT DES FACES DE BORD
-!       ----------------------------------------------
+  ! If the mesh contains boundary faces
+  ! -----------------------------------
 
   else if (itypps(3) .eq. 1) then
 
@@ -309,7 +293,8 @@ if (ipart.eq.3) then
 
       ii = ifabor(ifac)
 
-      v2 =   rtp(ii, iu(iphas))**2 + rtp(ii, iv(iphas))**2        &
+      v2 =   rtp(ii, iu(iphas))**2   &
+           + rtp(ii, iv(iphas))**2   &
            + rtp(ii, iw(iphas))**2
 
       if (v2 .ge. vmin2) then
@@ -319,9 +304,7 @@ if (ipart.eq.3) then
 
     enddo
 
-  endif
-
-!       Fin du test sur le type de mailles deja existantes
+  endif ! End of test on pre-existing mesh element types
 
 else if (ipart.eq.4) then
 
@@ -333,8 +316,8 @@ else if (ipart.eq.4) then
 
   vmin2 = (0.5d0)**2
 
-!       SELECTION DES FACES INTERNES
-!       ----------------------------
+  ! Select interior faces
+  ! ---------------------
 
   do ifac = 1, nfac
 
@@ -343,12 +326,14 @@ else if (ipart.eq.4) then
     ii = ifacel(1, ifac)
     jj = ifacel(2, ifac)
 
-    v2 =   rtp(ii, iu(iphas))**2 + rtp(ii, iv(iphas))**2          &
+    v2 =   rtp(ii, iu(iphas))**2   &
+         + rtp(ii, iv(iphas))**2   &
          + rtp(ii, iw(iphas))**2
-    w2 =   rtp(jj, iu(iphas))**2 + rtp(jj, iv(iphas))**2          &
+    w2 =   rtp(jj, iu(iphas))**2   &
+         + rtp(jj, iv(iphas))**2   &
          + rtp(jj, iw(iphas))**2
 
-    if (     (v2 .ge. vmin2 .and. w2 .lt. vmin2)                  &
+    if (     (v2 .ge. vmin2 .and. w2 .lt. vmin2)         &
         .or. (v2 .lt. vmin2 .and. w2 .ge. vmin2)) then
       nfacps = nfacps + 1
       lstfac(nfacps) = ifac
@@ -356,8 +341,8 @@ else if (ipart.eq.4) then
 
   enddo
 
-!       SELECTION DES FACES DE BORD
-!       ---------------------------
+  ! Select boundary faces
+  ! ---------------------
 
   do ifac = 1, nfabor
 
@@ -365,7 +350,8 @@ else if (ipart.eq.4) then
 
     ii = ifabor(ifac)
 
-    v2 =   rtp(ii, iu(iphas))**2 + rtp(ii, iv(iphas))**2          &
+    v2 =   rtp(ii, iu(iphas))**2   &
+         + rtp(ii, iv(iphas))**2   &
          + rtp(ii, iw(iphas))**2
 
     if (v2 .ge. vmin2) then
@@ -375,10 +361,8 @@ else if (ipart.eq.4) then
 
   enddo
 
-endif
-!     Fin du test sur le numero de maillage post.
-
+endif ! end of test on post-processing mesh number
 
 return
 
-end
+end subroutine
diff --git a/users/base/usnpst.f90 b/users/base/usnpst.f90
index 9874786..d4a4c54 100644
--- a/users/base/usnpst.f90
+++ b/users/base/usnpst.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,125 +45,101 @@ subroutine usnpst &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-!  FONCTION  :
-!  ---------
+! Purpose:
+! -------
 
-! ROUTINE UTILISATEUR : CHOIX DE REALISER DES SORTIES DE
-!                       POST-TRAITEMENT AU PAS DE TEMPS COURANT
+!    User subroutine.
 
+!    Force or inhibit post-processing output at the current time step.
 
-! CE SOUS-PROGRAMME EST APPELE A LA FIN DE CHAQUE PAS DE TEMPS.
+! This subroutine is called at the end of each time step.
 
+! We pass all the usual arguments to this routine to allow writing of complex
+! tests if necessary (for example, output when a given variable reaches a
+! given threshold).
 
-! QUELS QUE SOIENT LES CHOIX REALISES DANS CE SOUS-PROGRAMME ,
-!    IL Y AURA TOUJOURS UNE SORTIE POST-TRAITEMENT EN FIN DE CALCUL
-
-
-! ON PASSE UN MAXIMUM D'ARGUMENTS POUR PERMETTRE DE REALISER DES
-!    TESTS COMPLEXES SI BESOIN (SORTIE A UN INSTANT DONNE,
-!    SORTIE LORSQUE QU'UNE VARIABLE PREND UNE VALEUR DONNEE...)
-
-! ON DISPOSE PAR AILLEURS DES INFORMATIONS SUIVANTES DANS LES
-!    COMMONS DU FICHIER optcal.h
-
-! ! NTPABS       ! E  ! <-- ! NUMERO ABSOLU DU DERNIER PAS DE TEMPS          !
-! !              !    !     !  DU CALCUL PRECEDENT EN CAS DE SUITE           !
-! !              !    !     !  (SINON = 0)                                   !
-! ! NTCABS       ! E  ! <-- ! NUMERO ABSOLU DU PAS DE TEMPS COURANT          !
-! ! NTMABS       ! E  ! <-- ! NUMERO ABSOLU DU DERNIER PAS DE TEMPS          !
-! !              !    !     !  VISE                                          !
-! ! TTPABS       ! E  ! <-- ! TEMPS  ABSOLU DU DERNIER PAS DE TEMPS          !
-! !              !    !     !  DU CALCUL PRECEDENT EN CAS DE SUITE           !
-! !              !    !     !  (SINON = 0)                                   !
-! ! TTCABS       ! E  ! <-- ! TEMPS  ABSOLU DU PAS DE TEMPS COURANT          !
+! We may also use the following variables from optcal.h:
 
+! ntpabs <-- Absolute number of the last time step of the previous calculation
+!            in case of restart (0 otherwise)
+! ntcabs <-- Absolute number of the current time step
+! ntmabs <-- Absolute number of the last desired time step
+! ttpabs <-- Absolute time of at the end of the previous calculation
+!            in case of restart (0 otherwise)
+! ttcabs <-- Absolute time at the current time step
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nvlsta           ! e  ! <-- ! nombre de variables stat. lagrangien           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nvlsta           ! i  ! <-- ! number of Lagrangian statistical variables     !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -202,28 +178,27 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision statis(ncelet,nvlsta)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          indwri, indact
 
 !===============================================================================
-!  ACTIVATION OU DESACTIVATION DES SORTIES
+! Activate or inhibit output
 !===============================================================================
 
-!  ON ACTIVE LES SORTIES PAR DEFAUT AUX PAS DE TEMPS MULTIPLES
-!  DES FREQUENCES DE SORTIE DES WRITERS DIVERS
+! For any given writer, default output is activated for time steps which are
+! multiples of the writer's output frequency.
 
 call pstntc(ntcabs)
 !==========
 
-!  ON PEUT FORCER L'ACTIVATION OU LA DESACTIVATION DES DIFFERENTS
-!  WRITERS A UN PAS DE TEMPS DONNE:
+! We may force the activation or deactivation of a given writer at a
+! given time step:
 
-!     INDWRI = 0 pour traiter tous les writers, ou le numero
-!              d'un writer particulier pour le traiter independamment
+! indwri = 0 to activate all writers, or a writer number for a specific writer
+! indact = 1 to activate for the current time step, 0 to deactivate.
 
-!     INDACT = 1 pour forcer l'activation a ce pas de temps
-!              0 pour forcer la desactivation a ce pas de temps
+! By default, all writers are active at the last time step:
 
 if (ntcabs .eq. ntmabs) then
   indwri = 0
@@ -233,4 +208,4 @@ if (ntcabs .eq. ntmabs) then
 endif
 
 return
-end
+end subroutine
diff --git a/users/base/usphyv.f90 b/users/base/usphyv.f90
index 73ce884..5be6aae 100644
--- a/users/base/usphyv.f90
+++ b/users/base/usphyv.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -109,95 +109,88 @@ subroutine usphyv &
 !    le strict necessaire.
 
 
+! Cells identification
+! ====================
+
+! Cells may be identified using the 'getcel' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -239,7 +232,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ivart, iclvar, iel, iphas
@@ -873,4 +866,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/users/base/usproj.f90 b/users/base/usproj.f90
index 61f8f3a..aecb5e6 100644
--- a/users/base/usproj.f90
+++ b/users/base/usproj.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,184 +47,166 @@ subroutine usproj &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
+! Purpose:
+! -------
 
-! MODIFICATION UTILISATEUR EN FIN DE PAS DE TEMPS
-!   TOUT EST POSSIBLE,
+!    User subroutine.
 
+!    Called at end of each time step, very general purpose
+!    (i.e. anything that does not have another dedicated user subroutine)
 
-! ON DONNE ICI PLUSIEURS EXEMPLES :
 
-!  - CALCUL DE BILAN THERMIQUE
-!    (au besoin, voir "ADAPTATION A UN SCALAIRE QUELCONQUE")
+! Several examples are given here:
 
-!  - CALCUL DES EFFORTS GLOBAUX SUR UN SOUS-ENSEMBLE DE FACES
+!  - compute a thermal balance
+!    (if needed, see note  below on adapting this to any scalar)
 
-!  - MODIFICATION ARBITRAIRE D'UNE VARIABLE DE CALCUL
+!  - compute global efforts on a subset of faces
 
-!  - EXTRACTION D'UN PROFIL 1D
+!  - arbitrarily modify a calculation variable
 
-!  - IMPRESSION D'UN MOMENT
+!  - extract a 1 d profile
 
-!  - EXEMPLES D'UTILISATION DES ROUTINES DE PARALLELISME
+!  - print a moment
 
-! CES EXEMPLES SONT DONNES EN SUPPOSANT UN CAS AVEC PERIODICITE
-!  (IPERIO    .GT.0) ET PARALLELISME (IRANGP.GE.0).
+!  - examples on using parallel utility functions
 
+! These examples are valid when using periodicity (iperio .gt. 0)
+! and in parallel (irangp .ge. 0).
 
-! LE CALCUL DE BILAN THERMIQUE FOURNIT EN OUTRE UNE TRAME POUR
-!  PLUSIEURS CHOSES
-!  - CALCUL DE GRADIENT (AVEC LES PRECAUTIONS UTILES EN PARALLELE ET
-!    PERIODIQUE)
-!  - CALCUL DE GRANDEUR DEPENDANT DES VALEURS AUX CELLULES VOISINES
-!    D'UNE FACE (AVEC LES PRECAUTIONS A PRENDRE EN PARALLELE ET
-!    PERIODIQUE : VOIR L'ECHANGE DE DT ET DE CP)
-!  - CALCUL D'UNE SOMME SUR LES PROCESSEURS LORS D'UN CALCUL
-!    PARALLELE (PARSOM)
+! The thermal balance compution also illustates a few other features,
+! including the required precautions in parallel or with periodicity):
+! - gradient calculation
+! - computation of a value depending on cells adjacent to a face
+!   (see synchronization of Dt and Cp)
+! - computation of a global sum in parallel (parsom)
 
 
-! IDENTIFICATION DES CELLULES/FACES DE BORD/FACES INTERNES
-! ========================================================
+! Cells, boundary faces and interior faces identification
+! =======================================================
 
-!  Les commandes GETCEL, GETFBR et GETFAC permettent d'identifier
-!  respectivement les cellules, faces ou faces de bord en fonction
-!  de differents criteres.
+! Cells, boundary faces and interior faces may be identified using
+! the subroutines 'getcel', 'getfbr' and 'getfac' (respectively).
 
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
+!  getfbr(string, nelts, eltlst):
+!  - string is a user-supplied character string containing selection criteria;
+!  - nelts is set by the subroutine. It is an integer value corresponding to
+!    the number of boundary faces verifying the selection criteria;
+!  - lstelt is set by the subroutine. It is an integer array of size nelts
+!    containing the list of boundary faces verifying the selection criteria.
 
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+!  string may contain:
+!  - references to colors (ex.: 1, 8, 26, ...)
+!  - references to groups (ex.: inlet, group1, ...)
+!  - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!  These criteria may be combined using logical operators ('and', 'or') and
+!  parentheses.
+!  Example: '1 and (group2 or group3) and y < 1' will select boundary faces
+!  of color 1, belonging to groups 'group2' or 'group3' and with face center
+!  coordinate y less than 1.
 
-!  La syntaxe des commandes GETFBR et GETFAC est identique.
+! Similarly, interior faces and cells can be identified using the 'getfac'
+! and 'getcel' subroutines (respectively). Their syntax are identical to
+! 'getfbr' syntax.
+
+! For a more thorough description of the criteria syntax, it can be referred
+! to the user guide.
 
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particules autorise              !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
-! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
-! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (lndfac)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!  (nfabor+1)      !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (lndfbr  )     !    !     !  (optionnel)                                   !
-! itepa            ! te ! <-- ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape precedente              !
-! tepa             ! tr ! <-- ! info particulaires (reels)                     !
-! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! statis           ! tr ! <-- ! moyennes statistiques                          !
-!(ncelet,nvlsta    !    !     !                                                !
-! stativ           ! tr ! <-- ! cumul pour les variances des                   !
-!(ncelet,          !    !     !    statistiques volumiques                     !
-!   nvlsta-1)      !    !     !                                                !
-! tslagr           ! tr ! <-- ! terme de couplage retour du                    !
-!(ncelet,ntersl    !    !     !   lagrangien sur la phase porteuse             !
-! parbor           ! tr ! <-- ! infos sur interaction des particules           !
-!(nfabor,nvisbr    !    !     !   aux faces de bord                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! max. number of particles allowed               !
+! nvp              ! i  ! <-- ! number of particle-defined variables           !
+! nvep             ! i  ! <-- ! number of real particle properties             !
+! nivep            ! i  ! <-- ! number of integer particle properties          !
+! ntersl           ! i  ! <-- ! number of return coupling source terms         !
+! nvlsta           ! i  ! <-- ! number of Lagrangian statistical variables     !
+! nvisbr           ! i  ! <-- ! number of boundary statistics                  !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! itepa            ! ia ! <-- ! integer particle attributes                    !
+!  (nbpmax, nivep) !    !     !   (containing cell, ...)                       !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! ettp, ettpa      ! ra ! <-- ! particle-defined variables                     !
+!  (nbpmax, nvp)   !    !     !  (at current and previous time steps)          !
+! tepa             ! ra ! <-- ! real particle properties                       !
+!  (nbpmax, nvep)  !    !     !  (statistical weight, ...                      !
+! statis           ! ra ! <-- ! statistic means                                !
+!  (ncelet, nvlsta)!    !     !                                                !
+! stativ(ncelet,   ! ra ! <-- ! accumulator for variance of volume statisitics !
+!        nvlsta -1)!    !     !                                                !
+! tslagr           ! ra ! <-- ! Lagrangian return coupling term                !
+!  (ncelet, ntersl)!    !     !  on carrier phase                              !
+! parbor           ! ra ! <-- ! particle interaction properties                !
+!  (nfabor, nvisbr)!    !     !  on boundary faces                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -281,7 +263,7 @@ double precision tslagr(ncelet,ntersl)
 double precision parbor(nfabor,nvisbr)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel    , ielg   , ifac   , ifacg  , ivar
@@ -316,37 +298,34 @@ double precision xfor(3), xyz(3), xabs, xu, xv, xw, xk, xeps
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
 
-if(1.eq.1) return
+if (1.eq.1) return
 
 !===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
-
 !===============================================================================
-! 1. INITIALISATION
+! 1.  Initialization
 !===============================================================================
 
-! ---> Gestion memoire
+! Memory management
 
 idebia = idbia0
 idebra = idbra0
 
-
 !===============================================================================
-! 2. EXEMPLE : CALCUL DE BILAN D'ENERGIE RELATIF A LA TEMPERATURE
-!    ------------------------------------------------------------
+! 2. Example: compute energy balance relative to temperature
+!    -------------------------------------------------------
 
-!   On suppose que l'on souhaite faire des bilans (convectifs et
-!     diffusifs) aux frontieres du domaine de calcul represente
-!     ci-dessous (frontieres reperees par leurs couleurs).
+! We assume that we want to compute balances  (convective and diffusive)
+! at the boundaries of the calculation domain represented below
+! (with boundaries marked by colors).
 
-!   Le scalaire considere est la temperature. On fera egalement
-!     intervenir la chaleur massique (pour obtenir des bilans en Joules).
+! The scalar considered if the temperature. We will also use the
+! specific heat (to btain balances in Joules)
 
 
-
-!   Domaine et couleurs
-!   -------------------
+! Domain and associated boundary colors
+! -------------------------------------
 !                  6
 !      --------------------------
 !      |                        |
@@ -358,669 +337,599 @@ idebra = idbra0
 
 !         2  3             4
 
+! 2, 4, 7 : adiabatic walls
+! 6       : wall with fixed temperature
+! 3       : inlet
+! 5       : outlet
+! 1       : symmetry
 
-!    2, 4, 7 : parois adiabatiques
-!    6       : paroi  a temperature imposee
-!    3       : entree
-!    5       : sortie
-!    1       : symetrie
-
-
-!  ---------------------------------------------------------------------
-
-!     POUR LA SIGNIFICATION PHYSIQUE DE CALCULS, IL EST UTILE D'ADOPTER
-!       UN PAS DE TEMPS UNIFORME EN ESPACE (IDTVAR = 0 OU 1)
-!     EN OUTRE, MEME EN SUITE DE CALCUL, LE BILAN EST FAUX SI INPDT0=1
-!       (VISCT NON INITIALISE ET T(n-1) NON CONNU)
-
-!  ---------------------------------------------------------------------
-
-!     VARIABLE TEMPERATURE : IVAR = ISCA(ISCALT) (utiliser RTP(IEL,IVAR))
-
-!  ---------------------------------------------------------------------
-
-!     LE BILAN A L'INSTANT N VAUT :
+!-------------------------------------------------------------------------------
 
+! To ensure calculations have physical meaning, it is best to use
+! a spatially unifor time step (idtvar = 0 or 1).
+! In addition, when restarting a calculation, the balance is
+! incorrect if inpdt0 = 1 (visct not initialized and t(n-1) not known)
 
-!       n   iel=ncelet                n-1
-!  BILAN  = SOMME { VOLUME(iel)*CP*ROM(iel)
-!           iel=1
-!                                      *(RTPA(iel,ivar)-RTP(iel,ivar)) }
+!-------------------------------------------------------------------------------
 
-!           ifac=nfabor
-!         + SOMME { SURFBN(ifac)*DT(IFABOR(ifac))*CP
-!           ifac=1
+! Temperature variable: ivar = isca(iscalt) (use rtp(iel, ivar))
 
-!              * [ VISLS0(ISCALT) + VISCT(IFABOR(ifac))/SIGMAS(ISCALT) ]
-!              / DISTBR(ifac)
-!              * [ COEFA(ifac,ICLVAR)
-!                   + (COEFB(ifac,ICLVAR)-1.D0)*RTP(IFABOR(ifac,ivar)) ] }
+!-------------------------------------------------------------------------------
 
-!           ifac=nfabor
-!         + SOMME { DT(IFABOR(ifac))*CP
-!           ifac=1
-!                              *RTP(IFABOR(ifac,ivar))*(-FLUMAB(ifac)) }
+! The balance at time step n is equal to:
 
+!        n        iel=ncelet           n-1
+! balance  =   sum { volume(iel)*cp*rom(iel)*(rtpa(iel,ivar)-rtp(iel,ivar)) }
+!                 iel=1
 
-!  Le premier terme (nul en stationnaire) est negatif si la quantite
-!    d'energie a decru dans le volume.
-!  Les autres termes (convection, diffusion) sont positifs si la
-!    quantite d'energie a augmente dans le volume par les
-!    apports des conditions aux limites.
+!                 ifac=nfabor
+!            + sum {
+!                 ifac=1
 
-!  En regime stationnaire, un bilan positif indique donc
-!   un gain d'energie.
+!                     surfbn(ifac)*dt(ifabor(ifac))*cp
+!                   * [visls0(iscalt) + visct(ifabor(ifac))/sigmas(iscalt) ]
+!                   / distbr(ifac)
+!                   * [  coefa(ifac,iclvar)
+!                      + (coefb(ifac,iclvar)-1.d0)*rtp(ifabor(ifac,ivar))]
+!                  }
 
-!  ---------------------------------------------------------------------
+!                 ifac=nfabor
+!            + sum {
+!                 ifac=1
+!                     dt(ifabor(ifac))*cp
+!                   * rtp(ifabor(ifac,ivar))*(-flumab(ifac))
+!                  }
 
+! The first term is negative if the amount of energy in the volume
+! has decreased (it is 0 in a steady regime).
 
-!   AVEC ROM CALCULE PAR LA LOI REGISSANT LA MASSE VOLUMIQUE DANS USPHYV,
-!     SOIT, PAR EXEMPLE :
-!           n-1
-!        ROM (iel) = P0 / [ RR * ( RTPA(iel,IVAR) + TKELV ) ]
+! The other terms (convection, diffusion) are positive if the amount
+! of energy in the volume has increased due to boundary conditions.
 
+! In a steady regime, a positive balance thus indicates an energy gain.
 
-!  ---------------------------------------------------------------------
+!-------------------------------------------------------------------------------
 
-!    CP ET LAMBDA/CP PEUVENT ETRE VARIABLES
+! With 'rom' calculated using the density law from the usphyv subroutine,
+! for example:
 
-!  ---------------------------------------------------------------------
-!  ---------------------------------------------------------------------
+!    n-1
+! rom(iel) = p0 / [rr * (rtpa(iel,ivar) + tkelv)]
 
+!-------------------------------------------------------------------------------
 
+! Cp and lambda/Cp may be variable
 
+!-------------------------------------------------------------------------------
 
-!    ADAPTATION A UN SCALAIRE QUELCONQUE
-!    -----------------------------------
+! Adaptation to an arbitrary scalar
+! ---------------------------------
 
-!    L'approche peut s'utiliser pour realiser le bilan d'un scalaire
-!      quelconque (mais les bilans ne sont plus attendus en Joules et
-!      la chaleur massique n'intervient donc plus)
+! The approach may be used for the balance of any other scalar (but the
+! balances are not in Joules and the specific heat is not used)
 
-!    Pour cela :
+! In this case:
 
-!      - remplacer ISCALT(IPHAS) par le numero ISCAL du scalaire souhaite
-!        ISCAL pouvant varier de 1 a NSCAL
+! - replace iscalt(iphas) by the number iscal of the required scalar,
+!   iscal having an allowed range of 1 to nscal.
 
-!      - positionner IPCCP a 0 independamment de la valeur de ICP(IPHAS)
-!        et affecter la valeur 1 a  CP0IPH (au lieu de CP0(IPHAS)).
+! - set ipccp to 0 independently of the value of icp(iphas) and assign
+!   1 to cp0iph (instead of cp0(iphas)).
 
 !===============================================================================
 
+! The balance is not valid if inpdt0=1
 
-!  Le bilan n'est pas valable si INPDT0=1
 if (inpdt0.eq.0) then
 
+  ! 2.1 Initialization
+  ! ==================
+
+  ! --> Local variables
+  !     ---------------
+
+  ! xbilvl: volume contribution of unsteady terms
+  ! xbildv: volume contribution due to to term in div(rho u)
+  ! xbilpa: contribution from adiabatic walls
+  ! xbilpt: contribution from walls with fixed temperature
+  ! xbilsy: contribution from symmetry boundaries
+  ! xbilen: contribution from inlets
+  ! xbilso: contribution from outlets
+  ! xbilmi: contribution from mass injections
+  ! xbilma: constribution from mass suctions
+  ! xbilan: total balance
+
+  xbilvl = 0.d0
+  xbildv = 0.d0
+  xbilpa = 0.d0
+  xbilpt = 0.d0
+  xbilsy = 0.d0
+  xbilen = 0.d0
+  xbilso = 0.d0
+  xbilmi = 0.d0
+  xbilma = 0.d0
+  xbilan = 0.d0
+
+  iphas = 1   ! We only consider phase 1 in this example
+
+  iscal = iscalt(iphas)         ! temperature scalar number
+  ivar =  isca(iscal)           ! temperature variable number
+  iclvar = iclrtp(ivar,icoef)   ! boundary condition number
+
+  ! Physical quantity numbers
+  ipcrom = ipproc(irom(iphas))
+  ipcvst = ipproc(ivisct(iphas))
+  iflmas = ipprof(ifluma(ivar))
+  iflmab = ipprob(ifluma(ivar))
+
+  ! We save in ipccp a flag allowing to determein if the specific heat is
+  ! constant (= cp0) or variable. It will be used to compute balances
+  ! (xbilvl is in Joules).
+  if (icp(iphas).gt.0) then
+    ipccp  = ipproc(icp   (iphas))
+  else
+    ipccp  = 0
+    cp0iph = cp0(iphas)
+  endif
 
-! 2.1 INITIALISATION
-! ==================
-
-! --> Variables locales
-!     -----------------
-
-!       XBILVL : bilan volumique des termes instationnaires
-!       XBILDV : bilan volumique du au terme en div(rho u)
-!       XBILPA : bilan en paroi adiabatique
-!       XBILPT : bilan en paroi a temperature imposee
-!       XBILSY : bilan en symetrie
-!       XBILEN : bilan en entree
-!       XBILSO : bilan en sortie
-!       XBILMI : bilan lie aux injections de masse
-!       XBILMA : bilan lie aux aspirations de masse
-!       XBILAN : bilan total
-
-xbilvl = 0.d0
-xbildv = 0.d0
-xbilpa = 0.d0
-xbilpt = 0.d0
-xbilsy = 0.d0
-xbilen = 0.d0
-xbilso = 0.d0
-xbilmi = 0.d0
-xbilma = 0.d0
-xbilan = 0.d0
-
-! --- On travaillera sur la phase 1 uniquement
-iphas = 1
-
-! --- Le numero du scalaire temperature est ISCAL
-iscal = iscalt(iphas)
-
-! --- Le numero de variable temperature est IVAR
-ivar = isca(iscal)
-
-! --- Le numero pour les conditions aux limites est
-iclvar = iclrtp(ivar,icoef)
-
-! --- Numero des grandeurs physiques
-ipcrom = ipproc(irom(iphas))
-ipcvst = ipproc(ivisct(iphas))
-iflmas = ipprof(ifluma(ivar))
-iflmab = ipprob(ifluma(ivar))
-
-! --- On stocke dans IPCCP un indicateur permettant de determiner si
-!       la Chaleur massique est constante (=CP0) ou variable. Elle sera
-!       utilisee pour realiser les bilans (XBILVL est en Joules).
-if(icp(iphas).gt.0) then
-  ipccp  = ipproc(icp   (iphas))
-else
-  ipccp  = 0
-  cp0iph = cp0(iphas)
-endif
-
-! --- On stocke dans IPCVSL un indicateur permettant de determiner si
-!       la diffusivite est constante (=VISLS0) ou variable. Elle sera
-!       utilisee pour les termes diffusifs.
-if(ivisls(iscal).gt.0) then
-  ipcvsl = ipproc(ivisls(iscal))
-else
-  ipcvsl = 0
-endif
-
-
-! --> Echange de Cp et de Dt
-!     ----------------------
-
-!      Pour calculer les valeurs de flux aux faces internes, il est
-!        necessaire d'avoir acces aux variables dans les cellules voisines.
-!        En particulier, il faut connaitre la chaleur massique et la valeur
-!        du pas de temps. Pour cela,
-!        - dans les calculs paralleles, il est necessaire que
-!          les cellules situees sur un bord de sous-domaine connaissent
-!          la valeur de ces variables dans les cellules situees en
-!          vis-a-vis sur le sous-domaine voisin.
-!        - dans les calculs periodiques, il est necessaire que
-!          les cellules periodiques aient acces a la valeur de ces0
-!          variables dans les cellules periodiques correspondantes
+  ! We save in ipcvsl a flag allowing to determine if the diffusivity is
+  ! constant (= visls0) or variable. It will be used for diffusive terms.
+  if (ivisls(iscal).gt.0) then
+    ipcvsl = ipproc(ivisls(iscal))
+  else
+    ipcvsl = 0
+  endif
 
-!      Pour cela, il est necessaire d'appeler les routines de
-!        communication PARCOM (parallelisme) et PERCOM (periodicite)
-!        pour echanger les valeurs de Cp et de Dt avant de calculer le
-!        gradient. L'appel de ces routines doit etre dait dans cet ordre
-!        PARCOM puis PERCOM (si parallelisme et periodicite coexistent).
+  ! --> Synchronization of Cp and Dt
+  !     ----------------------------
 
-!      Si le calcul n'est ni periodique, ni parallele, on peut conserver
-!        appels (les tests sur IPERIO et IRANGP assurent la generalite)
+  ! To compute fluxes at interior faces, it is necessary to have access
+  ! to variables at neighboring cells. Notably, it is necessary to know
+  ! the specific heat and the time step value. For this,
 
+  ! - in parallel calculations, it is necessary on faces at sub-domain
+  !   boundaries to know the value of these variables in cells from the
+  !   neighboring subdomain.
+  ! - in periodic calculations, it is necessary at periodic faces to know
+  !   the value of these variables in matching periodic cells.
 
+  ! To ensure that these values are up to date, it is necessary to use
+  ! the synchronization routines 'parcom' (parallel synchronization)
+  ! and 'percom' (periodic synchronization) to update parallel ghost
+  ! values for Cp and Dt before computing the gradient. 'parcom'
+  ! must always be called before 'percom' if both parallelism and
+  ! periodicity are used.
+  !
+  ! If the calculation is neither parallel nor periodic, the calls may be
+  ! kept, as tests on iperio and irangp ensure generality).
 
-!    - Echange pour le parallelisme
+  ! Parallel update
 
-  if(irangp.ge.0) then
+  if (irangp.ge.0) then
 
-!       Echange de Dt
-    call parcom (dt)
+    ! update Dt
+    call parcom(dt)
     !==========
 
-!       Echange de Cp si variable (sinon CP0(IPHAS) est utilise)
-    if(ipccp.gt.0) then
+    ! update Cp if variable (otherwise cp0(iphas) is used)
+    if (ipccp.gt.0) then
       call parcom (propce(1,ipccp))
       !==========
     endif
 
   endif
 
+  ! - Periodic update
 
-!    - Echange pour la periodicite
-
-  if(iperio.eq.1) then
+  if (iperio.eq.1) then
 
     idimte = 0
     itenso = 0
 
-!       Echange de Dt
-    call percom                                                   &
+    ! update Dt
+    call percom                      &
     !==========
-      ( idimte , itenso ,                                         &
-        dt     , dt     , dt     ,                                &
-        dt     , dt     , dt     ,                                &
+      ( idimte , itenso ,            &
+        dt     , dt     , dt     ,   &
+        dt     , dt     , dt     ,   &
         dt     , dt     , dt     )
 
-!       Echange de Cp si variable (sinon CP0(IPHAS) est utilise)
-    if(ipccp.gt.0) then
-      call percom                                                 &
+    ! update Cp if variable (otherwise cp0(iphas) is used)
+    if (ipccp.gt.0) then
+      call percom                                             &
       !==========
-      ( idimte , itenso ,                                         &
-        propce(1,ipccp) , propce(1,ipccp) , propce(1,ipccp) ,     &
-        propce(1,ipccp) , propce(1,ipccp) , propce(1,ipccp) ,     &
-        propce(1,ipccp) , propce(1,ipccp) , propce(1,ipccp) )
+        ( idimte, itenso,                                     &
+          propce(1,ipccp), propce(1,ipccp), propce(1,ipccp),  &
+          propce(1,ipccp), propce(1,ipccp), propce(1,ipccp),  &
+          propce(1,ipccp), propce(1,ipccp), propce(1,ipccp))
     endif
 
   endif
 
+  ! --> Compute value reconstructed at I' for boundary faces
 
+  ! For non-orthogonal meshes, it must be equal to the value at the
+  ! cell center, which is computed in:
+  ! ra(itreco+ifac-1) (with ifac=1, nfabor)
 
+  ! For orthogonal meshes, it is sufficient to assign:
+  ! rtp(iel, ivar) to ra(itreco+ifac-1), with iel=ifabor(ifac)
+  ! (this option corresponds to the second branch of the test below,
+  ! with iortho different from 0).
 
+  iortho = 0
 
-! --> Calcul de la valeur reconstruite en I' pour les mailles de bord
-
-
-!     Pour les maillages orthogonaux, elle doit etre egale
-!        a la valeur au centre de la cellule
-!     Cette valeur est calculee dans RA(ITRECO+IFAC-1)
-!                                                   (avec IFAC=1,NFABOR)
-
-!     Dans le cas de maillages orthogonaux, on peut simplifier :
-!       il suffit d'affecter RTP(IEL,IVAR) a RA(ITRECO+IFAC-1),
-!                                                  avec IEL=IFABOR(IFAC)
-!       (cette option correspond a la deuxieme branche du if ci dessous,
-!        avec IORTHO different de 0)
-
-
-iortho = 0
-
+  ! --> General case (for non-orthogonal meshes)
 
-! --> Cas des maillages non orthogonaux
+  if (iortho.eq.0) then
 
-if(iortho.eq.0) then
+    ! Reserve memory
 
-! --- Reservation de la memoire
+    ifinia = idebia
 
-  ifinia = idebia
+    igradx = idebra
+    igrady = igradx+ncelet
+    igradz = igrady+ncelet
+    itravx = igradz+ncelet
+    itravy = itravx+ncelet
+    itravz = itravy+ncelet
+    itreco = itravz+ncelet
+    ifinra = itreco+nfabor
 
-  igradx = idebra
-  igrady = igradx+ncelet
-  igradz = igrady+ncelet
-  itravx = igradz+ncelet
-  itravy = itravx+ncelet
-  itravz = itravy+ncelet
-  itreco = itravz+ncelet
-  ifinra = itreco+nfabor
+    ! Check memory availability
 
-! --- Verification de la disponibilite de la memoire
+    call iasize('usproj', ifinia)
+    call rasize('usproj', ifinra)
 
-  CALL IASIZE('USPROJ',IFINIA)
-  CALL RASIZE('USPROJ',IFINRA)
+    ! --- Compute temperature gradient
 
+    ! To compute the temperature gradient in a given cell, it is necessary
+    ! to have access to values at neighboring cells.  For this,
 
-! --- Calcul du gradient de la temperature
+    ! - in parallel calculations, it is necessary at cells on sub-domain
+    !   boundaries to know the value of these variables in cells from the
+    !   neighboring subdomain.
+    ! - in periodic calculations, it is necessary at cells on periodic
+    !   boundaries to know the value of these variables in matching
+    !   periodic cells.
 
+    ! To ensure that these values are up to date, it is necessary to use
+    ! the synchronization routines 'parcom' (parallel synchronization)
+    ! and 'percom' (periodic synchronization) to update parallel ghost
+    ! values for the temperature before computing the gradient. 'parcom'
+    ! must always be called before 'percom' if both parallelism and
+    ! periodicity are used.
+    !
+    ! If the calculation is neither parallel nor periodic, the calls may be
+    ! kept, as tests on iperio and irangp ensure generality).
 
-!      Pour calculer le gradient de Temperature
-!        - dans les calculs paralleles, il est necessaire que
-!          les cellules situees sur un bord de sous-domaine connaissent
-!          la valeur de temperature dans les cellules situees en
-!          vis-a-vis sur le sous-domaine voisin.
-!        - dans les calculs periodiques, il est necessaire que
-!          les cellules periodiques aient acces a la valeur de la
-!          temperature des cellules periodiques correspondantes
+    ! - Parallel update
 
-!      Pour cela, il est necessaire d'appeler les routines de
-!        communication PARCOM (parallelisme) et PERCOM (periodicite)
-!        pour echanger les valeurs de temperature avant de calculer le
-!        gradient. L'appel a ces routines doit etre fait dans cet ordre
-!        PARCOM puis PERCOM (pour les cas ou parallelisme et periodicite
-!        coexistent).
-!      En effet, on se situe ici a la fin du pas de temps n. Or,
-!        les variables RTP ne seront echangees qu'en debut du pas de
-!        temps n+1. Ici, seules les variables RTPA (obtenues a la fin
-!        du pas de temps n-1) ont deja ete echangees.
+    if (irangp.ge.0) then
 
-!      Si le calcul n'est ni periodique, ni parallele, on peut conserver
-!        appels (les tests sur IPERIO et IRANGP assurent la generalite)
+      call parcom (rtp(1,ivar))
+      !==========
 
+    endif
 
+    ! - Periodic update
 
-!    - Echange pour le parallelisme
+    if (iperio.eq.1) then
 
-  if(irangp.ge.0) then
+      idimte = 0
+      itenso = 0
+      call percom                                 &
+      !==========
+        ( idimte , itenso ,                       &
+          rtp(1,ivar), rtp(1,ivar), rtp(1,ivar),  &
+          rtp(1,ivar), rtp(1,ivar), rtp(1,ivar),  &
+          rtp(1,ivar), rtp(1,ivar), rtp(1,ivar))
 
-    call parcom (rtp(1,ivar))
-    !==========
+    endif
 
-  endif
 
-!    - Echange pour la periodicite
+    ! - Compute gradient
 
-  if(iperio.eq.1) then
+    inc = 1
+    iccocg = 1
+    nswrgp = nswrgr(ivar)
+    imligp = imligr(ivar)
+    iwarnp = iwarni(ivar)
+    epsrgp = epsrgr(ivar)
+    climgp = climgr(ivar)
+    extrap = extrag(ivar)
+    iphydp = 0
 
-    idimte = 0
-    itenso = 0
-    call percom                                                   &
+    call grdcel                                                     &
     !==========
-      ( idimte , itenso ,                                         &
-        rtp(1,ivar), rtp(1,ivar), rtp(1,ivar),                    &
-        rtp(1,ivar), rtp(1,ivar), rtp(1,ivar),                    &
-        rtp(1,ivar), rtp(1,ivar), rtp(1,ivar))
-
-  endif
-
-
-!    - Calcul du gradient
-
-  inc = 1
-  iccocg = 1
-  nswrgp = nswrgr(ivar)
-  imligp = imligr(ivar)
-  iwarnp = iwarni(ivar)
-  epsrgp = epsrgr(ivar)
-  climgp = climgr(ivar)
-  extrap = extrag(ivar)
-  iphydp = 0
-
-  call grdcel                                                     &
-  !==========
- ( ifinia , ifinra ,                                              &
-   ndim   , ncelet , ncel   , nfac   , nfabor , nfml   , nprfml , &
-   nnod   , lndfac , lndfbr , ncelbr , nphas  ,                   &
-   nideve , nrdeve , nituse , nrtuse ,                            &
-   ivar   , imrgra , inc    , iccocg , nswrgp , imligp , iphydp , &
-   iwarnp , nfecra ,                                              &
-   epsrgp , climgp , extrap ,                                     &
-   ifacel , ifabor , ifmfbr , ifmcel , iprfml ,                   &
-   ipnfac , nodfac , ipnfbr , nodfbr ,                            &
-   idevel , ituser , ia     ,                                     &
-   xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod , volume , &
-   ra(itravx) , ra(itravx) , ra(itravx) ,                         &
-   rtp(1,ivar) , coefa(1,iclvar) , coefb(1,iclvar) ,              &
-   ra(igradx) , ra(igrady) , ra(igradz) ,                         &
-!        ----------   ----------   ----------
-   ra(itravx) , ra(itravy) , ra(itravz) ,                         &
-   rdevel , rtuser , ra     )
+      ( ifinia , ifinra ,                                              &
+        ndim   , ncelet , ncel   , nfac   , nfabor , nfml   , nprfml , &
+        nnod   , lndfac , lndfbr , ncelbr , nphas  ,                   &
+        nideve , nrdeve , nituse , nrtuse ,                            &
+        ivar   , imrgra , inc    , iccocg , nswrgp , imligp , iphydp , &
+        iwarnp , nfecra ,                                              &
+        epsrgp , climgp , extrap ,                                     &
+        ifacel , ifabor , ifmfbr , ifmcel , iprfml ,                   &
+        ipnfac , nodfac , ipnfbr , nodfbr ,                            &
+        idevel , ituser , ia     ,                                     &
+        xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod , volume , &
+        ra(itravx) , ra(itravx) , ra(itravx) ,                         &
+        rtp(1,ivar) , coefa(1,iclvar) , coefb(1,iclvar) ,              &
+        ra(igradx) , ra(igrady) , ra(igradz) ,                         &
+        !---------   ----------   ----------
+        ra(itravx) , ra(itravy) , ra(itravz) ,                         &
+        rdevel , rtuser , ra     )
+
+    ! - Compute reconstructed value in boundary cells
+
+    do ifac = 1, nfabor
+      iel = ifabor(ifac)
+      iii = idiipb-1+3*(ifac-1)
+      diipbx = ra(iii+1)
+      diipby = ra(iii+2)
+      diipbz = ra(iii+3)
+      ra(itreco+ifac-1) =   rtp(iel,ivar)            &
+                          + diipbx*ra(igradx+iel-1)  &
+                          + diipby*ra(igrady+iel-1)  &
+                          + diipbz*ra(igradz+iel-1)
+    enddo
 
+  ! --> Case of orthogonal meshes
 
-!    - Calcul de la valeur reconstruite dans les cellules de bord
+  else
 
-  do ifac = 1, nfabor
-    iel = ifabor(ifac)
-    iii = idiipb-1+3*(ifac-1)
-    diipbx = ra(iii+1)
-    diipby = ra(iii+2)
-    diipbz = ra(iii+3)
-    ra(itreco+ifac-1) = rtp(iel,ivar)                             &
-         + diipbx*ra(igradx+iel-1)                                &
-         + diipby*ra(igrady+iel-1)                                &
-         + diipbz*ra(igradz+iel-1)
-  enddo
+    ! Reserve memory
 
+    ifinia = idebia
 
+    itreco = idebra
+    ifinra = itreco+nfabor
 
+    ! Check memory availability
 
-! --> Cas des maillages orthogonaux
+    call iasize('usproj', ifinia)
+    call rasize('usproj', ifinra)
 
-else
+    ! Compute reconstructed value
+    ! (here, we assign the non-reconstructed value)
 
-! --- Reservation de la memoire
+    do ifac = 1, nfabor
+      iel = ifabor(ifac)
+      ra(itreco+ifac-1) = rtp(iel,ivar)
+    enddo
 
-  ifinia = idebia
+  endif
 
-  itreco = idebra
-  ifinra = itreco+nfabor
+  ! 2.1 Compute the balance at time step n
+  ! ======================================
 
-! --- Verification de la disponibilite de la memoire
+  ! --> Balance on interior volumes
+  !     ---------------------------
 
-  CALL IASIZE('USPROJ',IFINIA)
-  CALL RASIZE('USPROJ',IFINRA)
+  ! If it is variable, the density 'rom' has been computed at the beginning
+  ! of the time step using the temperature from the previous time step.
 
-! ---  Calcul de la valeur reconstruite (en fait, ici, affectation
-!     de la valeur non reconstruite)
+  if (ipccp.gt.0) then
+    do iel = 1, ncel
+      xrtpa = rtpa(iel,ivar)
+      xrtp  = rtp (iel,ivar)
+      xbilvl =   xbilvl                                                &
+               + volume(iel) * propce(iel,ipccp) * propce(iel,ipcrom)  &
+                                                 * (xrtpa - xrtp)
+    enddo
+  else
+    do iel = 1, ncel
+      xrtpa = rtpa(iel,ivar)
+      xrtp  = rtp (iel,ivar)
+      xbilvl =   xbilvl  &
+               + volume(iel) * cp0iph * propce(iel,ipcrom) * (xrtpa - xrtp)
+    enddo
+  endif
 
-  do ifac = 1, nfabor
-    iel = ifabor(ifac)
-    ra(itreco+ifac-1) = rtp(iel,ivar)
-  enddo
+  ! --> Balance on all faces (interior and boundary), for div(rho u)
+  !     ------------------------------------------------------------
 
-endif
+  ! Caution: values of Cp and Dt in cells adjacent to interior faces are
+  !          used, which implies having synchronized these values for
+  !          parallelism and periodicity.
 
+  ! Note that if Cp is variable, writing a balance on the temperature
+  ! equation is not absolutely correct.
 
+  if (ipccp.gt.0) then
+    do ifac = 1, nfac
+      iel1 = ifacel(1,ifac)
+      iel2 = ifacel(2,ifac)
+      xbildv =   xbildv + propfa(ifac,iflmas)                 &
+               * (dt(iel1)*propce(iel1,ipccp)*rtp(iel1,ivar)  &
+               - dt(iel2)*propce(iel2,ipccp)*rtp(iel2,ivar))
+    enddo
 
+    do ifac = 1, nfabor
+      iel = ifabor(ifac)
+      xbildv = xbildv + dt(iel) * propce(iel,ipccp)    &
+                                * propfb(ifac,iflmab)  &
+                                * rtp(iel,ivar)
+    enddo
 
+  ! --- if Cp is constant
 
-! 2.2 CALCUL DU BILAN A L'INSTANT N
-! =================================
+  else
+    do ifac = 1, nfac
+      iel1 = ifacel(1,ifac)
+      iel2 = ifacel(2,ifac)
+      xbildv = xbildv +   (dt(iel1)+ dt(iel2))*0.5d0         &
+                        * cp0iph                             &
+                        * propfa(ifac,iflmas)                &
+                        * (rtp(iel1,ivar) - rtp(iel2,ivar))
+    enddo
 
-! --> Bilan sur les volumes internes
-!     ------------------------------
+    do ifac = 1, nfabor
+      iel = ifabor(ifac)
+      xbildv = xbildv + dt(iel) * cp0iph               &
+                                * propfb(ifac,iflmab)  &
+                                * rtp(iel,ivar)
+    enddo
+  endif
 
-!       La masse volumique ROM est celle qui a ete calculee en debut de
-!       pas de temps a partir de la temperature au pas de temps
-!       precedent (dans usphyv ou, si elle est constante RO0)
+  ! In case of a mass source term, add contribution from Gamma*Tn+1
 
+  ncesmp=ncetsm(iphas)
+  if (ncesmp.gt.0) then
+    icesmp = iicesm(iphas)
+    ismacp = ismace(iphas)
+    itpsmp = iitpsm(iphas)
+    do ieltsm = 1, ncesmp
+      iel = ia(icesmp+ieltsm-1)
+      xrtp  = rtp (iel,ivar)
+      xgamma = ra( ismacp+ieltsm+ncesmp*(ipr(iphas)-1)-1)
+      if (ipccp.gt.0) then
+        xbildv =   xbildv                                     &
+                 - volume(iel) * propce(iel,ipccp) * dt(iel)  &
+                               * xgamma * xrtp
+      else
+        xbildv =   xbildv  &
+                 - volume(iel) * cp0iph * dt(iel) * xgamma * xrtp
+      endif
+    enddo
+  endif
 
-if(ipccp.gt.0) then
-  do iel = 1, ncel
-    xrtpa = rtpa(iel,ivar)
-    xrtp  = rtp (iel,ivar)
-    xbilvl = xbilvl                                               &
-        + volume(iel) * propce(iel,ipccp) * propce(iel,ipcrom)    &
-                                               * ( xrtpa - xrtp )
-  enddo
-else
-  do iel = 1, ncel
-    xrtpa = rtpa(iel,ivar)
-    xrtp  = rtp (iel,ivar)
-    xbilvl = xbilvl                                               &
-        + volume(iel) * cp0iph * propce(iel,ipcrom)               &
-                                               * ( xrtpa - xrtp )
-  enddo
-endif
+  ! --> Balance on boundary faces
+  !     -------------------------
 
+  ! We handle different types of boundary faces separately to better
+  ! analyze the information, but this is not mandatory.
 
-! --> Bilan sur toutes les faces, internes et de bord, pour prendre
-!     en compte le terme en div(rho u)-----------------------------
-!     --------------------------------
+  ! - Compute the contribution from walls with colors 2, 4, and 7
+  !   (adiabatic here, so flux should be 0)
 
-!     Attention, on fait intervenir les valeurs de Cp et de Dt dans
-!     les cellules voisines des faces internes, ce qui necessite d'avoir
-!     pris ses precautions en periodicite et parallelisme.
+  call getfbr('2 or 4 or 7', nlelt, lstelt)
+  !==========
 
-! --- Si Cp est variable
-!     Noter que si Cp est variable, ecrire ici un bilan sur l'equation
-!     de la temerature n'est pas absolument correct
+  do ilelt = 1, nlelt
 
-if(ipccp.gt.0) then
-  do ifac = 1, nfac
-    iel1 = ifacel(1,ifac)
-    iel2 = ifacel(2,ifac)
-    xbildv = xbildv + propfa(ifac,iflmas)                         &
-          *(dt(iel1)*propce(iel1,ipccp)*rtp(iel1,ivar)            &
-           -dt(iel2)*propce(iel2,ipccp)*rtp(iel2,ivar))
-  enddo
+    ifac = lstelt(ilelt)
+    iel  = ifabor(ifac)   ! associated boundary cell
 
-  do ifac = 1, nfabor
-    iel = ifabor(ifac)
-    xbildv = xbildv + dt(iel)                                     &
-         * propce(iel,ipccp)                                      &
-         * propfb(ifac,iflmab)                                    &
-         * rtp(iel,ivar)
-  enddo
+    ! Geometric variables
 
-! --- Si Cp est constant
+    surfbn = ra(isrfbn-1+ifac)
+    distbr = ra(idistb-1+ifac)
 
-else
-  do ifac = 1, nfac
-    iel1 = ifacel(1,ifac)
-    iel2 = ifacel(2,ifac)
-    xbildv = xbildv + (dt(iel1)+ dt(iel2))*0.5d0                  &
-         * cp0iph                                                 &
-         * propfa(ifac,iflmas)                                    &
-         * (rtp(iel1,ivar) - rtp(iel2,ivar))
-  enddo
+    ! Physical variables
 
-  do ifac = 1, nfabor
-    iel = ifabor(ifac)
-    xbildv = xbildv + dt(iel)                                     &
-         * cp0iph                                                 &
-         * propfb(ifac,iflmab)                                    &
-         * rtp(iel,ivar)
-  enddo
-endif
+    visct  = propce(iel,ipcvst)
+    flumab = propfb(ifac,iflmab)
 
-!     En cas de terme source de masse, on ajoute la contribution en Gamma*Tn+1
-
-ncesmp=ncetsm(iphas)
-if (ncesmp.gt.0) then
-  icesmp = iicesm(iphas)
-  ismacp = ismace(iphas)
-  itpsmp = iitpsm(iphas)
-  do ieltsm = 1, ncesmp
-    iel = ia(icesmp+ieltsm-1)
-    xrtp  = rtp (iel,ivar)
-    xgamma = ra( ismacp+ieltsm+ncesmp*(ipr(iphas)-1)-1)
-    if(ipccp.gt.0) then
-      xbildv = xbildv                                             &
-           - volume(iel) * propce(iel,ipccp) * dt(iel)            &
-           * xgamma * xrtp
+    if (ipccp.gt.0) then
+      xcp = propce(iel,ipccp)
     else
-      xbildv = xbildv                                             &
-           - volume(iel) * cp0iph * dt(iel)                       &
-           * xgamma * xrtp
+      xcp    = cp0iph
     endif
-  enddo
-endif
-
-
-
-! --> Bilan sur les faces de bord
-!     ---------------------------
-
-!      On distingue ici les differents types de faces de bord
-!        pour mieux analyser l'information, mais ce n'est pas oblige.
-
-
-!     - Calcul de la contribution des parois de couleur 2, 4, 7
-!         (ici adiabatiques, donc flux nul a priori)
-
-CALL GETFBR('2 or 4 or 7',NLELT,LSTELT)
-!==========
-
-do ilelt = 1, nlelt
 
-  ifac = lstelt(ilelt)
-
-! ---   Element de bord
-
-  iel    = ifabor(ifac)
-
-! ---   Variables geometriques
-
-  surfbn = ra(isrfbn-1+ifac)
-  distbr = ra(idistb-1+ifac)
-
-! ---   Variables physiques
-
-  visct  = propce(iel,ipcvst)
-  flumab = propfb(ifac,iflmab)
-
-  if(ipccp.gt.0) then
-    xcp = propce(iel,ipccp)
-  else
-    xcp    = cp0iph
-  endif
+    if (ipcvsl.gt.0) then
+      xvsl = propce(iel,ipcvsl)
+    else
+      xvsl = visls0(iscal)
+    endif
 
-  if(ipcvsl.gt.0) then
-    xvsl = propce(iel,ipcvsl)
-  else
-    xvsl = visls0(iscal)
-  endif
+    ! Contribution to flux from the current face
+    ! (diffusion and convection flux, negative if incoming)
 
-! ---   Calcul de la contribution au flux sur la facette courante
-!         (flux de diffusion et de convection, negatif si entrant)
-
-    xfluxf =          surfbn * dt(iel) * xcp *                    &
-     (xvsl+visct/sigmas(iscal))/distbr *                          &
-     (coefa(ifac,iclvar)+(coefb(ifac,iclvar)-1.d0)                &
-                                               *ra(itreco+ifac-1))&
-                    - flumab * dt(iel) * xcp *                    &
-     (coefa(ifac,iclvar)+ coefb(ifac,iclvar)                      &
-                                               *ra(itreco+ifac-1))
+    xfluxf =      surfbn * dt(iel) * xcp                            &
+                * (xvsl+visct/sigmas(iscal)) / distbr               &
+                * (  coefa(ifac,iclvar)+(coefb(ifac,iclvar)-1.d0)   &
+                   * ra(itreco+ifac-1))                             &
+              -   flumab * dt(iel) * xcp                            &
+                * (  coefa(ifac,iclvar) + coefb(ifac,iclvar)        &
+                   * ra(itreco+ifac-1))
 
     xbilpa = xbilpa + xfluxf
 
-enddo
-
-
-!     - Calcul de la contribution des parois de couleur 6
-!         (ici a temperature imposee ;
-!                                   le flux convectif est nul a priori)
-
-CALL GETFBR('6',NLELT,LSTELT)
-!==========
+  enddo
 
-do ilelt = 1, nlelt
+  ! Contribution from walls with color 6
+  ! (here at fixed temperature; the convective flux should be 0)
 
-  ifac = lstelt(ilelt)
+  call getfbr('6', nlelt, lstelt)
+  !==========
 
-! ---   Element de bord
+  do ilelt = 1, nlelt
 
-  iel    = ifabor(ifac)
+    ifac = lstelt(ilelt)
+    iel  = ifabor(ifac)   ! associated boundary cell
 
-! ---   Variables geometriques
+    ! Geometric variables
 
-  surfbn = ra(isrfbn-1+ifac)
-  distbr = ra(idistb-1+ifac)
+    surfbn = ra(isrfbn-1+ifac)
+    distbr = ra(idistb-1+ifac)
 
-! ---   Variables physiques
+    ! Physical variables
 
-  visct  = propce(iel,ipcvst)
-  flumab = propfb(ifac,iflmab)
+    visct  = propce(iel,ipcvst)
+    flumab = propfb(ifac,iflmab)
 
-  if(ipccp.gt.0) then
-    xcp = propce(iel,ipccp)
-  else
-    xcp    = cp0iph
-  endif
+    if (ipccp.gt.0) then
+      xcp = propce(iel,ipccp)
+    else
+      xcp    = cp0iph
+    endif
 
-  if(ipcvsl.gt.0) then
-    xvsl = propce(iel,ipcvsl)
-  else
-    xvsl = visls0(iscal)
-  endif
+    if (ipcvsl.gt.0) then
+      xvsl = propce(iel,ipcvsl)
+    else
+      xvsl = visls0(iscal)
+    endif
 
-! ---   Calcul de la contribution au flux sur la facette courante
-!         (flux de diffusion et de convection, negatif si entrant)
+    ! Contribution to flux from the current face
+    ! (diffusion and convection flux, negative if incoming)
 
-    xfluxf =          surfbn * dt(iel) * xcp *                    &
-     (xvsl+visct/sigmas(iscal))/distbr *                          &
-     (coefa(ifac,iclvar)+(coefb(ifac,iclvar)-1.d0)                &
-                                               *ra(itreco+ifac-1))&
-                    - flumab * dt(iel) * xcp *                    &
-     (coefa(ifac,iclvar)+ coefb(ifac,iclvar)                      &
-                                               *ra(itreco+ifac-1))
+    xfluxf =    surfbn * dt(iel) * xcp                            &
+              * (xvsl+visct/sigmas(iscal)) / distbr               &
+              * (  coefa(ifac,iclvar)+(coefb(ifac,iclvar)-1.d0)   &
+                 * ra(itreco+ifac-1))                             &
+              -   flumab * dt(iel) * xcp                          &
+                * (  coefa(ifac,iclvar) + coefb(ifac,iclvar)       &
+                   * ra(itreco+ifac-1))
 
     xbilpt = xbilpt + xfluxf
 
-enddo
-
-
-!     - Calcul de la contribution des symetries (couleur 1)
-!         (a priori nul).
-
-CALL GETFBR('1',NLELT,LSTELT)
-!==========
+  enddo
 
-do ilelt = 1, nlelt
+  ! Contribution from symmetries (should be 0).
 
-  ifac = lstelt(ilelt)
+  call getfbr('1', nlelt, lstelt)
+  !==========
 
-! ---   Element de bord
+  do ilelt = 1, nlelt
 
-  iel    = ifabor(ifac)
+    ifac = lstelt(ilelt)
+    iel  = ifabor(ifac)   ! associated boundary cell
 
-! ---   Variables geometriques
+    ! Geometric variables
 
-  surfbn = ra(isrfbn-1+ifac)
-  distbr = ra(idistb-1+ifac)
+    surfbn = ra(isrfbn-1+ifac)
+    distbr = ra(idistb-1+ifac)
 
-! ---   Variables physiques
+    ! Physical variables
 
-  visct  = propce(iel,ipcvst)
-  flumab = propfb(ifac,iflmab)
+    visct  = propce(iel,ipcvst)
+    flumab = propfb(ifac,iflmab)
 
-  if(ipccp.gt.0) then
-    xcp = propce(iel,ipccp)
-  else
-    xcp    = cp0iph
-  endif
+    if (ipccp.gt.0) then
+      xcp = propce(iel,ipccp)
+    else
+      xcp    = cp0iph
+    endif
 
-  if(ipcvsl.gt.0) then
-    xvsl = propce(iel,ipcvsl)
-  else
-    xvsl = visls0(iscal)
-  endif
+    if (ipcvsl.gt.0) then
+      xvsl = propce(iel,ipcvsl)
+    else
+      xvsl = visls0(iscal)
+    endif
 
-! ---   Calcul de la contribution au flux sur la facette courante
-!         (flux de diffusion et de convection, negatif si entrant)
+    ! Contribution to flux from the current face
+    ! (diffusion and convection flux, negative if incoming)
 
     xfluxf =          surfbn * dt(iel) * xcp *                    &
      (xvsl+visct/sigmas(iscal))/distbr *                          &
@@ -1032,237 +941,212 @@ do ilelt = 1, nlelt
 
     xbilsy = xbilsy + xfluxf
 
-enddo
-
-
-!     - Calcul de la contribution en entree (couleur 3)
-!         (flux de diffusion et de convection)
+  enddo
 
-CALL GETFBR('3',NLELT,LSTELT)
-!==========
+  ! Contribution from inlet (color 3, diffusion and convection flux)
 
-do ilelt = 1, nlelt
+  call getfbr('3', nlelt, lstelt)
+  !==========
 
-  ifac = lstelt(ilelt)
+  do ilelt = 1, nlelt
 
-! ---   Element de bord
+    ifac = lstelt(ilelt)
+    iel  = ifabor(ifac)   ! associated boundary cell
 
-  iel    = ifabor(ifac)
+    ! Geometric variables
 
-! ---   Variables geometriques
+    surfbn = ra(isrfbn-1+ifac)
+    distbr = ra(idistb-1+ifac)
 
-  surfbn = ra(isrfbn-1+ifac)
-  distbr = ra(idistb-1+ifac)
+    ! Physical variables
 
-! ---   Variables physiques
+    visct  = propce(iel,ipcvst)
+    flumab = propfb(ifac,iflmab)
 
-  visct  = propce(iel,ipcvst)
-  flumab = propfb(ifac,iflmab)
+    if (ipccp.gt.0) then
+      xcp = propce(iel,ipccp)
+    else
+      xcp    = cp0iph
+    endif
 
-  if(ipccp.gt.0) then
-    xcp = propce(iel,ipccp)
-  else
-    xcp    = cp0iph
-  endif
+    if (ipcvsl.gt.0) then
+      xvsl = propce(iel,ipcvsl)
+    else
+      xvsl = visls0(iscal)
+    endif
 
-  if(ipcvsl.gt.0) then
-    xvsl = propce(iel,ipcvsl)
-  else
-    xvsl = visls0(iscal)
-  endif
+    ! Contribution to flux from the current face
+    ! (diffusion and convection flux, negative if incoming)
 
-! ---   Calcul de la contribution au flux sur la facette courante
-!         (flux de diffusion et de convection, negatif si entrant)
-
-    xfluxf =          surfbn * dt(iel) * xcp *                    &
-     (xvsl+visct/sigmas(iscal))/distbr *                          &
-     (coefa(ifac,iclvar)+(coefb(ifac,iclvar)-1.d0)                &
-                                               *ra(itreco+ifac-1))&
-                    - flumab * dt(iel) * xcp *                    &
-     (coefa(ifac,iclvar)+ coefb(ifac,iclvar)                      &
-                                               *ra(itreco+ifac-1))
+    xfluxf =    surfbn * dt(iel) * xcp                            &
+              * (xvsl+visct/sigmas(iscal))/distbr                 &
+              * (  coefa(ifac,iclvar)+(coefb(ifac,iclvar)-1.d0)   &
+                 * ra(itreco+ifac-1))                             &
+              -   flumab * dt(iel) * xcp                          &
+                * (  coefa(ifac,iclvar)+ coefb(ifac,iclvar)       &
+                   * ra(itreco+ifac-1))
 
     xbilen = xbilen + xfluxf
 
-enddo
-
-!     - Calcul de la contribution en sortie (couleur 5)
-!         (flux de diffusion et de convection)
-
-CALL GETFBR('5',NLELT,LSTELT)
-!==========
+  enddo
 
-do ilelt = 1, nlelt
+  ! Contribution from outlet (color 5, diffusion and convection flux)
 
-  ifac = lstelt(ilelt)
+  call getfbr('5', nlelt, lstelt)
+  !==========
 
-! ---   Element de bord
+  do ilelt = 1, nlelt
 
-  iel    = ifabor(ifac)
+    ifac = lstelt(ilelt)
+    iel  = ifabor(ifac)   ! associated boundary cell
 
-! ---   Variables geometriques
+    ! Geometric variables
 
-  surfbn = ra(isrfbn-1+ifac)
-  distbr = ra(idistb-1+ifac)
+    surfbn = ra(isrfbn-1+ifac)
+    distbr = ra(idistb-1+ifac)
 
-! ---   Variables physiques
+    ! Physical variables
 
-  visct  = propce(iel,ipcvst)
-  flumab = propfb(ifac,iflmab)
+    visct  = propce(iel,ipcvst)
+    flumab = propfb(ifac,iflmab)
 
-  if(ipccp.gt.0) then
-    xcp = propce(iel,ipccp)
-  else
-    xcp    = cp0iph
-  endif
+    if (ipccp.gt.0) then
+      xcp = propce(iel,ipccp)
+    else
+      xcp    = cp0iph
+    endif
 
-  if(ipcvsl.gt.0) then
-    xvsl = propce(iel,ipcvsl)
-  else
-    xvsl = visls0(iscal)
-  endif
+    if (ipcvsl.gt.0) then
+      xvsl = propce(iel,ipcvsl)
+    else
+      xvsl = visls0(iscal)
+    endif
 
-! ---   Calcul de la contribution au flux sur la facette courante
-!         (flux de diffusion et de convection, negatif si entrant)
+    ! Contribution to flux from the current face
+    ! (diffusion and convection flux, negative if incoming)
 
-    xfluxf =          surfbn * dt(iel) * xcp *                    &
-     (xvsl+visct/sigmas(iscal))/distbr *                          &
-     (coefa(ifac,iclvar)+(coefb(ifac,iclvar)-1.d0)                &
-                                               *ra(itreco+ifac-1))&
-                    - flumab * dt(iel) * xcp *                    &
-     (coefa(ifac,iclvar)+ coefb(ifac,iclvar)                      &
-                                               *ra(itreco+ifac-1))
+    xfluxf =     surfbn * dt(iel) * xcp                            &
+               * (xvsl+visct/sigmas(iscal))/distbr                 &
+               * (  coefa(ifac,iclvar)+(coefb(ifac,iclvar)-1.d0)   &
+                  * ra(itreco+ifac-1))                             &
+             -   flumab * dt(iel) * xcp                            &
+               * (  coefa(ifac,iclvar)+ coefb(ifac,iclvar)         &
+                  * ra(itreco+ifac-1))
 
     xbilso = xbilso + xfluxf
 
-enddo
-
+  enddo
 
-! --> Bilan sur les termes sources de masse
-!     -------------------------------------
-!     On va s�parer les injections de masse des aspirations
-!     pour plus de generalite
-
-ncesmp=ncetsm(iphas)
-if (ncesmp.gt.0) then
-  icesmp = iicesm(iphas)
-  ismacp = ismace(iphas)
-  itpsmp = iitpsm(iphas)
-  do ieltsm = 1, ncesmp
-!     suivant le type d'injection, on utilise la valeur SMACEL ou la valeur ambiante
-!     de la temp�rature
-    iel = ia(icesmp+ieltsm-1)
-    xgamma = ra( ismacp+ieltsm+ncesmp*(ipr(iphas)-1)-1)
-    if ( ia( itpsmp+ieltsm+ncesmp*(ivar-1)-1).eq.0                &
-         .or. xgamma.lt.0.d0 ) then
-      xrtp  = rtp (iel,ivar)
-    else
-      xrtp  = ra( ismacp+ieltsm+ncesmp*(ivar-1)-1)
-    endif
-    if(ipccp.gt.0) then
-      if (xgamma.lt.0.d0) then
-        xbilma = xbilma                                           &
-             + volume(iel) * propce(iel,ipccp) * dt(iel)          &
-             * xgamma * xrtp
+  ! --> Balance on mass source terms
+  !     ----------------------------
+
+  ! We separate mass injections from suctions for better generality
+
+  ncesmp = ncetsm(iphas)
+  if (ncesmp.gt.0) then
+    icesmp = iicesm(iphas)
+    ismacp = ismace(iphas)
+    itpsmp = iitpsm(iphas)
+    do ieltsm = 1, ncesmp
+      ! depending on the type of injection we use the 'smacell' value
+      ! or the ambient temperature
+      iel = ia(icesmp+ieltsm-1)
+      xgamma = ra( ismacp+ieltsm+ncesmp*(ipr(iphas)-1)-1)
+      if (     ia(itpsmp+ieltsm+ncesmp*(ivar-1)-1).eq.0  &
+          .or. xgamma.lt.0.d0) then
+        xrtp = rtp (iel,ivar)
       else
-        xbilmi = xbilmi                                           &
-             + volume(iel) * propce(iel,ipccp) * dt(iel)          &
-             * xgamma * xrtp
+        xrtp = ra(ismacp+ieltsm+ncesmp*(ivar-1)-1)
       endif
-    else
-      if (xgamma.lt.0.d0) then
-        xbilma = xbilma                                           &
-             + volume(iel) * cp0iph * dt(iel)                     &
-             * xgamma * xrtp
+      if (ipccp.gt.0) then
+        if (xgamma.lt.0.d0) then
+          xbilma =   xbilma  &
+                   + volume(iel) * propce(iel,ipccp) * dt(iel) * xgamma * xrtp
+        else
+          xbilmi =   xbilmi  &
+                   + volume(iel) * propce(iel,ipccp) * dt(iel) * xgamma * xrtp
+        endif
       else
-        xbilmi = xbilmi                                           &
-             + volume(iel) * cp0iph * dt(iel)                     &
-             * xgamma * xrtp
+        if (xgamma.lt.0.d0) then
+          xbilma =   xbilma  &
+                   + volume(iel) * cp0iph * dt(iel) * xgamma * xrtp
+        else
+          xbilmi =   xbilmi  &
+                   + volume(iel) * cp0iph * dt(iel) * xgamma * xrtp
+        endif
       endif
-    endif
-  enddo
-endif
-
-
-!     - Somme des grandeurs sur tous les processeurs (calculs paralleles)
-
-if (irangp.ge.0) then
-  call parsom (xbilvl)
-  call parsom (xbildv)
-  call parsom (xbilpa)
-  call parsom (xbilpt)
-  call parsom (xbilsy)
-  call parsom (xbilen)
-  call parsom (xbilso)
-  call parsom (xbilmi)
-  call parsom (xbilma)
-endif
-
-
-
-
-! --> Bilan total
-!     -----------
-
-!      On ajoute les differentes contributions calculees plus haut.
+    enddo
+  endif
 
-xbilan = xbilvl + xbildv + xbilpa + xbilpt + xbilsy + xbilen      &
-     + xbilso+ xbilmi + xbilma
+  ! Sum of values on all ranks (parallel calculations)
 
+  if (irangp.ge.0) then
+    call parsom(xbilvl)
+    call parsom(xbildv)
+    call parsom(xbilpa)
+    call parsom(xbilpt)
+    call parsom(xbilsy)
+    call parsom(xbilen)
+    call parsom(xbilso)
+    call parsom(xbilmi)
+    call parsom(xbilma)
+  endif
 
+  ! --> Total balance
+  !     -------------
 
+  ! We add the different contributions calculated above.
 
-! 2.3 ECRITURE DU BILAN A L'INSTANT N
-! ===================================
+  xbilan =   xbilvl + xbildv + xbilpa + xbilpt + xbilsy + xbilen   &
+           + xbilso + xbilmi + xbilma
 
-write(nfecra,2000)                                                &
- ntcabs, xbilvl, xbildv, xbilpa, xbilpt, xbilsy, xbilen, xbilso,  &
-     xbilmi, xbilma, xbilan
+  ! 2.3 Write the balance at time step n
+  ! ====================================
 
+  write (nfecra, 2000)                                               &
+    ntcabs, xbilvl, xbildv, xbilpa, xbilpt, xbilsy, xbilen, xbilso,  &
+    xbilmi, xbilma, xbilan
 
- 2000 format(/,                                                   &
- 3X,'** BILAN THERMIQUE **',/,                              &
- 3X,'   ---------------',/,                                 &
- '---','------',                                                  &
- '------------------------------------------------------------',/,&
- 'bt ','  ITER',                                                  &
- '   Volumique  Divergence  Paroi Adia  Paroi Timp    Symetrie',  &
- '      Entree      Sortie  Masse inj.  Masse asp.  Bil. total',/,&
- 'bt ',I6,10E12.4,/,                                        &
- '---','------',                                                  &
- '------------------------------------------------------------')
+2000 format                                                           &
+  (/,                                                                 &
+   3X,'** Thermal balance **', /,                                     &
+   3X,'   ---------------', /,                                        &
+   '---', '------',                                                   &
+   '------------------------------------------------------------', /, &
+   'bt ','  Iter',                                                    &
+   '   Volume     Divergence  Adia Wall   Fixed_T Wall  Symmetry',    &
+   '      Inlet       Outlet  Inj. Mass.  Suc. Mass.  Total', /,      &
+   'bt ', i6, 10e12.4, /,                                             &
+   '---','------',                                                    &
+   '------------------------------------------------------------')
 
-!- Fin du test sur INPDT0
-endif
+endif ! End of test on inpdt0
 
 !===============================================================================
-! 3. EXEMPLE : CALCUL DES EFFORTS GLOBAUX SUR UN SOUS-ENSEMBLE DE FACES
-
-!           A FAIRE AVEC PRECAUTIONS ...
-!           L'UTILISATEUR PREND SES RESPONSABILITES.
+! 3. Example: compute global efforts on a subset of faces
+!    ----------------------------------------------------
 !===============================================================================
 
-
 ! ----------------------------------------------
 
-! Il est assez courant que l'on oublie d'eliminer cet exemple
-!   de ce sous-programme.
-! On a donc prevu le test suivant pour eviter les mauvaises surprises
+! The test below allows checking that the following example compiles
+! while disabling it by default.
 
 iutile = 0
 
-if(iutile.eq.0) return
+if (iutile.eq.0) return
 
 ! ----------------------------------------------
 
-!     Si les efforts ont bien ete calcules :
+! If efforts have been calculated correctly:
+
 if (ineedf.eq.1) then
 
   do ii = 1, ndim
     xfor(ii) = 0.d0
   enddo
 
-  CALL GETFBR('2 or 3',NLELT,LSTELT)
+  call getfbr('2 or 3', nlelt, lstelt)
   !==========
 
   do ilelt = 1, nlelt
@@ -1282,33 +1166,30 @@ if (ineedf.eq.1) then
 endif
 
 !===============================================================================
-! 4. EXEMPLE : MISE A 20 DE LA TEMPERATURE DANS UNE ZONE DONNEE
-!              A PARTIR DU TEMPS 12s
+! 4. Example: set temperature to 20 in a given region starting at t = 12s
+!    --------------------------------------------------------------------
 
-!           A FAIRE AVEC PRECAUTIONS ...
-!           L'UTILISATEUR PREND SES RESPONSABILITES.
+! Do this with precaution...
+! The user is responsible for the validity of results.
 !===============================================================================
 
-
 ! ----------------------------------------------
 
-! Il est assez courant que l'on oublie d'eliminer cet exemple
-!   de ce sous-programme.
-! On a donc prevu le test suivant pour eviter les mauvaises surprises
+! The test below allows checking that the following example compiles
+! while disabling it by default.
 
 iutile = 0
 
-if(iutile.eq.0) return
+if (iutile.eq.0) return
 
 ! ----------------------------------------------
 
-
 iphas = 1
 iscal = iscalt(iphas)
 
-if (ttcabs.ge.12.d0) then
+if (ttcabs .ge. 12.d0) then
 
-  if (iscal.gt.0.and.iscal.le.nscal) then
+  if (iscal.gt.0 .and. iscal.le.nscal) then
     do iel = 1, ncel
       rtp(iel,isca(iscal)) = 20.d0
     enddo
@@ -1318,53 +1199,51 @@ if (ttcabs.ge.12.d0) then
 
 endif
 
- 3000 format(/,                                                   &
- ' MODIFICATION UTILISATEUR DES VARIABLES EN FIN DE PAS DE TEMPS',&
- /)
+ 3000 format                                                       &
+  (/,                                                              &
+   ' User modification of variables at the end of the time step',  &
+   /)
 
 !===============================================================================
-! 5. EXEMPLE : EXTRACTION D'UN PROFIL 1D
+! 5. Example: extraction of a 1D profile
 !    -----------------------------------
 
-!    On cherche ici a extraire le profil de U, V, W, k et eps sur une
-!     courbe 1D quelconque en fonction de l'abscisse curviligne.
-!    Le profil est ecrit dans le fichier "profil.dat" (ne pas oublier de
-!     prevoir son rapatriement par le script de lancement).
-
-!    - la courbe utilisee ici est le segment [(0;0;0),(0;0.1;0)], mais la
-!      generalisation a une courbe quelconque est simple.
-!    - la routine est adaptee au parallelisme et a la periodicite, ainsi
-!      qu'au differents modeles de turbulence.
-!    - la courbe 1D est discretisee en NPOINT points. Pour chacun de ces
-!      points, on calcule le centre de cellule le plus proche et on
-!      imprime la valeur des variables au centre de cette cellule. Pour plus
-!      de coherence, l'ordonnee imprimee est celle du centre de la cellule.
-!    - on evite d'imprimer deux fois la meme cellule (si plusieurs points de
-!      la courbe sont associes a la meme cellule).
+! We seek here to extract the profile of U, V, W, k and epsilon on an
+! arbitrary 1D curve based on a curvilear abscissa.
+! The profile is described in the 'profile.dat' file (do not forget to
+! define it as user data in the run script).
+
+! - the curve used here is the segment: [(0;0;0),(0;0.1;0)], but the
+!   generalization to an arbitrary curve is simple.
+! - the routine handles parallelism an periodicity, as well as the different
+!   turbulence models.
+! - the 1D curve is discretized into 'npoint' points. For each of these
+!   points, we search for the closest cell center and we output the variable
+!   values at this cell center. For better consistency, the coordinate
+!   which is output is that of the cell center (instead of the initial point).
+! - we avoid using the same cell multiple times (in case several points
+!   an the curve are associated with the same cell).
 !===============================================================================
 
-
 ! ----------------------------------------------
 
-! Il est assez courant que l'on oublie d'eliminer cet exemple
-!   de ce sous-programme.
-! On a donc prevu le test suivant pour eviter les mauvaises surprises
+! The test below allows checking that the following example compiles
+! while disabling it by default.
 
 iutile = 0
 
-if(iutile.eq.0) return
+if (iutile.eq.0) return
 
 ! ----------------------------------------------
 
-
 if (ntcabs.eq.ntmabs) then
 
-!     Seul le processeur de rang 0 (parallele) ou -1 (scalaire) ecrit dans le
-!     fichier. On utilise les unites "utilisateur".
+  ! Only process of rank 0 (parallel) or -1 (scalar) writes to this file.
+  ! We use 'user' Fortran units.
   impout = impusr(1)
   if (irangp.le.0) then
-    open(impout,file="profil.dat")
-    write(impout,*)                                               &
+    open(impout,file='profile.dat')
+    write(impout,*)  &
          '# z(m) U(m/s) V(m/s) W(m/s) k(m2/s2) eps(m2/s3)'
   endif
 
@@ -1378,18 +1257,15 @@ if (ntcabs.eq.ntmabs) then
     xyz(2) = float(ii-1)/float(npoint-1)*0.1d0
     xyz(3) = 0.d0
 
-    call findpt                                                   &
+    call findpt(ncelet, ncel, xyzcen, xyz(1), xyz(2), xyz(3), iel, irangv)
     !==========
-      (ncelet, ncel, xyzcen,                                      &
-       xyz(1), xyz(2), xyz(3), iel, irangv)
 
     if ((iel.ne.iel1).or.(irangv.ne.irang1)) then
       iel1   = iel
       irang1 = irangv
 
-!     On remplit les variables temporaires XU, XV, ... pour le processeur
-!      qui contient le point et on envoie ensuite l'info aux autres
-!      processeurs.
+      ! Set temporary variables xu, xv, ... for the process containing
+      ! the point and then send it to other processes.
       if (irangp.eq.irangv) then
         xabs = xyzcen(2,iel)
         xu   = rtp(iel,iu(iphas))
@@ -1397,15 +1273,15 @@ if (ntcabs.eq.ntmabs) then
         xw   = rtp(iel,iw(iphas))
         xk   = 0.d0
         xeps = 0.d0
-        if (itytur(iphas).eq.2 .or. iturb(iphas).eq.50            &
-             .or. iturb(iphas).eq.60) then
+        if (     itytur(iphas).eq.2 .or. iturb(iphas).eq.50    &
+            .or. iturb(iphas).eq.60) then
           xk = rtp(iel,ik(iphas))
         elseif (itytur(iphas).eq.3) then
-          xk = ( rtp(iel,ir11(iphas))+rtp(iel,ir22(iphas))+       &
-               rtp(iel,ir33(iphas)) )/2.d0
+          xk = (  rtp(iel,ir11(iphas)) + rtp(iel,ir22(iphas))  &
+                + rtp(iel,ir33(iphas))) / 2.d0
         endif
-        if (itytur(iphas).eq.2 .or. itytur(iphas).eq.3            &
-             .or. iturb(iphas).eq.50) then
+        if (     itytur(iphas).eq.2 .or. itytur(iphas).eq.3    &
+            .or. iturb(iphas).eq.50) then
           xeps = rtp(iel,iep(iphas))
         elseif (iturb(iphas).eq.60) then
           xeps = cmu*rtp(iel,ik(iphas))*rtp(iel,iomg(iphas))
@@ -1419,21 +1295,20 @@ if (ntcabs.eq.ntmabs) then
         xeps = 0.d0
       endif
 
-!           Envoi aux autres processeurs si parallele
+      ! Broadcast to other ranks in parallel
       if (irangp.ge.0) then
         iun = 1
-        call parbcr(irangv,iun,xabs)
-        call parbcr(irangv,iun,xu  )
-        call parbcr(irangv,iun,xv  )
-        call parbcr(irangv,iun,xw  )
-        call parbcr(irangv,iun,xk  )
-        call parbcr(irangv,iun,xeps)
+        call parbcr(irangv, iun, xabs)
+        call parbcr(irangv, iun, xu)
+        call parbcr(irangv, iun, xv)
+        call parbcr(irangv, iun, xw)
+        call parbcr(irangv, iun, xk)
+        call parbcr(irangv, iun, xeps)
       endif
 
-      if (irangp.le.0)                                            &
-           write(impout,99) xabs,xu,xv,xw,xk,xeps
+      if (irangp.le.0) write(impout,99) xabs, xu, xv, xw, xk, xeps
 
- 99         format(6g17.9)
+99    format(6g17.9)
 
     endif
 
@@ -1443,157 +1318,145 @@ if (ntcabs.eq.ntmabs) then
 
 endif
 
-
 !===============================================================================
-! 6. EXEMPLE : IMPRESSION DU PREMIER MOMENT CALCULE
+! 6. Example: print first calculated statistical moment
 !===============================================================================
 
-
 ! ----------------------------------------------
 
-! Il est assez courant que l'on oublie d'eliminer cet exemple
-!   de ce sous-programme.
-! On a donc prevu le test suivant pour eviter les mauvaises surprises
+! The test below allows checking that the following example compiles
+! while disabling it by default.
 
 iutile = 0
 
-if(iutile.eq.0) return
+if (iutile.eq.0) return
 
 ! ----------------------------------------------
 
+if (nbmomt.gt.0) then
 
-if(nbmomt.gt.0) then
+  imom = 1 ! Moment number
 
-!     Numero du moment : IMOM
-  imom = 1
+  ! Position in 'propce' of the array of temporal accumulation for moments,
+  ! propce(iel,ipcmom)
 
-!     Position dans PROPCE du tableau de cumul temporel des moments
-!       PROPCE(IEL,IPCMOM)
   ipcmom = ipproc(icmome(imom))
 
-!     Le cumul temporel des moments doit etre divise par la variable
-!       de cumul du temps qui est un tableau NCEL ou un reel :
-!             un tableau NCEL   si IDTMOM(IMOM) > 0 : PROPCE(IEL,IDTCM)
-!             ou un simple reel si IDTMOM(IMOM) < 0 : DTCMOM(IDTCM)
+  ! The temporal accumulation for moments must be divided by the accumulated
+  ! time, which id an array of size ncel or a single real number:
+  ! - array of size ncel if idtmom(imom) > 0 : propce(iel, idtcm)
+  ! - or simple real     if idtmom(imom) < 0 : dtcmom(idtcm)
 
-  if(idtmom(imom).gt.0) then
+  if (idtmom(imom).gt.0) then
     idtcm = ipproc(icdtmo(idtmom(imom)))
     do iel = 1, ncel
-      write(nfecra,4000) iel,propce(iel,ipcmom)/                  &
-           max(propce(iel,idtcm),epzero)
+      write(nfecra, 4000)  &
+           iel, propce(iel, ipcmom)/max(propce(iel, idtcm), epzero)
     enddo
-  elseif(idtmom(imom).lt.0) then
+  elseif (idtmom(imom).lt.0) then
     idtcm = -idtmom(imom)
     do iel = 1, ncel
-      write(nfecra,4000) iel,propce(iel,ipcmom)/                  &
-           max(dtcmom(idtcm),epzero)
+      write(nfecra,4000)  &
+           iel, propce(iel, ipcmom)/max(dtcmom(idtcm), epzero)
     enddo
   endif
 
 endif
 
- 4000 format(' Cellule ',I10,'   Premier moment ',E14.5)
-
+4000 format(' Cell ',i10,'   First moment ',e14.5)
 
 !===============================================================================
-! 7. EXEMPLE : UTILISATION DES ROUTINES DE CALCUL PARALLELE
-!              POUR LES OPERATIONS SUIVANTES~:
+! 6. Example: use of parallel utility functions for several operations
 !===============================================================================
 
-!   Cet exemple n'a pas d'autre utilite que de fournir la liste des
-!     routines utilisables pour simplifier certaines operations
-!     globales en parallele.
-
-!   ATTENTION, ces routines modifient leur argument
+! This example demonstrates the parallel utility functions that may be used
+! to simplify parallel operations.
 
+! CAUTION: these routines modify their input
 
 ! ----------------------------------------------
 
-! Il est assez courant que l'on oublie d'eliminer cet exemple
-!   de ce sous-programme.
-! On a donc prevu le test suivant pour eviter les mauvaises surprises
+! The test below allows checking that the following example compiles
+! while disabling it by default.
 
 iutile = 0
 
-if(iutile.eq.0) return
+if (iutile.eq.0) return
 
 ! ----------------------------------------------
 
+! Sum of an integer counter 'ii', here the number of cells
 
-! Maximum d'un compteur entier II, ici le nombre de cellules par processeur
-
-!     Valeur locale
+! local value
 ii = ncel
-!     Calcul du maximum sur les processeurs
+! global sum
 if (irangp.ge.0) then
-  call parcmx(ii)
+  call parcpt(ii)
 endif
-!     Ecriture de la valeur maximale renvoyee
-write(nfecra,5010)ii
- 5010 format(' USPROJ: Nombre de cellules max par processeur = ', I10)
-
+! print the global sum
+write(nfecra,5020)ii
+ 5020 format(' usproj: total number of cells = ', i10)
 
-! Somme d'un compteur entier II, ici le nombre de cellules
+! Maximum of an integer counter 'ii', here the number of cells
 
-!     Valeur locale
+! local value
 ii = ncel
-!     Calcul de la somme sur les processeurs
+! global maximum
 if (irangp.ge.0) then
-  call parcpt(ii)
+  call parcmx(ii)
 endif
-!     Ecriture de la valeur somme renvoyee
-write(nfecra,5020)ii
- 5020 format(' USPROJ: Nombre de cellules total = ', I10)
+! print the global maximum value
+write(nfecra,5010)ii
+ 5010 format(' usproj: max. number of cells per process = ', i10)
 
-! Somme d'un reel RRR, ici le volume
+! Sum of a real 'rrr', here the volume
 
-!     Valeur locale
+! local value
 rrr = 0.d0
 do iel = 1, ncel
   rrr = rrr + volume(iel)
 enddo
-!     Calcul de la somme sur les processeurs
+! global sum
 if (irangp.ge.0) then
   call parsom(rrr)
 endif
-!     Ecriture de la valeur somme renvoyee
+! print the global sum
 write(nfecra,5030)rrr
- 5030 format(' USPROJ: Volume du domaine total = ', E14.5)
+ 5030 format(' usproj: total domain volume = ', e14.5)
 
-! Maximum d'un reel RRR, ici le volume par processeur
+! Maximum of a real 'rrr', here the volume
 
-!     Valeur locale
+! local value
 rrr = 0.d0
 do iel = 1, ncel
-  rrr = rrr + volume(iel)
+  if (volume(iel).gt.rrr) rrr = volume(iel)
 enddo
-!     Calcul du maximum sur les processeurs
+! global maximum
 if (irangp.ge.0) then
   call parmax(rrr)
 endif
-!     Ecriture de la valeur maximale renvoyee
+! print the global maximum
 write(nfecra,5040)rrr
- 5040 format(' USPROJ: Volume max par processeur = ', E14.5)
+ 5040 format(' usproj: max volume per process = ', e14.5)
 
-! Minimum d'un reel RRR, ici le volume par processeur
+! Minimum of a real 'rrr', here the volume
 
-!     Valeur locale
-rrr = 0.d0
+! local value
+rrr = grand
 do iel = 1, ncel
-  rrr = rrr + volume(iel)
+  if (volume(iel).lt.rrr) rrr = volume(iel)
 enddo
-!     Calcul du minimum sur les processeurs
+! global minimum
 if (irangp.ge.0) then
   call parmin(rrr)
 endif
-!     Ecriture de la valeur minimale renvoyee
+! print the global minimum
 write(nfecra,5050)rrr
- 5050 format(' USPROJ: Volume min par processeur = ', E14.5)
+ 5050 format(' usproj: min volume per process = ', e14.5)
 
-!  Maximum d'un r�el et valeurs reelles associ�es
-!       ici le volume et sa localisation
+! Maximum of a real and associated real values;
+! here the volume and its location (3 coordinates)
 
-!     Maximum local et sa localisation (NBR=3 coordonnees)
 nbr = 3
 rrr  = -1.d0
 xyz(1) = 0.d0
@@ -1607,19 +1470,18 @@ do iel = 1, ncel
     xyz(3) = xyzcen(3,iel)
   endif
 enddo
-!     Calcul du maximum et localisation sur les processeurs
+! global maximum and associated location
 if (irangp.ge.0) then
-  call parmxl(nbr,rrr,xyz)
+  call parmxl(nbr, rrr, xyz)
 endif
-!     Ecriture de la valeur maximale et localisation renvoyees
-write(nfecra,5060)rrr,xyz(1),xyz(2),xyz(3)
- 5060 format(' USPROJ: Volume max = ', E14.5,/,                   &
-       '         Localisation x,y,z = ',3E14.5)
+! print the global maximum and its associated values
+write(nfecra,5060) rrr, xyz(1), xyz(2), xyz(3)
+ 5060 format(' Usproj: Max. volume =      ', e14.5, /,  &
+             '         Location (x,y,z) = ', 3e14.5)
 
-!  Minimum d'un r�el et valeurs reelles associ�es
-!       ici le volume et sa localisation
+! Minimum of a real and associated real values;
+! here the volume and its location (3 coordinates)
 
-!     Minimum local et sa localisation (NBR=3 coordonnees)
 nbr = 3
 rrr  = 1.d+30
 xyz(1) = 0.d0
@@ -1633,74 +1495,80 @@ do iel = 1, ncel
     xyz(3) = xyzcen(3,iel)
   endif
 enddo
-!     Calcul du minimum et localisation sur les processeurs
+! global minimum and associated location
 if (irangp.ge.0) then
   call parmnl(nbr,rrr,xyz)
 endif
-!     Ecriture de la valeur minimale et localisation renvoyees
-write(nfecra,5070)rrr,xyz(1),xyz(2),xyz(3)
- 5070 format(' USPROJ: Volume min = ', E14.5,/,                   &
-       '         Localisation x,y,z = ',3E14.5)
+! print the global minimum and its associated values
+write(nfecra,5070) rrr, xyz(1), xyz(2), xyz(3)
+ 5070 format(' Usproj: Min. volume =      ', e14.5, /,  &
+             '         Location (x,y,z) = ', 3e14.5)
 
-!  Somme d'un tableau d'entiers ici le nombre
-!         de cellules, de faces et de faces de bord
+! Sum of an array of integers;
+! here, the number of cells, faces, and boundary faces
+
+! local values; note that to avoid counting interior faces on
+! parallel boundaries twice, we check if 'ifacel(1,ifac) .le. ncel',
+! as on a parallel boundary, this is always true for one domain
+! and false for the other.
 
-!     Valeurs locales
 nbr = 3
 itab(1) = ncel
-itab(2) = nfac
+itab(2) = 0
 itab(3) = nfabor
-!     Calcul de la somme sur les processeurs
+do ifac = 1, nfac
+  if (ifacel(1, ifac).le.ncel) itab(2) = itab(2) + 1
+enddo
+! global sum
 if (irangp.ge.0) then
-  call parism(nbr,itab)
+  call parism(nbr, itab)
 endif
-!     Ecriture de la valeur somme renvoyee
-write(nfecra,5080)itab(1),itab(2),itab(3)
- 5080 format(' USPROJ: Nombre de cellules       = ',I10,/,        &
-       '         Nombre de faces internes = ',I10,/,        &
-       '         Nombre de faces de bord  = ',I10)
+! print the global sums
+write(nfecra,5080) itab(1), itab(2), itab(3)
+ 5080 format(' usproj: Number of cells =          ', i10, /,  &
+             '         Number of interior faces = ', i10, /,  &
+             '         Number of boundary faces = ', i10)
 
-!  Maximum d'un tableau d'entiers ici le nombre
-!         de cellules, de faces et de faces de bord
+! Maxima from an array of integers;
+! here, the number of cells, faces, and boundary faces
 
-!     Valeurs locales
+! local values
 nbr = 3
 itab(1) = ncel
 itab(2) = nfac
 itab(3) = nfabor
-!     Calcul du maximum sur les processeurs
+! global maxima
 if (irangp.ge.0) then
-  call parimx(nbr,itab)
+  call parimx(nbr, itab)
 endif
-!     Ecriture de la valeur maximale renvoyee
-write(nfecra,5090)itab(1),itab(2),itab(3)
- 5090 format(' USPROJ: Nombre de cellules max       par proc = ',I10,/, &
-       '         Nombre de faces internes max par proc = ',I10,/, &
-       '         Nombre de faces de bord  max par proc = ',I10)
-
-!  Minimum d'un tableau d'entiers ici le nombre
-!         de cellules, et de faces de bord
-!     attention, une somme similaire pour compter les faces internes
-!         compte 2 fois les faces internes situes sur les bords des
-!         processeurs
-
-!     Valeurs locales
-nbr = 2
+! print the global maxima
+write(nfecra,5090) itab(1), itab(2), itab(3)
+ 5090 format(' usproj: Max. number of cells per proc. =          ', i10, /,  &
+             '         Max. number of interior faces per proc. = ', i10, /,  &
+             '         Max. number of boundary faces per proc. = ', i10)
+
+! Minima from an array of integers;
+! here, the number of cells, faces, and boundary faces
+
+! local values
+nbr = 3
 itab(1) = ncel
-itab(2) = nfabor
-!     Calcul du minimum sur les processeurs
+itab(2) = nfac
+itab(3) = nfabor
+! global minima
 if (irangp.ge.0) then
-  call parimn(nbr,itab)
+  call parimn(nbr, itab)
 endif
-!     Ecriture de la valeur minimale renvoyee
-write(nfecra,5100)itab(1),itab(2)
- 5100 format(' USPROJ: Nombre de cellules       min par proc = ',I10,/, &
-       '         Nombre de faces de bord  min par proc = ',I10)
+! print the global minima
+write(nfecra,5100) itab(1), itab(2), itab(3)
+ 5100 format(' usproj: Min. number of cells per proc. =          ', i10, /,  &
+             '         Min. number of interior faces per proc. = ', i10, /,  &
+             '         Min. number of boundary faces per proc. = ', i10)
 
-!  Somme d'un tableau de reels ici les trois composantes de la vitesse
-!         (dans le but de faire une moyenne ensuite par exemple)
+! Sum of an array of reals;
+! here, the 3 velocity components (so as to compute a mean for example)
 
-!     Valeurs locales
+! local values
 nbr = 3
 xyz(1) = 0.d0
 xyz(2) = 0.d0
@@ -1710,19 +1578,20 @@ do iel = 1, ncel
   xyz(2) = xyz(2)+rtp(iel,iv(1))
   xyz(3) = xyz(3)+rtp(iel,iw(1))
 enddo
-!     Calcul de la somme sur les processeurs
+! global sum
 if (irangp.ge.0) then
-  call parrsm(nbr,xyz)
+  call parrsm(nbr, xyz)
 endif
-!     Ecriture de la valeur somme renvoyee
-write(nfecra,5110)xyz(1),xyz(2),xyz(3)
- 5110 format(' USPROJ: Somme de U sur le domaine = ',E14.5,/,     &
-       '         Somme de V sur le domaine = ',E14.5,/,     &
-       '         Somme de W sur le domaine = ',E14.5)
+! print the global sums
+write(nfecra,5110) xyz(1), xyz(2), xyz(3)
+ 5110 format(' usproj: Sum of U on the domain = ', e14.5, /,   &
+             '         Sum of V on the domain = ', e14.5, /,   &
+             '         Sum of V on the domain = ', e14.5)
 
-!  Maximum d'un tableau de reels ici les trois composantes de la vitesse
+! Maximum of an array of reals;
+! here, the 3 velocity components
 
-!     Valeurs locales
+! local values
 nbr = 3
 xyz(1) = rtp(1,iu(1))
 xyz(2) = rtp(1,iv(1))
@@ -1732,19 +1601,20 @@ do iel = 1, ncel
   xyz(2) = max(xyz(2),rtp(iel,iv(1)))
   xyz(3) = max(xyz(3),rtp(iel,iw(1)))
 enddo
-!     Calcul du maximum sur les processeurs
+! global maximum
 if (irangp.ge.0) then
-  call parrmx(nbr,xyz)
+  call parrmx(nbr, xyz)
 endif
-!     Ecriture de la valeur somme renvoyee
-write(nfecra,5120)xyz(1),xyz(2),xyz(3)
- 5120 format(' USPROJ: Maximum de U sur le domaine = ',E14.5,/,   &
-       '         Maximum de V sur le domaine = ',E14.5,/,   &
-       '         Maximum de W sur le domaine = ',E14.5)
+! print the global maxima
+write(nfecra,5120) xyz(1), xyz(2), xyz(3)
+ 5120 format(' usproj: Maximum of U on the domain = ', e14.5, /,   &
+             '         Maximum of V on the domain = ', e14.5, /,   &
+             '         Maximum of V on the domain = ', e14.5)
 
-!  Minimum d'un tableau de reels ici les trois composantes de la vitesse
+! Maximum of an array of reals;
+! here, the 3 velocity components
 
-!     Valeurs locales
+! local values
 nbr = 3
 xyz(1) = rtp(1,iu(1))
 xyz(2) = rtp(1,iv(1))
@@ -1754,111 +1624,102 @@ do iel = 1, ncel
   xyz(2) = min(xyz(2),rtp(iel,iv(1)))
   xyz(3) = min(xyz(3),rtp(iel,iw(1)))
 enddo
-!     Calcul du minimum sur les processeurs
+! global minimum
 if (irangp.ge.0) then
-  call parrmn(nbr,xyz)
+  call parrmn(nbr, xyz)
 endif
-!     Ecriture de la valeur somme renvoyee
-write(nfecra,5130)xyz(1),xyz(2),xyz(3)
- 5130 format(' USPROJ: Minimum de U sur le domaine = ',E14.5,/,   &
-       '         Minimum de V sur le domaine = ',E14.5,/,   &
-       '         Minimum de W sur le domaine = ',E14.5)
+! print the global maxima
+write(nfecra,5130) xyz(1), xyz(2), xyz(3)
+ 5130 format(' usproj: Minimum of U on the domain = ', e14.5, /,   &
+             '         Minimum of V on the domain = ', e14.5, /,   &
+             '         Minimum of V on the domain = ', e14.5)
 
-!  Envoi d'un tableau de valeurs entieres locales aux autres processeurs
-!     par exemple le nombre de cellules, de faces internes et de faces
-!     de bord du processeur numero IRANGV=0.
+! Broadcast an array of local integers to other ranks;
+! in this example, we use the number of cells, interior faces, and boundary
+! faces from process rank 0 (irangv).
 
-!     Valeurs locales
+! local values
 irangv = 0
 nbr = 3
 itab(1) = ncel
 itab(2) = nfac
 itab(3) = nfabor
-!     Envoi aux autres
+! broadcast from rank irangv to all others
 if (irangp.ge.0) then
-  call parbci(irangv,nbr,itab)
+  call parbci(irangv, nbr, itab)
 endif
-!     Ecriture par chaque processeur de la valeur envoyee par le proc 0
-write(nfecra,5140)irangv,itab(1),itab(2),itab(3)
- 5140 format(' USPROJ: Sur le processeur ', I10 ,/,               &
-       '         Nombre de cellules       = ',I10,/,        &
-       '         Nombre de faces internes = ',I10,/,        &
-       '         Nombre de faces de bord  = ',I10)
-
-!  Envoi d'un tableau de valeurs reelles locales aux autres processeurs
-!     par exemple trois valeurs de la vitesse
-!     du processeur numero IRANGV=0.
-
-!     Valeurs locales
+! print values broadcast and received from rank 'irangv'
+write(nfecra,5140) irangv, itab(1), itab(2), itab(3)
+ 5140 format(' usproj: On rank ', i10 , /,                     &
+             '         Number of cells          = ', i10, /,   &
+             '         Number of interior faces = ', i10, /,   &
+             '         Number of boundary faces = ', i10)
+
+! Broadcast an array of local reals to other ranks;
+! in this example, we use 3 velocity values from process rank 0 (irangv).
+
+! local values
 irangv = 0
 nbr = 3
 xyz(1) = rtp(1,iu(1))
 xyz(2) = rtp(1,iv(1))
 xyz(3) = rtp(1,iw(1))
-!     Envoi aux autres
+! broadcast from rank irangv to all others
 if (irangp.ge.0) then
-  call parbcr(irangv,nbr,xyz)
+  call parbcr(irangv, nbr, xyz)
 endif
-!     Ecriture par chaque processeur de la valeur envoyee par le proc 0
-write(nfecra,5150)irangv,xyz(1),xyz(2),xyz(3)
- 5150 format(' USPROJ: Sur le processeur ', I10 ,/,               &
-       '         Vitesse U dans la premiere cellule = ',E14.5,/,  &
-       '         Vitesse V dans la premiere cellule = ',E14.5,/,  &
-       '         Vitesse W dans la premiere cellule = ',E14.5)
-
-!  Recuperation par tous les processeurs du numero global d'une cellule
-!     appartenant a un processeur donne (exemple de la cellule IEL
-!     du processeur IRANGV)
+! print values broadcast and received from rank 'irangv'
+write(nfecra,5150) irangv, xyz(1), xyz(2), xyz(3)
+ 5150 format(' usproj: On rank ', i10 , /,                       &
+             '         Velocity U in first cell = ', e14.5, /,   &
+             '         Velocity V in first cell = ', e14.5, /,   &
+             '         Velocity W in first cell = ', e14.5)
+
+! All ranks obtain the global cell number from a given cell on a given rank;
+! in this example, cell 'iel' prom rank 'irangv'.
 iel = 1
 irangv = 0
 if (irangp.ge.0) then
-  call parcel(iel,irangv,ielg)
+  call parcel(iel, irangv, ielg)
 else
   ielg = -1
 endif
-!     Ecriture par chaque processeur du numero global de la cellule IEL
-!       du processeur IRANGV
-write(nfecra,5160)iel,irangv,ielg
- 5160 format(' USPROJ: La cellule de numero local IEL    = ',I10,/,     &
-       '            sur le processeur       IRANGV = ',I10,/,     &
-       '            a pour numero global    IELG   = ',I10)
-
-!  Recuperation par le processeur courant du numero global d'une cellule
-!     IEL lui appartenant (exemple avec IEL=1, tous les processeurs ayant
-!     au moins une cellule)
+! print global cell number for cell 'iel' from rank 'irangv'
+write(nfecra,5160) iel, irangv, ielg
+ 5160 format(' usproj: local cell iel =         ', i10, /,   &
+             '         on rank irangv =         ', i10, /,   &
+             '         has global number ielg = ', i10)
+
+! Get the global number of a local cel 'iel';
+! in this exemple, we use iel = 1, as all ranks should have at least one cell
 iel = 1
-call parclg(iel,irangp,ielg)
-!     Ecriture par chaque processeur du numero global de sa cellule IEL
-!       (si le processeur a moins de IEL cellules, affiche 0)
-!       (en sequentiel, affiche IEL)
-write(nfecra,5170)iel,irangp,ielg
- 5170 format(' USPROJ: La cellule de numero local IEL    = ',I10,/,     &
-       '            sur le processeur       IRANGP = ',I10,/,     &
-       '            a pour numero global    IELG   = ',I10)
-
-!  Recuperation par le processeur courant du numero global d'une face
-!     interne IFAC lui appartenant (exemple avec IFAC=1)
+call parclg(iel, irangp, ielg)
+! each rank prints the global cell number of its cell number iel;
+! (or 0 if it has less than iel cells)
+write(nfecra,5170) iel, irangp, ielg
+ 5170 format(' usproj: Local cell number iel =  ', i10, /,    &
+             '         on rank irangp =         ', i10, /,    &
+             '         has global number ielg = ', i10)
+
+! Get the global number of a local interior face 'ifac';
 ifac = 1
-call parfig(ifac,irangp,ifacg)
-!     Ecriture par chaque processeur du numero global de sa face IFAC
-!       (si le processeur a moins de IFAC faces internes, affiche 0)
-!       (en sequentiel, affiche IFAC)
-write(nfecra,5180)ifac,irangp,ifacg
- 5180 format(' USPROJ: La face interne de numero local IFAC = ',I10,/,  &
-       '            sur le processeur          IRANGP = ',I10,/,  &
-       '            a pour numero global        IFACG = ',I10)
-
-!  Recuperation par le processeur courant du numero global d'une face
-!     de bord IFAC lui appartenant (exemple avec IFAC=1)
+call parfig(ifac, irangp, ifacg)
+! each rank prints the global face number of its face number ifac;
+! (or 0 if it has less than ifac faces)
+write(nfecra,5180) ifac, irangp, ifacg
+ 5180 format(' usproj: Local face number ifac =  ', i10, /,  &
+             '         on rank irangp =          ', i10, /,  &
+             '         has global number ifacg = ', i10)
+
+! Get the global number of a local boundary face 'ifac';
 ifac = 1
-call parfbg(ifac,irangp,ifacg)
-!     Ecriture par chaque processeur du numero global de sa face IFAC
-!       (si le processeur a moins de IFAC faces de bord , affiche 0)
-!       (en sequentiel, affiche IFAC)
-write(nfecra,5190)ifac,irangp,ifacg
- 5190 format(' USPROJ: La face de bord de numero local IFAC = ',I10,/,  &
-       '            sur le processeur          IRANGP = ',I10,/,  &
-       '            a pour numero global        IFACG = ',I10)
+call parfbg(ifac, irangp, ifacg)
+! each rank prints the global face number of its boundary face number ifac;
+! (or 0 if it has less than ifac boundary faces, which may occur)
+write(nfecra,5190) ifac, irangp, ifacg
+ 5190 format(' usproj: Local boundary face number ifac =  ', i10, /,  &
+             '         on rank irangp =                   ', i10, /,  &
+             '         has global number ifacg =          ', i10)
 
 return
-end
+end subroutine
diff --git a/users/base/uspt1d.f90 b/users/base/uspt1d.f90
index 019599a..5413938 100644
--- a/users/base/uspt1d.f90
+++ b/users/base/uspt1d.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine uspt1d                               &
+subroutine uspt1d &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -51,112 +51,141 @@
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-!     ENTREE DES DONNEES DU MODULE THERMIQUE EN 1D PAROI
-
-! IAPPEL = 1 (un seul appel a l'initialisation) :
-!             CALCUL DU NOMBRE DE CELLULES OU L'ON IMPOSE UNE PAROI
-
-! IAPPEL = 2 (un seul appel a l'initialisation) :
-!             REPERAGE DES CELLULES OU L'ON IMPOSE UNE PAROI
-!             DONNEES RELATIVE AU MAILLAGE
-
-! IAPPEL = 3 (appel a chaque pas de temps) :
-!             VALEUR DES COEFFICIENTS PHYSIQUE DU CALCUL
-!             TYPE DE CONDITION LIMITE EN PAROI EXTERIEURE
-!             ICLT1D = 1 -> TEMPERATURE
-!             ICLT1D = 3 -> FLUX
-!             INITIALISATION DE LA TEMPERATURE
-
-
-! IDENTIFICATION DES FACES DE BORD
-! ================================
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Purpose:
+! -------
+
+!     User subroutine.
+
+!     Data Entry ot the thermic module in 1-Dimension Wall.
+
+
+! Introduction:
+!=============
+
+! Define the different values which can be taken by iappel:
+!--------------------------------------------------------
+
+! iappel = 1 (only one call on initialization):
+!            Computation of the cells number where we impose a wall
+
+! iappel = 2 (only one call on initialization):
+!            Locating cells where we impose a wall
+!            Data linked to the meshing.
+
+! iappel = 3 (call on each time step):
+!            Value of the physical computational coefficients and
+!            boundary condition type on the exterior wall:
+!            --------------------------------------------
+!
+!             iclt1d = 1 -> constant temperature imposed
+!             iclt1d = 3 -> heat flux imposed
+
+!            Initialization of the temperature on the wall.
+
+
+! Boundary faces identification
+! =============================
+
+! Boundary faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
 
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nfpt1d           ! e  ! <-- ! nombre de faces avec module therm 1d           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iappel           ! e  ! <-- ! indique les donnes a renvoyer                  !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ifpt1d           ! te ! <-- ! numero de la face en traitement                !
-!                  !    !     ! thermique en paroi                             !
-! nppt1d           ! te ! <-- ! nombre de points de discretisation             !
-!                  !    !     ! dans la paroi                                  !
-! iclt1d           ! te ! <-- ! type de condition limite                       !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! eppt1d           ! tr ! <-- ! epaisseur de la paroi                          !
-! rgpt1d           ! tr ! <-- ! raison du maillage                             !
-! tppt1d           ! tr ! <-- ! temperature de paroi                           !
-! tept1d           ! tr ! <-- ! temperature exterieure                         !
-! hept1d           ! tr ! <-- ! coefficient d'echange exterieur                !
-! fept1d           ! tr ! <-- ! flux exterieur                                 !
-! xlmt1d           ! tr ! <-- ! conductivite thermique de la paroi             !
-! rcpt1d           ! tr ! <-- ! rocp de la paroi                               !
-! dtpt1d           ! tr ! <-- ! pas de temps de la paroi                       !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nfpt1d           ! i  ! <-- ! number of faces with the 1-D thermic module    !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iappel           ! i  ! <-- ! data type to send                              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  i ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ifpt1d           ! ia ! <-- ! number of the face treated                     !
+! nppt1d           ! ia ! <-- ! number of discretized points                   !
+! iclt1d           ! ia ! <-- ! boundary condition type                        !
+!--begin. obsolesence ---------------------------------------------------------!
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+!--end obsolesence ------------------------------------------------------------!
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse)   ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+!--new ------------------------------------------------------------------------!
+! eppt1d           ! ra ! <-- ! wall thickness                                 !<--new
+! rgpt1d           ! ra ! <-- ! geometric ratio of the meshing refinement      !<--new
+! tppt1d           ! ra ! <-- ! wall temperature initialization                !<--new
+! tept1d           ! ra ! <-- ! exterior temperature                           !<--new
+! hept1d           ! ra ! <-- ! exterior exchange coefficient                  !<--new
+! fept1d           ! ra ! <-- ! flux applied to the exterior                   !<--new
+! xlmt1d           ! ra ! <-- ! lambda wall conductivity coefficient           !<--new
+! rcpt1d           ! ra ! <-- ! rhoCp wall coefficient                         !<--new
+! dtpt1d           ! ra ! <-- ! wall time step                                 !<--new
+!--begin. obsolesence ---------------------------------------------------------!--!
+! xyzcen           ! ra ! <-- ! cell centers                                   !  !
+!  (ndim, ncelet)  !    !     !                                                !  !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !  !
+!  (ndim, nfac)    !    !     !                                                !  !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !  !
+!  (ndim, nfavor)  !    !     !                                                !  !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !  !
+!  (ndim, nfac)    !    !     !                                                !  !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !  !
+!  (ndim, nfabor)  !    !     !                                                !  !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !  !
+!  (ndim, nnod)    !    !     !                                                !  !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !  !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !  !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !  !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !  !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !  !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !  !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !  !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !  !
+!  (nfabor, *)     !    !     !                                                !  !
+! coefu            ! ra ! --- ! work array                                     !  !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !  !
+!-end obsolesence--------------------------------------------------------------!--!
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
+!===============================================================================
 
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Data in common
 !===============================================================================
 
 include "paramx.h"
@@ -171,7 +200,7 @@ include "period.h"
 !===============================================================================
 
 ! Arguments
-
+!-------------------------------------------------------------------
 integer          idbia0 , idbra0
 integer          ndim   , ncelet , ncel   , nfac   , nfabor
 integer          nfml   , nprfml
@@ -202,8 +231,8 @@ double precision tept1d(nfpt1d) , hept1d(nfpt1d) , fept1d(nfpt1d)
 double precision xlmt1d(nfpt1d) , rcpt1d(nfpt1d) , dtpt1d(nfpt1d)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! Variables locales
-
+! Local variables
+!-------------------------------------------------------------------
 integer          idebia , idebra
 integer          ifbt1d , ii , ifac
 integer          ilelt, nlelt
@@ -214,12 +243,19 @@ idebia = idbia0
 idebra = idbra0
 
 
-! --- Relecture d'un fichier suite :
-!     ISUIT1 = 0 ------> pas de relecture (reinitialisation du maillage et
-!                                           de la temperature dans la paroi)
-!     ISUIT1 = 1 ------> relecture du fichier suite de module thermique 1D
-!     ISUIT1 = ISUITE -> relecture si le calcul fluide est une suite
-!     L'initialisation de ISUIT1 dans uspt1d est obligatoire.
+!===============================================================================
+! Rereading of the restart file:
+!----------------------------------
+
+!     isuit1 = 0        --> No rereading
+!                           (meshing and wall temperature reinitialization)
+!     isuit1 = 1        --> Rereading of the restart file for the 1-Dimension
+!                           thermic module
+!     isuit1 = isuite   --> Rereading only if the computational fluid dynamic is
+!                           a continuation of the computation.
+
+!     The initialization of isuit1 is mandatory.
+!===============================================================================
 
 isuit1 = isuite
 
@@ -227,27 +263,32 @@ ifbt1d = 0
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-
 if(1.eq.1) return
-
 !===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 if(iappel.eq.1.or.iappel.eq.2) then
 
-
-! --- Determination des faces avec module thermique 1D
-!     NFPT1D     : nb total de faces avec module thermique 1D
-!     IFPT1D(II) : numero de la IIeme face avec module thermque 1D
-
-!     Remarque : lors de la relecture d'un fichier suite, NFPT1D et IFPT1D
-!                sont compares aux valeurs issues du fichier suite. Une
-!                concordance totale est necessaire pour continuer le calcul.
-!                En ce qui concerne le test sur IFPT1D, il necessite qui
-!                le tableau soit range dans un ordre croissant
-!                   ( IFPT1D(JJ) > IFPT1D(II) si JJ > II ).
-!                Si ce n'est pas possible, contacter l'equipe de developpement
-!                pour desactiver le test.
+!===============================================================================
+! Faces determining with the 1-D thermic module:
+!----------------------------------------------
+!
+!     nfpt1d    : Total number of faces with the 1-D thermic module
+!     ifpt1d(ii): Number of the (ii)th face with the 1-D thermic module
+
+! Remarks:
+!--------
+!     During the rereading of the restart file, nfpt1d and ifpt1d are
+!     compared with the other values from the restart file being the result of
+!     the start or restarting computation.
+!
+!     A total similarity is required to continue with the previous computation.
+!     Regarding the test case on ifpt1d, it is necessary that the array will be
+!     arranged in increasing order
+!               (as following : ifpt1d(jj) > ifpt1d(ii) si jj > ii).
+!
+!     If it is impossible, contact the developer team to deactivate this test.
+!===============================================================================
 
   CALL GETFBR('3',NLELT,LSTELT)
   !==========
@@ -267,22 +308,32 @@ if (iappel.eq.1) then
    nfpt1d = ifbt1d
 endif
 
-! --- Remplissage des parametres du maillage et d'initialisation
-!     (un seul passage en debut de calcul)
-!     NPPT1D(II) : nombre de points de discretisation associes a la
-!                                   IIeme face avec module thermique 1D
-!     EPPT1D(II) : epaisseur de la paroi associee a la IIeme face avec
-!                                                   module thermique 1D
-!     RGPT1D(II) : raison geometrique du raffinement du maillage associe
-!                              a la IIeme face avec module thermique 1D
-!                       ( RGPT1D(II) > 1 => petites mailles cote fluide )
-!     TPPT1D(II) : temperature d'initialisation de la paroi associee a la
-!                                   IIeme face avec module thermique 1D
-
-!     Remarque : lors de la relecture d'un fichier suite de module thermique
-!                1D, TPPT1D n'est pas utilise. NFPT1D, EPPT1D et RGPT1D sont
-!                compares aux valeurs issues du fichier suite. Une
-!                correspondance exacte est necessaire pour continuer le calcul.
+!===============================================================================
+! Parameters padding of the mesh and initialization:
+!--------------------------------------------------
+!
+!     (Only one pass during the beginning of the computation)
+
+!     nppt1d(ii): number of discretized points associated to the (ii)th face
+!                 with the 1-D thermic module.
+!     eppt1d(ii): wall thickness associated to the (ii)th face
+!                 with the 1-D thermic module.
+!     rgpt1d(ii): geometric progression ratio of the meshing refinement
+!                 associated to the (ii)th face with the 1-D thermic module.
+!                 (with : rgpt1d(ii) > 1 => small meshes  on the fluid side)
+!     tppt1d(ii): wall temperature initialization associated to the (ii)th face
+!                 with the 1-D thermic module.
+
+! Remarks:
+!--------
+!     During the rereading of the restart file for the 1-D thermic module,
+!     the tppt1d variable is not used.
+!
+!     The nfpt1d, eppt1d and rgpt1d variables are compared to the previous
+!     values being the result of the restart file.
+!
+!     An exact similarity is necessary to continue with the previous computation.
+!===============================================================================
 if (iappel.eq.2) then
    if(iphas.eq.1) then
       do ii = 1, nfpt1d
@@ -294,24 +345,28 @@ if (iappel.eq.2) then
       enddo
    endif
 endif
-
-
-! --- Remplissage des conditions aux limites en paroi externe
-!     ICLT1D(II) : type de condition a la limite
-!                  = 1 : condition de dirichlet, avec coefficient d'echange
-!                  = 3 : condition de flux
-!     TEPT1D(II) : temperature exterieure
-!     HEPT1D(II) : coefficient d'echange exterieur
-!     FEPT1D(II) : flux applique a l'exterieur ( flux<0 = flux entrant)
-!     XLMT1D(II) : coefficient de conductivite lambda de la paroi (W/m/�C)
-!     RCPT1D(II) : coefficient rho*Cp de la paroi (J/m3/�C)
-!     DTPT1D(II) : pas de temps de resolution de l'equation thermique dans
-!                  la IIeme face de bord avec module thermique 1D (s)
+!===============================================================================
+! Padding of the wall exterior boundary conditions:
+!-------------------------------------------------
+!
+!     iclt1d(ii): boundary condition type
+!     ----------
+!                  iclt1d(ii) = 1: dirichlet's condition ,  with exchange coefficient
+!                  iclt1d(ii) = 3: flux condition
+!
+!     tept1d(ii): exterior temperature
+!     hept1d(ii): exterior exchange coefficient
+!     fept1d(ii): flux applied to the exterior (flux<0 = coming flux)
+!     xlmt1d(ii): lambda wall conductivity coefficient (W/m/�C)
+!     rcpt1d(ii): wall coefficient rho*Cp (J/m3/�C)
+!     dtpt1d(ii): time step resolution of the thermic equation to the
+!                 (ii)th border face with the 1-D thermic module (s)
+!===============================================================================
 if (iappel.eq.3) then
    if(iphas.eq.1) then
       do ii = 1, nfpt1d
          iclt1d(ii) = 1
-!     parametres physiques
+! Physical parameters
          ifac = ifpt1d(ii)
          if (cdgfbo(2,ifac).le.0.025d0) then
            iclt1d(ii) = 3
@@ -327,7 +382,9 @@ if (iappel.eq.3) then
    endif
 endif
 
+!===============================================================================
+! END of the uspt1d subroutine =====================================================
+!===============================================================================
 return
-
-end
+end subroutine
 
diff --git a/users/base/ussatc.f90 b/users/base/ussatc.f90
index 602e672..70d7b29 100644
--- a/users/base/ussatc.f90
+++ b/users/base/ussatc.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -31,107 +31,47 @@
 subroutine ussatc &
 !================
 
- ( idbia0 , idbra0 , numcpl ,                                     &
-   ndim   , ncelet , ncel   , nfac   , nfabor , nfml   , nprfml , &
-   nnod   , lndfac , lndfbr , ncelbr ,                            &
-   nituse , nrtuse ,                                              &
-   ifacel , ifabor , ifmfbr , ifmcel , iprfml , maxelt , lstelt , &
-   ipnfac , nodfac , ipnfbr , nodfbr ,                            &
-   lcesup , lfbsup , lcecpl , lfbcpl ,                            &
-   ncesup , nfbsup , ncecpl , nfbcpl ,                            &
-   xyzcen , surfac , surfbo , cdgfac , cdgfbo , xyznod)
+( )
 
 !===============================================================================
-! FONCTION :
-! --------
-
-! DEFINITION DES COUPLAGES CODE_SATURNE / CODE_SATURNE
-
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Purpose:
+! -------
+
+!    User subroutine.
+
+!    Define couplings with Code_Saturne itself.
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
-include "pointe.h"
-include "numvar.h"
-include "optcal.h"
-include "cstphy.h"
-include "cstnum.h"
 include "entsor.h"
 include "parall.h"
-include "period.h"
-include "ihmpre.h"
-include "cplsat.h"
 
 !===============================================================================
 
 ! Arguments
 
-integer          idbia0 , idbra0
-integer          numcpl
-integer          ndim   , ncelet , ncel   , nfac   , nfabor
-integer          nfml   , nprfml
-integer          nnod   , lndfac , lndfbr , ncelbr
-integer          nituse , nrtuse
-
-integer          ifacel(2,nfac) , ifabor(nfabor)
-integer          ifmfbr(nfabor) , ifmcel(ncelet)
-integer          iprfml(nfml,nprfml), maxelt, lstelt(maxelt)
-integer          ipnfac(nfac+1), nodfac(lndfac)
-integer          ipnfbr(nfabor+1), nodfbr(lndfbr)
-integer          lcesup(ncel), lfbsup(nfabor)
-integer          lcecpl(ncel), lfbcpl(nfabor)
-integer          ncecpl , nfbcpl
-integer          ncesup , nfbsup
-
-double precision xyzcen(ndim,ncelet)
-double precision surfac(ndim,nfac), surfbo(ndim,nfabor)
-double precision cdgfac(ndim,nfac), cdgfbo(ndim,nfabor)
-double precision xyznod(ndim,nnod)
-
-! VARIABLES LOCALES
-
-integer          idebia, idebra
-integer          ifac, iel
-integer          ilelt, nlelt
+! Local variables
+
+character*32     namsat
+integer          numsat, nbcsat, ii
+integer          iwarns
 
 !===============================================================================
 
@@ -144,42 +84,60 @@ if(1.eq.1) return
 !===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
-!===============================================================================
-! 1.  DEFINITION DU SUPPORT (commun pour tous les couplages...)
-!===============================================================================
+numsat = -1
+iwarns = 1
 
-ncesup = 0
-nfbsup = 0
+nbcsat = 2
 
-do iel = 1, ncel
-  ncesup = ncesup + 1
-  lcesup(ncesup) = iel
-enddo
+! In the case of a coupling between two Code_Saturne instances, the
+! 'numsat' and 'namsat' arguments of 'defsat' are ignored.
 
-!===============================================================================
-! 2.  DEFINITION DES ELEMENTS COUPLES (differents pour chaque couplage..)
-!===============================================================================
+! In case of multiple couplings, a coupling will be matched with available
+! Code_Saturne instances prioritarily based on the 'namsat' (Code_Saturne
+! instance name) argument, then on the 'numsat' (Code_Saturne instance
+! application number) argument.
 
-ncecpl = 0
-nfbcpl = 0
+! If 'namsat' is empty, matching will be based on 'numsat' only.
 
-! --- On definit une zone de couplage pour les faces de couleur 99
-!     pour le couplage numero 1
+! The arguments to defsat are:
+!   numsat <-- matching Code_Saturne application id, or -1
+!   namsat <-- matching Code_Saturne application name
+!   crtcsu <-- cell selection criteria for support
+!   crtfsu <-- boundary face selection criteria for support (not functional)
+!   crtccp <-- cell selection criteria for coupled cells
+!   crtfcp <-- boundary face selection criteria for coupled faces
+!   iwarns <-- verbosity level
 
-if (numcpl.eq.1) then
+! Loop on Code_Saturne couplings
 
-  CALL GETFBR('99',NLELT,LSTELT)
-  !==========
-  do ilelt = 1, nlelt
+do ii = 1, nbcsat
 
-    ifac = lstelt(ilelt)
+  ! Example: coupling  with instance named 'SATURNE_01'
+  !    - coupled faces of color 3 or 4
+  !    - all cells available as localization support for instance 'SATURNE_01'
 
-    nfbcpl = nfbcpl + 1
-    lfbcpl(nfbcpl) = ifac
+  if (ii .eq. 1) then
 
-  enddo
+    namsat = 'SATURNE_01'
 
-endif
+    call defsat(numsat, namsat, 'all[]', ' ', ' ', '3 or 4', iwarns)
+    !==========
+
+  ! Example: coupling  with instance named 'SATURNE_02'
+  !    - coupled faces of group 'coupled_faces'
+  !    - coupled cells (every cell overlapping the distant mesh)
+  !    - all cells available as localization support for instance 'SATURNE_02'
+
+  else if (ii .eq. 1) then
+
+    namsat = 'SATURNE_02'
+
+    call defsat(numsat, namsat, 'all[]', ' ', 'all[]', 'coupled_faces', iwarns)
+    !==========
+
+  endif
+
+enddo
 
 return
-end
+end subroutine
diff --git a/users/base/ussmag.f90 b/users/base/ussmag.f90
index 51e360f..00113e1 100644
--- a/users/base/ussmag.f90
+++ b/users/base/ussmag.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -68,80 +68,67 @@ subroutine ussmag &
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss                 !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
 ! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
 !  (ncepdp,6)      !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
@@ -152,21 +139,20 @@ subroutine ussmag &
 ! mijlij(ncelet    ! tr ! <-- ! mij.lij avant moyenne locale                   !
 ! mijmij(ncelet    ! tr ! <-- ! mij.mij avant moyenne locale                   !
 ! w1..4(ncelet)    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -212,7 +198,7 @@ double precision smagor(ncelet), mijlij(ncelet), mijmij(ncelet)
 double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel
@@ -258,12 +244,8 @@ do iel = 1, ncel
 enddo
 
 !     On passe dans le filtre local
-call cfiltr                                                       &
+call cfiltr ( w1     , smagor , w2     , w3     )
 !==========
- ( ncelet , ncel   , nfac   , nfabor ,                            &
-   ifacel , ifabor ,                                              &
-   volume ,                                                       &
-   w1     , smagor , w2     , w3     )
 
 
 !----
@@ -271,4 +253,4 @@ call cfiltr                                                       &
 !----
 
 return
-end
+end subroutine
diff --git a/users/base/usstru.f90 b/users/base/usstru.f90
index 9e292f1..14bb191 100644
--- a/users/base/usstru.f90
+++ b/users/base/usstru.f90
@@ -27,49 +27,33 @@
 !     Boston, MA  02110-1301  USA
 
 !-------------------------------------------------------------------------------
+! Purpose :
+! ---------
+!     User subroutine dedicated to Fluid - Structure internal coupling
 
-! FONCTION :
-! ----------
+! --- Definition and management of internal Fluid Structure coupled calculations,
+!     using a simplified solid modeling (linear "mass, friction and spring" modeling).
 
-! GESTION DES STRUCTURES MOBILES EN ALE AVEC COUPLAGE INTERNE
+!     Here are 2 differents subroutines that need to be filled :
 
-! ON TROUVERA ICI DEUX ROUTINES DIFFERENTES :
+!  -   USSTR1 : Called at the beginning of the calculation. It enables one to define
+!               internal structures and corresponding initial conditions (initial
+!               displacement and velocity).
 
-! - USSTR1 : APPELEE A L'INITIALISATION, POUR DEFINIR LES STRUCTURES
-!               ET LEURS PARAMETRES INITIAUX (VITESSE, DEPLACEMENT)
+!  -   USSTR2 : Called at each time step of the calculation. Here one defines
+!               structural parameters (considered to be potentially time dependent),
+!               i.e. Mass, Friction, Stiffness and Fluid Stresses.
 
-! - USSTR2 : APPELE A CHAQUE PAS DE TEMPS POUR DEFINIR LES
-!               CARACTERISTIQUES (POTENTIELLEMENT VARIABLES) DES
-!               STRUCTURES
+! --- Boundary faces identification
+!     =============================
 
+! Boundary faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
 
-! IDENTIFICATION DES FACES DE BORD
-! ================================
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
 
 !-------------------------------------------------------------------------------
-                  subroutine usstr1                               &
+subroutine usstr1 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -87,100 +71,83 @@
 
 
 !===============================================================================
-! FONCTION :
-! ----------
+! Purpose :
+! ---------
 
-! GESTION DES STRUCTURES MOBILES EN ALE AVEC COUPLAGE INTERNE
-
-!   DEFINITION DES STRUCTURES
-!   DEPLACEMENT ET VITESSE INITIAUX
+! --- Definition of internal structures and corresponding initial conditions
+!     (initial displacement and velocity )
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (lndfac)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (nfabor+1)     !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (lndfbr)       !    !     !  (optionnel)                                   !
-! idfstr(nfabor    ! te ! <-- ! definition des structures                      !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! aexxst,bexxst    ! r  ! <-- ! coefficients de prediction du deplact          !
-! cfopre           ! r  ! <-- ! coeff de prediction des efforts                !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! xstr0(ndim,      ! tr ! <-- ! deplacement initial des structures             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idfstr(nfabor)   ! ia ! <-- ! boundary faces -> structure definition         !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! aexxst,bexxst    ! r  ! <-- ! prediction coefficients of structural data     !
+! cfopre           ! r  ! <-- ! prediction coefficients of fluid forces        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! xstr0(ndim,      ! ra ! <-- ! initial displacement of internal structures    !
 !       nbstru)    !    !     !                                                !
-! vstr0(ndim,      ! tr ! <-- ! vitesse initiale des structures                !
+! vstr0(ndim,      ! ra ! <-- ! initial velocity of internal structures        !
 !       nbstru)    !    !     !                                                !
-! xstreq(ndim,     ! tr ! <-- ! deplacement du maillage initial par            !
-!       nbstru)    !    !     ! rapport a l'equilibre                          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! xstreq(ndim,     ! ra ! <-- ! displacement of initial mesh compared to       !
+!       nbstru)    !    !     ! the structures position at equilibrium         !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -222,7 +189,7 @@ double precision xstr0(3,nstrmx), xstreq(3,nstrmx)
 double precision vstr0(3,nstrmx)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac
@@ -241,7 +208,7 @@ endif
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 1.  INITIALISATIONS
+! 1.  Initialization
 
 !===============================================================================
 
@@ -249,19 +216,32 @@ idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 2.  DEFINITION DES STRUCTURES (appel a l'initialisation)
+! 2.  Definition of internal structures
 !===============================================================================
 
-!     On remplit le tableau IDFSTR(NFABOR)
-!     IDFSTR(IFAC) est le numero de la structure a laquelle appartient
-!       la face de bord IFAC (0 si elle n'appartient a aucune structure)
-!     Le nombre de structure est automatiquement determine a partir du
-!       plus grand element de IDFSTR (les numeros des structures doivent
-!       donc etre affectes de maniere sequentielle sans trou en commencant
-!       par 1).
+!    Here one fills array IDFSTR(NFABOR)
+!    For each boundary face IFAC, IDFSTR(IFAC) is the number of the structure
+!    the face belongs to (if IDFSTR(IFAC) = 0, the face IFAC doesn't
+!    belong to any structure.)
+!    When using internal coupling, structure number necessarily
+!    needs to be positive (as shown in following examples).
+
+!    The number of "internal" structures is automatically defined with the
+!    maximum value of IDFSTR table, meaning that
+!    internal structure numbers must be defined sequentially with positive values,
+!    beginning with integer value '1'.
 
-! Dans l'exemple ci-dessous la structure 1 est bordee par les faces de
-!   couleur 4, la structure 2 par les faces de couleur 6
+
+!    In following example, boundary faces with color 4 belong to internal structure '1'.
+!    Boundary faces with color 2 belong to internal structure '2'.
+!    The total number of internal structures equals 2.
+
+!    Boundary faces identification
+!    =============================
+
+!    Boundary faces may be identified using the 'getfbr' subroutine.
+!    The syntax of this subroutine is described in the 'usclim' subroutine,
+!    but a more thorough description can be found in the user guide.
 
 
 CALL GETFBR('4',NLELT,LSTELT)
@@ -286,57 +266,67 @@ do ilelt = 1, nlelt
 
 enddo
 
-
-! Pour chaque structure, on definit si necessaire
-! - une vitesse initiale VSTR0
-! - un deplacement initial XSTR0 (i.e. la valeur du deplacement XSTR
-!     au temps t=0 par rapport au maillage initial)
-! - un deplacement par rapport a l'equilibre XSTREQ (i.e. le deplacement
-!     du maillage initial par rapport a la position d'equilibre de la
-!     structure ; la force de retour exercee par le ressort a un temps
-!     donne pour un deplacement XSTR sera donc -k*(XSTR+XSTREQ) ).
-! Toutes les composantes de XSTR0, XSTREQ et VSTR0 sont initialisees a 0
-
-!     Exemple : deplacement initial y=2 pour la structure 1
-!               deplacement par rapport a l'equilibre yeq=1 pour la
-!                  structure 1
-!               vitesse initiale uz=0.5 pour la structure 2
-
-! Dans le cas d'un calcul initial, ou d'une suite d'un calcul sans ALE,
-!   une iteration 0 est automatiquement realisee pour gerer un eventuel
-!   deplacement initial des structures. Si necessaire, positionner
-!   ITALIN a 1 dans usalin pour activer une iteration 0 dans les autres
-!   cas.
+! --- For each internal structure one can here define :
+!     - an initial velocity VSTR0
+!     - an initial displacement XSTR0 (i.e. XSTR0 is the value of the displacement XSTR
+!       compared to the initial mesh at time t = 0)
+!     - a displacement compared to equilibrium XSTREQ (i.e. XSTREQ is the initial displacement
+!       of the internal structure compared to its position at equilibrium; at each
+!       time step t and for a displacement XSTR(t) associated internal structure will be
+!       subjected to a force -k*(XSTR(t)+XSTREQ) due to the spring).
+
+! --- Note that XSTR0, XSTREQ and VSTR0 arrays are initialized at the beginning of the calculations
+!     to the value of 0.
+
+! --- When starting a calculation using ALE, or re-starting a calculation with ALE basing
+!     on a first calculation without ALE, an initial iteration 0 is automatically calculated
+!     in order to take initial arrays XSTR0, VSTR0 and XSTREQ into account. In another case
+!     add the following expression 'italin=1' in subroutine 'usalin', so that the code can
+!     deal with arrays XSTR0, VSTR0 or XSTREQ.
+
+! --- In the following example :
+!     - internal structure '1' has got an initial displacement XSTR0 = 2 (m) in 'y' direction and
+!     a displacement compared to equilibrium XSTREQ = 1 (m) in 'y' direction, too.
+!     - Initial velocity in 'z' direction of structure '2' equals VSTR0=-0.5 (m/s).
 
 xstr0(2,1)  = 2.d0
 xstreq(2,1) = 1.d0
 vstr0(3,2)  =-0.5d0
 
-! --- Si necessaire on definit les coefficients d'extrapolation utiles
-!       en couplage explicite :
-!       deplacement predit = X(n) + AEXXST.DT.X'(n)
-!                                 + BEXXST.DT.( X'(n)-X'(n-1) )
-!       force envoyee a la structure = CFOPRE.F(n) + (1.D0-CFOPRE).F(n-1)
+! --- Here one can modify the values of the prediction coefficients for
+!     displacements anf fluid forces in internal FSI coupled algorithm.
+!
+!     the use of these coefficients is reminded here :
+!       - predicted displacement = X(n) + aexxst * DT * X'(n)
+!                                       + bexxst * DT * (X'(n)-X'(n-1))
+!             X(n) stands for the displacement at iteration 'n'
+!             X'(n) and X'(n-1) represent internal structure velocity respectively
+!              at iteration 'n' and 'n-1'.
+!       - fluid force sent to structure internal solver = CFOPRE * F(n)
+!                                                        + (1.D0-CFOPRE) * F(n-1)
+!             F(n) and F(n-1) stand for fluid force acting on the structure respectively
+!              at iteration 'n' and 'n-1'.
 
 aexxst =  0.5d0
 bexxst =  0.0d0
 cfopre =  2.d0
 
-! --- Ecriture des fichiers historiques des structures mobiles
-!     (deplacement, vitesse, acceleration, force)
-!     La periodicite de sortie est la meme que pour les historiques
-!     standards (NTHIST)
+! --- Activation of structural history output (i.e. displacement, structural velocity,
+!     structural acceleration anf fluid force)
+!     (ihistr=0, not activated ; ihistr=1, activated)
+!     The value of structural history output step is the same as the one for standard
+!     variables ('NTHIST').
 ihistr = 1
-
+!
 return
 
-end
+end subroutine
 
 
 !===============================================================================
 
 
-                  subroutine usstr2                               &
+subroutine usstr2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -356,48 +346,42 @@ end
 
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-! GESTION DES STRUCTURES MOBILES EN ALE AVEC COUPLAGE INTERNE
-
-! SPECIFICATION DES CARACTERISTIQUES DES STRUCTURES
+! Purpose :
+! ---------
 
+! --- Definition of structural parameters in case of Fluid Structure internal coupling :
+!                 Mass, Friction, Stiffness anf Fluid Stresses.
+!
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
 ! nbstru           ! e  ! <-- ! nombre de structures definies                  !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -407,55 +391,52 @@ end
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (lndfbr)       !    !     !  (optionnel)                                   !
 ! idfstr(nfabor    ! te ! <-- ! definition des structures                      !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dtcel(ncelet)    ! tr ! <-- ! pas de temps dans les cellules                 !
-! xmstru(ndim,     ! tr ! --> ! matrice de masse des structures                !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dtcel(ncelet)    ! ra ! <-- ! time step (per cell)                           !
+! xmstru(ndim,     ! ra ! --> ! matrix of structural mass                      !
 !  ndim,nbstru)    !    !     !                                                !
-! xcstru(ndim,     ! tr ! --> ! matrice de friction des structures             !
+! xcstru(ndim,     ! ra ! --> ! matrix of structural friction                   !
 !  ndim,nbstru)    !    !     !                                                !
-! xkstru(ndim,     ! tr ! --> ! matrice de raideur des structures              !
+! xkstru(ndim,     ! ra ! --> ! matrix of structural stiffness                 !
 !  ndim,nbstru)    !    !     !                                                !
-! xstreq(ndim,     ! tr ! <-- ! deplacement du maillage initial par            !
-!       nbstru)    !    !     ! rapport a l'equilibre                          !
-! xstr(ndim,       ! tr ! <-- ! deplacement des structures                     !
+! xstreq(ndim,     ! ra ! <-- ! displacement of initial mesh compared to       !
+!       nbstru)    !    !     ! the structures position at equilibrium         !
+! xstr(ndim,       ! ra ! <-- ! structural displacement                        !
 !       nbstru)    !    !     !                                                !
-! vstr(ndim,       ! tr ! <-- ! vitesse  des structures                        !
+! vstr(ndim,       ! ra ! <-- ! structural velocity                            !
 !       nbstru)    !    !     !                                                !
-! forstr(ndim      ! tr ! <-- ! effort sur les structures (contient            !
-!       nbstru)    !    !     !            les efforts dus au fluide)          !
-! dtstr(nbstru)    ! tr ! --> ! pas de temps des structures                    !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! forstr(ndim      ! ra ! <-- ! forces acting on structures (take forces       !
+!       nbstru)    !    !     !         due to fluid effects into account   )  !
+! dtstr(nbstru)    ! ra ! --> ! structural time step                           !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -517,7 +498,7 @@ if(1.eq.1) return
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 1.  INITIALISATIONS
+! 1.  INITIALIZATION
 
 !===============================================================================
 
@@ -525,47 +506,48 @@ idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 2.  COEFFICIENTS DES STRUCTURES (appel a chaque pas de temps)
+! 2.  Structural parameters (subroutine usstr2 is called at each time step
+!                            of the calculation)
 !===============================================================================
 
+! --- For each internal structure one defines here :
+!     - its Mass                  (XMSTRU)
+!     - its Friction coefficient C (XCSTRU)
+!     - its Stiffness K           (XKSTRU)
 
-!     On remplit ici les coefficients de definissant la structure.
-!      - sa masse M                     (XMSTRU)
-!      - son coefficient de friction C  (XCSTRU)
-!      - son coefficient de raideur K   (XKSTRU)
+!     FORSTR array gives fluid stresses acting on each internal structure. Moreover
+!     it's possible to take external forces (gravity for example )into account, too.
 
-!     Le tableau FORSTR contient les efforts exerces par le fluide
-!       sur chacune des structures. Il est possible d'y ajouter une
-!       composante de force exterieure (gravite par exemple)
+!     XSTR array indicates the displacement of the structure compared to its position
+!     in initial mesh.
 
-!     Le tableau XSTR contient le deplacement des structures par rapport
-!       au maillage initial
-!     Le tableau XSTR0 contient le deplacement des structures dans le
-!       maillage initial par rapport a leur position d'equilibre
-!     Le tableau XPSTR contient la vitesse des structures
+!     XSTR0 array gives the displacement of the structures in initial mesh compared to
+!     structural equilibrium.
 
-!     XSTR, XSTR0 et VSTR sont des DONNEES pouvant servir eventuellement
-!     a calculer M, C et K. ILS NE DOIVENT PAS ETRE MODIFIES.
+!     VSTR array stands for structural velocity.
 
-!     L'evolution du systeme est resolue de maniere tridimensionnelle,
-!       ces trois coefficients sont donc en fait des matrices 3x3.
+!     XSTR, XSTR0, and VSTR arrays are DATA tables that can be used to define arrays
+!     Mass, Friction and Stiffness. THOSE ARE NOT TO BE MODIFIED.
 
-!     L'equation resolue est
+!     The 3D structural equation that is solved is the following one :
 
-!       M.X'' + C.X' + K.(X+X0) = F
+!       M.X'' + C.X' + K.(X+X0) = F   (1)
 !       = -     = -    =  - --    -
 
-!       (X est le deplacement par rapport a la position initiale du maillage,
-!        X0 est le deplacement de la position dans le maillage initial par
-!        rapport a l aposition d'equilibre)
-
-!     La resolution est effectuee par la methode de Newmark HHT.
-!     Le pas de temps utilise peut etre different du pas de temps
-!       fluide (a definir dans le tableau DTSTR, initialise par defaut
-!       au pas de temps fluide).
+!       X stands for the structural displacement compared to initil mesh postition (XSTR)
+!       -
+!       X0 represents the displacement of the structure in initial mesh compared to equilibrium
+!       --
 
+!       Note that M, C and K are 3x3 matrices.
+!                 =  =     =
+!       Equation (1) is solved using a Newmark HHT algorithm.
+!       Note that the time step used to solve this equation (DTSTR) can be different from the one of fluid
+!       calculations. USER is free to define DTSTR array. At the beginning of the calculation DTSTR is
+!       initialized to the value of DTCEL (Fluid time step).
+!
 
-!     On met a zero tous les coefficients
+! --- Matrices XMSTRU, XCSTRU and XKSTRU are initialized to the value of 0.
 do istr = 1, nbstru
 
   do ii = 1, 3
@@ -578,8 +560,10 @@ do istr = 1, nbstru
 
 enddo
 
-! Dans l'exemple ci-dessous, la structure 1, de masse 5 kg est retenue par
-!   ressort isotrope de raideur 2 N/m et de coefficient de friction 3 kg.s
+! --- Example 1): In following example structure '1' is defined as an isotropic system (i.e. matrices
+!     M, C and K are diagonal) : mass equals 5 kg, stiffness equals 2 N/m and friction
+!     =  =     =
+!     coefficient equals 3 kg.s .
 
 do ii = 1, 3
   xmstru(ii,ii,1) = 5.d0
@@ -587,34 +571,32 @@ do ii = 1, 3
   xkstru(ii,ii,1) = 3.d0
 enddo
 
+! --- Example 2): In this example structure '2' is subjected to the following movement :
+!               - In plane xOy the movement is locally defined along an axis (OX). Structural parameters
+!                 in X direction are called xm, xc and xk. The angle of inclination between global (Ox) axis
+!                 and local (OX) axis is called THETA. Movement in local (OY) direction is imposed to be rigid.
+!               - In 'z' direction the movement is modeled to be oscillating and harmonic (meaning that
+!                 there is no friction). Mass equals 1. kg and stiffness equals 1. N/m. Fluid stresses in that direction
+!                 are taken into account. Moreover the structure is also subjected to an external oscillating
+!                 force Fz_ext = 3 * cos(4*t).
 
-! Dans l'exemple ci-dessous, la structure 2 est contrainte a un mouvement
-!   decompose en deux :
-!  - dans le plan xOy, le mouvement est force dans une direction X, avec
-!    une masse xm, une friction xc et une raideur xk (et la composante
-!    normale Y est donc forcee a 0). L'axe X est incline d'un angle THETA
-!    par rapport a l'axe x du repere global.
-!  - dans la direction z, le mouvement est un mouvement d'oscillation
-!    harmonique de masse 1 et de raideur 1 (et de friction nulle) avec un
-!    forcage externe en 3.cos(4.t) (en plus des efforts fluides).
+
+!                 This leads to the following local equations :
+!                 xm.X'' + xc.X' + xk.X = FX
+!                                     Y = 0
+!                    Z''         +    Z = FZ + 3.cos(4.t)
 
 theta = pi/6.d0
 cost = cos(theta)
 sint = sin(theta)
 
+!               FX, FY, and FZ stand for the local fluid forces components. They are defined as follows, using gobal
+!               components of fluid forces Fx, Fy and Fz .
+!               FX =  COST*Fx + SINT*Fy
+!               FY = -SINT*Fx + COST*Fy
+!               FZ = Fz
 
-! Dans le repere local on a donc
-!      xm.X'' + xc.X' + xk.X = FX
-!                          Y = 0
-!         Z''         +    Z = FZ + 3.cos(4.t)
-
-!   FX, FY et FZ sont les composantes des efforts fluides dans le repere
-!     local. Soit, a partir des composantes dans le repere global :
-!     FX =  COST*Fx + SINT*Fy
-!     FY = -SINT*Fx + COST*Fy
-!     FZ = Fz
-
-! Apres changement de repere, on obtient donc :
+!               After changing of basis, the problem can be described as follows, using global coordinates:
 
 xm = 1.d0
 xc = 3.d-1
@@ -650,4 +632,4 @@ enddo
 
 return
 
-end
+end subroutine
diff --git a/users/base/ussyrc.f90 b/users/base/ussyrc.f90
index 8a60ac7..a8ed6c2 100644
--- a/users/base/ussyrc.f90
+++ b/users/base/ussyrc.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -34,29 +34,29 @@ subroutine ussyrc &
  ( )
 
 !===============================================================================
-! FONCTION :
-! ----------
+! Purpose:
+! -------
 
-!     DEFINITION DE COUPLAGE(S) AVEC LE CODE SYRTHES
+!    User subroutine.
+
+!    Define couplings with SYRTHES code.
 
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -67,8 +67,9 @@ include "parall.h"
 
 ! Arguments
 
-! Variables locales
+! Local variables
 
+character*32     namsyr
 character        cprjsy
 integer          numsyr, nbcsyr, ii
 integer          iwarns
@@ -83,50 +84,70 @@ if(1.eq.1) return
 !===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
+numsyr = -1
 iwarns = 1
 
-numsyr = -1
 nbcsyr = 3
 
-do ii = 1, nbcsyr
+! In the case of a single Code_Saturne and single SYRTHES instance, the
+! 'numsyr' and 'namsyr' arguments of 'defsyr' are ignored.
+
+! In case of multiple couplings, a coupling will be matched with available
+! SYRTHES instances prioritarily based on the 'namsyr' (SYRTHES instance name)
+! argument, then on the 'numsyr' (SYRTHES instance application number) argument.
 
-!       IPRJSY : ' ' : couplage 3D standard
-!                'x', 'y', ou 'z' : axe de projection pour couplage avec
-!                                   SYRTHES 2D.
-!       IWARNS : niveau d'impression associe
+! If 'namsyr' is empty or when coupling with SYRTHES 3, matching will be based
+! on 'numsyr' only.
 
-!       Exemple : couplage surfacique 3D aux les faces de couleur 3
-!                 avec une instance nommee SYRTHES_01
+! The arguments to defsyr are:
+!   numsyr <-- matching SYRTHES application id, or -1
+!   namsyr <-- matching SYRTHES application name
+!   cprjsy <-- ' ' : standard 3D coupling
+!              'x', 'y', or 'z': projection axis for coupling with 2D SYRTHES.
+!   critsu <-- surface selection criteria
+!   critvl <-- volume selection criteria (only for SYRTHES 4)
+!   iwarns <-- verbosity level
+
+! Loop on SYRTHES couplings
+
+do ii = 1, nbcsyr
+
+  ! Example: 3D surface coupling at faces of color 3 with instance
+  !          named 'SYRTHES_01'
 
   if (ii .eq. 1) then
 
-    CPRJSY= ' '
+    namsyr = 'SYRTHES_01'
 
-    CALL DEFSYR(NUMSYR, 'SYRTHES_01', CPRJSY, '3', ' ', IWARNS)
+    cprjsy = ' '
+
+    call defsyr(numsyr, namsyr, cprjsy, '3', ' ', iwarns)
     !==========
 
-!       Exemple : couplage surfacique 2D aux les faces du groupe 'wall'
-!                 avec une instance nommee SYRTHES_02
+  ! Example: 2D surface coupling at faces of group 'Wall' with instance
+  !          named 'SYRTHES_02'
 
   else if (ii .eq. 2) then
 
-    CPRJSY= 'z'
+    namsyr = 'SYRTHES_02'
+
+    cprjsy = 'z'
 
-    CALL DEFSYR(NUMSYR, 'SYRTHES_02', CPRJSY,                     &
+    call defsyr(numsyr, namsyr, cprjsy, 'Wall', ' ', iwarns)
     !==========
-                'wall', ' ', IWARNS)
 
-!       Exemple : couplage volumique 3D au niveau de la boite
-!                 de coins (0, 0, 0) et (1, 1, 1), avec une instance
-!                 nommee SOLID
+  ! Example: 3D volume coupling at box with corners (0, 0, 0) and (1, 1, 1)
+  !          with instance named 'Solid'
 
   else if (ii .eq. 3) then
 
-    CPRJSY= ' '
+    namsyr = 'Solid'
+
+    cprjsy = ' '
 
-    CALL DEFSYR(NUMSYR, 'SOLID', CPRJSY,                          &
+    call defsyr(numsyr, namsyr, cprjsy,                          &
     !==========
-                ' ', 'box[0., 0., 0., 1., 1., 1.]', IWARNS)
+                ' ', 'box[0., 0., 0., 1., 1., 1.]', iwarns)
 
 
   endif
@@ -135,5 +156,5 @@ enddo
 
 return
 
-end
+end subroutine
 
diff --git a/users/base/usthht.f90 b/users/base/usthht.f90
index 4ebea75..65b677e 100644
--- a/users/base/usthht.f90
+++ b/users/base/usthht.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,23 +44,22 @@ subroutine usthht &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! mode             ! e  ! <-- !  -1 : t -> h  ;   1 : h -> t                   !
 ! enthal           ! r  ! <-- ! enthalpie                                      !
 ! temper           ! r  ! <-- ! temperature                                    !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -76,7 +75,7 @@ integer          mode
 
 double precision enthal, temper
 
-! VARIABLES LOCALES
+! Local variables
 
 integer         it
 
@@ -232,4 +231,4 @@ return
 ! FIN
 !----
 
-end
+end subroutine
diff --git a/users/base/ustmgr.f90 b/users/base/ustmgr.f90
index 5f63a80..3007baf 100644
--- a/users/base/ustmgr.f90
+++ b/users/base/ustmgr.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -54,7 +54,7 @@ subroutine ustmgr &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! iappel           ! e  ! <-- ! 1 : selection/dimensionnement                  !
 !                  !    !     ! 2 : determination de irscel                    !
@@ -64,7 +64,7 @@ subroutine ustmgr &
 ! ncelf            ! e  ! <-- ! nombre d'elements maillage fin                 !
 ! ncelfe           ! e  ! <-- ! nombre d'elements etendus fin                  !
 ! nfacf            ! e  ! <-- ! nombre de faces internes maill. fin            !
-! iwarnp           ! e  ! <-- ! niveau d'impression                            !
+! iwarnp           ! i  ! <-- ! verbosity                                      !
 ! iusmgr           ! e  ! --> ! 0 : agglomeration automatique                  !
 !                  !    !     ! 1 : on utilise ce sous-programme               !
 ! niw / nrw        ! e  ! --> ! tailles des tableaux iw / rw                   !
@@ -87,16 +87,15 @@ subroutine ustmgr &
 ! rw(nrw)          ! tr ! --- ! tableau de travail                             !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -121,7 +120,7 @@ integer          iw(niw)
 double precision rw(nrw)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ncelg
 integer          ifac
@@ -387,4 +386,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/users/base/ustske.f90 b/users/base/ustske.f90
index cff1b3e..8117a48 100644
--- a/users/base/ustske.f90
+++ b/users/base/ustske.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,173 +50,161 @@ subroutine ustske &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-! ROUTINE UTILISATEUR ON PRECISE LES TERMES SOURCES UTILISATEURS
-!   POUR K-EPSILON SUR UN PAS DE TEMPS (PHASE IPHAS)
-
-! ON RESOUT RHO*VOLUME*D(VAR)/DT = CRVIMP*VAR + CRVEXP
-
-! ON FOURNIT ICI CRVIMP ET CRVEXP (ILS CONTIENNENT RHO*VOLUME)
-!    CRVEXP en kg variable/s :
-!     ex : pour k                     kg m2/s3
-!          pour epsilon               kg m2/s4
-!    CRVIMP en kg /s :
-
-! VEILLER A UTILISER UN CRVIMP NEGATIF
-! (ON IMPLICITERA CRVIMP
-!  IE SUR LA DIAGONALE DE LA MATRICE, LE CODE AJOUTERA :
-!   MAX(-CRVIMP,0) EN SCHEMA STANDARD EN TEMPS
-!       -CRVIMP    SI LES TERMES SOURCES SONT A L'ORDRE 2
-
-! CES TABLEAUX SONT INITIALISES A ZERO AVANT APPEL A CE SOUS
-!   PROGRAMME ET AJOUTES ENSUITE AUX TABLEAUX PRIS EN COMPTE
-!   POUR LA RESOLUTION
-
-! EN CAS D'ORDRE 2 DEMANDE SUR LES TERMES SOURCES, ON DOIT
-!   FOURNIR CR.EXP A L'INSTANT N     (IL SERA EXTRAPOLE) ET
-!           CR.IMP A L'INSTANT N+1/2 (IL EST  DANS LA MATRICE,
-!                                     ON LE SUPPOSE NEGATIF)
-
-! TINSTK = 2 (S11)**2 + 2 (S22)**2 + 2 (S33)**2
-!       + (2 S12)**2 + (2 S13)**2 + (2 S23)**2 )
-! DIVU = DUDX + DVDY + DWDZ
-
-!     Sij = (dUi/dxj+dUj/dxi)/2
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Purpose:
+! -------
+
+!    User subroutine.
+
+!    Additional right-hand side source terms for k and epsilon equations
+!    when using:
+!     - k-epsilon model (ITURB=20)
+!     - k-epsilon Linear Production model (ITURB=21)
+!     - v2-f phi-model (ITURB=50)
+!
+! Usage
+! -----
+!
+! The additional source term is decomposed into an explicit part (crkexp,creexp) and
+! an implicit part (crkimp,creimp) that must be provided here.
+! The resulting equations solved by the code are:
+!
+!  rho*volume*d(k)/dt   + .... = crkimp*k   + crkexp
+
+!  rho*volume*d(eps)/dt + .... = creimp*eps + creexp
+!
+! Note that crkexp, crkimp, creexp and creimp are defined after the Finite Volume
+! integration over the cells, so they include the "volume" term. More precisely:
+!   - crkexp is expressed in kg.m2/s3
+!   - creexp is expressed in kg.m2/s4
+!   - crkimp is expressed in kg/s
+!   - creimp is expressed in kg/s
+!
+! The crkexp, crkimp, creexp and creimp arrays are already initialized to 0 before
+! entering the routine. It is not needed to do it in the routine (waste of CPU time).
+!
+! For stability reasons, Code_Saturne will not add -crkimp directly to the
+! diagonal of the matrix, but Max(-crkimp,0). This way, the crkimp term is
+! treated implicitely only if it strengthens the diagonal of the matrix.
+! However, when using the second-order in time scheme, this limitation cannot
+! be done anymore and -crkimp is added directly. The user should therefore test
+! the negativity of crkimp by himself.
+! The same mechanism applies to cveimp.
+!
+! When using the second-order in time scheme, one should supply:
+!   - crkexp and creexp at time n
+!   - crkimp and creimp at time n+1/2
+!
+! When entering the routine, two additional work arrays are already set for
+! potential user need:
+!   tinstk =  2 (S11)**2 + 2 (S22)**2 + 2 (S33)**2
+!          +  (2 S12)**2 + (2 S13)**2 + (2 S23)**2
+!
+!          where Sij = (dUi/dxj+dUj/dxi)/2
+!
+!   divu = du/dx + dv/dy + dw/dz
+
+
+
+!
+! The selection of cells where to apply the source terms is based on a getcel
+! command. For more info on the syntax of the getcel command, refer to the
+! user manual or to the comments on the similar command getfbr in the routine
+! usclim.
+
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
-! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
-! itypsm           ! te ! <-- ! type de source de masse pour les               !
-! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant            prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
-!  (ncepdp,6)      !    !     !                                                !
-! smacel           ! tr ! <-- ! valeur des variables associee a la             !
-! (ncesmp,*   )    !    !     !  source de masse                               !
-!                  !    !     !  pour ivar=ipr, smacel=flux de masse           !
-! tinstk(ncelet    ! tr ! <-- ! somme sijsij  (en 1/s2)                        !
-! divu  (ncelet    ! tr ! <-- ! div(u)     (en 1/s )                           !
-! crkexp(ncelet    ! tr ! --> ! tableau pour k     pour part explicit          !
-! crkimp(ncelet    ! tr ! --> ! tableau pour k     pour terme instat           !
-! creexp(ncelet    ! tr ! --> ! tableau pour eps   pour part explicit          !
-! creimp(ncelet    ! tr ! --> ! tableau pour eps   pour terme instat           !
-! viscf(nfac)      ! tr ! --- ! tableau de travail    faces internes           !
-! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
-! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
-! w1..10(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss terms           !
+! ncesmp           ! i  ! <-- ! number of cells with mass source term          !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! index number of the current phase              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icepdc(ncepdp)   ! ia ! <-- ! index number of cells with head loss terms     !
+! icetsm(ncesmp)   ! ia ! <-- ! index number of cells with mass source terms   !
+! itypsm           ! ia ! <-- ! type of mass source term for each variable     !
+!  (ncesmp,nvar)   !    !     !  (see ustsma)                                  !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtpa             ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (preceding time steps)                        !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! ckupdc(ncepdp,6) ! ra ! <-- ! head loss coefficient                          !
+! smacel           ! ra ! <-- ! value associated to each variable in the mass  !
+!  (ncesmp,nvar)   !    !     !  source terms or mass rate (see ustsma)        !
+! tinstk           ! ra ! <-- ! tubulent production term (see comment above)   !
+! divu             ! ra ! <-- ! velocity divergence (see comment above)        !
+! crkexp           ! ra ! --> ! explicit part of the source term for k         !
+! creexp           ! ra ! --> ! explicit part of the source term for epsilon   !
+! crkimp           ! ra ! --> ! implicit part of the source term for k         !
+! creimp           ! ra ! --> ! implicit part of the source term for epsilon   !
+! viscf(nfac)      ! ra ! --- ! work array                                     !
+! viscb(nfabor)    ! ra ! --- ! work array                                     !
+! xam(nfac,2)      ! ra ! --- ! work array                                     !
+! w1 to w10        ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!-------------------------------------------------------------------------------
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -267,7 +255,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet), w9(ncelet), w10(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, ikiph, ieiph, ipcrom
@@ -285,17 +273,17 @@ if(1.eq.1) return
 
 
 !===============================================================================
-! 1. INITIALISATION
+! 1. Initialization
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
-! --- Numero des variables k et epsilon de la phase IPHAS courante
+! --- Index numbers of variables k and epsilon for the current phase iphas
 ikiph = ik (iphas)
 ieiph = iep(iphas)
 
-! --- Numero des grandeurs physiques (voir usclim) : masse volumique
+! --- Index number of the density in the propce array
 ipcrom = ipproc(irom(iphas))
 
 if(iwarni(ikiph).ge.1) then
@@ -303,62 +291,48 @@ if(iwarni(ikiph).ge.1) then
 endif
 
 !===============================================================================
-! 2. EXEMPLE FICTIF :
+! 2. Example of arbitrary additional source term for k and epsilon
 
-!    Pour la phase 2
-
-!      Terme source k :
+!      Source term for k :
 !         rho volume d(k)/dt       = ...
 !                        ... - rho*volume*ff*epsilon - rho*volume*k/tau
 
-!      Terme source epsilon :
+!      Source term for epsilon :
 !         rho volume d(epsilon)/dt = ...
 !                        ... + rho*volume*xx
 
-!      Avec, pour l'exemple,
-!                 xx = 2.d0, ff=3.d0, tau = 4.d0
+!      With xx = 2.d0, ff=3.d0 and tau = 4.d0
 
 !===============================================================================
 
+! --- Explicit source terms
 
-! --- Si la phase est bien la phase selectionnee
-
-if(iphas.ne.2) then
+ff  = 3.d0
+tau = 4.d0
+xx  = 2.d0
 
+do iel = 1, ncel
+  crkexp(iel) = -propce(iel,ipcrom)*volume(iel)*ff*rtpa(iel,ieiph)
+  creexp(iel) =  propce(iel,ipcrom)*volume(iel)*xx
+enddo
 
-! --- Termes sources explicites
+! --- Implicit source terms
+!        creimp is already initialized to 0, no need to set it here
 
-  ff  = 3.d0
-  tau = 4.d0
-  xx  = 2.d0
-
-  do iel = 1, ncel
-    crkexp(iel) = -propce(iel,ipcrom)*volume(iel)                 &
-                                               *ff*rtpa(iel,ieiph)
-    creexp(iel) =  propce(iel,ipcrom)*volume(iel)*xx
-  enddo
-
-! --- Termes sources implicites (diagonale)
-!        CRKIMP et CREIMP sont initialises a zero avant l'entree dans ce
-!          sous-programme : il est donc inutile de completer CREIMP
-!          s'il est nul.
-
-  do iel = 1, ncel
-    crkimp(iel) = -propce(iel,ipcrom)*volume(iel)/tau
-  enddo
-
-endif
+do iel = 1, ncel
+  crkimp(iel) = -propce(iel,ipcrom)*volume(iel)/tau
+enddo
 
 !--------
-! FORMATS
+! Formats
 !--------
 
- 1000 format(' TERMES SOURCES UTILISATEURS K-EPSILON PHASE ',I4,/)
+ 1000 format(' User source terms for k and epsilon, phase ',I4,/)
 
 !----
-! FIN
+! End
 !----
 
 return
 
-end
+end subroutine
diff --git a/users/base/ustskw.f90 b/users/base/ustskw.f90
index 36225c9..7ad27e4 100644
--- a/users/base/ustskw.f90
+++ b/users/base/ustskw.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,185 +50,168 @@ subroutine ustskw &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-! ROUTINE UTILISATEUR ON PRECISE LES TERMES SOURCES UTILISATEURS
-!   POUR K-OMEGA SUR UN PAS DE TEMPS (PHASE IPHAS)
-
-! ON RESOUT RHO*VOLUME*D(VAR)/DT = CRVIMP*VAR + CRVEXP
-
-! ON FOURNIT ICI CRVIMP ET CRVEXP (ILS CONTIENNENT RHO*VOLUME)
-!    CRVEXP en kg variable/s :
-!     ex : pour k                     kg.m2/s3
-!          pour omega                 kg/s2
-!    CRVIMP en kg/s :
-
-! VEILLER A UTILISER UN CRVIMP NEGATIF
-! (ON IMPLICITERA CRVIMP
-!  IE SUR LA DIAGONALE DE LA MATRICE, LE CODE AJOUTERA :
-!   MAX(-CRVIMP,0) EN SCHEMA STANDARD EN TEMPS
-!       -CRVIMP    SI LES TERMES SOURCES SONT A L'ORDRE 2
-
-! CES TABLEAUX SONT INITIALISES A ZERO AVANT APPEL A CE SOUS
-!   PROGRAMME ET AJOUTES ENSUITE AUX TABLEAUX PRIS EN COMPTE
-!   POUR LA RESOLUTION
-
-! EN CAS D'ORDRE 2 DEMANDE SUR LES TERMES SOURCES, ON DOIT
-!   FOURNIR CR.EXP A L'INSTANT N     (IL SERA EXTRAPOLE) ET
-!           CR.IMP A L'INSTANT N+1/2 (IL EST  DANS LA MATRICE,
-!                                     ON LE SUPPOSE NEGATIF)
-
-! S2KW   = 2 (S11)**2 + 2 (S22)**2 + 2 (S33)**2
-!       + (2 S12)**2 + (2 S13)**2 + (2 S23)**2 )
-
-!     Sij = (dUi/dxj+dUj/dxi)/2
-
-! DIVUKW = DUDX + DVDY + DWDZ
-
-! GKGW   = GRAD(K).GRAD(OMEGA)
-
-! GGRHO  = -G.GRAD(RHO)/PRDTUR/RHO SI IGRAKE>0
-! GGRHO  = 0                       SI IGRAKE=0
-
-! XF1    = COEFFICIENT F1 DE PONDERATION K-EPS/K-OMEGA
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+!===============================================================================
+! Purpose:
+! -------
+
+!    User subroutine.
+
+!    Additional right-hand side source terms for k and omega equations
+!    when using k-omega SST (ITURB=60)
+!
+! Usage
+! -----
+!
+! The additional source term is decomposed into an explicit part (crkexp,crwexp) and
+! an implicit part (crkimp,crwimp) that must be provided here.
+! The resulting equations solved by the code are:
+!
+!  rho*volume*d(k)/dt     + .... = crkimp*k     + crkexp
+
+!  rho*volume*d(omega)/dt + .... = crwimp*omega + crwexp
+!
+! Note that crkexp, crkimp, crwexp and crwimp are defined after the Finite Volume
+! integration over the cells, so they include the "volume" term. More precisely:
+!   - crkexp is expressed in kg.m2/s3
+!   - crwexp is expressed in kg/s2
+!   - crkimp is expressed in kg/s
+!   - crwimp is expressed in kg/s
+!
+! The crkexp, crkimp, crwexp and crwimp arrays are already initialized to 0 before
+! entering the routine. It is not needed to do it in the routine (waste of CPU time).
+!
+! For stability reasons, Code_Saturne will not add -crkimp directly to the
+! diagonal of the matrix, but Max(-crkimp,0). This way, the crkimp term is
+! treated implicitely only if it strengthens the diagonal of the matrix.
+! However, when using the second-order in time scheme, this limitation cannot
+! be done anymore and -crkimp is added directly. The user should therefore test
+! the negativity of crkimp by himself.
+! The same mechanism applies to cvwimp.
+!
+! When using the second-order in time scheme, one should supply:
+!   - crkexp and crwexp at time n
+!   - crkimp and crwimp at time n+1/2
+!
+! When entering the routine, some additional work arrays are already set for
+! potential user need:
+!   s2kw   =  2 (S11)**2 + 2 (S22)**2 + 2 (S33)**2
+!          +  (2 S12)**2 + (2 S13)**2 + (2 S23)**2
+!
+!            where Sij = (dUi/dxj+dUj/dxi)/2
+!
+!   divukw = du/dx + dv/dy + dw/dz
+
+!   gkgw = grad(k).grad(omega)
+
+!   ggrho = -g.grad(rho)/prdtur/rho if igrake>0
+!         = 0                       if igrake=0
+!            where prdtur is the turbulent Prandtl number
+
+!   xf1   = k-eps/k-omega blending coefficient
+
+!
+! The selection of cells where to apply the source terms is based on a getcel
+! command. For more info on the syntax of the getcel command, refer to the
+! user manual or to the comments on the similar command getfbr in the routine
+! usclim.
 
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
-! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
-! itypsm           ! te ! <-- ! type de source de masse pour les               !
-! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant            prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
-!  (ncepdp,6)      !    !     !                                                !
-! smacel           ! tr ! <-- ! valeur des variables associee a la             !
-! (ncesmp,*   )    !    !     !  source de masse                               !
-!                  !    !     !  pour ivar=ipr, smacel=flux de masse           !
-! s2kw(ncelet)     ! tr ! <-- ! 2.sijsij  (en 1/s2)                            !
-! divukw(ncelet    ! tr ! <-- ! div(u)     (en 1/s )                           !
-! gkgw(ncelet)     ! tr ! <-- ! grad(k).grad(omega)                            !
-! ggrho(ncelet)    ! tr ! <-- ! -g*grad(rho)/prdtur/rho si igrake>0            !
-! xf1(ncelet)      ! tr ! <-- ! coefficient de ponderation k-eps/k-w           !
-! crkexp(ncelet    ! tr ! --> ! tableau pour k     pour part explicit          !
-! crkimp(ncelet    ! tr ! --> ! tableau pour k     pour terme instat           !
-! crwexp(ncelet    ! tr ! --> ! tableau pour omega pour part explicit          !
-! crwimp(ncelet    ! tr ! --> ! tableau pour omega pour terme instat           !
-! viscf(nfac)      ! tr ! --- ! tableau de travail    faces internes           !
-! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
-! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
-! w1..10(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss terms           !
+! ncssmp           ! i  ! <-- ! number of cells with mass source terms         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! index number of the current phase              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icepdc(ncepdp)   ! ia ! <-- ! index number of cells with head loss terms     !
+! icetsm(ncesmp)   ! ia ! <-- ! index number of cells with mass source terms   !
+! itypsm           ! ia ! <-- ! type of mass source term for each variable     !
+!  (ncesmp,nvar)   !    !     !  (see ustsma)                                  !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtpa             ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (preceding time steps)                        !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! ckupdc(ncepdp,6) ! ra ! <-- ! head loss coefficient                          !
+! smacel           ! ra ! <-- ! value associated to each variable in the mass  !
+!  (ncesmp,nvar)   !    !     !  source terms or mass rate (see ustsma)        !
+! s2kw             ! ra ! <-- ! turbulent production term (see comment above)  !
+! divukw           ! ra ! <-- ! velocity divergence (see comment above)        !
+! gkgw             ! ra ! <-- ! grad(k).grad(omega)                            !
+! ggrho            ! ra ! <-- ! gravity source term (see comment above)        !
+! xf1              ! ra ! <-- ! k-eps/k-w blending function (see comment above)!
+! crkexp           ! ra ! --> ! explicit part of the source term for k         !
+! crwexp           ! ra ! --> ! explicit part of the source term for omega     !
+! crkimp           ! ra ! --> ! implicit part of the source term for k         !
+! crwimp           ! ra ! --> ! implicit part of the source term for omega     !
+! viscf(nfac)      ! ra ! --- ! work array                                     !
+! viscb(nfabor)    ! ra ! --- ! work array                                     !
+! xam(nfac,2)      ! ra ! --- ! work array                                     !
+! w1 to w7         ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!-------------------------------------------------------------------------------
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -279,7 +262,7 @@ double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision w4(ncelet), w5(ncelet), w6(ncelet), w7(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, ikiph, iomgip, ipcrom
@@ -297,17 +280,17 @@ if(1.eq.1) return
 
 
 !===============================================================================
-! 1. INITIALISATION
+! 1. Initialization
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
-! --- Numero des variables k et epsilon de la phase IPHAS courante
+! --- Index numbers of variables k and omega for the current phase iphas
 ikiph  = ik (iphas)
 iomgip = iomg(iphas)
 
-! --- Numero des grandeurs physiques (voir usclim) : masse volumique
+! --- Index number of the density in the propce array
 ipcrom = ipproc(irom(iphas))
 
 if(iwarni(ikiph).ge.1) then
@@ -315,62 +298,48 @@ if(iwarni(ikiph).ge.1) then
 endif
 
 !===============================================================================
-! 2. EXEMPLE FICTIF :
-
-!    Pour la phase 2
+! 2. Example of arbitrary additional source term for k and omega
 
-!      Terme source k :
+!      Source term for k :
 !         rho volume d(k)/dt       = ...
-!                        ... - rho*volume*ff*epsilon - rho*volume*k/tau
+!                        ... - rho*volume*ff*omega - rho*volume*k/tau
 
-!      Terme source omega :
+!      Source term for omega :
 !         rho volume d(omega)/dt = ...
 !                        ... + rho*volume*xx
 
-!      Avec, pour l'exemple,
-!                 xx = 2.d0, ff=3.d0, tau = 4.d0
+!      With xx = 2.d0, ff=3.d0 and tau = 4.d0
 
 !===============================================================================
 
+! --- Explicit source terms
 
-! --- Si la phase est bien la phase selectionnee
+ff  = 3.d0
+tau = 4.d0
+xx  = 2.d0
 
-if(iphas.ne.2) then
+do iel = 1, ncel
+  crkexp(iel) = -propce(iel,ipcrom)*volume(iel)*ff*rtpa(iel,iomgip)
+  crwexp(iel) =  propce(iel,ipcrom)*volume(iel)*xx
+enddo
 
+! --- Implicit source terms
+!        crwimp is already initialized to 0, no need to set it here
 
-! --- Termes sources explicites
-
-  ff  = 3.d0
-  tau = 4.d0
-  xx  = 2.d0
-
-  do iel = 1, ncel
-    crkexp(iel) = -propce(iel,ipcrom)*volume(iel)                 &
-                                          *ff*rtpa(iel,iomgip)
-    crwexp(iel) =  propce(iel,ipcrom)*volume(iel)*xx
-  enddo
-
-! --- Termes sources implicites (diagonale)
-!        CRKIMP et CREIMP sont initialises a zero avant l'entree dans ce
-!          sous-programme : il est donc inutile de completer CRWIMP
-!          s'il est nul.
-
-  do iel = 1, ncel
-    crkimp(iel) = -propce(iel,ipcrom)*volume(iel)/tau
-  enddo
-
-endif
+do iel = 1, ncel
+  crkimp(iel) = -propce(iel,ipcrom)*volume(iel)/tau
+enddo
 
 !--------
-! FORMATS
+! Formats
 !--------
 
- 1000 format(' TERMES SOURCES UTILISATEURS K-EPSILON PHASE ',I4,/)
+ 1000 format(' User source terms for k and omega, phase ',I4,/)
 
 !----
-! FIN
+! End
 !----
 
 return
 
-end
+end subroutine
diff --git a/users/base/ustsma.f90 b/users/base/ustsma.f90
index b7d4da0..18f6623 100644
--- a/users/base/ustsma.f90
+++ b/users/base/ustsma.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,226 +46,195 @@ subroutine ustsma &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
+! Purpose:
+! -------
 
-!                    TERMES SOURCES DE MASSE
-!                     POUR LA PHASE IPHAS
+!    User subroutine.
 
-! IAPPEL = 1 :
-!             CALCUL DU NOMBRE DE CELLULES AVEC SOURCE DE MASSE
-!              NCESMP
-! IAPPEL = 2 :
-!             REPERAGE DES CELLULES AVEC SOURCE DE MASSE
-!              ICETSM(NCESMP)
-! IAPPEL = 3 :
-!             CALCUL DES VALEURS DES COEFS DE SOURCE DE MASSE
+!    Mass source term for a phase iphas
 
-!             L'equation de conservation de la masse devient :
+! The subroutine ustsma is called at three different stages in the code
+!  (iappel = 1, 2 or 3)
 
-!             d(rho)/dt + div(rho u) = GAMMA
-!                                 -
+! iappel = 1
+!    Calculation of the number of cells where a mass source term is
+!    imposed: ncesmp
+!    Called once at the beginnign of the calculation
 
-!             L'equation d'une variable f devient :
+! iappel = 2
+!    Identification of the cells where a mass source term is imposed:
+!    array icesmp(ncesmp)
+!    Called once at the beginnign of the calculation
 
-!             d(f)/dt = ..... + GAMMA*(f_i - f)
+! iappel = 3
+!    Calculation of the values of the mass source term
+!    Called at each time step
 
-!             discretisee en :
 
-!             RHO*(f^(n+1) - f^(n))/DT = .....
-!                                        + GAMMA*(f_i - f^(n+1))
 
+! The equation for mass conservation becomes
 
-!             Deux possibilites pour chaque variable f :
-!                - Flux de masse a la valeur de f ambiante
+!           d(rho)/dt + div(rho u) = gamma
+
+! The equation for a variable f becomes
+
+!           d(f)/dt = ..... + gamma*(f_i - f)
+
+!   discretized as
+
+!           rho*(f^(n+1) - f^(n))/dt = .....
+!                                    + gamma*(f_i - f^(n+1))
+
+! f_i is the value of f associated to the injecte mass.
+! Two options are available:
+!   - the mass flux is injected with the local value of variable f
 !                           --> f_i = f^(n+1)
-!                   (l'equation de f n'est alors pas modifiee)
-!                - Flux de masse avec une valeur donnee pour f
-!                           --> f_i specifie par l'utilisateur
-
-
-
-
-!            VARIABLES A REMPLIR PAR L'UTILISATEUR :
-!            =======================================
-
-!             NCESMP : Nombre de cellules a source de masse
-
-!             ICETSM(IELTSM) : Numero de la IELTSMieme cellule a
-!                                source de masse (IELTSM<=NCESMP)
-
-!             SMACEL(IEL,IPR(IPHAS)) : Valeur du flux de masse
-!                                 GAMMA (en kg/m^3/s)
-!                                 dans la IELieme cellule a source
-!                                 de masse
-
-!             ITYPSM(IEL,IVAR) : type de flux associe a la variable
-!                                  IVAR dans la IELeme cellule a
-!                                  source de masse (pour toutes les
-!                                  variables sauf IVAR=IPR(IPHAS))
-!                 + ITYPSM = 0 --> injection a la valeur ambiante
-!                                  de IVAR
-!                 + ITYPSM = 1 --> injection a une valeur donnee
-!                                  de IVAR
-
-!             SMACEL(IEL,IVAR) : Valeur de f_i pour la variable
-!                                IVAR (pour toutes les variables
-!                                sauf IVAR=IPR(IPHAS))
-
-
-!            REMARQUES
-!            =========
-!            * Si ITYPSM(IEL,IVAR)=0, SMACEL(IEL,IVAR)
-!               n'est pas utilise
-!            * Si SMACEL(IEL,IPR(IPHAS))<0,
-!               on enleve de la masse au systeme, Code_Saturne
-!               utilise donc automatiquement f_i=f^(n+1)
-!               QUELLES QUE SOIENT LES VALEURS DE ITYPSM(IEL)
-!               et SMACEL(IEL,IVAR)
-
-!            * Si une variable n'est pas reliee a la phase iphas
-!               pour laquelle les informations precedentes ont ete
-!               completees, aucun terme source ne sera impose.
-
-!            * Pour un scalaire qui ne repondrait pas a l'equation
-!               d(rho f)/dt + d(rho U f)/dx = ...
-!               (champ convecteur different par exemple)
-!               il est incorrect d'imposer le terme source de masse
-!               comme fait ici (sauf en cas d'injection a la valeur
-!               ambiante). Il faut introduire directement le terme
-!               source comme un terme source scalaire dans ustssc.
-
-
-! IDENTIFICATION DES CELLULES/FACES DE BORD/FACES INTERNES
-! ========================================================
-
-!  Les commandes GETCEL, GETFBR et GETFAC permettent d'identifier
-!  respectivement les cellules, faces ou faces de bord en fonction
-!  de differents criteres.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
-
-!  La syntaxe des commandes GETFBR et GETFAC est identique.
+!                   (the equation for f is therefore not modified)
+!
+!   - the mass flux is injected with a specific value for f
+!                           --> f_i is specified by the user
+
+
+! Variables to be specified by the user
+! =====================================
+
+!  ncesmp: number of cells where a mass source term is imposed
+
+!  icetsm(ieltsm): identification of the cells where a mass source
+!                  term is imposed.
+!                  For each cell where a mass source term is imposed
+!                  (ielstm in [1;ncesmp]), icetsm(ieltsm) is the
+!                  global index number of the corresponding cell
+!                  (icestm(ieltsm) in [1;ncel])
+
+!  smacel(ieltsm,ipr(iphas)): value of the injection mass rate gamma (kg/m3/s)
+!                             in the ieltsm cell with mass source term
+
+!  itypsm(ieltsm,ivar): type of treatment for variable ivar in the
+!                       ieltsm cell with mass source term.
+!                     * itypsm = 0 --> injection of ivar at local value
+!                     * itypsm = 1 --> injection of ivar at user
+!                                      specified value
+
+!  smacel(ieltsm,ivar): specified value for variable ivar associated
+!                       to the injected mass in the ieltsm cell with
+!                       a mass source term
+!                                  except for ivar=ipr(iphas)
+
+!
+! Remarks
+! =======
+!
+! - if itypsm(ieltsm,ivar)=0, smacel(ieltsm,ivar) is not used
+
+! - if smacel(ieltsm,ipr(iphas))<0, mass is removed from the system,
+!     therefore Code_Saturna automatically considers f_i=f^(n+1),
+!     whatever the values of itypsm or smacel specified by the user
+
+! - if a value ivar is not linked to phase iphas for a mass source
+!     term is imposed, no source term will be taen into account.
+
+! - if a scalar doesn't evolve following the standard equation
+!     d(rho f)/dt + d(rho U f)/dx = ...
+!     (alternate convective field for instance), the source term
+!     set by this routine will nto be correct (except in case of
+!     injection at the local value of the variable). The proper source
+!     term should be added directly in ustssc.
+
+
+! Identification of cells
+! =======================
+! The selection of cells where to apply the source terms is based on a getcel
+! command. For more info on the syntax of the getcel command, refer to the
+! user manual or to the comments on the similar command getfbr in the routine
+! usclim.
+
 
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules avec tsm                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! iappel           ! e  ! <-- ! indique les donnes a renvoyer                  !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
-! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
-! itypsm           ! te ! <-- ! type de source de masse pour les               !
-! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant            prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
-!  (ncepdp,6)      !    !     !                                                !
-! smacel           ! tr ! <-- ! valeur des variables associee a la             !
-! (ncesmp,nvar)    !    !     !  source de masse                               !
-!                  !    !     ! pour ivar=ipr, smacel=flux de masse            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss terms           !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ncssmp           ! i  ! <-- ! number of cells with mass source terms         !
+! iphas            ! i  ! <-- ! index number of the current phase              !
+! iappel           ! i  ! <-- ! indicates which at which stage the routine is  !
+!                  !    !     !  is called                                     !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icepdc(ncepdp)   ! ia ! <-- ! index number of cells with head loss terms     !
+! icetsm(ncesmp)   ! ia ! <-- ! index number of cells with mass source terms   !
+! itypsm           ! ia ! <-- ! type of mass source term for each variable     !
+!  (ncesmp,nvar)   !    !     !  (see uttsma.f90)                              !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtpa             ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (preceding time steps)                        !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! ckupdc(ncepdp,6) ! ra ! <-- ! head loss coefficient                          !
+! smacel           ! ra ! <-- ! value associated to each variable in the mass  !
+!  (ncesmp,nvar)   !    !     !  source terms or mass rate                     !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -313,7 +282,7 @@ double precision ckupdc(ncepdp,6)
 double precision smacel(ncesmp,nvar)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ieltsm
@@ -334,51 +303,52 @@ idebra = idbra0
 if(iappel.eq.1.or.iappel.eq.2) then
 
 !===============================================================================
-! 1. POUR CHAQUE PHASE : UN OU DEUX APPELS
-
-!    PREMIER APPEL :
-
-!        IAPPEL = 1 : NCESMP : CALCUL DU NOMBRE DE CELLULES
-!                                AVEC TERME SOURCE DE MASSE
-
+! 1. For each phase, one or two calls
 
-!    DEUXIEME APPEL (POUR LES PHASES AVEC NCESMP > 0) :
+!   First call:
+!
+!       iappel = 1: ncesmp: calculation of the number of cells with
+!                             mass source term
 
-!        IAPPEL = 2 : ICETSM : REPERAGE DU NUMERO DES CELLULES
-!                                AVEC TERME SOURCE DE MASSE
 
+!   Second call (if ncesmp>0):
+!       iappel = 2: icetsm: index number of cells with mass source terms
 
-! REMARQUES :
+! WARNINGS
+! ========
+!   Do not use smacel in this section (it is set on the third call, iappel=3)
 
-!        Ne pas utiliser SMACEL dans cette section
-!          (il est rempli au troisieme appel, IAPPEL = 3)
+!   Do not use icetsm in this section on the first call (iappel=1)
 
-!        Ne pas utiliser ICETSM dans cette section
-!           au premier appel (IAPPEL = 1)
-
-!        On passe ici a chaque pas de temps
-!           (ATTENTION au cout calcul de vos developpements)
+!   This section (iappel=1 or 2) is only accessed at the beginning of a
+!     calculation. Should the localization of the mass source terms evolve
+!     in time, the user must identify at the beginning all cells that can
+!     potentially becomea mass source term.
 
 !===============================================================================
 
 
-!  1.1 A completer par l'utilisateur : selection des cellules
-!  -----------------------------------------------------------
+!  1.1 To be completed by the user: cell selection
+!  -----------------------------------------------
 
-! Exemple 1 : Aucune source de masse (defaut)
+! Example 1: No mass source term (default)
   ieltsm = 0
 
 
-! Exemple 2 : Sources de masse pour la phase 1
-!               dans les cellules ayant une face de couleur 6
-!            et dans les cellules dont le centre est a x < 2
+! Example 2 : Mass source term for phase one in the cells that
+!              have a boundary face of color 3 and the cells
+!              with a coordinate X between 2.5 and 5.
+!
+!     In this test in two parts, one mut pay attention not to count
+!      the cells twice (a cell with a boundary face of color 3 can
+!      also have a coordinate X between 2.5 and 5).
+!     One should also pay attention that, on the first call, the
+!      array icetsm doesn't exist yet. It mustn't be used outside
+!      of tests (iappel.eq.2).
 
-!     Dans ce test en deux parties, il faut faire attention a
-!       ne pas compter les cellules deux fois (une cellule dont une
-!       face est couleur 6 peut aussi etre a x < 2, mais il ne
-!       faut la compter qu'une seule fois). Il faut egalement noter
-!       que lors du premier passage, le tableau ICETSM n'existe pas
-!       encore (ne pas l'utiliser en dehors des tests IAPPEL.EQ.2).
+! It is quite frequent to forget to remove this example when it is
+!  not needed. Therefore the following test is designed to prevent
+!  any bad surprise.
 
   iutile = 0
   if(iutile.eq.1) then
@@ -387,9 +357,8 @@ if(iappel.eq.1.or.iappel.eq.2) then
 
       ieltsm = 0
 
-!     Cellules dont le centre est a 250 < x < 500
-
-      CALL GETCEL('X < 500.0 and X > 250.0',NLELT,LSTELT)
+!     Cells with coordinate X between 2.5 and 5.
+      CALL GETCEL('X > 2.5 and X < 5.0',NLELT,LSTELT)
       do ilelt = 1, nlelt
         ii = lstelt(ilelt)
         ieltsm = ieltsm + 1
@@ -397,14 +366,14 @@ if(iappel.eq.1.or.iappel.eq.2) then
       enddo
 
 
-!     Cellules de bord dont une face est de couleur 3
+!     Cells with a boundary face of color 3
 
       CALL GETFBR('3',NLELT,LSTELT)
       do ilelt = 1, nlelt
         ifac = lstelt(ilelt)
         ii   = ifabor(ifac)
-!       On ne comptabilise cette cellule que si on ne l'a pas deja vue
-!         pour cela on prend la negation du test precedent
+!       The cells that have already been counted above are not
+!        counted again.
         if (.not.(xyzcen(1,ii).lt.500.d0.and.                     &
                   xyzcen(1,ii).gt.250.d0)    )then
           ieltsm = ieltsm + 1
@@ -416,15 +385,14 @@ if(iappel.eq.1.or.iappel.eq.2) then
       ieltsm = 0
     endif
 
-  endif
+ endif
 
 
-!  1.2 Sous section generique a ne pas modifier
-!  ---------------------------------------------
+!  1.2 Generic subsection: do not modify
+!  -------------------------------------
 
-! --- Pour IAPPEL = 1,
-!      Renseigner NCESMP, nombre de cellules avec terme source de masse
-!      Le bloc ci dessous est valable pourles 2 exemples ci dessus
+! --- For iappel = 1,
+!      Specification of ncesmp. This block is valid for both examples.
 
   if (iappel.eq.1) then
     ncesmp = ieltsm
@@ -436,38 +404,34 @@ elseif(iappel.eq.3) then
 
 !===============================================================================
 
-! 2. POUR CHAQUE PHASE AVEC NCESMP > 0 , TROISIEME APPEL
-
-!      TROISIEME APPEL (POUR LES PHASES AVEC NCESMP > 0) :
+! 2. For each phase with ncesmp > 0 , third call
 
-!       IAPPEL = 3 : ITYPSM : TYPE DE SOURCE DE MASSE
-!                    SMACEL : SOURCE DE MASSE
+!       iappel = 3 : itypsm : type of mass source term
+!                    smacel : mass source term
 
 
-!   REMARQUE :
-
-!      ATTENTION, Si on positionne ITYPSM(IEL,IVAR) A 1, IL FAUT
-!      egalement renseigner SMACEL(IEL,IVAR)
+! Remark
+! ======
+! If itypsm(ieltsm,ivar) is set to 1, smacel(ieltsm,ivar) must be set.
 
 !===============================================================================
 
 
 
-!  2.1 A completer par l'utilisateur ITYPSM et SMACEL
-!  -----------------------------------------------------
+!  2.1 To be completed by the user: itypsm and smacel
+!  --------------------------------------------------
 
-! Exemple 1 : simulation d'une entree par des termes de source de masse
-!           et affichage du flux de masse total pour la phase 1
+! Example 1: simulation of an inlet condition by mass source terms
+!            and printing of the total mass rate for phase 1.
 
   if(iphas.eq.1) then
 
     vent = 0.1d0
     vent2 = vent**2
     dh     = 0.5d0
-!         Calcul de la vitesse de frottement au carre (USTAR2)
-!           et de k et epsilon en entree (XKENT et XEENT) a partir
-!           de lois standards en conduite circulaire
-!           (leur initialisation est inutile mais plus propre)
+!
+! Calculation of the inlet conditions for k and epsilon with standard
+!   laws in a circular pipe.
     ustar2 = 0.d0
     xkent  = epzero
     xeent  = epzero
@@ -509,7 +473,7 @@ elseif(iappel.eq.3) then
         smacel(ieltsm,iep(iphas)) = xeent
         itypsm(ieltsm,iphi(iphas)) = 1
         smacel(ieltsm,iphi(iphas)) = 2.d0/3.d0
-!     Il n'y a pas de terme source de masse dans l'equation de f_barre
+! There is no mass source term in the equation for f_bar
       else if (iturb(iphas).eq.60) then
         itypsm(ieltsm,ik(iphas)) = 1
         smacel(ieltsm,ik(iphas)) = xkent
@@ -540,24 +504,23 @@ elseif(iappel.eq.3) then
 
 !-------------------------------------------------------------------------------
 
-! Exemple 2 : simulation d'un soutirage (par une pompe par exemple)
-!               total de 80 000 kg/s
-!             On suppose que l'on souhaite repartir uniformement ce
-!               puits de masse sur les NCESMP cellules selectionnees
-!               plus haut.
-
+! Example 2 : simulation of a suction (by a pump for instance) with a
+!             total rate of 80 000 kg/s.
+!             The suction rate is supposed to be uniformly distributed
+!             on all the cells selected above.
 
-!     Le test sur IUTILE permet de ne pas passer dans l'exemple si
-!       on oublie de l'eliminer, lors de la mise en place d'un calcul
-!       reel.
+! It is quite frequent to forget to remove this example when it is
+!  not needed. Therefore the following test is designed to prevent
+!  any bad surprise.
 
   iutile = 0
   if(iutile.eq.1) then
 
     if(iphas.eq.1) then
 
-!     Calcul du volume total de la zone ou est impose le terme source
-!       (le cas des calculs paralleles est prevu avec parsom)
+! Calculation of the total volume of the area where the mass source
+!   term is imposed (the case of parallel computing is taken into
+!   account with the call to parsom).
       vtot = 0.d0
       do ieltsm = 1, ncesmp
         vtot = vtot + volume(icetsm(ieltsm))
@@ -566,10 +529,9 @@ elseif(iappel.eq.3) then
         call parsom (vtot)
       endif
 
-!     Le puits de masse est GAMMA = -80000/VTOT en kg/(m3 s)
-!       (quel que soit le nombre de cellules NCESMP)
-!     On l'impose ci-dessous (avec un test au cas ou VTOT=0)
-!     On calcule au passage le terme puits total pour verification.
+! The mass suction rate is gamma = -80000/vtot (in kg/m3/s)
+! It is set below, with a test for cases where vtot=0. The total
+! mass rate is calculated for verification.
 
       if (vtot.gt.0.d0) then
         gamma = -80000.d0/vtot
@@ -602,20 +564,24 @@ elseif(iappel.eq.3) then
 endif
 
 !--------
-! FORMATS
+! Formats
 !--------
 
  1000 format(/,'PHASE ',I3,                                             &
-         ' : FLUX DE MASSE GENERE DANS LE DOMAINE : ',E14.5,/)
+         ' : mass rate generated in the domain: ',E14.5,/)
 
  2000 format(/,'PHASE ',I3,                                             &
-         ' : FLUX DE MASSE GENERE DANS LE DOMAINE : ',E14.5,/,    &
-'                           REPARTI SUR UN VOLUME : ',E14.5)
+         ' : mass flux rate generated in the domain: ',E14.5,/,         &
+'                         distributed on the volume: ',E14.5)
 
  9000 format(/,'PHASE ',I3,                                             &
-         ' : ERREUR DANS USTSMA ',/,                        &
-'   LE VOLUME DE LA ZONE AVEC PUITS DE MASSE VAUT = ',E14.5,/)
+         ' : error in ustsma                ',/,                        &
+'   the volume of the mass suction area is = ',E14.5,/)
+
+!----
+! End
+!----
 
 return
 
-end
+end subroutine
diff --git a/users/base/ustsns.f90 b/users/base/ustsns.f90
index a616b2b..a660f99 100644
--- a/users/base/ustsns.f90
+++ b/users/base/ustsns.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,163 +50,142 @@ subroutine ustsns &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-! ROUTINE UTILSATEUR ON PRECISE LES TERMES SOURCES UTILISATEURS
-!   POUR LA COMPOSANTE DE VITESSE IVAR
-
-! ON RESOUT RHO*VOLUME*D(VAR)/DT = CRVIMP*VAR + CRVEXP
-
-! ON FOURNIT ICI CRVIMP ET CRVEXP (ILS CONTIENNENT RHO*VOLUME)
-!    CRVEXP en kg variable/s :
-!     ex : pour la vitesse            kg m/s2
-!    CRVIMP en kg /s :
-
-! VEILLER A UTILISER UN CRVIMP NEGATIF
-! (ON IMPLICITERA CRVIMP
-!  IE SUR LA DIAGONALE DE LA MATRICE, LE CODE AJOUTERA :
-!   MAX(-CRVIMP,0) EN SCHEMA STANDARD EN TEMPS
-!       -CRVIMP    SI LES TERMES SOURCES SONT A L'ORDRE 2
-
-! CES TABLEAUX SONT INITIALISES A ZERO AVANT APPEL A CE SOUS
-!   PROGRAMME ET AJOUTES ENSUITE AUX TABLEAUX PRIS EN COMPTE
-!   POUR LA RESOLUTION
-
-! EN CAS D'ORDRE 2 DEMANDE SUR LES TERMES SOURCES, ON DOIT
-!   FOURNIR CRVEXP A L'INSTANT N     (IL SERA EXTRAPOLE) ET
-!           CRVIMP A L'INSTANT N+1/2 (IL EST  DANS LA MATRICE,
-!                                     ON LE SUPPOSE NEGATIF)
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Purpose:
+! -------
+
+!    User subroutine.
+
+!    Additional right-hand side source terms for velocity components equation
+!    (Navier-Stokes)
+
+!
+! Usage
+! -----
+! The routine is called for each velocity component. It is therefore necessary
+! to test the value of the variable ivar to separate the treatments of the
+! components iu(iphas), iv(iphas) or iw(iphas).
+!
+! The additional source term is decomposed into an explicit part (crvexp) and
+! an implicit part (crvimp) that must be provided here.
+! The resulting equation solved by the code for a velocity component u is:
+!
+!  rho*volume*du/dt + .... = crvimp*u + crvexp
+!
+! Note that crvexp and crvimp are defined after the Finite Volume integration
+! over the cells, so they include the "volume" term. More precisely:
+!   - crvexp is expressed in kg.m/s2
+!   - crvimp is expressed in kg/s
+!
+! The crvexp and crvimp arrays are already initialized to 0 before entering the
+! the routine. It is not needed to do it in the routine (waste of CPU time).
+!
+! For stability reasons, Code_Saturne will not add -crvimp directly to the
+! diagonal of the matrix, but Max(-crvimp,0). This way, the crvimp term is
+! treated implicitely only if it strengthens the diagonal of the matrix.
+! However, when using the second-order in time scheme, this limitation cannot
+! be done anymore and -crvimp is added directly. The user should therefore test
+! the negativity of crvimp by himself.
+!
+! When using the second-order in time scheme, one should supply:
+!   - crvexp at time n
+!   - crvimp at time n+1/2
+!
+!
+! The selection of cells where to apply the source terms is based on a getcel
+! command. For more info on the syntax of the getcel command, refer to the
+! user manual or to the comments on the similar command getfbr in the routine
+! usclim.
 
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ivar             ! e  ! <-- ! numero de variable                             !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
-! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
-! itypsm           ! te ! <-- ! type de source de masse pour les               !
-! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant            prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
-!  (ncepdp,6)      !    !     !                                                !
-! smacel           ! tr ! <-- ! valeur des variables associee a la             !
-! (ncesmp,*   )    !    !     !  source de masse                               !
-!                  !    !     !  pour ivar=ipr, smacel=flux de masse           !
-! crvexp(ncelet    ! tr ! --> ! tableau de travail pour part explicit          !
-! crvimp(ncelet    ! tr ! --> ! tableau de travail pour part implicit          !
-! dam(ncelet       ! tr ! --- ! tableau de travail pour matrice                !
-! xam(nfac,*)      ! tr ! --- ! tableau de travail pour matrice                !
-! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss terms           !
+! ncssmp           ! i  ! <-- ! number of cells with mass source terms         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ivar             ! i  ! <-- ! index number of the current variable           !
+! iphas            ! i  ! <-- ! index number of the current phase              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icepdc(ncepdp)   ! ia ! <-- ! index number of cells with head loss terms     !
+! icetsm(ncesmp)   ! ia ! <-- ! index number of cells with mass source terms   !
+! itypsm           ! ia ! <-- ! type of mass source term for each variable     !
+!  (ncesmp,nvar)   !    !     !  (see ustsma)                                  !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtpa             ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (preceding time steps)                        !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! ckupdc(ncepdp,6) ! ra ! <-- ! head loss coefficient                          !
+! smacel           ! ra ! <-- ! value associated to each variable in the mass  !
+!  (ncesmp,nvar)   !    !     !  source terms or mass rate (see ustsma)        !
+! crvexp           ! ra ! --> ! explicit part of the source term               !
+! crvimp           ! ra ! --> ! implicit part of the source term               !
+! dam(ncelet)      ! ra ! --- ! work array                                     !
+! xam(nfac,2)      ! ra ! --- ! work array                                     !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!-------------------------------------------------------------------------------
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -255,7 +234,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -274,7 +253,7 @@ if(1.eq.1) return
 
 
 !===============================================================================
-! 1. INITIALISATION
+! 1. Initialization
 !===============================================================================
 
 idebia = idbia0
@@ -291,48 +270,32 @@ ipcrom = ipproc(irom  (iphas))
 
 
 !===============================================================================
-! 2. EXEMPLE DE TERME SOURCE ARBITRAIRE, POUR LA VARIABLE U :
-
-!                             S = A * U + B
-
-!            APPARAISSANT DANS LES EQUATIONS SOUS LA FORME :
-
-!                       RHO VOLUME D(U)/Dt = VOLUME*S
-
-
-!   CE TERME A UNE PARTIE QU'ON VEUT IMPLICITER         : A
-!           ET UNE PARTIE QU'ON VA TRAITER EN EXPLICITE : B
-
+! 2. Example of arbitrary source term for component u:
 
-!   ICI PAR EXEMPLE ARBITRAIREMENT :
+!                             S = A * u + B
 
-!     A = - RHO CKP
-!     B =   QDM
-!        AVEC
-!     CKP    = 10.D0  [1/s       ] (COEFFICIENT DE RAPPEL SUR U)
-!     QDM    = 100.D0 [kg/(m2 s2)] (PRODUCTION DE QUANTITE DE MOUVEMENT
-!                             PAR UNITE DE VOLUME ET PAR UNITE DE TEMPS)
+!            appearing in the equation under the form:
 
-!   ON A ALORS
-!     CRVIMP(IEL) = VOLUME(IEL)* A = - VOLUME(IEL) (RHO CKP )
-!     CRVEXP(IEL) = VOLUME(IEL)* B =   VOLUME(IEL) (QDM     )
+!                       rho*du/dt = S (+ standard Navier-Stokes terms)
 
-!   ON REMPLIT CI-DESSOUS CRVIMP ET CRVEXP CORRESPONDANTS.
-
-!===============================================================================
-
-
-
-!     ATTENTION, L'EXEMPLE EST COMPLETEMENT ARBITRAIRE
-!     =========
-!         ET DOIT ETRE REMPLACE PAR LES TERMES UTILISATEURS ADEQUATS
 
+!In the following example:
+!  A = -rho*CKP
+!  B =  XMMT
+!
+!with:
+!  CKP = 1.D0 [1/s       ] (return term on velocity)
+!  MMT = 100.D0 [kg/m2/s2] (momentum production by volume and time unit)
+!
+!which yields:
+!     crvimp(iel) = volume(iel)* A = - volume(iel)*(rho*CKP )
+!     crvexp(iel) = volume(iel)* B =   volume(iel)*(XMMT    )
 
 ! ----------------------------------------------
 
-! Il est assez courant que l'on oublie d'eliminer cet exemple
-!   de ce sous-programme.
-! On a donc prevu le test suivant pour eviter les mauvaises surprises
+! It is quite frequent to forget to remove this example when it is
+!  not needed. Therefore the following test is designed to prevent
+!  any bad surprise.
 
 iutile = 0
 
@@ -340,28 +303,33 @@ if(iutile.eq.0) return
 
 ! ----------------------------------------------
 
-ckp  = 10.d0
-qdm  = 100.d0
+iphas=1
+if (ivar.eq.iu(1)) then
+
+  ckp  = 10.d0
+  qdm  = 100.d0
 
-do iel = 1, ncel
-  crvimp(iel) = - volume(iel)*propce(iel,ipcrom)*ckp
-enddo
+  do iel = 1, ncel
+     crvimp(iel) = - volume(iel)*propce(iel,ipcrom)*ckp
+  enddo
 
-do iel = 1, ncel
-  crvexp(iel) =   volume(iel)*qdm
-enddo
+  do iel = 1, ncel
+     crvexp(iel) =   volume(iel)*qdm
+  enddo
+
+endif
 
 
 !--------
-! FORMATS
+! Formats
 !--------
 
- 1000 format(' TERMES SOURCES UTILISATEURS POUR LA VARIABLE ',A8,/)
+ 1000 format(' User source termes for variable ',A8,/)
 
 !----
-! FIN
+! End
 !----
 
 return
 
-end
+end subroutine
diff --git a/users/base/ustsri.f90 b/users/base/ustsri.f90
index 77ea819..1e86584 100644
--- a/users/base/ustsri.f90
+++ b/users/base/ustsri.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -36,7 +36,7 @@ subroutine ustsri &
    nnod   , lndfac , lndfbr , ncelbr ,                            &
    nvar   , nscal  , nphas  , ncepdp , ncesmp ,                   &
    nideve , nrdeve , nituse , nrtuse ,                            &
-   iphas  , ivar   , isou   , ipp    ,                            &
+   iphas  , ivar   ,                                              &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml , maxelt , lstelt , &
    ipnfac , nodfac , ipnfbr , nodfbr ,                            &
    icepdc , icetsm , itpsmp ,                                     &
@@ -51,183 +51,166 @@ subroutine ustsri &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-! ROUTINE UTILISATEUR ON PRECISE LES TERMES SOURCES UTILISATEURS
-!   EN RIJ-EPSILON ET POUR LES VARIABLES RIJ ET EPSILON
-!   SUR UN PAS DE TEMPS (PHASE IPHAS)
-
-! ON RESOUT RHO*VOLUME*D(VAR)/DT = CRVIMP*VAR + CRVEXP
-
-! ON FOURNIT ICI CRVIMP ET CRVEXP (ILS CONTIENNENT RHO*VOLUME)
-!    CRVEXP en kg variable/s :
-!     ex : pour Rij                   kg m2/s3
-!          pour epsilon               kg m2/s4
-!    CRVIMP en kg /s :
-
-! VEILLER A UTILISER UN CRVIMP NEGATIF
-! (ON IMPLICITERA CRVIMP
-!  IE SUR LA DIAGONALE DE LA MATRICE, LE CODE AJOUTERA :
-!   MAX(-CRVIMP,0) EN SCHEMA STANDARD EN TEMPS
-!       -CRVIMP    SI LES TERMES SOURCES SONT A L'ORDRE 2
-
-! CES TABLEAUX SONT INITIALISES A ZERO AVANT APPEL A CE SOUS
-!   PROGRAMME ET AJOUTES ENSUITE AUX TABLEAUX PRIS EN COMPTE
-!   POUR LA RESOLUTION
-
-! EN CAS D'ORDRE 2 DEMANDE SUR LES TERMES SOURCES, ON DOIT
-!   FOURNIR CRVEXP A L'INSTANT N     (IL SERA EXTRAPOLE) ET
-!           CRVIMP A L'INSTANT N+1/2 (IL EST  DANS LA MATRICE,
-!                                     ON LE SUPPOSE NEGATIF)
-
-! PRODUC = 2 (S11)**2 + 2 (S22)**2 + 2 (S33)**2
-!       + (2 S12)**2 + (2 S13)**2 + (2 S23)**2 )
-! DIVU = DUDX + DVDY + DWDZ
-
-!     Sij = (dUi/dxj+dUj/dxi)/2
-
-! Le terme de production est stocke dans PRODUC (6,CNELET).
-! Le terme de gardient de vitesse est stocke dans GRDVIT(NCELET,3,3)
-! ATTENTION : PRODUC n'est defini que pour ITURB=30 et GRDVIT n'est
-!            defini que pour ITURB=31.
-! RISQUE D'ECRASEMENT DE TABLEAUX !!          !
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Purpose:
+! -------
+
+!    User subroutine.
+
+!    Additional right-hand side source terms for the equations of Rij and
+!    epsilon in Rij-LRR model (ITURB=30) or Rij-SSG model (ITURB=31)
+
+!
+! Usage
+! -----
+! The routine is called for each variable Rij and epsilon. It is therefore
+! necessary to test the value of the variable ivar to separate the treatments
+! of the variables ivar=ir11(iphas), ir22(iphas), ir33(iphas), ir12(iphas),
+! ir13(iphas), ir23(iphas), or iep(iphas).
+!
+! The additional source term is decomposed into an explicit part (crvexp) and
+! an implicit part (crvimp) that must be provided here.
+! The resulting equation solved by the code for a variable var is:
+!
+!  rho*volume*d(var)/dt + .... = crvimp*(var) + crvexp
+!
+! Note that crvexp and crvimp are defined after the Finite Volume integration
+! over the cells, so they include the "volume" term. More precisely:
+!   - crvexp is expressed in kg.m2/s3 for Rij
+!   - crvexp is expressed in kg.m2/s4 for epsilon
+!   - crvimp is expressed in kg/s for Rij and epsilon
+!
+! The crvexp and crvimp arrays are already initialized to 0 before entering the
+! the routine. It is not needed to do it in the routine (waste of CPU time).
+!
+! For stability reasons, Code_Saturne will not add -crvimp directly to the
+! diagonal of the matrix, but Max(-crvimp,0). This way, the crvimp term is
+! treated implicitely only if it strengthens the diagonal of the matrix.
+! However, when using the second-order in time scheme, this limitation cannot
+! be done anymore and -crvimp is added directly. The user should therefore test
+! the negativity of crvimp by himself.
+!
+! When using the second-order in time scheme, one should supply:
+!   - crvexp at time n
+!   - crvimp at time n+1/2
+!
+!
+! When entering the routine, two additional work arrays are already set for
+! potential user need:
+!   produc is the turbulent production term
+!          produc(6,ncelet) = (P11, P22, P33, P12, P13, P23)
+!          with Pij=-Rik.dUj/dxk - Rjk.dUi/dxk
+!
+!   grdvit is the
+!          grdvit(ncelet,i,j) = dUi/dxj
+
+
+! WARNING
+! =======
+! produc is only allocated and defined for the Rij-LRR model (ITURB=30)
+! grdvit is only allocated and defined for the Rij-SSG model (ITURB=31)
+! DO NOT USE produc WITH THE SSG MODEL
+! DO NOT USE grdvit WITH THE LRR MODEL
+
+
+!
+! The selection of cells where to apply the source terms is based on a getcel
+! command. For more info on the syntax of the getcel command, refer to the
+! user manual or to the comments on the similar command getfbr in the routine
+! usclim.
+
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ivar             ! e  ! <-- ! numero de variable                             !
-! isou             ! e  ! <-- ! numero de passage                              !
-! ipp              ! e  ! <-- ! numero de variable pour sorties post           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
-! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
-! itpsmp           ! te ! <-- ! type de source de masse pour la                !
-! (ncesmp)         !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant            prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
-!  (ncepdp,6)      !    !     !                                                !
-! smcelp(ncesmp    ! tr ! <-- ! valeur de la variable associee a la            !
-!                  !    !     !  source de masse                               !
-! gamma(ncesmp)    ! tr ! <-- ! valeur du flux de masse                        !
-! grdvit           ! tr ! --- ! tableau de travail pour terme grad             !
-!  (ncelet,3,3)    !    !     !    de vitesse     uniqt pour iturb=31          !
-! produc           ! tr ! <-- ! tableau de travail pour production             !
-!  (6,ncelet)      !    !     ! (sans rho volume) uniqt pour iturb=30          !
-! crvexp(ncelet    ! tr ! --> ! tableau pour source partie explicite           !
-! crvimp(ncelet    ! tr ! --> ! tableau pour source partie implicite           !
-! viscf(nfac)      ! tr ! --- ! tableau de travail    faces internes           !
-! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
-! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
-! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss terms           !
+! ncssmp           ! i  ! <-- ! number of cells with mass source terms         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! index number of the current phase              !
+! ivar             ! i  ! <-- ! index number of the current variable           !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icepdc(ncepdp)   ! ia ! <-- ! index number of cells with head loss terms     !
+! icetsm(ncesmp)   ! ia ! <-- ! index number of cells with mass source terms   !
+! itypsm           ! ia ! <-- ! type of mass source term for each variable     !
+!  (ncesmp,nvar)   !    !     !  (see ustsma)                                  !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtpa             ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (preceding time steps)                        !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! ckupdc(ncepdp,6) ! ra ! <-- ! head loss coefficient                          !
+! smcelp(ncelet)   ! ra ! <-- ! value of variable ivar associated to mass      !
+!                  ! ra !     !  source term (see ustsma)                      !
+! gamma(ncelet)    ! ra ! <-- ! volumic rate of mass source term               !
+! grdvit(ncelet,3,3! ra ! <-- ! velocity gradient (only for iturb=31)          !
+! produc(6,ncelet) ! ra ! <-- ! turbulent production term (only for iturb=30)  !
+! crvexp           ! ra ! --> ! explicit part of the source term               !
+! crvimp           ! ra ! --> ! implicit part of the source term               !
+! viscf(nfac)      ! ra ! --- ! work array                                     !
+! viscb(nfabor)    ! ra ! --- ! work array                                     !
+! xam(nfac,2)      ! ra ! --- ! work array                                     !
+! w1 to w11(ncelet)! ra ! --- ! work arrays                                    !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!-------------------------------------------------------------------------------
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -250,7 +233,7 @@ integer          nnod   , lndfac , lndfbr , ncelbr
 integer          nvar   , nscal  , nphas
 integer          ncepdp , ncesmp
 integer          nideve , nrdeve , nituse , nrtuse
-integer          iphas  , ivar   , isou   , ipp
+integer          iphas  , ivar
 
 integer          ifacel(2,nfac) , ifabor(nfabor)
 integer          ifmfbr(nfabor) , ifmcel(ncelet)
@@ -281,10 +264,10 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
-integer          iel, ir11ip, ieiph, iphas0, ipcrom
+integer          iel, ir11ip, ieiph, ipcrom
 double precision ff, tau, xx
 
 !===============================================================================
@@ -299,17 +282,17 @@ if(1.eq.1) return
 
 
 !===============================================================================
-! 1. INITIALISATION
+! 1. Initialization
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
-! --- Numero des variables k et epsilon de la phase IPHAS courante
+! --- Index numbers of variables R11 and epsilon for the current phase iphas
 ir11ip = ir11(iphas)
 ieiph  = iep (iphas)
 
-! --- Numero des grandeurs physiques (voir usclim) : masse volumique
+! --- Index number of the density in the propce array
 ipcrom = ipproc(irom(iphas))
 
 if(iwarni(ir11ip).ge.1) then
@@ -317,78 +300,72 @@ if(iwarni(ir11ip).ge.1) then
 endif
 
 !===============================================================================
-! 2. EXEMPLE FICTIF :
+! 2. Example of arbitrary additional source term for R11 and epsilon
 
-!    Pour la phase 2
+!      Source term for R11 :
+!         rho volume d(R11)/dt       = ...
+!                        ... - rho*volume*ff*epsilon - rho*volume*R11/tau
 
-!      Terme source R11 :
-!         rho volume d(R11)/dt     = ...
-!                      ... - rho*volume*ff*epsilon - rho*volume*R11/tau
-
-!      Terme source epsilon :
+!      Source term for epsilon :
 !         rho volume d(epsilon)/dt = ...
-!                      ... + rho*volume*xx
+!                        ... + rho*volume*xx
 
-!      Avec, pour l'exemple,
-!                 xx = 2.d0, ff=3.d0, tau = 4.d0
+!      With xx = 2.d0, ff=3.d0 and tau = 4.d0
 
 !===============================================================================
 
-iphas0 = 2
-
 
-! ---  Pour R11 Phase 2
-!      ----------------
+! ---  For R11
+!      -------
 
-if(ivar.eq.ir11(iphas0)) then
+if(ivar.eq.ir11(1)) then
 
   ff  = 3.d0
   tau = 4.d0
 
-!   -- Termes sources explicites
+!   -- Explicit source term
 
   do iel = 1, ncel
     crvexp(iel) = -propce(iel,ipcrom)*volume(iel)                 &
                                                *ff*rtpa(iel,ieiph)
   enddo
 
-!    -- Termes sources implicites (diagonale)
+!    -- Implicit source term
 
   do iel = 1, ncel
     crvimp(iel) = -propce(iel,ipcrom)*volume(iel)/tau
   enddo
 
 
-! ---  Pour epsilon Phase 2
-!      --------------------
+! ---  For epsilon
+!      -----------
 
-elseif(ivar.eq.iep(iphas0)) then
+elseif(ivar.eq.iep(1)) then
 
   xx  = 2.d0
 
-!    -- Termes sources explicites
+!   -- Explicit source term
 
   do iel = 1, ncel
     crvexp(iel) =  propce(iel,ipcrom)*volume(iel)*xx
   enddo
 
-!    -- Termes sources implicites (diagonale) : nuls
+!    -- Implicit source term
+!        crvimp is already initialized to 0, no need to set it here
 
-!          CRVIMP est initialise a zero avant l'entree dans ce
-!            sous-programme : il est donc inutile de le completer
 
 endif
 
 !--------
-! FORMATS
+! Formats
 !--------
 
- 1000 format(' TERMES SOURCES UTILISATEURS RIJ-EPSILON PHASE ',I4,/)
+ 1000 format(' User source terms for Rij and epsilon, phase ',I4,/)
 
 !----
-! FIN
+! End
 !----
 
 return
 
-end
+end subroutine
diff --git a/users/base/ustssc.f90 b/users/base/ustssc.f90
index 37de347..edff695 100644
--- a/users/base/ustssc.f90
+++ b/users/base/ustssc.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -49,175 +49,168 @@ subroutine ustssc &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-! ROUTINE UTILISATEUR
-!   ON PRECISE LES TERMES SOURCES UTILISATEURS
-!   POUR UN SCALAIRE SUR UN PAS DE TEMPS
-
-! ON RESOUT RHO*VOLUME*D(VAR)/DT = CRVIMP*VAR + CRVEXP
-
-! ON FOURNIT ICI CRVIMP ET CRVEXP (ILS CONTIENNENT RHO*VOLUME)
-!    CRVEXP en kg variable/s :
-!     ex : pour les temperatures      kg degres/s
-!          pour les enthalpies        Joules/s
-!    CRVIMP en kg /s :
-
-! VEILLER A UTILISER UN CRVIMP NEGATIF
-! (ON IMPLICITERA CRVIMP
-!  IE SUR LA DIAGONALE DE LA MATRICE, LE CODE AJOUTERA :
-!   MAX(-CRVIMP,0) EN SCHEMA STANDARD EN TEMPS
-!       -CRVIMP    SI LES TERMES SOURCES SONT A L'ORDRE 2
-
-! CES TABLEAUX SONT INITIALISES A ZERO AVANT APPEL A CE SOUS
-!   PROGRAMME ET AJOUTES ENSUITE AUX TABLEAUX PRIS EN COMPTE
-!   POUR LA RESOLUTION
-
-! EN CAS D'ORDRE 2 DEMANDE SUR LES TERMES SOURCES, ON DOIT
-!   FOURNIR CRVEXP A L'INSTANT N     (IL SERA EXTRAPOLE) ET
-!           CRVIMP A L'INSTANT N+1/2 (IL EST  DANS LA MATRICE,
-!                                     ON LE SUPPOSE NEGATIF)
-
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-
-! IDENTIFICATION DES CELLULES/FACES DE BORD/FACES INTERNES
-! ========================================================
-
-!  Les commandes GETCEL, GETFBR et GETFAC permettent d'identifier
-!  respectivement les cellules, faces ou faces de bord en fonction
-!  de differents criteres.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
-
-!  La syntaxe des commandes GETFBR et GETFAC est identique.
+! Purpose:
+! -------
+
+!    User subroutine.
+
+!    Additional right-hand side source terms for scalar equations (user
+!     scalars and specific physics scalars).
+
+!
+! Usage
+! -----
+! The routine is called for each scalar, user or specific physisc. It is
+! therefore necessary to test the value of the scalar number iscal to separate
+! the treatments of the different scalars (if (iscal.eq.p) then ....).
+!
+! The additional source term is decomposed into an explicit part (crvexp) and
+! an implicit part (crvimp) that must be provided here.
+! The resulting equation solved by the code for a scalar f is:
+!
+!  rho*volume*df/dt + .... = crvimp*f + crvexp
+!
+!
+! Note that crvexp and crvimp are defined after the Finite Volume integration
+! over the cells, so they include the "volume" term. More precisely:
+!   - crvexp is expressed in kg.[scal]/s, where [scal] is the unit of the scalar
+!   - crvimp is expressed in kg/s
+!
+!
+! The crvexp and crvimp arrays are already initialized to 0 before entering the
+! the routine. It is not needed to do it in the routine (waste of CPU time).
+!
+! For stability reasons, Code_Saturne will not add -crvimp directly to the
+! diagonal of the matrix, but Max(-crvimp,0). This way, the crvimp term is
+! treated implicitely only if it strengthens the diagonal of the matrix.
+! However, when using the second-order in time scheme, this limitation cannot
+! be done anymore and -crvimp is added directly. The user should therefore test
+! the negativity of crvimp by himself.
+!
+! When using the second-order in time scheme, one should supply:
+!   - crvexp at time n
+!   - crvimp at time n+1/2
+!
+!
+! The selection of cells where to apply the source terms is based on a getcel
+! command. For more info on the syntax of the getcel command, refer to the
+! user manual or to the comments on the similar command getfbr in the routine
+! usclim.
+
+!
+! STEEP SOURCE TERMS
+!===================
+! In case of a complex, non-linear source term, say F(f), for scalar f, the
+! easiest method is to implement the source term explicitely.
+!
+!   df/dt = .... + F(f(n))
+!   where f(n) is the value of f at time tn, the befinning of the time step.
+!
+! This yields :
+!   crvexp = volume*F(f(n))
+!   crvimp = 0
+!
+! However, if the source term is potentially steep, this fully explicit
+! method will probably generate instabilities. It is therefore wiser to
+! partially implicit the term by writing:
+!
+!   df/dt = .... + dF/df*f(n+1) - dF/df*f(n) + F(f(n))
+!
+! This yields:
+!   crvexp = volume*( F(f(n)) - dF/df*f(n) )
+!   crvimp = volume*dF/df
 
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iscal            ! e  ! <-- ! numero du scalaire                             !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
-! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
-! itypsm           ! te ! <-- ! type de source de masse pour les               !
-! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
-!  (ncepdp,6)      !    !     !                                                !
-! smacel           ! tr ! <-- ! valeur des variables associee a la             !
-! (ncesmp,*   )    !    !     !  source de masse                               !
-!                  !    !     !  pour ivar=ipr, smacel=flux de masse           !
-! crvexp(ncelet    ! tr ! --> ! tableau de travail pour part explicit          !
-! crvimp(ncelet    ! tr ! --> ! tableau de travail pour terme instat           !
-! viscf(nfac)      ! tr ! --- ! tableau de travail    faces internes           !
-! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
-! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
-! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss terms           !
+! ncssmp           ! i  ! <-- ! number of cells with mass source terms         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iscal            ! i  ! <-- ! index number of the current scalar             !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icepdc(ncepdp)   ! ia ! <-- ! index number of cells with head loss terms     !
+! icetsm(ncesmp)   ! ia ! <-- ! index number of cells with mass source terms   !
+! itypsm           ! ia ! <-- ! type of mass source term for each variable     !
+!  (ncesmp,nvar)   !    !     !  (see ustsma)                                  !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtpa             ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (preceding time step)                         !
+! rtp              ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (current time step)                           !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! ckupdc(ncepdp,6) ! ra ! <-- ! head loss coefficient                          !
+! smacel           ! ra ! <-- ! value associated to each variable in the mass  !
+!  (ncesmp,nvar)   !    !     !  source terms or mass rate (see ustsma)        !
+! crvexp           ! ra ! --> ! explicit part of the source term               !
+! crvimp           ! ra ! --> ! implicit part of the source term               !
+! viscf(nfac)      ! ra ! --- ! work array                                     !
+!  viscb(nfabor)   ! ra ! --- ! work array                                     !
+! xam(nfac,2)      ! ra ! --- ! work array                                     !
+! w1 to w11(ncelet)! ra ! --- ! work arrays                                    !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!-------------------------------------------------------------------------------
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -270,7 +263,7 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*80     chaine
 integer          idebia, idebra
@@ -291,44 +284,29 @@ if(1.eq.1) return
 
 
 !===============================================================================
-! 1. INITIALISATION
+! 1. Initialization
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
-! --- Numero du scalaire a traiter : ISCAL
-
-!     ISCAL est une donnee d'entree de ce sous programme
-!       qui indique quel scalaire on est en train de traiter
-!       en effet ce sous programme est appele successivement pour
-!       tous les scalaires du calcul.
-!     ISCAL ne doit pas etre modifie par l'utilisateur
-
-!     Si le calcul comporte plusieurs scalaires (de 1 a n par exemple)
-!       et que l'on souhaite imposer des termes sources pour un
-!       scalaire p donne, on doit utiliser ISCAL ici :
-!       CRVIMP et CRVEXP ne seront renseignes que "IF(ISCAL.EQ.p)"
-
-
-! --- Numero de la variable associee au scalaire a traiter ISCAL
+! --- Index number of the variable associated to scalar iscal
 ivar = isca(iscal)
 
-! --- Nom de la variable associee au scalaire a traiter ISCAL
+! --- Name of the the variable associated to scalar iscal
 chaine = nomvar(ipprtp(ivar))
 
-! --- Indicateur de variance
-!         Si ISCAVR = 0 :
-!           le scalaire ISCAL n'est pas une variance
-!         Si ISCAVR > 0 et ISCAVR < NSCAL + 1 :
-!           le scalaire ISCAL est une variance associee
-!           au scalaire ISCAVR
+! --- Indicateur of variance scalars
+!         If iscavr(iscal) = 0:
+!           the scalar iscal is not a variance
+!         If iscavr(iscal) > 0 and iscavr(iscal) < nscal + 1 :
+!           the scalar iscal is the variance of the scalar iscavr(iscal)
 iiscvr = iscavr(iscal)
 
-! --- Numero de phase associee au scalaire ISCAL
+! --- Index number of the phase associated to scalar iscal
 iphas = iphsca(iscal)
 
-! --- Numero des grandeurs physiques (voir usclim)
+! --- Index number of the density in the propce array
 ipcrom = ipproc(irom(iphas))
 
 if(iwarni(ivar).ge.1) then
@@ -337,47 +315,35 @@ endif
 
 
 !===============================================================================
-! 2. EXEMPLE DE TERME SOURCE ARBITRAIRE, POUR LA VARIABLE F :
-
-!                             S = A * F + B
-
-!            APPARAISSANT DANS LES EQUATIONS SOUS LA FORME :
+! 2. Example of arbitrary source term for the scalar f, 2nd scalar in the
+!    calculation
 
-!                       RHO VOLUME D(F)/Dt = VOLUME*S
+!                             S = A * f + B
 
+!            appearing in the equation under the form
 
-!   CE TERME A UNE PARTIE QU'ON VEUT IMPLICITER         : A
-!           ET UNE PARTIE QU'ON VA TRAITER EN EXPLICITE : B
+!                       rho*df/dt = S (+ regular terms in the equation)
 
 
-!   ICI PAR EXEMPLE ARBITRAIREMENT :
-
-!     A = - RHO / TAUF
-!     B =   RHO * PRODF
+!In the following example:
+!     A = - rho / tauf
+!     B =   rho * prodf
 !        AVEC
-!     TAUF   = 10.D0  [secondes  ] (TEMPS DE DISSIPATION DE F)
-!     PRODF  = 100.D0 [variable/s] (PRODUCTION DE F PAR UNITE DE TEMPS)
-
-!   ON A ALORS
-!     CRVIMP(IEL) = VOLUME(IEL)* A = - VOLUME(IEL) (RHO / TAUF )
-!     CRVEXP(IEL) = VOLUME(IEL)* B =   VOLUME(IEL) (RHO * PRODF)
+!     tauf   = 10.d0  [ s  ] (dissipation time for f)
+!     prodf  = 100.d0 [ [f]/s ] (production of f by unit of time)
 
-!   ON REMPLIT CI-DESSOUS CRVIMP ET CRVEXP CORRESPONDANTS.
+!which yields
+!     crvimp(iel) = volume(iel)* A = - volume(iel)*rho/tauf
+!     crvexp(iel) = volume(iel)* B =   volume(iel)*rho*prodf
 
 !===============================================================================
 
 
-
-!     ATTENTION, L'EXEMPLE EST COMPLETEMENT ARBITRAIRE
-!     =========
-!         ET DOIT ETRE REMPLACE PAR LES TERMES UTILISATEURS ADEQUATS
-
-
 ! ----------------------------------------------
 
-! Il est assez courant que l'on oublie d'eliminer cet exemple
-!   de ce sous-programme.
-! On a donc prevu le test suivant pour eviter les mauvaises surprises
+! It is quite frequent to forget to remove this example when it is
+!  not needed. Therefore the following test is designed to prevent
+!  any bad surprise.
 
 iutile = 0
 
@@ -385,59 +351,43 @@ if(iutile.eq.0) return
 
 ! ----------------------------------------------
 
-tauf  = 10.d0
-prodf = 100.d0
+!Source term applied to second scalar
+if (iscal.eq.2) then
 
-do iel = 1, ncel
-  crvimp(iel) = - volume(iel)*propce(iel,ipcrom)/tauf
-enddo
+   tauf  = 10.d0
+   prodf = 100.d0
 
-do iel = 1, ncel
-  crvexp(iel) =   volume(iel)*propce(iel,ipcrom)*prodf
-enddo
+   do iel = 1, ncel
+      crvimp(iel) = - volume(iel)*propce(iel,ipcrom)/tauf
+   enddo
 
-!===============================================================================
-! 3. EXEMPLE DE TERME SOURCE ARBITRAIRE, POUR LA VARIABLE F = ENTHALPIE :
-
-!     IL S'AGIT D'UNE PARTICULARISATION DE L'EXEMPLE PRECEDENT AVEC
-
-!                             S = B
-
-!            APPARAISSANT DANS LES EQUATIONS SOUS LA FORME :
-
-!                       RHO VOLUME D(F)/Dt = VOLUME*S
-
-
-!   IL N'Y A RIEN A IMPLICITER, ON PEUT DONC IMPOSER
+   do iel = 1, ncel
+      crvexp(iel) =   volume(iel)*propce(iel,ipcrom)*prodf
+   enddo
 
-!     CRVIMP(IEL) = 0.D0
-
-
-!   CE TERME A UNE PARTIE QU'ON VA TRAITER EN EXPLICITE : B
+endif
 
-!     SI F EST UNE ENTHALPIE (J/kg), ON AURA ALORS B EN Watt/m3
+!===============================================================================
+! 3. Example of arbitrary volumic heat term in the equation for enthalpy h
 
-!     SI ON CONNAIT LA PUISSANCE PWATT A INTRODUIRE UNIFORMEMENT DANS UN
-!       VOLUME DONNE VOLF TEL QUE 0<X<1.2, 3.1<Y<4, ON POURRA ALORS
-!       ECRIRE, POUR LES CELLULES DU MAILLAGE CONCERNEES :
+! In the considered example, a uniform volumic source of heating is imposed
+! in the cells with coordinate X in [0;1.2] and Y in [3.1;4]
 
-!       CRVEXP(IEL) = VOLUME(IEL)* B =   VOLUME(IEL)*(PWATT/VOLF)
+! The global heating power if Pwatt (in W) and the total volume of the concerned
+! cells is volf (in m3)
 
+! This yields
+!     crvimp(iel) = 0
+!     crvexp(iel) = volume(iel)* Pwatt/volf
 
 !===============================================================================
 
 
-
-!     ATTENTION, L'EXEMPLE EST COMPLETEMENT ARBITRAIRE
-!     =========
-!         ET DOIT ETRE REMPLACE PAR LES TERMES UTILISATEURS ADEQUATS
-
-
 ! ----------------------------------------------
 
-! Il est assez courant que l'on oublie d'eliminer cet exemple
-!   de ce sous-programme.
-! On a donc prevu le test suivant pour eviter les mauvaises surprises
+! It is quite frequent to forget to remove this example when it is
+!  not needed. Therefore the following test is designed to prevent
+!  any bad surprise.
 
 iutile = 0
 
@@ -445,14 +395,13 @@ if(iutile.eq.0) return
 
 ! ----------------------------------------------
 
-! PUISSANCE A INTRODUIRE DANS VOLF
-!   ATTENTION on suppose qu'on travaille en enthalpie,
-!             si on travaille en temperature, il ne faut pas oublier de
-!               diviser PWATT par Cp.
+! WARNING :
+! It is assumed here that the thermal scalar in an enthalpy.
+!  If the scalar in a temperature, PWatt must be devided by Cp.
 
 pwatt = 100.d0
 
-! CALCUL DE VOLF
+! calculation of volf
 
 volf  = 0.d0
 CALL GETCEL('X > 0.0 and X < 1.2 and Y > 3.1 and'//               &
@@ -465,22 +414,22 @@ enddo
 
 do ilelt = 1, nlelt
   iel = lstelt(ilelt)
-! PAS DE TERME IMPLICITE
+! No implicit source term
   crvimp(iel) = 0.d0
-! PUISSANCE EN EXPLICITE
+! Explicit source term
   crvexp(iel) = volume(iel)*pwatt/volf
 enddo
 
 !--------
-! FORMATS
+! Formats
 !--------
 
- 1000 format(' TERMES SOURCES UTILISATEURS POUR LA VARIABLE ',A8,/)
+ 1000 format(' User source terms for vaiable ',A8,/)
 
 !----
-! FIN
+! End
 !----
 
 return
 
-end
+end subroutine
diff --git a/users/base/ustsv2.f90 b/users/base/ustsv2.f90
index d772bdd..77592e4 100644
--- a/users/base/ustsv2.f90
+++ b/users/base/ustsv2.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine ustsv2                               &
+subroutine ustsv2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -36,7 +36,7 @@
    nnod   , lndfac , lndfbr , ncelbr ,                            &
    nvar   , nscal  , nphas  , ncepdp , ncesmp ,                   &
    nideve , nrdeve , nituse , nrtuse ,                            &
-   iphas  , ivar   , isou   , ipp    ,                            &
+   iphas  , ivar   ,                                              &
    ifacel , ifabor , ifmfbr , ifmcel , iprfml , maxelt , lstelt , &
    ipnfac , nodfac , ipnfbr , nodfbr ,                            &
    icepdc , icetsm , itypsm ,                                     &
@@ -51,192 +51,159 @@
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-! ROUTINE UTILISATEUR ON PRECISE LES TERMES SOURCES UTILISATEURS
-!   EN V2F ET POUR LES VARIABLES F_BARRE ET PHI
-!   SUR UN PAS DE TEMPS (PHASE IPHAS)
-
-! POUR VAR = F_BARRE :
-! ====================
-
-! ON RESOUT VOLUME*DIV(GRAD VAR) =
-!                 ( VOLUME*F_BARRE + ... + CRVIMP*VAR + CRVEXP ) /L^2
-
-! ON FOURNIT ICI CRVIMP ET CRVEXP (ILS CONTIENNENT VOLUME)
-!  F_BARRE est en m3/s
-!  CRVEXP est en m3/s
-!  CRVIMP est en m3
-
-! POUR VAR = PHI :
-! ================
-
-! ON RESOUT RHO*VOLUME*D(VAR)/DT = ... + CRVIMP*VAR + CRVEXP
-
-! ON FOURNIT ICI CRVIMP ET CRVEXP (ILS CONTIENNENT VOLUME)
-!  PHI est sans dimension
-!  CRVEXP est en kg/s
-!  CRVIMP est en kg/s
-
-! POUR PHI, VEILLER A UTILISER UN CRVIMP NEGATIF
-! (ON IMPLICITERA CRVIMP
-!  IE SUR LA DIAGONALE DE LA MATRICE, LE CODE AJOUTERA :
-!   MAX(-CRVIMP,0) EN SCHEMA STANDARD EN TEMPS
-!       -CRVIMP    SI LES TERMES SOURCES SONT A L'ORDRE 2
-! (POUR F_BARRE PAR DE PROBLEME CAR LA MATRICE EST SYMETRIQUE
-! ET ON RESOUT DONC PAR GRADIENT CONJUGUE)
-
-! CES TABLEAUX SONT INITIALISES A ZERO AVANT APPEL A CE SOUS
-!   PROGRAMME ET AJOUTES ENSUITE AUX TABLEAUX PRIS EN COMPTE
-!   POUR LA RESOLUTION
-
-! EN CAS D'ORDRE 2 DEMANDE SUR LES TERMES SOURCES, ON DOIT
-!   FOURNIR CRVEXP A L'INSTANT N     (IL SERA EXTRAPOLE) ET
-!           CRVIMP A L'INSTANT N+1/2 (IL EST  DANS LA MATRICE,
-!                                     ON LE SUPPOSE NEGATIF)
-
-
-
-! PRODUC contient la production de k :
-!    2*mu_t*Sij*Sij -2/3*rho*k*div(u) -2/3*mu_t*div(u)**2 + terme eventuel de gravite
-! GPHIGK contient le produit scalaire grad phi*grad k
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Purpose:
+! -------
+
+!    User subroutine.
+
+!    Additional right-hand side source terms for the equations of phi and f_bar
+!    with the v2-f phi-model turbulence model (ITURB=50)
+!
+! Usage
+! -----
+! The routine is called for both phi and f_bar. It is therefore necessary
+! to test the value of the variable ivar to separate the treatments of the
+! ivar=iphi(iphas) or ivar=ifb(iphas).
+!
+! The additional source term is decomposed into an explicit part (crvexp) and
+! an implicit part (crvimp) that must be provided here.
+! The resulting equation solved by the code are as follows:
+!
+! For f_bar (ivar=ifb(iphas)):
+!  volume*div(grad(f_bar))= ( volume*f_bar + ..... + crvimp*f_bar + crvexp )/L^2
+!
+! For phi (ivar=iphi(iphas))
+!  rho*volume*d(phi)/dt + .... = crvimp*phi + crvexp
+
+!
+! Note that crvexp and crvimp are defined after the Finite Volume integration
+! over the cells, so they include the "volume" term. More precisely:
+!   - crvexp is expressed in m3/s for f_bar
+!   - crvexp is expressed in kg/s for phi
+!   - crvimp is expressed in m3 for f_bar
+!   - crvimp is expressed in kg/s for phi
+!
+! The crvexp and crvimp arrays are already initialized to 0 before entering the
+! the routine. It is not needed to do it in the routine (waste of CPU time).
+!
+! For stability reasons, Code_Saturne will not add -crvimp directly to the
+! diagonal of the matrix, but Max(-crvimp,0). This way, the crvimp term is
+! treated implicitely only if it strengthens the diagonal of the matrix.
+! However, when using the second-order in time scheme, this limitation cannot
+! be done anymore and -crvimp is added directly. The user should therefore test
+! the negativity of crvimp by himself.
+!
+! When using the second-order in time scheme, one should supply:
+!   - crvexp at time n
+!   - crvimp at time n+1/2
+!
+
+! When entering the routine, two additional work arrays are already set for
+! potential user need:
+!   produc = 2*mu_t*Sij*Sij -2/3*rho*k*div(u) -2/3*mu_t*div(u)**2
+!          + gravity term (when activated)
+!          (produc is the production term in the equation for k)
+!
+!   gphigk = grad(phi).grad(k)
+
+!
+! The selection of cells where to apply the source terms is based on a getcel
+! command. For more info on the syntax of the getcel command, refer to the
+! user manual or to the comments on the similar command getfbr in the routine
+! usclim.
+
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ivar             ! e  ! <-- ! numero de variable                             !
-! isou             ! e  ! <-- ! numero de passage                              !
-! ipp              ! e  ! <-- ! numero de variable pour sorties post           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
-! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
-! itypsm           ! te ! <-- ! type de source de masse pour les               !
-! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant            prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
-!  (ncepdp,6)      !    !     !                                                !
-! smacel           ! tr ! <-- ! valeur des variables associee a la             !
-! (ncesmp,*   )    !    !     !  source de masse                               !
-!                  !    !     !  pour ivar=ipr, smacel=flux de masse           !
-! gphigk(ncelet    ! tr ! --- ! tableau de travail contenant le prod           !
-!                  !    !     !    grad phi * grad k                           !
-! produc(ncelet    ! tr ! --- ! tableau de travail contenant la                !
-!                  !    !     ! la production p de l'eq de k                   !
-! crvexp(ncelet    ! tr ! --> ! tableau pour source partie explicite           !
-! crvimp(ncelet    ! tr ! --> ! tableau pour source partie implicite           !
-! viscf(nfac)      ! tr ! --- ! tableau de travail    faces internes           !
-! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
-! xam(nfac,2)      ! tr ! --- ! tableau de travail    faces de bord            !
-! w1..11(ncelet    ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss terms           !
+! ncssmp           ! i  ! <-- ! number of cells with mass source terms         !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! index number of the current phase              !
+! ivar             ! i  ! <-- ! index number of the current variable           !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icepdc(ncepdp)   ! ia ! <-- ! index number of cells with head loss terms     !
+! icetsm(ncesmp)   ! ia ! <-- ! index number of cells with mass source terms   !
+! itypsm           ! ia ! <-- ! type of mass source term for each variable     !
+!  (ncesmp,nvar)   !    !     !  (see ustsma)                                  !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtpa             ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (preceding time steps)                        !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! ckupdc(ncepdp,6) ! ra ! <-- ! head loss coefficient                          !
+! smacel           ! ra ! <-- ! value associated to each variable in the mass  !
+!  (ncesmp,nvar)   !    !     !  source terms or mass rate (see ustsma)        !
+! produc(ncelet)   ! ra ! <-- ! production term for k                          !
+! gphigk(ncelet)   ! ra ! <-- ! grad(phi).grad(k)                              !
+! crvexp           ! ra ! --> ! explicit part of the source term               !
+! crvimp           ! ra ! --> ! implicit part of the source term               !
+! viscf(nfac)      ! ra ! --- ! work array                                     !
+! viscb(nfabor)    ! ra ! --- ! work array                                     !
+! xam(nfac,2)      ! ra ! --- ! work array                                     !
+! w1 to w11(ncelet)! ra ! --- ! work arrays                                    !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!-------------------------------------------------------------------------------
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -259,7 +226,7 @@ integer          nnod   , lndfac , lndfbr , ncelbr
 integer          nvar   , nscal  , nphas
 integer          ncepdp , ncesmp
 integer          nideve , nrdeve , nituse , nrtuse
-integer          iphas  , ivar   , isou   , ipp
+integer          iphas  , ivar
 
 integer          ifacel(2,nfac) , ifabor(nfabor)
 integer          ifmfbr(nfabor) , ifmcel(ncelet)
@@ -289,10 +256,10 @@ double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision w10(ncelet), w11(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
-integer          iel, ifbiph, iphiph, iphas0, ipcrom
+integer          iel, ifbiph, iphiph, ipcrom
 double precision ff, tau, xx
 
 !===============================================================================
@@ -307,17 +274,17 @@ if(1.eq.1) return
 
 
 !===============================================================================
-! 1. INITIALISATION
+! 1. Initialization
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
-! --- Numero des variables k et epsilon de la phase IPHAS courante
+! --- Index numbers of variables f_bar and phi for the current phase iphas
 ifbiph = ifb (iphas)
 iphiph = iphi(iphas)
 
-! --- Numero des grandeurs physiques (voir usclim) : masse volumique
+! --- Index number of the density in the propce array
 ipcrom = ipproc(irom(iphas))
 
 if(iwarni(ifbiph).ge.1) then
@@ -325,77 +292,70 @@ if(iwarni(ifbiph).ge.1) then
 endif
 
 !===============================================================================
-! 2. EXEMPLE FICTIF :
+! 2. Example of arbitrary additional source term for k and epsilon
 
-!    Pour la phase 2
+!      Source term for f_bar :
+!         volume div(grad f_barre) = (... + volume*xx )/L^2
 
-!      Terme source f_barre :
-!            volume div(grad f_barre) = ...
-!                      ... - volume*ff*phi - volume*f_barre/tau
+!      Source term for phi :
+!         rho volume d(phi)/dt       = ...
+!                        ... + rho*volume*ff*f_bar - rho*volume*phi/tau
 
-!      Terme source phi :
-!         rho volume d(phi)/dt = ...
-!                      ... + rho*volume*xx
-
-!      Avec, pour l'exemple,
-!                 xx = 2.d0, ff=3.d0, tau = 4.d0
+!      With xx = 2.d0, ff=3.d0 and tau = 4.d0
 
 !===============================================================================
 
-iphas0 = 2
-
+! ---  For f_bar
+!      ---------
 
-! ---  Pour f_barre Phase 2
-!      ---------------------
+if(ivar.eq.ifb(1)) then
 
-if(ivar.eq.ifb(iphas0)) then
-
-  ff  = 3.d0
-  tau = 4.d0
+  xx  = 2.d0
 
-!   -- Termes sources explicites
+!    -- Explicit source term
 
   do iel = 1, ncel
-    crvexp(iel) = -volume(iel)*ff*rtpa(iel,iphiph)
+    crvexp(iel) =  volume(iel)*xx
   enddo
 
-!    -- Termes sources implicites (diagonale)
-
-  do iel = 1, ncel
-    crvimp(iel) = -volume(iel)/tau
-  enddo
+!    -- Implicit source term
+!
+!       crvimp is already initialized to 0, no need to set it here
 
 
-! ---  Pour phi Phase 2
-!      --------------------
+! ---  For phi
+!      -------
 
-elseif(ivar.eq.iep(iphas)) then
+elseif(ivar.eq.iphi(1)) then
 
-  xx  = 2.d0
+  ff  = 3.d0
+  tau = 4.d0
 
-!    -- Termes sources explicites
+!   -- Explicit source term
 
   do iel = 1, ncel
-    crvexp(iel) =  propce(iel,ipcrom)*volume(iel)*xx
+    crvexp(iel) = propce(iel,ipcrom)*volume(iel)*ff*rtpa(iel,ifb(iphas))
   enddo
 
-!    -- Termes sources implicites (diagonale) : nuls
+!    -- Implicit source term
+
+  do iel = 1, ncel
+    crvimp(iel) = -propce(iel,ipcrom)*volume(iel)/tau
+  enddo
 
-!          CRVIMP est initialise a zero avant l'entree dans ce
-!            sous-programme : il est donc inutile de le completer
 
 endif
 
 !--------
-! FORMATS
+! Formats
 !--------
 
- 1000 format(' TERMES SOURCES UTILISATEURS V2F PHASE ',I4,/)
+ 1000 format(' User source terms for phi and f_bar, phase ',I4,/)
 
 !----
-! FIN
+! End
 !----
 
 return
 
-end
+end subroutine
diff --git a/users/base/usvima.f90 b/users/base/usvima.f90
index afc1b69..27d47b2 100644
--- a/users/base/usvima.f90
+++ b/users/base/usvima.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -48,110 +48,108 @@ subroutine usvima &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
+! Purpose:
+! -------
 
-! ROUTINE UTILISATEUR POUR LA METHODE ALE :
-!                  MODIFICATION DE LA VISCOSITE DE MAILLAGE
+!    User subroutine dedicated the use of ALE (Arbitrary Lagrangian Eulerian Method) :
+!                 fills mesh viscosity arrays.
 
-! Cette routine est appelee au debut de chaque pas de temps
 
-! On peut modifier la viscosite de maillage pour limiter
-!   la deformation de maillage dans les zones sensibles (couche
-!   limite par exemple)
+!    This subroutine is called at the beginning of each time step.
 
-! Si IORTVM = 0, la viscosite de maillage est isotrope. Il suffit
-!   de remplir VISCMX.
-! Si IORTVM = 1, la viscosite de maillage est orthotrope, on
-!   remplit VISCMX, VISCMY et VISCMZ
+!    Here one can modify mesh viscosity value to prevent cells and nodes
+!    from huge displacements in awkward areas, such as boundary layer for example.
 
-! Les tableaux sont initialises a 1 au premier pas de temps.
+!    IF variable IORTVM = 0, mesh viscosity modeling is isotropic therefore VISCMX
+!    array only needs to be filled.
+!    IF variable IORTVM = 1, mesh viscosity modeling is orthotropic therefore
+!    all arrays VISCMX, VISCMY and VISCMZ need to be filled.
 
+!    Note that VISCMX, VISCMY and VISCMZ arrays are initialized at the first time step to the value of 1.
+
+! Cells identification
+! ====================
+
+! Cells may be identified using the 'getcel' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! viscma(ncelet    ! tr ! <-- ! viscoste de maillage                           !
-! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse)   ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! viscmx(ncelet)    ! ra ! <-- ! mesh viscosity in X direction                 !
+! viscmy(ncelet)    ! ra ! <-- ! mesh viscosity in Y direction                 !
+! viscmz(ncelet)    ! ra ! <-- ! mesh viscosity in Z direction                 !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -197,11 +195,11 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel
-double precision xray2, xr2, xcen, ycen, zcen
+double precision rad, xr2, xcen, ycen, zcen
 
 !===============================================================================
 
@@ -217,17 +215,15 @@ idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 1.  Exemple :
-!       On met une valeur tres forte de viscosite pour les points situes
-!         a moins de R d'un centre (par exemple pour limiter les
-!         deformations en proche paroi d'un cylindre mobile)
+!  1. Example :
+!       One gives a huge mesh viscosity value to the cells included in a circle
+!       with a radius 'rad' and a center '(xcen, ycen, zcen)'
 
-
-!     En general on specifie les zones de viscosite de maille
-!       sur la geometrie initiale, c'est plus facile.
+!     In general it appears quite much easier to fill mesh viscosity arrays at
+!     the beginning of the calculations basing on the initial geometry.
 
 if (ntcabs.eq.0) then
-  xray2 = (1.d-3)**2
+  rad = (1.d-3)**2
   xcen  = 1.d0
   ycen  = 0.d0
   zcen  = 0.d0
@@ -235,11 +231,11 @@ if (ntcabs.eq.0) then
   do iel = 1, ncel
     xr2 = (xyzcen(1,iel)-xcen)**2 + (xyzcen(2,iel)-ycen)**2       &
          + (xyzcen(3,iel)-zcen)**2
-    if (xr2.lt.xray2) viscmx(iel) = 1.d10
+    if (xr2.lt.rad) viscmx(iel) = 1.d10
   enddo
 
-! 2. Si on a une viscosite orthotrope, on peut choisir de moins
-!    contraindre le mouvement des noeuds selon z
+! 2. In case of orthotropic mesh viscosity modeling one can choose
+!    to submit nodes to a lower stress in Z direction
   if (iortvm.eq.1) then
     do iel = 1, ncel
       viscmy(iel) = viscmx(iel)
@@ -248,14 +244,14 @@ if (ntcabs.eq.0) then
   endif
 
 endif
+
 !----
-! FORMAT
+! Formats
 !----
 
-
 !----
-! FIN
+! End
 !----
 
 return
-end
+end subroutine
diff --git a/users/base/usvist.f90 b/users/base/usvist.f90
index 0eccb7a..b609dce 100644
--- a/users/base/usvist.f90
+++ b/users/base/usvist.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,126 +47,108 @@ subroutine usvist &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
+! Purpose:
+! -------
 
-! ROUTINE UTILISATEUR : MODIFICATION DE LA VISCOSITE TURBULENTE
+! User subroutine.
 
-! Cette routine est appelee au debut de chaque pas de temps
-!    apres le calcul de la viscosite turbulente
-!   (les grandeurs physiques ont ete calculees dans USPHYV)
+! Modify turbulent viscosity
 
-! On peut modifier la viscosite turbulente VISCT (kg/(m s))
+! This subroutine is called at beginning of each time step
+! after the computation of the turbulent viscosity
+! (physical quantities have already been computed in usphyv)
 
-! La modification de la viscosite turbulente peut conduire a des
-!    ecarts tres importants sur la solution et eventuellement
-!    A DES RESULTATS ERRONES.
-
-
-
-! L'UTILISATION DE CE SOUS PROGRAMME EST DONC RESERVEE A
-
-!            DES UTILISATEURS TRES AVERTIS
+! Turbulent viscosity VISCT (kg/(m s)) can be modified
 
+! A modification of the turbulent viscosity can lead to very
+! significant differences betwwen solutions and even give wrong
+! results
 
+! This subroutine is therefore reserved to expert users
 
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! ncepdp           ! e  ! <-- ! nombre de cellules avec pdc                    !
-! ncesmp           ! e  ! <-- ! nombre de cellules a source de masse           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de phase                                !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icepdc(ncelet    ! te ! <-- ! numero des ncepdp cellules avec pdc            !
-! icetsm(ncesmp    ! te ! <-- ! numero des cellules a source de masse          !
-! itypsm           ! te ! <-- ! type de source de masse pour les               !
-! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ckupdc           ! tr ! <-- ! tableau de travail pour pdc                    !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! ncepdp           ! i  ! <-- ! number of cells with head loss
+! ncesmp           ! i  ! <-- ! number of cells with mass source term
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icepdc(ncelet    ! te ! <-- ! head loss cell numbering                       !
+! icetsm(ncesmp    ! te ! <-- ! numbering of cells with mass source term       !
+! itypsm           ! te ! <-- ! kind of mass source for each variable          !
+! (ncesmp,nvar)    !    !     !  (cf. ustsma)                                  !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse)   ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! ckupdc           ! ra ! <-- ! work array for head loss terms                 !
 !  (ncepdp,6)      !    !     !                                                !
-! smacel           ! tr ! <-- ! valeur des variables associee a la             !
-! (ncesmp,*   )    !    !     !  source de masse                               !
-!                  !    !     !  pour ivar=ipr, smacel=flux de masse           !
-! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! smacel           ! ra ! <-- ! values of variables related to mass source     !
+! (ncesmp,*   )    !    !     ! term. If ivar=ipr, smacel=mass flux            !
+! w1...8(ncelet    ! ra ! --- ! work arrays                                    !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -214,7 +196,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, iccocg, inc
@@ -235,20 +217,20 @@ if(1.eq.1) return
 
 
 !===============================================================================
-! 1.  Exemple :
-!       Pour la phase 1,
-!                VISCT = MAX(VISCT,ROM *SQRT(DUDX**2+DUDX**2+DUDX**2))
-!                (relation volontairement fantaisiste)
-!                Noter qu'on entre dans ce sous pgm en ayant calcule la
-!                viscosite conformement au modele de turbulence choisi
-!       Pour les autres phases,
-!                on conserve la viscosite standard du modele de
-!                turbulence selectionne
+! 1.  Example :
+!       For phase 1:
+!                visct = max(visct, rom * sqrt(dudx**2 + dudy**2 + dudz**2)
+!                (intentionally fancyful relation)
+!                Remark: incomming viscosity is consistent with the selected
+!                turbulence modelling
+!       For other phases:
+!                We keep the viscosity computed by the selected turbulence
+!                modelling
 
 !===============================================================================
 
 !===============================================================================
-! 1.1 SELECTION DE LA PHASE A TRAITER
+! 1.1 Selection of the phase to deal with
 !===============================================================================
 
 if(iphas.ne.1) then
@@ -256,30 +238,31 @@ if(iphas.ne.1) then
 endif
 
 !===============================================================================
-! 1.2 INITIALISATION
+! 1.2 Initialization
 !===============================================================================
 
-! --- Memoire
+! --- Memory
 idebia = idbia0
 idebra = idbra0
 
-! --- Numero des variables (dans RTP)
+! --- Number associated to variables (in RTP)
 iuiph = iu(iphas)
 iviph = iv(iphas)
 iwiph = iw(iphas)
 
-! --- Rang des variables dans PROPCE (prop. physiques au centre)
+! --- Physical quantity numbers in PROPCE (physical quantities defined
+!     at each cell center)
 ipcvst = ipproc(ivisct(iphas))
 ipcrom = ipproc(irom  (iphas))
 
-! --- Rang des c.l. des variables dans COEFA COEFB
-!        (c.l. std, i.e. non flux)
+! --- Boundary condition number associated to variables in COEFA and COEFB
+!      JB=>?  (c.l. std, i.e. non flux)
 ipcliu = iclrtp(iuiph,icoef)
 ipcliv = iclrtp(iviph,icoef)
 ipcliw = iclrtp(iwiph,icoef)
 
 !===============================================================================
-! 1.3 CALCUL DU GRADIENT DE U
+! 1.3 Compute velocity gradient
 !===============================================================================
 
 iccocg = 1
@@ -310,37 +293,36 @@ call grdcel                                                       &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! 1.4 CALCUL DE LA VISCOSITE DYNAMIQUE
+! 1.4 Computation of the dynamic viscosity
 !===============================================================================
 
 do iel = 1, ncel
 
-! --- Viscosite dynamique et masse volumique en entree de sous pgm
+! --- Current dynamic viscosity and fluid density
   visct = propce(iel,ipcvst)
   rom   = propce(iel,ipcrom)
 
-! --- Calculs divers
+! --- Various computations
   dudx = w1(iel)
   dudy = w2(iel)
   dudz = w3(iel)
   sqdu = sqrt(dudx**2+dudy**2+dudz**2)
 
-! --- Calcul de la nouvelle viscosite dynamique
+! --- Computation of the new dynamic viscosity
   visct = max (visct,rom*sqdu)
 
-! --- Affectation de la nouvelle viscosite dynamique calculee
+! --- Store the new computed dynamic viscosity
   propce(iel,ipcvst) = visct
 
 enddo
 
-!----
-! FORMAT
-!----
-
+!--------
+! Formats
+!--------
 
 !----
-! FIN
+! End
 !----
 
 return
-end
+end subroutine
diff --git a/users/base/usvort.f90 b/users/base/usvort.f90
index eafc6bb..cf1bca0 100644
--- a/users/base/usvort.f90
+++ b/users/base/usvort.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -55,122 +55,91 @@ subroutine usvort &
 !  DEFINITION DES CARACTERISTIQUES DES VORTEX
 
 
-! IDENTIFICATION DES FACES DE BORD
-! ================================
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Boundary faces identification
+! =============================
+
+! Boundary faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! iphas            ! e  ! <-- ! numero de la phase                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! iphas            ! i  ! <-- ! phase number                                   !
 ! iappel           ! e  ! <-- ! indique les donnes a renvoyer                  !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! irepvo           ! te ! <-- ! numero de l'entree associe a chaque            !
 !     (nfabor)     !    !     ! face de bord (=0 si pas de vortex)             !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -209,12 +178,23 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ifac, ient
 integer          ilelt, nlelt
 
 !===============================================================================
+
+! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
+!===============================================================================
+
+if(1.eq.1) return
+
+!===============================================================================
+! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
+
+
+!===============================================================================
 ! 1. PARAMETRES GLOBAUX
 !===============================================================================
 
@@ -499,13 +479,13 @@ endif
 
 
 return
-end
+end subroutine
 
 !===============================================================================
 ! 7. DEFINTION DE LA FONCTION PERMETAT D'IMPOSER LES DONNEES D'ENTREE
 !===============================================================================
 
-                   function phidat                                &
+function phidat &
 !==============
 
  ( nfecra , icas   , ndat   ,                                     &
@@ -523,7 +503,7 @@ end
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 ! nfecra           ! e  ! <-- ! unite                                          !
 ! icas             ! e  ! <-- ! type de geometrie du cas                       !
@@ -538,10 +518,9 @@ end
 !                  !    !     ! plus proche du point (yy,zz)                   !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
@@ -581,4 +560,4 @@ elseif(icas.eq.4) then
 endif
 
 return
-end
+end function
diff --git a/users/base/usvpst.f90 b/users/base/usvpst.f90
index 7729bbd..d17e34e 100644
--- a/users/base/usvpst.f90
+++ b/users/base/usvpst.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,124 +45,115 @@ subroutine usvpst &
    dt     , rtpa   , rtp    , propce , propfa , propfb ,          &
    coefa  , coefb  , statis ,                                     &
    tracel , trafac , trafbr , rdevel , rtuser , ra     )
+
 !===============================================================================
-! FONCTION :
-! --------
+! Purpose:
+! -------
+
+!    User subroutine.
 
-! ROUTINE UTILISATEUR POUR LA SORTIE DE VARIABLES SUR UN MAILLAGE
-!   DE POST TRAITEMENT DEJA DEFINI
+!    Output additional variables on a postprocessing mesh.
 
-! PAR DEFAUT, DEUX MAILLAGES SONT DEFINIS AUTOMATIQUEMENT :
-!      - LE MAILLAGE VOLUMIQUE (IPART=-1) SELON LA VALEUR DE ICHRVL
-!      - LE MAILLAGE DE BORD   (IPART=-2) SELON LA VALEUR DE ICHRBO
-! DES MAILLAGES SUPPLEMENTAIRES (CELLULES OU FACES INTERNES ET
-!   DE BORD) PEUVENT ETRE DEFINIS ET PARAMETRES A TRAVERS
-!   usdpst    .F ET usmpst.F.
+! Several "automatic" postprocessing meshes may be defined:
+! - The volume mesh (ipart=-1) if 'ichrvl' = 1
+! - The boundary mesh (ipart=-2) if 'ichrbo' = 1
+! - SYRTHES coupling surface (ipart < -2) if 'ichrsy' = 1
+! - Cooling tower exchange zone meshes (ipart < -2) if 'ichrze' = 1
+!
+! Additional meshes (cells or faces) may also be defined using the
+! 'usdpst' user subroutine, (and possibly modified using 'usmpst').
 
-!ETTE  CETTE ROUTINE EST APPELEE UNE FOIS PAR MAILLAGE POST
-!   ET PAR PAS DE TEMPS AUQUEL CE MAILLAGE EST ACTIF
+! This subroutine is called once for each post-processing mesh
+! (with a different value of 'ipart') for each time step at which output
+! on this mesh is active.
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ipart            ! e  ! <-- ! numero du maillage post                        !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nvlsta           ! e  ! <-- ! nombre de variables stat. lagrangien           !
-! ncelps           ! e  ! <-- ! nombre de cellules du maillage post            !
-! nfacps           ! e  ! <-- ! nombre de faces interieur post                 !
-! nfbrps           ! e  ! <-- ! nombre de faces de bord post                   !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! itypps(3)        ! te ! <-- ! indicateur de presence (0 ou 1) de             !
-!                  !    !     ! cellules (1), faces (2), ou faces de           !
-!                  !    !     ! de bord (3) dans le maillage post              !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! lstcel(ncelps    ! te ! <-- ! liste des cellules du maillage post            !
-! lstfac(nfacps    ! te ! <-- ! liste des faces interieures post               !
-! lstfbr(nfbrps    ! te ! <-- ! liste des faces de bord post                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! te ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet)         !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! statis           ! tr ! <-- ! statistiques (lagrangien)                      !
-!ncelet,nvlsta)    !    !     !                                                !
-! tracel(*)        ! tr ! <-- ! tab reel valeurs cellules post                 !
-! trafac(*)        ! tr ! <-- ! tab reel valeurs faces int. post               !
-! trafbr(*)        ! tr ! <-- ! tab reel valeurs faces bord post               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ipart            ! i  ! <-- ! number of the post-processing mesh (< 0 or > 0)!
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nvlsta           ! i  ! <-- ! number of Lagrangian statistical variables     !
+! ncelps           ! i  ! <-- ! number of cells in post-processing mesh        !
+! nfacps           ! i  ! <-- ! number of interior faces in post-process. mesh !
+! nfbrps           ! i  ! <-- ! number of boundary faces in post-process. mesh !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! itypps(3)        ! ia ! <-- ! global presence flag (0 or 1) for cells (1),   !
+!                  !    !     ! interior faces (2), or boundary faces (3) in   !
+!                  !    !     ! post-processing mesh                           !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! lstcel(ncelps)   ! ia ! <-- ! list of cells in post-processing mesh          !
+! lstfac(nfacps)   ! ia ! <-- ! list of interior faces in post-processing mesh !
+! lstfbr(nfbrps)   ! ia ! <-- ! list of boundary faces in post-processing mesh !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! statis           ! ra ! <-- ! statistic values (Lagrangian)                  !
+!  (ncelet, nvlsta)!    !     !                                                !
+! tracel(*)        ! ra ! --- ! work array for post-processed cell values      !
+! trafac(*)        ! ra ! --- ! work array for post-processed face values      !
+! trafbr(*)        ! ra ! --- ! work array for post-processed boundary face v. !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -178,18 +169,18 @@ include "period.h"
 
 ! Arguments
 
-integer          idbia0 , idbra0
+integer          idbia0, idbra0
 integer          ipart
-integer          ndim   , ncelet , ncel   , nfac   , nfabor
-integer          nfml   , nprfml
-integer          nnod   , lndfac , lndfbr , ncelbr
-integer          nvar   , nscal  , nphas  , nvlsta
-integer          ncelps , nfacps , nfbrps
-integer          nideve , nrdeve , nituse , nrtuse
+integer          ndim,   ncelet, ncel,   nfac,   nfabor
+integer          nfml,   nprfml
+integer          nnod,   lndfac, lndfbr, ncelbr
+integer          nvar,   nscal , nphas , nvlsta
+integer          ncelps, nfacps, nfbrps
+integer          nideve, nrdeve, nituse, nrtuse
 
 integer          itypps(3)
-integer          ifacel(2,nfac) , ifabor(nfabor)
-integer          ifmfbr(nfabor) , ifmcel(ncelet)
+integer          ifacel(2,nfac), ifabor(nfabor)
+integer          ifmfbr(nfabor), ifmcel(ncelet)
 integer          iprfml(nfml,nprfml)
 integer          ipnfac(nfac+1), nodfac(lndfac)
 integer          ipnfbr(nfabor+1), nodfbr(lndfbr)
@@ -210,26 +201,24 @@ double precision trafac(nfacps*3), trafbr(nfbrps*3)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*32     namevr
 
 integer          ntindp
-integer          iel   , ifac  , iloc  , iphas, ivar , iclt
-integer          idimt , ii   , jj
+integer          iel, ifac, iloc, iphas, ivar, iclt
+integer          idimt, ii , jj
 integer          idimte, itenso, ientla, ivarpr
 integer          imom1, imom2, ipcmo1, ipcmo2, idtcm
 double precision pond
-double precision rbid(1)
+double precision rvoid(1)
 
 integer          ipass
 data             ipass /0/
 save             ipass
 
-
 !===============================================================================
 
-
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
 
@@ -239,388 +228,305 @@ if(1.eq.1) return
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-!     1. TRAITEMENT DES VARIABLES A SORTIR
-!         A RENSEIGNER PAR L'UTILISATEUR aux endroits indiques
+! 1. Handle variables to output
+!    MUST BE FILLED IN by the user at indicated places
 !===============================================================================
 
-
-!     Un maillage de posttraitement est une "part"
-!       (au sens EnSight ; les �quivalents MED et CGNS sont le maillage
-!       et la base respectivement)
-!     L'utilisateur aura defini ses maillages de posttraitement dans
-!       usdpst (NBPART maillages de posttraitement)
-
-
-!     La routine est appelee une fois pour chaque maillage IPART.
-!     Pour chaque maillage et pour chacune des variables que l'on
-!       souhaite posttraiter, on doit definir certains parametres et les
-!       passer a la routine PSTEVA qui se charge de l'ecriture effective.
-!     Ces parametres sont :
-!       NAMEVR : nom de la variable
-!       IDIMT  : dimension de la variable
-!       IENTLA : dans le cas ou IDIMT est >1, IENTLA permet de specifier
-!                si le tableau contenant la variable est range de maniere
-!                entrelacee X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3,... (IENTLA=1)
-!                ou non entrelancee X1,X2,X3,...,Y1,Y2,Y3,...,Z1,Z2,Z3,...
-!                                                               (IENTLA=0)
-!       IVARPR : specifie si le tableau contenant la variable traitee est
-!                defini sur le maillage "parent"/
-!                En effet, meme si le maillage IPART considere contient
-!                le meme nombre d'elements que le maillage complet "parent"
-!                (NCELPS=NCEL), l'ordre de numerotation des elements n'est pas
-!                forcement le meme. Le tableau TRACEL passe en argument de
-!                PSTEVA est construit selon la numerotation du maillage IPART.
-!                Pour posttraiter une variable contenue dans un tableau RTUSER
-!                par exemple, il faut donc d'abord le reordonner dans le
-!                tableau TRACEL :
-!                  DO ILOC = 1, NCELPS
-!                    IEL = LSTCEL(ILOC)
-!                    TRACEL(ILOC) = RTUSER(IEL)
-!                  ENDDO
-!                Une alternative est cependant offerte, pour eviter des copies
-!                inutiles. Si NCELPS=NCEL, on peut directement passer RTUSER
-!                en argument de PSTEVA, en specifiant IVARPR=1, pour avertir
-!                le code que la numerotation est celle du maillage "parent".
-!                L'exemple ci-dessus concerne les cellules, mais la
-!                problematique est la meme avec les faces internes ou faces de
-!                bord.
-
-
-!     Remarque : attention aux longueurs des noms de variables.
-
-!                On autorise ici jusqu'� 32 caracteres , mais selon le
-!                format utilise, les noms peuvent etre tronques :
-
-!                  - a 19 caracteres pour une sortie EnSight
-!                  - a 32 caracteres pour ue sortie MED 2.2
-
-!                La longueur du nom n'est pas limitee en interne, et en
-!                cas de deux variables aux noms tronques ne differant
-!                qu'apres le 19ieme caractere, les lignes correspondantes
-!                apparaitront normalement dans le fichier texte ".case"
-!                EnSight, avec un meme champ de description ; il suffit
-!                alors de renommer un de ces champs dans ce fichier
-!                texte pour corriger le probleme.
-
-!                Les caracteres blancs en debut ou fin de chaine sont
-!                supprimes automatiquement. Selon le format utilise,
-!                les caracteres interdits (sous EnSight, les caracteres
-!                (  ) ] [ + - @           ! # * ^ $ / ainsi que les blancs et les
-!                tabulations seront remplaces par le caractere ___________.
-!                Ceci ne necessite aucune intervention utilisateur
-!                (i.e. inutile d'utiliser ici les anciennes fonctions
-!                Fortran VERLON et UNDSCR).
-
-
-!     Exemples :
-!               pour le maillage post 2, on sort
-!                 la vitesse, la pression,
-!                 la temperature imposee aux faces de bord
-!                   (et 0 sur les eventuelles faces interieures)
-
-!               pour le maillage post 1, on sort
-!                 toutes les variables habituellement post-traitables.
-
-!               Le codage de l'exemple pour le maillage post 1 est
-!                 plus compact.
-
-
-!               Les exemples donnes ici correspondent aux maillages
-!                 definis dans en exemple dans usdpst.F et usmpst.F
-
-
-
+! A post-processing id a "part" (using the EnSight vocabulary; the MED and
+! CGNS equivalents are "mesh" and "base" respectively).
+! The user will have defined post-processing meshes in 'usdpst' ('nbpart'
+! post-processing meshes).
+
+! This subroutine is called once for each post-processing mesh
+! (with a different value of 'ipart') for each time step at which output
+! on this mesh is active. For each mesh and for all variables we wish to
+! post-process here, we must define certain parameters and pass them to
+! the 'psteva' subroutine, which is in charge of the actual output.
+! These parameters are:
+
+! namevr <-- variable name
+! idimt  <-- variable dimension
+!            (1: scalar, 3: vector, 6: symmetric tensor, 9: tensor)
+! ientla <-- when idimt >1, this flag specifies if the array containing the
+!            variable values is interlaced when ientla = 1
+!            (x1, y1, z1, x2, y2, z2, x3, y3, z3...), or non-interlaced
+!            when ientla = 0 (x1,x2,x3,...,y1,y2,y3,...,z1,z2,z3,...).
+! ivarpr <-- specifies if the array containing the variable is defined on
+!            the "parent" mesh or locally.
+!            Even if the 'ipart' post-processing mesh contains all the
+!            elements of its parent mesh, their numbering may be different,
+!            especially when different element types are present.
+!            The 'tracel' array passed as an argument to 'psteva' is built
+!            relative to the numbering of the 'ipart' post-processing mesh.
+!            To post-process a variable contained for example in the 'rtuser'
+!            array, it should first be re-ordered, as shown here:
+!              do iloc = 1, ncelps
+!                iel = lstcel(iloc)
+!                tracel(iloc) = rtuser(iel)
+!              enddo
+!            An alternative option is provided, to avoid unnecessary copies:
+!            an array defined on the parent mesh, such our 'rtuser' example,
+!            may be passed directly to 'psteva', specifying that values
+!            are defined on the parent mesh instead of the post-processing mesh,
+!            by setting the 'ivarpr' argument of 'psteva' to 1.
+
+! Note: be cautious with variable name lengths.
+
+! We allow up to 32 characters here, but names may be truncted depending on the
+! output format:
+
+! - 19 characters for EnSight
+! - 32 characters for MED
+
+! The nam length is not limited internally, so in case of 2 variables whoses
+! names differ only after the 19th character, the corresponding names will
+! both appear in the ".case" file; simply renaming one of the field descriptors
+! in this text file will correct the output.
+
+! Whitespace at the beginning or the end of a line is truncated automatically.
+! Depending on the format used, prohibited characters (under EnSight, characters
+! (  ) ] [ + - @           ! # * ^ $ / as well as white spaces and tabulations
+! are automatically replaced by the _ character.
+
+! Examples:
+
+! For post-processing mesh 2, we output the velocity, pressure, and prescribed
+! temperature at boundary faces (as well as 0 on possible interior faces)
+
+! For post-processing mesh 1, we output all the variables usually
+! post-processed, using a more compact coding.
+
+! Examples given here correspond to the meshes defined in usdpst.f90 and
+! modified in usmpst.f90.
 
 
 !===============================================================================
-!     1.1. EXEMPLES DE VARIABLES SUPPLEMENTAIRES A POSTTRAITER SUR LE
-!          MAILLAGE VOLUMIQUE COMPLET (IPART=-1)
+! 1.1. Examples of volume variables on the main volume mesh (ipart = -1)
 !===============================================================================
 
-if (ipart.eq.-1) then
+if (ipart .eq. -1) then
 
-!       1.1.1 SORTIE DE k=1/2(R11+R22+R33) EN MODELE Rij
-!       ------------------------------------------------
+  ! 1.1.1 Output of k=1/2(R11+R22+R33) for the Rij-epsilon model
+  !       ------------------------------------------------------
 
-!       Phase
-!         a renseigner par l'utilisateur
-  iphas = 1
+  iphas = 1   ! We only consider phase 1 in this example
 
   if (itytur(iphas) .eq. 3) then
 
-!         Initialisation
-!           pas d'intervention utilisateur requise
+    ! Initialize variable name
     do ii = 1, 32
-      NAMEVR (II:II) = ' '
+      namevr(ii:ii) = ' '
     enddo
 
-!         Nom de la variable
-!           a renseigner par l'utilisateur
-    NAMEVR = 'Energie turb'
+    ! Variable name
+    namevr = 'Turb energy'
 
-!         Dimension de la variable (3 = vecteur, 1=scalaire)
-!           a renseigner par l'utilisateur
+    ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
     idimt = 1
 
     do iloc = 1, ncelps
       iel = lstcel(iloc)
-      tracel(iloc) = 0.5d0*( rtp(iel,ir11(iphas)) +               &
-           rtp(iel,ir22(iphas)) +rtp(iel,ir33(iphas)) )
+      tracel(iloc) = 0.5d0*(  rtp(iel,ir11(iphas)) &
+                            + rtp(iel,ir22(iphas)) &
+                            + rtp(iel,ir33(iphas)) )
     enddo
 
-!         Ecriture effective des valeurs calculees
-
-!         Valeurs non entrelac�es
+    ! Values are not interlaced (dimension 1 here, so no effect).
     ientla = 0
 
-!         Les variables sont definies sur le tableau de travail ;
-!         on n'utilise pas l'indirection (IVARPR = 0)
+    ! Values are defined on the work array, not on the parent.
     ivarpr = 0
 
-
-!         Le maillage ne contient pas de face interne ni de face
-!         de bord, on peut donc passer un pointeur bidon RBID a la
-!         place de TRAFAC et TRAFBR
-    call psteva(ipart , namevr, idimt, ientla, ivarpr,            &
+    ! Output values; as we have no face values, we can pass a
+    ! trivial array rvoid instead of trafac and trafbr.
+    call psteva(ipart, namevr, idimt, ientla, ivarpr,  &
     !==========
-                ntcabs, ttcabs, tracel, rbid, rbid)
+                ntcabs, ttcabs, tracel, rvoid, rvoid)
 
   endif
 
 
+  ! 1.1.2 Output of a combination of moments
+  !       ----------------------------------
+  ! We assume in this example that we have 2 temporal means (moments):
+  !   <u>  for imom=1
+  !   <uu> for imom=2
+  ! We seek to plot <u'u'>=<uu>-<U>**2
 
-!       1.1.2 SORTIE D'UNE COMBINAISON DE MOMENTS
-!       -----------------------------------------
-!     On suppose dans cet exemple qu'on dispose de 2 moyennes temporelles
-!     (moments) : <u>  pour IMOM=1
-!                 <uu> pour IMOM=2
-!     On souhaite faire une sortie graphique de <u'u'>=<uu>-<U>**2
-
-!       Phase
-!         a renseigner par l'utilisateur
-  iphas = 1
+  iphas = 1   ! We only consider phase 1 in this example
 
   if (nbmomt .ge. 2) then
 
-!         Initialisation
-!           pas d'intervention utilisateur requise
+    ! Initialize variable name
     do ii = 1, 32
-      NAMEVR (II:II) = ' '
+      namevr (ii:ii) = ' '
     enddo
 
-!         Numero des moments :
-      imom1 = 1
-      imom2 = 2
-!         Position dans PROPCE du tableau de cumul temporel des moments
-!           PROPCE(IEL,IPCMOM)
-      ipcmo1 = ipproc(icmome(imom1))
-      ipcmo2 = ipproc(icmome(imom2))
+    ! Moment numbers:
+    imom1 = 1
+    imom2 = 2
 
-!         Nom de la variable
-!           a renseigner par l'utilisateur
-    NAMEVR = '<upup>'
+    ! Position in 'propce' of the array of temporal accumulation for moments,
+    ! propce(iel,ipcmom)
+    ipcmo1 = ipproc(icmome(imom1))
+    ipcmo2 = ipproc(icmome(imom2))
 
-!         Dimension de la variable (3 = vecteur, 1=scalaire)
-!           a renseigner par l'utilisateur
-    idimt = 1
-
-!         Le cumul temporel des moments doit etre divise par la variable
-!           de cumul du temps qui est un tableau NCEL ou un reel :
-!                 un tableau NCEL   si IDTMOM(IMOM) > 0 : PROPCE(IEL,IDTCM)
-!                 ou un simple reel si IDTMOM(IMOM) < 0 : DTCMOM(IDTCM)
-!         Pour ameliorer la lisibilite de cet exemple, on suppose que les
-!           moments IMOM1 et IMOM2 ont ete calcules sur le meme temps.
-
-      if(idtmom(imom1).gt.0) then
-        idtcm = ipproc(icdtmo(idtmom(imom1)))
-        do iloc = 1, ncelps
-          iel = lstcel(iloc)
-          tracel(iloc) = propce(iel,ipcmo2)/                      &
-               max(propce(iel,idtcm),epzero)                      &
-               - (propce(iel,ipcmo1)/                             &
-               max(propce(iel,idtcm),epzero))**2
-        enddo
-      elseif(idtmom(imom1).lt.0) then
-        idtcm = -idtmom(imom1)
-        do iloc = 1, ncelps
-          iel = lstcel(iloc)
-          tracel(iloc) =  propce(iel,ipcmo2)/                     &
-               max(dtcmom(idtcm),epzero)                          &
-               - (propce(iel,ipcmo1)/                             &
-               max(dtcmom(idtcm),epzero))**2
-        enddo
-      endif
-
-!         Ecriture effective des valeurs calculees
-
-!         Valeurs non entrelac�es
-      ientla = 0
-
-!         Les variables sont definies sur le tableau de travail ;
-!         on n'utilise pas l'indirection (IVARPR = 0)
-      ivarpr = 0
-
-
-!         Le maillage ne contient pas de face interne ni de face
-!         de bord, on peut donc passer un pointeur bidon RBID a la
-!         place de TRAFAC et TRAFBR
-      call psteva(ipart , namevr, idimt, ientla, ivarpr,          &
-      !==========
-                ntcabs, ttcabs, tracel, rbid, rbid)
-
-  endif
+    ! Variable name
+    namevr = '<upup>'
 
-
-
-!       1.1.3 SORTIE NUMERO DE DOMAINE EN PARALLELE
-!       -------------------------------------------
-
-!         Cette variable est independante du temps, on ne la sort
-!         donc qu'une fois (voir NTINDP plus bas)
-
-  if (ipass.eq.0 .and. irangp.ge.0) then
-
-    ipass = ipass + 1
-
-!         Initialisation
-!           pas d'intervention utilisateur requise
-    do ii = 1, 32
-      NAMEVR (II:II) = ' '
-    enddo
-
-!         Nom de la variable
-!           a renseigner par l'utilisateur
-    NAMEVR = 'Num processeur'
-
-!         Dimension de la variable (3 = vecteur, 1=scalaire)
-!           a renseigner par l'utilisateur
+    ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
     idimt = 1
 
-    do iloc = 1, ncelps
-      iel = lstcel(iloc)
-      tracel(iloc) = irangp + 1
-    enddo
-
-!         Ecriture effective des valeurs calculees
-
-!         Valeurs non entrelac�es
+    ! The temporal accumulation for moments must be divided by the accumulated
+    ! time, which id an array of size ncel or a single real number:
+    ! - array of size ncel if idtmom(imom) > 0 : propce(iel, idtcm)
+    ! - or simple real     if idtmom(imom) < 0 : dtcmom(idtcm)
+
+    ! To improve this example's readability, we assume moments imom1 and imom2
+    ! have been computed on the same time window.
+
+    if(idtmom(imom1).gt.0) then
+      idtcm = ipproc(icdtmo(idtmom(imom1)))
+      do iloc = 1, ncelps
+        iel = lstcel(iloc)
+        tracel(iloc) =    propce(iel,ipcmo2)/max(propce(iel,idtcm),epzero)      &
+                       - (propce(iel,ipcmo1)/max(propce(iel,idtcm),epzero))**2
+      enddo
+    elseif(idtmom(imom1).lt.0) then
+      idtcm = -idtmom(imom1)
+      do iloc = 1, ncelps
+        iel = lstcel(iloc)
+        tracel(iloc) =    propce(iel,ipcmo2)/max(dtcmom(idtcm),epzero)      &
+                       - (propce(iel,ipcmo1)/max(dtcmom(idtcm),epzero))**2
+      enddo
+    endif
+
+    ! Values are not interlaced (dimension 1 here, so no effect).
     ientla = 0
 
-!         Les variables sont definies sur le tableau de travail ;
-!         on n'utilise pas l'indirection (IVARPR = 0)
+    ! Values are defined on the work array, not on the parent.
     ivarpr = 0
 
-!         Cette variable ne depend pas du temps ;
-!         on peut lui affecter un numero de pas de temps negatif
-!         et ne l'ecrire qu'une fois si on veut eviter de
-!         la dupliquer a chaque sortie
-    ntindp = -1
-
-    call psteva(ipart , namevr, idimt, ientla, ivarpr,            &
+    ! Output values; as we have no face values, we can pass a
+    ! trivial array rvoid instead of trafac and trafbr.
+    call psteva(ipart, namevr, idimt, ientla, ivarpr,   &
     !==========
-                ntindp, ttcabs, tracel, rbid, rbid)
+                ntcabs, ttcabs, tracel, rvoid, rvoid)
 
   endif
-!       Fin du traitement en cas de sortie de la variable
-
-
-
-
-
-
 
 !===============================================================================
-!     1.2. EXEMPLES DE VARIABLES SUPPLEMENTAIRES A POSTTRAITER SUR LE
-!          MAILLAGE DE BORD COMPLET (IPART=-2)
+! 1.2. Examples of volume variables on the boundary mesh (ipart = -2)
 !===============================================================================
 
-else if  (ipart.eq.-2) then
+else if  (ipart .eq. -2) then
 
-!       1.2.1 TRAITEMENT DE LA MASSE VOLUMIQUE AU BORD
-!       ----------------------------------------------
+  ! 1.2.1 Output of the density at the boundary
+  !       -------------------------------------
 
-!       Phase
-!         a renseigner par l'utilisateur
-  iphas = 1
+  iphas = 1   ! We only consider phase 1 in this example
 
-!       Initialisation
-!         pas d'intervention utilisateur requise
+  ! Initialize variable name
   do ii = 1, 32
-    NAMEVR (II:II) = ' '
+    namevr (ii:ii) = ' '
   enddo
 
-!       Nom de la variable
-!         a renseigner par l'utilisateur
-  NAMEVR = 'Rho bord'
+  ! Variable name
+  namevr = 'Density at boundary'
 
-!       Dimension de la variable (3 = vecteur, 1=scalaire)
-!         a renseigner par l'utilisateur
+  ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
   idimt = 1
 
-
-
-!       Valeurs non entrelac�es
+  ! Values are not interlaced (dimension 1 here, so no effect).
   ientla = 0
 
-!       On utilise directement le tableau propfb defini sur le
-!         maillage parent
+  ! We directly use the propfb array defined on the parent mesh.
   ivarpr = 1
 
-!       Le maillage ne contient pas de face interne ni de
-!       cellule, on peut donc passer un pointeur bidon RBID a la
-!       place de TRAFAC et TRACEL
-  call psteva(ipart , namevr, idimt, ientla, ivarpr,              &
+  ! Output values; as we have only boundary face values, we can pass a
+  ! trivial array rvoid instead of tracel and trafac.
+  call psteva(ipart, namevr, idimt, ientla, ivarpr,    &
   !==========
-              ntcabs, ttcabs, rbid, rbid,                         &
+              ntcabs, ttcabs, rvoid, rvoid,            &
               propfb(1,ipprob(irom(iphas))))
 
 
+  ! 1.2.2 Output of the domain number in parallel
+  !       ---------------------------------------
+
+  ! This variable is independent of time, so we output it once
+  ! only (see 'ntindp' below)
+
+  if (ipass.eq.0 .and. irangp.ge.0) then
+
+    ipass = ipass + 1
+
+    ! Initialize variable name
+    do ii = 1, 32
+      namevr (ii:ii) = ' '
+    enddo
+
+    ! Variable name
+    namevr = 'domain number'
+
+    ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
+    idimt = 1
+
+    do iloc = 1, nfbrps
+      ! ifac = lstfbr(iloc)
+      trafbr(iloc) = irangp + 1
+    enddo
+
+    ! Values are not interlaced (dimension 1 here, so no effect).
+    ientla = 0
+
+    ! Values are defined on the work array, not on the parent.
+    ivarpr = 0
+
+    ! This variable is time-invariant;
+    ! We assign a negative time to it and output it once only to avoid
+    ! duplicating it at each output time.
+    ntindp = -1
+
+    ! Output values; as we have only boundary face values, we can pass a
+    ! trivial array rvoid instead of trafac and trafbr.
+    call psteva(ipart, namevr, idimt, ientla, ivarpr,  &
+    !==========
+                ntindp, ttcabs, rvoid, rvoid, trafbr)
 
+  endif
 
 
 !===============================================================================
-!     1.3. EXEMPLES DE VARIABLES A POSTTRAITER SUR LES MAILLAGE 1 ET 2
-!          (IPART=1 OU IPART=2)
+! 1.3. Examples of volume variables on user meshes 1 or 2
 !===============================================================================
 
-
 else if  (ipart.eq.1 .or. ipart.eq.2) then
 
-!       1.3.1 TRAITEMENT DE LA VITESSE
-!       ------------------------------
+  ! 1.3.1 Output of the velocity
+  !       ----------------------
 
-!       Initialisation
-!         pas d'intervention utilisateur requise
+  ! Initialize variable name
   do ii = 1, 32
-    NAMEVR (II:II) = ' '
+    namevr (ii:ii) = ' '
   enddo
 
-!       Nom de la variable
-!         a renseigner par l'utilisateur
-  NAMEVR = 'Vitesse interpolee'
+  ! Variable name
+  namevr = 'Interpol velocity'
 
-!       Dimension de la variable (3 = vecteur, 1=scalaire)
-!         a renseigner par l'utilisateur
+  ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
   idimt = 3
 
-!       Valeurs entrelac�es
+  ! Values are interlaced.
   ientla = 1
 
-!       Phase
-!         a renseigner par l'utilisateur
-  iphas = 1
+  iphas = 1   ! We only consider phase 1 in this example
 
-!       Calcul des valeurs de la variable sur les faces internes
-!         Pour simplifier l'exemple, on se contente ici d'une simple
-!           interpolation lineaire.
-!         Dans les calculs paralleles, si l'on utilise les voisins,
-!           il faut faire un echange au prealable, comme d'habitude.
-!         Dans les calculs avec periodicite, il faut egalement le faire
-!         Pour les calculs ou periodicite et parallelisme coexistent,
-!           l'appel a ces routines doit etre fait dans l'ordre
-!           PARCOM puis PERCOM
-
-!         a renseigner par l'utilisateur
+  ! Compute variable values on interior faces.
+  ! In this example, we use a simple linear interpolation.
+  ! For parallel calculations, if neighbors are used, they must be synchronized
+  ! first. This also applies for periodicity. When both are used, parallel
+  ! synchronization must always be done before periodic synchronization.
 
   if(irangp.ge.0) then
     call parcom (rtp(1,iu(iphas)))
@@ -631,12 +537,11 @@ else if  (ipart.eq.1 .or. ipart.eq.2) then
   if(iperio.eq.1) then
     idimte = 1
     itenso = 0
-    call percom                                                   &
+    call percom(idimte, itenso,                                        &
     !==========
-         ( idimte , itenso ,                                      &
-           rtp(1,iu(iphas)), rtp(1,iu(iphas)), rtp(1,iu(iphas)),  &
-           rtp(1,iv(iphas)), rtp(1,iv(iphas)), rtp(1,iv(iphas)),  &
-           rtp(1,iw(iphas)), rtp(1,iw(iphas)), rtp(1,iw(iphas)))
+                rtp(1,iu(iphas)), rtp(1,iu(iphas)), rtp(1,iu(iphas)),  &
+                rtp(1,iv(iphas)), rtp(1,iv(iphas)), rtp(1,iv(iphas)),  &
+                rtp(1,iw(iphas)), rtp(1,iw(iphas)), rtp(1,iw(iphas)))
   endif
 
   do iloc = 1, nfacps
@@ -646,84 +551,65 @@ else if  (ipart.eq.1 .or. ipart.eq.2) then
     jj = ifacel(2, ifac)
     pond = ra(ipond-1+ifac)
 
-    trafac(1 + (iloc-1)*idimt )                                   &
-         =         pond  * rtp(ii, iu(iphas))                     &
-         + (1.d0 - pond) * rtp(jj, iu(iphas))
-    trafac(2 + (iloc-1)*idimt )                                   &
-         =         pond  * rtp(ii, iv(iphas))                     &
-         + (1.d0 - pond) * rtp(jj, iv(iphas))
-    trafac(3 + (iloc-1)*idimt )                                   &
-         =         pond  * rtp(ii, iw(iphas))                     &
-         + (1.d0 - pond) * rtp(jj, iw(iphas))
+    trafac(1 + (iloc-1)*idimt)  =            pond  * rtp(ii,iu(iphas))   &
+                                   + (1.d0 - pond) * rtp(jj,iu(iphas))
+    trafac(2 + (iloc-1)*idimt)  =            pond  * rtp(ii,iv(iphas))   &
+                                   + (1.d0 - pond) * rtp(jj,iv(iphas))
+    trafac(3 + (iloc-1)*idimt)  =            pond  * rtp(ii,iw(iphas))   &
+                                   + (1.d0 - pond) * rtp(jj,iw(iphas))
 
   enddo
 
-
-!       Calcul des valeurs de la variable sur les faces de bord
-!         Pour simplifier l'exemple, on se contente ici d'une simple
-!         recopie de la variable de la cellule adjacente.
-!         a renseigner par l'utilisateur
+  ! Compute variable values on boundary faces.
+  ! In this example, we use a simple copy of the adjacent cell value.
 
   do iloc = 1, nfbrps
 
     ifac = lstfbr(iloc)
     ii = ifabor(ifac)
 
-    trafbr(1 + (iloc-1)*idimt ) = rtp(ii, iu(iphas))
-    trafbr(2 + (iloc-1)*idimt ) = rtp(ii, iv(iphas))
-    trafbr(3 + (iloc-1)*idimt ) = rtp(ii, iw(iphas))
+    trafbr(1 + (iloc-1)*idimt) = rtp(ii, iu(iphas))
+    trafbr(2 + (iloc-1)*idimt) = rtp(ii, iv(iphas))
+    trafbr(3 + (iloc-1)*idimt) = rtp(ii, iw(iphas))
 
   enddo
 
-!       Ecriture effective des valeurs calculees
-
+  ! Values are defined on the work array, not on the parent.
   ivarpr = 0
 
-  call psteva(ipart , namevr, idimt, ientla, ivarpr,              &
+  ! Output values
+  call psteva(ipart, namevr, idimt, ientla, ivarpr,    &
   !==========
               ntcabs, ttcabs, tracel, trafac, trafbr)
 
 
-!       1.3.2 TRAITEMENT DE LA PRESSION
-!       -------------------------------
-
+  ! 1.3.2 Output of the pressure
+  !       ----------------------
 
-!       Initialisation
-!         pas d'intervention utilisateur requise
+  ! Initialize variable name
   do ii = 1, 32
-    NAMEVR (II:II) = ' '
+    namevr (ii:ii) = ' '
   enddo
 
-!       Nom de la variable
-!         a renseigner par l'utilisateur
-  NAMEVR = 'Pression interpolee'
+  ! Variable name
+  namevr = 'Interpol pressure'
 
-!       Dimension de la variable (3 = vecteur, 1=scalaire)
-!         a renseigner par l'utilisateur
+  ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
   idimt = 1
 
-!       Valeurs non entrelac�es (sans importance pour un scalaire)
+  ! Values are not interlaced (dimension 1 here, so no effect).
   ientla = 0
 
-!       Phase
-!         a renseigner par l'utilisateur
-  iphas = 1
+  iphas = 1   ! We only consider phase 1 in this example
 
-!       Numero de variable
-!         a renseigner par l'utilisateur
+  ! Variable number
   ivar = ipr(iphas)
 
-!       Calcul des valeurs de la variable sur les faces internes
-!         Pour simplifier l'exemple, on se contente ici d'une simple
-!           interpolation lineaire.
-!         Dans les calculs paralleles, si l'on utilise les voisins,
-!           il faut faire un echange au prealable, comme d'habitude.
-!         Dans les calculs avec periodicite, il faut egalement le faire
-!         Pour les calculs ou periodicite et parallelisme coexistent,
-!           l'appel a ces routines doit etre fait dans l'ordre
-!           PARCOM puis PERCOM
-
-!         a renseigner par l'utilisateur
+  ! Compute variable values on interior faces.
+  ! In this example, we use a simple linear interpolation.
+  ! For parallel calculations, if neighbors are used, they must be synchronized
+  ! first. This also applies for periodicity. When both are used, parallel
+  ! synchronization must always be done before periodic synchronization.
 
   if(irangp.ge.0) then
     call parcom (rtp(1,ivar))
@@ -731,12 +617,11 @@ else if  (ipart.eq.1 .or. ipart.eq.2) then
   if(iperio.eq.1) then
     idimte = 0
     itenso = 0
-    call percom                                                   &
+    call percom(idimte, itenso,                         &
     !==========
-         ( idimte , itenso ,                                      &
-           rtp(1,ivar), rtp(1,ivar), rtp(1,ivar),                 &
-           rtp(1,ivar), rtp(1,ivar), rtp(1,ivar),                 &
-           rtp(1,ivar), rtp(1,ivar), rtp(1,ivar))
+                rtp(1,ivar), rtp(1,ivar), rtp(1,ivar),  &
+                rtp(1,ivar), rtp(1,ivar), rtp(1,ivar),  &
+                rtp(1,ivar), rtp(1,ivar), rtp(1,ivar))
   endif
 
   do iloc = 1, nfacps
@@ -746,16 +631,12 @@ else if  (ipart.eq.1 .or. ipart.eq.2) then
     jj = ifacel(2, ifac)
     pond = ra(ipond-1+ifac)
 
-    trafac(iloc) =           pond  * rtp(ii, ivar)                &
+    trafac(iloc) =           pond  * rtp(ii, ivar)  &
                    + (1.d0 - pond) * rtp(jj, ivar)
-
   enddo
 
-
-!       Calcul des valeurs de la variable sur les faces de bord
-!         Pour simplifier l'exemple, on se contente ici d'une simple
-!         recopie de la variable de la cellule adjacente.
-!         a renseigner par l'utilisateur
+  ! Compute variable values on boundary faces.
+  ! In this example, we use a simple copy of the adjacent cell value.
 
   do iloc = 1, nfbrps
 
@@ -763,53 +644,45 @@ else if  (ipart.eq.1 .or. ipart.eq.2) then
     ii = ifabor(ifac)
 
     trafbr(iloc) = rtp(ii, ivar)
-
   enddo
 
-!       Ecriture effective des valeurs calculees
-
+  ! Values are defined on the work array, not on the parent.
   ivarpr = 0
 
-  call psteva(ipart , namevr, idimt, ientla, ivarpr,              &
+  ! Output values
+  call psteva(ipart, namevr, idimt, ientla, ivarpr,    &
   !==========
               ntcabs, ttcabs, tracel, trafac, trafbr)
 
 
-!       1.3.3 TRAITEMENT DE LA TEMPERATURE AU BORD
-!       ------------------------------------------
+  ! 1.3.3 Output of the boundary temperature
+  !       ----------------------------------
 
-!       Phase
-!         a renseigner par l'utilisateur
-  iphas = 1
+  iphas = 1   ! We only consider phase 1 in this example
 
-  if(iscalt(iphas).gt.0) then
+  if (iscalt(iphas) .gt. 0) then
 
-!       Initialisation
-!         pas d'intervention utilisateur requise
+    ! Initialize variable name
     do ii = 1, 32
-      NAMEVR (II:II) = ' '
+      namevr (ii:ii) = ' '
     enddo
 
-!       Nom de la variable
-!         a renseigner par l'utilisateur
-    NAMEVR = 'Temperature de bord'
+    ! Variable name
+    namevr = 'Boundary temperature'
 
-!       Dimension de la variable (3 = vecteur, 1=scalaire)
-!         a renseigner par l'utilisateur
+    ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
     idimt = 1
 
-!       Valeurs non entrelac�es (sans importance pour un scalaire)
-  ientla = 0
+    ! Values are not interlaced (dimension 1 here, so no effect).
+    ientla = 0
 
-!       Annulation de la variable sur les faces internes
-!         a renseigner par l'utilisateur
+    ! Set value to 0 for interior faces
 
     do iloc = 1, nfacps
       trafac(iloc) = 0.d0
     enddo
 
-!       Calcul des valeurs de la variable sur les faces de bord
-!         a renseigner par l'utilisateur
+    ! Compute variable values on boundary faces.
 
     ivar = isca(iscalt(iphas))
     iclt = iclrtp(ivar,icoef)
@@ -817,45 +690,38 @@ else if  (ipart.eq.1 .or. ipart.eq.2) then
     do iloc = 1, nfbrps
       ifac = lstfbr(iloc)
       ii = ifabor(ifac)
-      trafbr(iloc) =                                              &
-          coefa(ifac,iclt)+coefb(ifac,iclt)*rtp(ii, ivar)
+      trafbr(iloc) = coefa(ifac,iclt)+coefb(ifac,iclt)*rtp(ii, ivar)
     enddo
 
-!         Ecriture effective des valeurs calculees
-
+    ! Values are defined on the work array, not on the parent.
     ivarpr = 0
 
-    call psteva(ipart , namevr, idimt, ientla, ivarpr,            &
+    ! Output values
+    call psteva(ipart, namevr, idimt, ientla, ivarpr,    &
     !==========
                 ntcabs, ttcabs, tracel, trafac, trafbr)
 
   endif
 
+  ! The examples below illustrate how to output a same variable in different
+  ! ways (interlaced or not, using an indirection or not).
 
 
+  ! 1.3.4 Output of the centers of gravity, interlaced
+  !       --------------------------------
 
-!     Les exemples suivants montrent les differentes facons de
-!       sortir la meme variable (entrelacee ou non, avec indirection
-!       ou pas)
-
-!       1.3.4 TRAITEMENT DES CENTRES DE GRAVITE, sous forme entrelacee
-!       --------------------------------------------------------------
-
-!       Initialisation
-!         pas d'intervention utilisateur requise
+  ! Initialize variable name
   do ii = 1, 32
-    NAMEVR (II:II) = ' '
+    namevr (ii:ii) = ' '
   enddo
 
-!       Nom de la variable
-!         a renseigner par l'utilisateur
-  NAMEVR = 'cdg faces (entrelaces)'
+  ! Variable name
+  namevr = 'face cog (interlaced)'
 
-!       Dimension de la variable (3 = vecteur, 1=scalaire)
-!         a renseigner par l'utilisateur
+  ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
   idimt = 3
 
-!       Valeurs entrelac�es
+  ! Values are interlaced
   ientla = 1
 
   do iloc = 1, nfacps
@@ -865,10 +731,9 @@ else if  (ipart.eq.1 .or. ipart.eq.2) then
     trafac(1 + (iloc-1)*idimt ) = cdgfac(1, ifac)
     trafac(2 + (iloc-1)*idimt ) = cdgfac(2, ifac)
     trafac(3 + (iloc-1)*idimt ) = cdgfac(3, ifac)
-
   enddo
 
-!       Calcul des valeurs de la variable sur les faces de bord
+  ! Compute variable values on boundary faces
 
   do iloc = 1, nfbrps
 
@@ -877,36 +742,32 @@ else if  (ipart.eq.1 .or. ipart.eq.2) then
     trafbr(1 + (iloc-1)*idimt ) = cdgfbo(1, ifac)
     trafbr(2 + (iloc-1)*idimt ) = cdgfbo(2, ifac)
     trafbr(3 + (iloc-1)*idimt ) = cdgfbo(3, ifac)
-
   enddo
 
-!       Ecriture effective des valeurs calculees
-
+  ! Values are defined on the work array, not on the parent.
   ivarpr = 0
 
-  call psteva(ipart , namevr, idimt, ientla, ivarpr,              &
+  ! Output values
+  call psteva(ipart, namevr, idimt, ientla, ivarpr,    &
   !==========
               ntcabs, ttcabs, tracel, trafac, trafbr)
 
 
-!       1.3.5 TRAITEMENT DES CENTRES DE GRAVITE, sous forme non entrelacee
-!       ------------------------------------------------------------------
+  ! 1.3.5 Output of the centers of gravity, non-interlaced
+  !       --------------------------------
 
-!       Initialisation
-!         pas d'intervention utilisateur requise
+  ! Initialize variable name
   do ii = 1, 32
-    NAMEVR (II:II) = ' '
+    namevr (ii:ii) = ' '
   enddo
 
-!       Nom de la variable
-!         a renseigner par l'utilisateur
-  NAMEVR = 'cdg faces (non entrelaces)'
+  ! Variable name
+  namevr = 'face cog (non-interlaced)'
 
-!       Dimension de la variable (3 = vecteur, 1=scalaire)
-!         a renseigner par l'utilisateur
+  ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
   idimt = 3
 
-!       Valeurs non entrelac�es
+  ! Values are not interlaced
   ientla = 0
 
   do iloc = 1, nfacps
@@ -919,7 +780,7 @@ else if  (ipart.eq.1 .or. ipart.eq.2) then
 
   enddo
 
-!       Calcul des valeurs de la variable sur les faces de bord
+  ! Compute variable values on boundary faces
 
   do iloc = 1, nfbrps
 
@@ -928,87 +789,92 @@ else if  (ipart.eq.1 .or. ipart.eq.2) then
     trafbr(iloc)            = cdgfbo(1, ifac)
     trafbr(iloc + nfbrps)   = cdgfbo(2, ifac)
     trafbr(iloc + 2*nfbrps) = cdgfbo(3, ifac)
-
   enddo
 
-!       Ecriture effective des valeurs calculees
-
+  ! Values are defined on the work array, not on the parent.
   ivarpr = 0
 
-  call psteva(ipart , namevr, idimt, ientla, ivarpr,              &
+  ! Output values
+  call psteva(ipart, namevr, idimt, ientla, ivarpr,    &
   !==========
               ntcabs, ttcabs, tracel, trafac, trafbr)
 
 
-!       1.3.6 TRAITEMENT DES CENTRES DE GRAVITE, avec indirection
-!       ------------------------------------------------------------------
+  ! 1.3.6 Output of the centers of gravity, with indirection (parent-based)
+  !       --------------------------------
 
-!       Initialisation
-!         pas d'intervention utilisateur requise
+  ! Initialize variable name
   do ii = 1, 32
-    NAMEVR (II:II) = ' '
+    namevr (ii:ii) = ' '
   enddo
 
-!       Nom de la variable
-!         a renseigner par l'utilisateur
-  NAMEVR = 'cdg faces (indirection)'
+  ! Variable name
+  namevr = 'face cog (parent)'
 
-!       Dimension de la variable (3 = vecteur, 1=scalaire)
-!         a renseigner par l'utilisateur
+  ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
   idimt = 3
 
-!       Valeurs entrelac�es
+  ! Values are interlaced
   ientla = 1
 
-!       Ecriture effective des valeurs calculees
-
+  ! Values are defined on the parent.
   ivarpr = 1
 
-  call psteva(ipart , namevr, idimt, ientla, ivarpr,              &
+  ! Output values
+  call psteva(ipart, namevr, idimt, ientla, ivarpr,   &
   !==========
-              ntcabs, ttcabs, rbid, cdgfac, cdgfbo)
-
-
-
+              ntcabs, ttcabs, rvoid, cdgfac, cdgfbo)
 
 
 !===============================================================================
-!     1.4. EXEMPLES DE VARIABLES A POSTTRAITER SUR LES MAILLAGE 3 ET 4
-!          (IPART=3 OU IPART=4)
+! 1.4. Examples of volume variables on user meshes 3 or 4
 !===============================================================================
 
 else if  (ipart.ge.3 .and. ipart.le.4) then
 
+  ! 1.4.1 Output of the velocity
+  !       ----------------------
 
-!       1.4.1 TRAITEMENT DE LA VITESSE
-!       ------------------------------
-
-!       Initialisation
-!         pas d'intervention utilisateur requise
+  ! Initialize variable name
   do ii = 1, 32
-    NAMEVR (II:II) = ' '
+    namevr (ii:ii) = ' '
   enddo
 
-!       Nom de la variable
-!         a renseigner par l'utilisateur
-  NAMEVR = 'Vitesse'
+  ! Variable name
+  namevr = 'Velocity'
 
-!       Dimension de la variable (3 = vecteur, 1=scalaire)
-!         a renseigner par l'utilisateur
+  ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
   idimt = 3
 
-!       Valeurs non entrelac�es
+  ! Values are not interlaced.
   ientla = 0
 
-!       Phase
-!         a renseigner par l'utilisateur
-  iphas = 1
+  iphas = 1   ! We only consider phase 1 in this example
 
-!       Numero de variable
-!         a renseigner par l'utilisateur
+  ! Variable number
   ivar = iu(iphas)
 
-!       Calcul des valeurs de la variable sur les faces internes
+  ! Compute variable values on interior faces.
+  ! In this example, we use a simple linear interpolation.
+  ! For parallel calculations, if neighbors are used, they must be synchronized
+  ! first. This also applies for periodicity. When both are used, parallel
+  ! synchronization must always be done before periodic synchronization.
+
+  if(irangp.ge.0) then
+    call parcom (rtp(1,iu(iphas)))
+    call parcom (rtp(1,iv(iphas)))
+    call parcom (rtp(1,iw(iphas)))
+  endif
+
+  if(iperio.eq.1) then
+    idimte = 1
+    itenso = 0
+    call percom(idimte, itenso,                                        &
+    !==========
+                rtp(1,iu(iphas)), rtp(1,iu(iphas)), rtp(1,iu(iphas)),  &
+                rtp(1,iv(iphas)), rtp(1,iv(iphas)), rtp(1,iv(iphas)),  &
+                rtp(1,iw(iphas)), rtp(1,iw(iphas)), rtp(1,iw(iphas)))
+  endif
 
   do iloc = 1, nfacps
 
@@ -1017,22 +883,16 @@ else if  (ipart.ge.3 .and. ipart.le.4) then
     jj = ifacel(2, ifac)
     pond = ra(ipond-1+ifac)
 
-    trafac(iloc)                                                  &
-         =         pond  * rtp(ii, iu(iphas))                     &
-         + (1.d0 - pond) * rtp(jj, iu(iphas))
-    trafac(iloc + nfacps)                                         &
-         =         pond  * rtp(ii, iv(iphas))                     &
-         + (1.d0 - pond) * rtp(jj, iv(iphas))
-    trafac(iloc + 2*nfacps)                                       &
-         =         pond  * rtp(ii, iw(iphas))                     &
-         + (1.d0 - pond) * rtp(jj, iw(iphas))
-
+    trafac(iloc) =                       pond  * rtp(ii, iu(iphas))   &
+                               + (1.d0 - pond) * rtp(jj, iu(iphas))
+    trafac(iloc + nfacps)    =           pond  * rtp(ii, iv(iphas))   &
+                               + (1.d0 - pond) * rtp(jj, iv(iphas))
+    trafac(iloc + 2*nfacps)  =           pond  * rtp(ii, iw(iphas))   &
+                               + (1.d0 - pond) * rtp(jj, iw(iphas))
   enddo
 
-!       Calcul des valeurs de la variable sur les faces de bord
-!         Pour simplifier l'exemple, on se contente ici d'une simple
-!         recopie de la variable de la cellule adjacente.
-!         a renseigner par l'utilisateur
+  ! Compute variable values on boundary faces.
+  ! In this example, we use a simple copy of the adjacent cell value.
 
   do iloc = 1, nfbrps
 
@@ -1042,52 +902,44 @@ else if  (ipart.ge.3 .and. ipart.le.4) then
     trafbr(iloc )           = rtp(ii, iu(iphas))
     trafbr(iloc + nfbrps)   = rtp(ii, iv(iphas))
     trafbr(iloc + 2*nfbrps) = rtp(ii, iw(iphas))
-
   enddo
 
-!       Ecriture effective des valeurs calculees
-
-  if (ipart.eq.5) then
-    ivarpr = 1
-  else
-    ivarpr = 0
-  endif
+  ! Values are defined on the work array, not on the parent.
+  ivarpr = 0
 
-  call psteva(ipart , namevr, idimt, ientla, ivarpr,              &
+  ! Output values
+  call psteva(ipart, namevr, idimt, ientla, ivarpr,         &
   !==========
               ntcabs, ttcabs, rtp(1,ivar), trafac, trafbr)
 
 
-!       1.4.2 TRAITEMENT DE LA PRESSION
-!       -------------------------------
-
+  ! 1.5.2 Output of the pressure
+  !       ----------------------
 
-!       Initialisation
-!         pas d'intervention utilisateur requise
+  ! Initialize variable name
   do ii = 1, 32
-    NAMEVR (II:II) = ' '
+    namevr (ii:ii) = ' '
   enddo
 
-!       Nom de la variable
-!         a renseigner par l'utilisateur
-  NAMEVR = 'Pression'
+  ! Variable name
+  namevr = 'Pressure'
 
-!       Dimension de la variable (3 = vecteur, 1=scalaire)
-!         a renseigner par l'utilisateur
+  ! Variable dimension (1: scalar, 3: vector, 6/9: symm/non-symm tensor)
   idimt = 1
 
-!       Valeurs non entrelac�es (sans importance pour un scalaire)
+  ! Values are not interlaced (dimension 1 here, so no effect).
   ientla = 0
 
-!       Phase
-!         a renseigner par l'utilisateur
-  iphas = 1
+  iphas = 1   ! We only consider phase 1 in this example
 
-!       Numero de variable
-!         a renseigner par l'utilisateur
+  ! Variable number
   ivar = ipr(iphas)
 
-!       Calcul des valeurs de la variable sur les faces internes
+  ! Compute variable values on interior faces.
+  ! In this example, we use a simple linear interpolation.
+  ! For parallel calculations, if neighbors are used, they must be synchronized
+  ! first. This also applies for periodicity. When both are used, parallel
+  ! synchronization must always be done before periodic synchronization.
 
   do iloc = 1, nfacps
 
@@ -1096,16 +948,12 @@ else if  (ipart.ge.3 .and. ipart.le.4) then
     jj = ifacel(2, ifac)
     pond = ra(ipond-1+ifac)
 
-    trafac(iloc)                                                  &
-         =         pond  * rtp(ii, ivar)                          &
-         + (1.d0 - pond) * rtp(jj, ivar)
-
+    trafac(iloc)  =           pond  * rtp(ii, ivar)   &
+                    + (1.d0 - pond) * rtp(jj, ivar)
   enddo
 
-!       Calcul des valeurs de la variable sur les faces de bord
-!         Pour simplifier l'exemple, on se contente ici d'une simple
-!         recopie de la variable de la cellule adjacente.
-!         a renseigner par l'utilisateur
+  ! Compute variable values on boundary faces.
+  ! In this example, we use a simple copy of the adjacent cell value.
 
   do iloc = 1, nfbrps
 
@@ -1113,26 +961,19 @@ else if  (ipart.ge.3 .and. ipart.le.4) then
     ii = ifabor(ifac)
 
     trafbr(iloc) = rtp(ii, ivar)
-
   enddo
 
-!       Ecriture effective des valeurs calculees
-
-  if (ipart.eq.5) then
-    ivarpr = 1
-  else
-    ivarpr = 0
-  endif
+  ! Values are defined on the work array, not on the parent.
+  ivarpr = 0
 
-  call psteva(ipart , namevr, idimt, ientla, ivarpr,              &
+  ! Output values
+  call psteva(ipart, namevr, idimt, ientla, ivarpr,         &
   !==========
               ntcabs, ttcabs, rtp(1,ivar), trafac, trafbr)
 
 
-endif
-!     Fin du test sur le numero de maillage post.
-
+endif ! end of test on post-processing mesh number
 
 return
 
-end
+end subroutine
diff --git a/users/cfbl/uscfcl.f90 b/users/cfbl/uscfcl.f90
index d26cd74..97a0c3b 100644
--- a/users/cfbl/uscfcl.f90
+++ b/users/cfbl/uscfcl.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -60,34 +60,23 @@ subroutine uscfcl &
 !    =============================================
 
 
-
-! INTRODUCTION
+! Introduction
 ! ============
 
-! On donne ici les conditions aux limites par face de bord.
+! Here one defines boundary conditions on a per-face basis.
+
+! Boundary faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
 
-! L'identification des faces de bord concernees se fait grace
-!ONC a la commande GETFBR.
+! Boundary condition types
+! ========================
 
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
+! Boundary conditions setup for standard variables (pressure, velocity,
+! turbulence, scalars) is described precisely in the 'usclim' subroutine.
 
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Detailed explanation will be found in the theory guide.
 
 
 ! TYPE DE CONDITIONS AUX LIMITES
@@ -124,121 +113,104 @@ subroutine uscfcl &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! --> ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2 ou                !
-!                  !    !     !  hauteur de rugosite (m) si icodcl=6           !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!  (nfabor,nvar,3) !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -290,7 +262,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac  , iel   , ii    , iphas
@@ -780,4 +752,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/users/cfbl/uscfpv.f90 b/users/cfbl/uscfpv.f90
index 68db337..9ac4b4d 100644
--- a/users/cfbl/uscfpv.f90
+++ b/users/cfbl/uscfpv.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,182 +46,150 @@ subroutine uscfpv &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
+! Purpose:
+! -------
 
-! ROUTINE UTILISATEUR : REMPLISSAGE DES VARIABLES PHYSIQUES
-!    POUR LA PHYSIQUE PARTICULIERE : COMPRESSIBLE SANS CHOC
-!    PENDANT DE USPHYV.F
+!    User subroutine.
 
+!    Set (variable) physical properties for the compressible flow scheme. 
 
 
-! ATTENTION :
-! =========
-
-
-! Il est INTERDIT de modifier la viscosite turbulente VISCT ici
-!        ========
-!  (une routine specifique est dediee a cela : usvist)
-
-
-!  Il FAUT AVOIR PRECISE ICP(IPHAS) = 1
-!     ==================
-!     automatiquement fait dans uscfth en fonction de la thermo
-!     choisie
-
+! Description
+! ===========
 
-!  Il FAUT AVOIR PRECISE IVISLS(Numero de scalaire) = 1
-!     ==================
-!     dans usini1 si on souhaite une diffusivite VISCLS variable
-!     pour le scalaire considere (sinon: ecrasement memoire).
+! This subroutine replaces the user subroutine 'usphyv' for the 
+! compressible flow scheme. 
 
+! This subroutine is called at the beginning of each time step. 
 
+! At the very first time step (not at restart), the only variables that 
+! have been initialized are those provided: 
+!   - in the GUI and in the user subroutines 'usini1' and 'uscfx2'; ex.:
+!     . the density             (set to ro0(iphas))
+!     . the molecular viscosity (set to viscl0(iphas)) 
+!     . the volumetric molecular viscosity (set to viscv0(iphas)) 
+!     . the molecular thermal conductivity (set to visls0(itempk(iphas))) 
+!   - in the user subroutines 'usiniv' and 'uscfxi'; ex.:
+!     . the unknown variables (null by default)  
 
+! This subroutine allows the user to set the cell values for: 
+!   - the molecular viscosity                            viscl  kg/(m s)
+!   - the isobaric specific heat (cp=dh/dT|P)            cp     J/(kg degree) 
+!   - the molecular thermal conductivity                 lambda W/(m degree)
+!   - the molecular diffusivity for user-defined scalars viscls kg/(m s)
 
-! Remarques :
-! ---------
 
-! Cette routine est appelee au debut de chaque pas de temps
+! Warnings
+! ======== 
 
-!    Ainsi, AU PREMIER PAS DE TEMPS (calcul non suite), les seules
-!    grandeurs initialisees avant appel sont celles donnees
-!      - dans usini1 :
-!             . la masse volumique (initialisee a RO0(IPHAS))
-!             . la viscosite       (initialisee a VISCL0(IPHAS))
-!      - dans usiniv :
-!             . les variables de calcul  (initialisees a 0 par defaut
-!             ou a la valeur donnee dans usiniv)
+! The density ** must not ** be set here: for the compressible scheme, 
+! it is one of the unknowns, and it can be initialized as such in the user
+! subroutine 'uscfxi' (rtp array).
 
-! On peut donner ici les lois de variation aux cellules
-!     - de la viscosite moleculaire                VISCL  kg/(m s)
-!     - de la chaleur specifique associee          CP     J/(kg degres)
-!     - de la conductivite thermique associee      LAMBDA W/(m degres)
-!     - des "diffusivites" associees aux scalaires VISCLS kg/(m s)
+! The turbulent viscosity ** must not ** be modified here (to modify this 
+! variable, use the user subroutine 'usvist')
 
-! La masse volumique ne doit pas �tre renseign�e : en compressible,
-!   c'est une variable r�solue, que l'on peut initialiser si
-!   n�cessaire dans USCFXI (RTP).
+! To set a variable isobaric specific heat, the integer icp(iphas) must 
+! have been set to 1: the value for icp is set automatically in the  
+! subroutine 'uscfth', depending on the thermodynamics laws selected   
+! by the user.  
 
-! On dispose des types de faces de bord au pas de temps
-!   precedent (sauf au premier pas de temps, ou les tableaux
-!   ITYPFB et ITRIFB n'ont pas ete renseignes)
+! To set a variable diffusivity for a given user-defined scalar, the 
+! variable ivisls(scalar_number) must have been set to 1 in the user 
+! subroutine 'usini1' or in the GUI (otherwise, a memory problem is 
+! expected). 
 
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
+! Examples are provided in the present subroutine (but they do not have 
+! any physical signification). 
 
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
 
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Cells identification
+! ====================
 
-! Il est conseille de ne garder dans ce sous programme que
-!    le strict necessaire.
+! Cells may be identified using the 'getcel' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
 
+! The type of the boundary faces at the previous time step is available
+! (except at the first time step, since the arrays itypfb and itrifb have 
+! not yet been set);
 
 
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
 !    nom           !type!mode !                   role                         !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! w1...3(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! nphmx            ! i  ! <-- ! nphsmx                                         !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-> ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! w1...3(ncelet    ! ra ! --- ! work arrays                                    !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -265,7 +233,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision w1(ncelet),w2(ncelet),w3(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ivart, iel, iphas
@@ -280,99 +248,91 @@ double precision xrtp
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
+!===============================================================================
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     However, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
+!===============================================================================
 
 if(1.eq.1) then
   iuscfp = 0
   return
 endif
 
-!===============================================================================
+
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 0. INITIALISATIONS A CONSERVER
+! 1. Mandatory initializations 
 !===============================================================================
 
-! --- Initialisation memoire
+! --- Memory initialization
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
 
+! Warning: the examples provided below are physically meaningless.
+! =======
+ 
+! These examples must be adapted by the user. Hence, the default 
+! (library reference) version stops immediately after each example 
+! (the 'call csexit(1)' directive must be discarded to use the 
+! portion of code).   
 
-!   LES EXEMPLES FANTAISISTES SUIVANTS SONT A ADAPTER PAR L'UTILISATEUR
-!   ====================================================================
+! It is adviced to discard all the examples that are not necessary, so
+! as to minimize the risk of error.
 
-!                ILS SONT TOUS SUIVIS DE "CALL CSEXIT (1)" PAR SECURITE
-!                                (stop a enlever a l'utilisation)
+! List of examples
+! ================
 
+! Ex. 1: molecular viscosity varying with temperature
+! Ex. 2: molecular volumetric viscosity varying with temperature
+! Ex. 3: isobaric specific heat varying with temperature
+! Ex. 4: molecular thermal conductivity varying with temperature
+! Ex. 5: molecular diffusivity of user-defined scalars varying with temperature 
 
-!   Il est conseille de ne garder dans ce sous programme que
-!     le strict necessaire.
-
-
-! EXEMPLE 1 : VISCOSITE VARIABLE EN FONCTION DE LA TEMPERATURE
-
-! EXEMPLE 2 : VISCOSITE EN VOLUME VARIABLE EN FONCTION DE LA TEMPERATURE
-
-! EXEMPLE 3 : CHALEUR SPECIFIQUE VARIABLE EN FONCTION DE LA TEMPERATURE
-
-! EXEMPLE 4 : CONDUCTIVITE THERMIQUE VARIABLE
-!                  EN FONCTION DE LA TEMPERATURE
-
-! EXEMPLE 5 : DIFFUSIVITE VARIABLE EN FONCTION DE LA TEMPERATURE
-!                  POUR LES SCALAIRES
 !===============================================================================
 
 
-
-
-
-
-
-
 !===============================================================================
-!  EXEMPLE 1 : VISCOSITE VARIABLE EN FONCTION DE LA TEMPERATURE
-! ===========
-!    Ci dessous on donne pour toutes les phases la meme loi pour
-!       la viscosite
-!    Les valeurs de cette propriete doivent etre fournies au centre des
-!       cellules.
-!  ===================================================================
+! Ex. 1: molecular viscosity varying with temperature
+! =====
+!    The values of the molecular viscosity are provided as a function of  
+!    the temperature. All variables are evaluated at the cell centres. 
+!    The same treatment is applied for all values of iphas. 
+!===============================================================================
 
-! --- Boucle sur les phases : debut
+! --- Loop on iphas
 do iphas = 1, nphas
-
-
-!   Positions des variables, coefficients
-!   -------------------------------------
-
-! --- Numero de variable temp�rature pour la phase courante iphas
-!       (Pour utiliser le scalaire utilisateur 2 a la place, ecrire
-!          IVART = ISCA(2)
+  
+! --- Rank of the temperature of the current phase iphas in the array 'rtp'
+!     To refer to the user-defined scalar number 2 instead, for example, use 
+!     ivart = isca(2) 
 
   ivart = isca(itempk(iphas))
 
-! --- Rang de la viscosite dynamique moleculaire de la phase IPHAS
-!     dans PROPCE, prop. physiques au centre des elements       : IPCVIS
+! --- Rank 'ipcvis' of the molecular dynamic viscosity of the current phase
+!     iphas in the array 'propce' (physical properties at the cell centers)
 
   ipcvis = ipproc(iviscl(iphas))
 
-! --- Coefficients des lois choisis et imposes par l'utilisateur
-!       Les valeurs donnees ici sont fictives
+! --- User-defined coefficients for the selected law. 
+!     The values hereafter are provided as a mere example. They 
+!     are physically meaningless.
 
   varam = -3.4016d-9
   varbm =  6.2332d-7
   varcm = -4.5577d-5
   vardm =  1.6935d-3
 
-!   Viscosite moleculaire dynamique en kg/(m s) au centre des cellules
-!   ------------------------------------------------------------------
-!       loi              MU        =
-!                              T  *( T  *( AM  * T +  BM  )+ CM  )+ DM
-!       soit    PROPCE(IEL,IPCVIS) =
-!     &                       XRTP*(XRTP*(VARAM*XRTP+VARBM)+VARCM)+VARDM
+! --- Molecular dynamic viscosity mu at the cell centres, kg/(m s)
+!     In this example, mu is provided as a function of the temperature T: 
+!       mu(T)              =    T  *( T  *( am  * T +  bm  )+ cm  )+ dm
+!     that is: 
+!       propce(iel,ipcvis) =   xrtp*(xrtp*(varam*xrtp+varbm)+varcm)+vardm
 
   do iel = 1, ncel
     xrtp = rtp(iel,ivart)
@@ -382,44 +342,35 @@ do iphas = 1, nphas
 
 
 enddo
-! --- Boucle sur les phases : fin
-
+! --- End of the loop on iphas 
 
 
-! --- A enlever a l'utilisation
+! --- Discard the following test so that the code do not stop
 if(1.eq.1) then
   write(nfecra,9000)
   call csexit (1)
 endif
 
 
-
-
-
 !===============================================================================
-!  EXEMPLE 2: VISCOSITE EN VOLUME VARIABLE EN FONCTION DE LA TEMPERATURE
-! ==========
-!    Ci dessous on donne pour toutes les phases la meme loi pour
-!       la viscosite
-!    Les valeurs de cette propriete doivent etre fournies au centre des
-!       cellules.
-!  ===================================================================
-
-! --- Boucle sur les phases : debut
-do iphas = 1, nphas
-
+! Ex. 2: molecular volumetric viscosity varying with temperature
+! =====
+!    The values of the molecular volumetric viscosity are provided as a function 
+!    of the temperature. All variables are evaluated at the cell centres. 
+!    The same treatment is applied for all values of iphas. 
+!===============================================================================
 
-!   Positions des variables, coefficients
-!   -------------------------------------
+! --- Loop on iphas
+do iphas = 1, nphas
 
-! --- Numero de variable temp�rature pour la phase courante iphas
-!       (Pour utiliser le scalaire utilisateur 2 a la place, ecrire
-!          IVART = ISCA(2)
+! --- Rank of the temperature for the current phase iphas in the array 'rtp'  
+!     To refer to the user-defined scalar number 2 instead, for example, use 
+!     ivart = isca(2) 
 
   ivart = isca(itempk(iphas))
 
-! --- Rang de la viscosite dynamique moleculaire en volume de la phase IPHAS
-!     dans PROPCE, prop. physiques au centre des elements       : IPCVSV
+! --- Rank 'ipcvsv' of the molecular dynamic viscosity of the current phase
+!     iphas in the array 'propce' (physical properties at the cell centers)
 
   if(iviscv(iphas).gt.0) then
     ipcvsv = ipproc(iviscv(iphas))
@@ -427,28 +378,27 @@ do iphas = 1, nphas
     ipcvsv = 0
   endif
 
-! --- Stop si non variable
+! --- Stop if the viscosity has not been defined as variable
 
   if(ipcvsv.le.0) then
     write(nfecra,2000) iphas, iphas, iviscv(iphas)
     call csexit (1)
   endif
 
-
-! --- Coefficients des lois choisis et imposes par l'utilisateur
-!       Les valeurs donnees ici sont fictives
+! --- User-defined coefficients for the selected law. 
+!     The values provided hereafter are provided as a mere example. They 
+!     are physically meaningless.
 
   varam = -3.4016d-9
   varbm =  6.2332d-7
   varcm = -4.5577d-5
   vardm =  1.6935d-3
 
-!   Viscosite en volume en kg/(m s) au centre des cellules
-!   ------------------------------------------------------
-!       loi            KAPPA       =
-!                              T  *( T  *( AM  * T +  BM  )+ CM  )+ DM
-!       soit    PROPCE(IEL,IPCVSV) =
-!     &                       XRTP*(XRTP*(VARAM*XRTP+VARBM)+VARCM)+VARDM
+! --- Molecular dynamic volumetric viscosity kappa at the cell centres, kg/(m s)
+!     In this example, kappa is provided as a function of the temperature T: 
+!       kappa(T)           =    T  *( T  *( am  * T +  bm  )+ cm  )+ dm
+!     that is: 
+!       propce(iel,ipcvsv) =   xrtp*(xrtp*(varam*xrtp+varbm)+varcm)+vardm
 
   do iel = 1, ncel
     xrtp = rtp(iel,ivart)
@@ -457,54 +407,43 @@ do iphas = 1, nphas
   enddo
 
 enddo
-! --- Boucle sur les phases : fin
-
+! --- End of the loop on iphas 
 
 
-! --- A enlever a l'utilisation
+! --- Discard the following test so that the code do not stop
 if(1.eq.1) then
   write(nfecra,9000)
   call csexit (1)
 endif
 
 
-
-
-
 !===============================================================================
-!  EXEMPLE 3 : CHALEUR SPECIFIQUE VARIABLE EN FONCTION DE LA TEMPERATURE
-! ===========
-
-!    Ci dessous on donne pour toutes les phases la meme loi pour
-!       la chaleur specifique
-!    Les valeurs de cette propriete doivent etre fournies au centre des
-!       cellules.
-
+! Ex. 3: isobaric specific heat varying with temperature
+! =====
+!    The values of the isobaric specific heat values are provided as a function
+!    of the temperature. All variables are evaluated at the cell centres. 
+!    The same treatment is applied for all values of iphas. 
 !===============================================================================
 
-!                             ATTENTION           !
-
-!     NE PAS RETIRER LA MISE A JOUR DE Cv A LA FIN DE L'EXEMPLE
-
-!===============================================================================
+! Warning:
+! =======
+! do not discard the call to the subroutine 'usthht' at the end of this 
+! example: its purpose is to calculate the isochoric specific heat. 
+! Indeed, this variable needs to be computed from the isobaric specific heat 
+! using the thermodynamics laws. 
 
-!===============================================================================
-
-! --- Boucle sur les phases : debut
+! --- Loop on iphas
 do iphas = 1, nphas
 
-
-!   Positions des variables, coefficients
-!   -------------------------------------
-
-! --- Numero de variable temp�rature pour la phase courante iphas
-!       (Pour utiliser le scalaire utilisateur 2 a la place, ecrire
-!          IVART = ISCA(2)
+! --- Rank of the temperature for the current phase iphas in the array 'rtp'  
+!     To refer to the user-defined scalar number 2 instead, for example, use 
+!     ivart = isca(2) 
 
   ivart = isca(itempk(iphas))
 
-! --- Rang de la chaleur specifique de la phase courante IPHAS
-!     dans PROPCE, prop. physiques au centre des elements       : IPCCP
+! --- Rank 'ipcpp' of the isobaric specific heat for the current phase  
+!     iphas in the array 'propce' (physical properties at the cell 
+!     centers) 
 
   if(icp(iphas).gt.0) then
     ipccp  = ipproc(icp   (iphas))
@@ -512,7 +451,8 @@ do iphas = 1, nphas
     ipccp  = 0
   endif
 
-! --- Stop si CP ou CV n'est pas variable
+! --- Stop if the iobaric or iochoric specific heat (cp or cv) has not 
+!     been defined as variable
 
   if(ipccp.le.0) then
     write(nfecra,1000) iphas, iphas, icp(iphas)
@@ -523,27 +463,26 @@ do iphas = 1, nphas
     call csexit (1)
   endif
 
-
-! --- Coefficients des lois choisis et imposes par l'utilisateur
-!       Les valeurs donnees ici sont fictives
+! --- User-defined coefficients for the selected law. 
+!     The values provided hereafter are provided as a mere example. They 
+!     are physically meaningless.
 
   varac = 0.00001d0
   varbc = 1000.0d0
 
-
-
-!   Chaleur specifique J/(kg degres) au centre des cellules
-!   --------------------------------------------------------
-!       loi              CP        =  AC  * T   +  BM
-!       soit    PROPCE(IEL,IPCCP ) = VARAC*XRTP + VARBC
+! --- Isobaric specific heat cp at the cell centres, J/(kg degree)
+!     In this example, cp is provided as a function of the temperature T: 
+!       cp(T)              =      ac * T  + ab
+!     that is: 
+!       propce(iel,ipccp ) =    varac*xrtp+varbc
 
   do iel = 1, ncel
     xrtp = rtp(iel,ivart)
     propce(iel,ipccp ) = varac*xrtp + varbc
   enddo
 
-
-! --- Mise a jour de Cv
+! --- The isochoric specific heat is deduced from the isobaric specific 
+!     heat using the subroutine 'uscfth'. 
 
   iccfth = 432
   imodif = 0
@@ -563,47 +502,39 @@ do iphas = 1, nphas
    dt     , rtp    , rtpa   , propce , propfa , propfb ,          &
    coefa  , coefb  ,                                              &
    propce(1, ipproc(icv(iphas)) )    , w1     , w2     , w3     , &
-!        ---------------------------------
+!  ---------------------------------
    rdevel , rtuser , ra     )
 
 enddo
-! --- Boucle sur les phases : fin
-
-
+! --- End of the loop on iphas 
 
-! --- A enlever a l'utilisation
+! --- Discard the following test so that the code do not stop
 if(1.eq.1) then
   write(nfecra,9000)
   call csexit (1)
 endif
 
 
-
-
 !===============================================================================
-!  EXEMPLE 4 : CONDUCTIVITE THERMIQUE VARIABLE EN FONCTION
-! ===========    DE LA TEMPERATURE
-
-!    Ci dessous on donne pour toutes les phases la meme loi pour lambda
-!    Les valeurs de cette propriete doivent etre fournies au centre des
-!       cellules.
-!  ===================================================================
+! Ex. 4: molecular thermal conductivity varying with temperature
+! =====
+!    The values of the molecular thermal conductivity are provided as a function 
+!    of the temperature. All variables are evaluated at the cell centres. 
+!    The same treatment is applied for all values of iphas. 
+!===============================================================================
 
-! --- Boucle sur les phases : debut
+! --- Loop on iphas
 do iphas = 1, nphas
 
-
-!   Positions des variables, coefficients
-!   -------------------------------------
-
-! --- Numero de variable temp�rature pour la phase courante iphas
-!       (Pour utiliser le scalaire utilisateur 2 a la place, ecrire
-!          IVART = ISCA(2)
+! --- Rank of the temperature for the current phase iphas in the array 'rtp'  
+!     To refer to the user-defined scalar number 2 instead, for example, use 
+!     ivart = isca(2) 
 
   ivart = isca(itempk(iphas))
 
-! --- Rang de Lambda de la temperature de phase courante IPHAS
-!     dans PROPCE, prop. physiques au centre des elements       : IPCVSL
+! --- Rank 'ipcvsl' of the olecular thermal conductivity for the current   
+!     phase iphas in the array 'propce' (physical properties at the cell 
+!     centers) 
 
   if(ivisls(itempk(iphas)).gt.0) then
     ipcvsl = ipproc(ivisls(itempk(iphas)))
@@ -611,7 +542,8 @@ do iphas = 1, nphas
     ipcvsl = 0
   endif
 
-! --- Stop si Lambda n'est pas variable
+! --- Stop if the molecular thermal conductivity has not 
+!     been defined as variable
 
   if(ipcvsl.le.0) then
     write(nfecra,1010)                                            &
@@ -619,22 +551,20 @@ do iphas = 1, nphas
     call csexit (1)
   endif
 
-! --- Coefficients des lois choisis et imposes par l'utilisateur
-!       Les valeurs donnees ici sont fictives
+! --- User-defined coefficients for the selected law. 
+!     The values provided hereafter are provided as a mere example. They 
+!     are physically meaningless.
 
   varal = -3.3283d-7
   varbl =  3.6021d-5
   varcl =  1.2527d-4
   vardl =  0.58923d0
 
-
-
-!   Lambda en W/(m K) au centre des cellules
-!   ----------------------------------------
-!       loi       Lambda        =
-!               {  T  *( T  *( AL  * T +  BL  )+ CL  )+ DL }
-!       soit    PROPCE(IEL,IPCVSL) =
-!     &         (XRTP*(XRTP*(VARAL*XRTP+VARBL)+VARCL)+VARDL)
+! --- Molecular thermal conductivity lambda at the cell centres, W/(m degree)
+!     In this example, lambda is provided as a function of the temperature T: 
+!       lambda(T)          =    T  *( T  *( al  * T +  bl  )+ cl  )+ dl
+!     that is: 
+!       propce(iel,ipcvsl) =   xrtp*(xrtp*(varal*xrtp+varbl)+varcl)+vardl
 
   do iel = 1, ncel
     xrtp = rtp(iel,ivart)
@@ -644,68 +574,62 @@ do iphas = 1, nphas
 
 
 enddo
-! --- Boucle sur les phases : fin
+! --- End of the loop on iphas 
 
 
-! --- A enlever a l'utilisation
+! --- Discard the following test so that the code do not stop
 if(1.eq.1) then
   write(nfecra,9000)
   call csexit (1)
 endif
 
 
-
-
 !===============================================================================
-!  EXEMPLE 5 : DIFFUSIVITE VARIABLE EN FONCTION DE LA TEMPERATURE
-! ===========      POUR LES SCALAIRES UTILISATEURS
-!     A l'exclusion de
-!        temperature, enthalpie (traites plus haut)
-!        variances de fluctuations (propriete egale a celle du
-!                                                      scalaire associe)
-
-!    Ci dessous on donne pour tous les scalaires (aux exclusions
-!      ci-dessus pres) la meme loi pour la diffusivite
-!    Les valeurs de cette propriete doivent etre fournies au centre des
-!       cellules.
-!  ===================================================================
-
-! --- Boucle sur les phases : debut
+! Ex. 5: molecular diffusivity of user-defined scalars varying with temperature 
+! ===== 
+!    The molecular diffusivity can be set for all the user-defined scalars
+!    ** except **:
+!      - temperature and enthalpy (already dealt with above: for these 
+!        variables, the 'diffusivity' is the thermal conductivity)
+!      - variances of the fluctuations of another scalar variable (the 
+!        diffusivity is assumed to be equal to that of the associated 
+!        scalar)
+!    The values of the molecular diffusivity are provided as a function
+!    of the temperature. All variables are evaluated at the cell centres. 
+!===============================================================================
+
+! --- Loop on the scalars
 do ii = 1, nscaus
 
-! --- Numero du scalaire utilisateur II dans la liste de tous les scalaires
+! --- Rank of the ii-th scalar in the list of all scalars 
   iscal = ii
 
 
-! --- S'il s'agit de la temperature,
-!                                   son cas a deja ete traite plus haut
+! --- If the scalar is the temperature, it is marked by ith = 1 
+!     so that it will be skipped. 
+
   ith = 0
   do iphas = 1, nphas
     if (iscal.eq.itempk(iphas)) ith = 1
   enddo
 
-! --- Si la variable est une fluctuation, sa diffusivite est
-!       la meme que celle du scalaire auquel elle est rattachee :
-!       il n'y a donc rien a faire ici : on passe directement
-!       a la variable suivante sans renseigner PROPCE(IEL,IPCVSL).
+! --- If the variable represents the variance of the fluctuations of 
+!     another scalar variable (iscavr <= 0), it is simply skipped.
 
   if (ith.eq.0.and.iscavr(iscal).le.0) then
-! --- On ne traite ici que les variables non thermiques
-!                                   et qui ne sont pas des fluctuations
 
+! --- Here, iscal points to any scalar variable except the temperature, 
+!     the enthalpy and the variance of the fluctuations of another 
+!     scalar variable. 
 
-!   Positions des variables, coefficients
-!   -------------------------------------
-
-! --- Numero de variable temp�rature pour la phase courante iphas
-!       (Pour utiliser le scalaire utilisateur 2 a la place, ecrire
-!          IVART = ISCA(2)
+! --- Rank of the temperature for the current phase iphas in the array 'rtp'  
+!     To refer to the user-defined scalar number 2 instead, for example, use 
+!     ivart = isca(2) 
 
   ivart = isca(itempk(iphas))
 
-
-! --- Rang de Lambda du scalaire
-!     dans PROPCE, prop. physiques au centre des elements       : IPCVSL
+! --- Rank 'ipcvsl' of the molecular diffusivity of the current scalar iscal 
+!     in the array 'propce' (physical properties at the cell centers)
 
     if(ivisls(iscal).gt.0) then
       ipcvsl = ipproc(ivisls(iscal))
@@ -713,29 +637,27 @@ do ii = 1, nscaus
       ipcvsl = 0
     endif
 
-! --- Stop si Lambda n'est pas variable
+! --- Stop if the molecular diffusivity has not been defined as variable
 
     if(ipcvsl.le.0) then
       write(nfecra,1010) iscal, iscal, ivisls(iscal)
       call csexit (1)
     endif
 
-! --- Coefficients des lois choisis et imposes par l'utilisateur
-!       Les valeurs donnees ici sont fictives
+! --- User-defined coefficients for the selected law. 
+!     The values provided hereafter are provided as a mere example. They 
+!     are physically meaningless.
 
     varal = -3.3283d-7
     varbl =  3.6021d-5
     varcl =  1.2527d-4
     vardl =  0.58923d0
 
-
-!   Lambda en kg/(m s) au centre des cellules
-!   ------------------------------------------
-!       loi       Lambda           =
-!                  T  *( T  *( AL  * T +  BL  )+ CL  )+ DL
-!       soit    PROPCE(IEL,IPCVSL) =
-!     &          XRTP*(XRTP*(VARAL*XRTP+VARBL)+VARCL)+VARDL
-
+! --- Molecular diffusivity lambda at the cell centres, kg/(m s)
+!     In this example, lambda is provided as a function of the temperature T: 
+!       lambda(T)          =    T  *( T  *( al  * T +  bl  )+ cl  )+ dl
+!     that is: 
+!       propce(iel,ipcvsl) =   xrtp*(xrtp*(varal*xrtp+varbl)+varcl)+vardl
 
     do iel = 1, ncel
       xrtp = rtp(iel,ivart)
@@ -745,128 +667,138 @@ do ii = 1, nscaus
 
 
   endif
-! --- Tests sur ITH et ISCAVR : fin
+! --- End of the tests on ith and iscavr 
 
 enddo
-! --- Boucle sur les scalaires : fin
+! --- End of the loop on the scalars  
 
 
-! --- A enlever a l'utilisation
+! --- Discard the following test so that the code do not stop
 if(1.eq.1) then
   write(nfecra,9000)
   call csexit (1)
 endif
 
 
-
-
-
-!===============================================================================
-
-!===============================================================================
-! FORMATS
+!----
+! Formats
 !----
 
- 1000 format(                                                           &
-'@                                                            ',/,&
+ 1000 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DU CALCUL DES GRANDEURS PHYSIQUES',/,&
-'@    =========                                               ',/,&
-'@    DONNEES DE CALCUL INCOHERENTES                          ',/,&
-'@                                                            ',/,&
-'@    Pour la phase ',I10                                      ,/,&
-'@      usini1 indique que la capacite calorifique a pression ',/,&
-'@      constante est uniforme ICP(',I10   ,') = ',I10   ,'   ',/,&
-'@      alors que l''on cherche a definir une capacite        ',/,&
-'@      calorifique variable dans uscfpv.                     ',/,&
-'@                                                            ',/,&
-'@    Le calcul ne sera pas execute.                          ',/,&
-'@                                                            ',/,&
-'@    Modifier usini1 ou uscfpv.                              ',/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in computation of physical properties',/,  &
+'@    =======',/,                                                 &
+'@     The data is inconsistent',/,                               &  
+'@',/,                                                            &
+'@     For phase ',i10,/,                                         &
+'@       in the GUI or in the user subroutine ''usini1'', the',/, &
+'@         isobaric specific heat is declared as a property',/,   &
+'@         uniform in space: icp(',i10   ,') = ',i10   ,/,        &
+'@       in the user subroutine ''uscfpv'', however, it is',/,    &
+'@         assumed to be potentially non uniform in space.',/,    &
+'@',/,                                                            & 
+'@  The calculation will not be run.',/,                          &
+'@',/,                                                            & 
+'@  Ensure consistency by modifying the GUI input data or the',/, &
+'@    user subroutines ''usini1'' or ''uscfpv''.',/,              &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
- 1001 format(                                                           &
-'@                                                            ',/,&
+'@',/)
+ 1001 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DU CALCUL DES GRANDEURS PHYSIQUES',/,&
-'@    =========                                               ',/,&
-'@    DONNEES DE CALCUL INCOHERENTES                          ',/,&
-'@                                                            ',/,&
-'@    Pour la phase ',I10                                      ,/,&
-'@      uscfth indique que la capacite calorifique a volume   ',/,&
-'@      constant  est uniforme ICV(',I10   ,') = ',I10   ,'   ',/,&
-'@      alors que l''on cherche a definir une capacite        ',/,&
-'@      calorifique variable dans uscfpv.                     ',/,&
-'@                                                            ',/,&
-'@    Le calcul ne sera pas execute.                          ',/,&
-'@                                                            ',/,&
-'@    Modifier usini1 ou uscfpv.                              ',/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in computation of physical properties',/,  &
+'@    =======',/,                                                 &
+'@     The data is inconsistent',/,                               &  
+'@',/,                                                            &
+'@     For phase ',i10,/,                                         &
+'@       in the GUI or in the user subroutine ''usini1'', the',/, &
+'@         isochoric specific heat is declared as a property',/,  &
+'@         uniform in space: icv(',i10   ,') = ',i10   ,/,        &
+'@       in the user subroutine ''uscfpv'', however, it is',/,    &
+'@         assumed to be potentially non uniform in space.',/,    &
+'@@',/,                                                           & 
+'@  The calculation will not be run.',/,                          &
+'@',/,                                                            & 
+'@  Ensure consistency by modifying the GUI input data or the',/, &
+'@    user subroutines ''usini1'' or ''uscfpv''.',/,              &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
- 1010 format(                                                           &
-'@                                                            ',/,&
+'@',/)
+ 1010 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DU CALCUL DES GRANDEURS PHYSIQUES',/,&
-'@    =========                                               ',/,&
-'@    DONNEES DE CALCUL INCOHERENTES                          ',/,&
-'@                                                            ',/,&
-'@    Pour le scalaire ',I10                                   ,/,&
-'@      usini1 indique que la diffusivite est uniforme        ',/,&
-'@        IVISLS(',I10   ,') = ',I10   ,' alors que           ',/,&
-'@      uscfpv impose une diffusivite variable.               ',/,&
-'@                                                            ',/,&
-'@    Le calcul ne sera pas execute.                          ',/,&
-'@                                                            ',/,&
-'@    Modifier usini1 ou uscfpv.                              ',/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in computation of physical properties',/,  &
+'@    =======',/,                                                 &
+'@     The data is inconsistent',/,                               &  
+'@',/,                                                            &
+'@     For the scalar ',i10,/,                                    &
+'@       in the GUI or in the user subroutine ''usini1'', the',/, &
+'@         molecular diffusivity is declared as a property',/,    &
+'@         uniform in space: ivisls(',i10   ,') = ',i10   ,/,     &
+'@       in the user subroutine ''uscfpv'', however, it is',/,    &
+'@         assumed to be potentially non uniform in space.',/,    &
+'@@',/,                                                           & 
+'@  The calculation will not be run.',/,                          &
+'@',/,                                                            & 
+'@  Ensure consistency by modifying the GUI input data or the',/, &
+'@    user subroutines ''usini1'' or ''uscfpv''.',/,              &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
- 2000 format(                                                           &
-'@                                                            ',/,&
+'@',/)
+ 2000 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DU CALCUL DES GRANDEURS PHYSIQUES',/,&
-'@    =========                                               ',/,&
-'@    DONNEES DE CALCUL INCOHERENTES                          ',/,&
-'@                                                            ',/,&
-'@    Pour la phase ',I10                                      ,/,&
-'@      uscfx2 indique que la viscosite en volume est uniforme',/,&
-'@        IVISCV(',I10   ,') = ',I10   ,' alors que           ',/,&
-'@      uscfpv impose une viscosite en volume variable.       ',/,&
-'@                                                            ',/,&
-'@    Le calcul ne sera pas execute.                          ',/,&
-'@                                                            ',/,&
-'@    Modifier uscfx2 ou uscfpv.                              ',/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in computation of physical properties',/,  &
+'@    =======',/,                                                 &
+'@     The data is inconsistent',/,                               &  
+'@',/,                                                            &
+'@     For phase ',i10,/,                                         &
+'@       in the user subroutine ''uscfx2'', the molecular',/,     &
+'@         volumetric viscosity is declared as a property',/,     &
+'@         uniform in space: iviscv(',i10   ,') = ',i10   ,/,     &
+'@       in the user subroutine ''uscfpv'', however, it is',/,    &
+'@         assumed to be potentially non uniform in space.',/,    &
+'@@',/,                                                           & 
+'@  The calculation will not be run.',/,                          &
+'@',/,                                                            & 
+'@  Ensure consistency by modifying the user subroutines',/,      &
+'@    ''uscfx2'' or ''uscfpv''.',/,                               &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
- 9000 format(                                                           &
-'@                                                            ',/,&
+'@',/)
+ 9000 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DU CALCUL DES GRANDEURS PHYSIQUES',/,&
-'@    =========                                               ',/,&
-'@    APPEL A csexit DANS LE SOUS PROGRAMME uscfpv            ',/,&
-'@                                                            ',/,&
-'@    Un appel a csexit (arret) a ete rencontre dans le sous  ',/,&
-'@      programme uscfpv. L''utilisateur est invite a verifier',/,&
-'@      que les exemples standard fournis par defaut ont bien ',/,&
-'@      ete elimines si besoin.                               ',/,&
-'@    Le calcul ne sera pas execute.                          ',/,&
-'@                                                            ',/,&
-'@    Modifier uscfpv.                                        ',/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in computation of physical properties',/,  &
+'@    =======',/,                                                 &
+'@     Call to ''csexit'' from the user subroutine ''uscfpv''.',/,&
+'@',/,                                                            &
+'@     The subroutine ''csexit'' (run stop) was called from ',/,  &
+'@       within the user subroutine ''uscfpv''. The user shall',/,&
+'@       ensure that all the default examples provided in the',/, &
+'@       reference version of the user subroutine have been',/,   &
+'@       discarded. It shall also be checked that there is no',/, &
+'@       remaining stopping test at the end of the examples ',/,  & 
+'@       that have been retained.',/,                             &
+'@@',/,                                                           & 
+'@  The calculation will not be run.',/,                          &
+'@',/,                                                            & 
+'@  Check and modify the user subroutine ''uscfpv''.',/,          &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
+'@',/)
+
 
 !----
-! FIN
+! End
 !----
 
 return
-end
+end subroutine
diff --git a/users/cfbl/uscfth.f90 b/users/cfbl/uscfth.f90
index 77c6c15..321ed99 100644
--- a/users/cfbl/uscfth.f90
+++ b/users/cfbl/uscfth.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,201 +47,232 @@ subroutine uscfth &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ---------
+! Purpose:
+! -------
 
-! ROUTINE UTILISATEUR POUR ENTREE DES PARAMETRES THERMODYNAMIQUES
+!    User subroutine.
 
+!    Define thermodynamic laws (especially for the compressible flow scheme). 
 
-!    CE SOUS PROGRAMME UTILISATEUR EST OBLIGATOIRE
-!    =============================================
+!    This user subroutine is mandatory for the compressible flow scheme. 
 
 
+! Introduction
+! ============
 
-! CALCUL DE LA PROPRIETE THERMODYNAMIQUE VOULUE
-! EN FONCTION DES PARAMETRES DONNES ET DE LA THERMO CHOISIE
+! This user subroutine allows to define all physical properties and 
+! variables, through the implementation of thermodynamic laws. 
 
 
-! LOIS THERMODYNAMIQUES IMPLEMENTEES :
-! ====================================
+! Avalable thermodynamic laws
+! ===========================
 
-!  1. GAZ PARFAIT (fournir la masse molaire XMASML)
+!  1. Perfect gas (the molar mass 'xmasml' must be provided)
+!  2. Perfect gas with non constant Gamma (example to be adapted)
+!  3. Van Der Waals (not yet implemented)
 
-!  2. GAZ PARFAIT A GAMMA VARIABLE (� adapter)
 
-!  3. VAN DER WAALS (pas encore implemente)
-
-
-! CALCULS IMPLEMENTES :
-! =====================
-
-!  VARIABLE     P   rho   T    e    h    s  epsilon-CvT  C.L.
-!      CODE     1    2    3    4    5    6      7         9
-
-
-!  CODE DU CALCUL : *VARIABLE i : i
-
-!                                      di|
-!                   *DERIVEE PARTIELLE --| : ijk
-!                                      dj|k
-
-!                   *CALCUL DES VARIABLES A PARTIR DE i ET j : ij
-
-!  Et pour un reperage automatique, on utilise les nombres premiers
-!           P   rho   T   e   s
-!           2     3   5   7   13  (* 10000 pour les calculs aux cellules)
-
-
-
-!  -> OPTIONS DE CALCUL                           : ICCFTH = -1
-
-!  -> INITIALISATIONS PAR DEFAUT                  : ICCFTH = 0
-
-!  -> CALCUL DE GAMMA                             : ICCFTH = 1
-
-!  -> VERIFICATION DE rho                         : ICCFTH = -2
-
-!  -> VERIFICATION DE E                           : ICCFTH = -4
-
-!  -> CALCUL DE T ET e EN FONCTION DE P ET rho    : ICCFTH = 12 ou  60000
-
-!  -> CALCUL DE rho ET e EN FONCTION DE P ET T    : ICCFTH = 13 ou 100000
-
-!  -> CALCUL DE rho ET T EN FONCTION DE P ET e    : ICCFTH = 14 ou 140000
-
-!  -> CALCUL DE P ET e EN FONCTION DE rho ET T    : ICCFTH = 23 ou 150000
-
-!  -> CALCUL DE P ET T EN FONCTION DE rho ET e    : ICCFTH = 24 ou 210000
-
-!                2    dP |
-!  -> CALCUL DE c  = ----|                        : ICCFTH = 126
-!                    drho|s
-
-!                      dP|
-!  -> CALCUL DE beta = --|                        : ICCFTH = 162
-!                      ds|rho
-
-!                    de|
-!  -> CALCUL DE Cv = --|                          : ICCFTH = 432
-!                    dT|rho
-
-!  -> CALCUL DE L'ENTROPIE                        : ICCFTH = 6
-
-
-!  -> CALCUL DE epsilon - Cv.T                    : ICCFTH = 7
-
-
-!  -> CALCUL DES CONDITIONS AUX LIMITES
-!              - SYMETRIE                         : ICCFTH = 90
-!              - PAROI                            : ICCFTH = 91
-!              - ENTREE                           : ICCFTH = 92
-!              - SORTIE                           : ICCFTH = 93
-!              - T ET e EN FONCTION DE P ET rho   : ICCFTH = 912 ou  60900
-!              - rho ET e EN FONCTION DE P ET T   : ICCFTH = 913 ou 100900
-!              - rho ET T EN FONCTION DE P ET e   : ICCFTH = 914 ou 140900
-!              - P ET e EN FONCTION DE rho ET T   : ICCFTH = 923 ou 150900
-!              - P ET T EN FONCTION DE rho ET e   : ICCFTH = 924 ou 210900
+! Implemented calculations
+! ========================
 
+! This user subroutine implements the computation of several quantities. 
+! Each calculation has to be explicitly implemented in the appropriate 
+! section below (already done for perfect gas). 
+
+
+! Selection of the quantity to return
+! ===================================
+
+! When calling the user subroutine, the integer 'iccfth' specifies which 
+! calculation has to be performed (and which quantity has to be returned).
+! The values for 'iccfth' for each case are provided below. 
+! For some configurations, two systems of references are used for 'iccfth'
+! (this is useful to make tests easier to implement in the calling 
+! subroutines): both systems are explained hereafter for information. 
+
+! First system: 
+
+!   the variables are referred to using an index i: 
+!     Variable  P  rho  T   e   h   s  'internal energy - CvT' 
+!        Index  1   2   3   4   5   6              7      
+
+!   iccfth is as follows, depending on which quantity needs to be computed:
+!     - compute all variables at cell centers from variable i 
+!                                              and variable j (i<j): 
+!               => iccfth = 10*i+j 
+!     - compute all variables at boundary faces from variable i 
+!                                                and variable j (i<j): 
+!               => iccfth = 10*i+j+900 
+ 
+! Second system:  
+
+!   the variables are referred to using a different index i: 
+!     Variable  P  rho  T  e  s
+!        Index  2   3   5  7  13
+
+!   iccfth is as follows, depending on which quantity needs to be computed:
+!     - compute all variables at cell centers from variable i 
+!                                              and variable j (i<j): 
+!               => iccfth = i*j*10000 
+!     - compute all variables at boundary faces from variable i 
+!                                                and variable j (i<j): 
+!               => iccfth = i*j*10000+900 
+
+! Other quantities: 
+
+!   the variables are referred to using the index of the first system.
+!   iccfth is defined as follows:
+!     - compute variable i at cell centers (for s and 'internal energy-CvT') 
+!               => iccfth = i
+!                                   \partial(variable i)|
+!     - compute partial derivative  --------------------|           
+!                                   \partial(variable j)|variable k  
+!               => iccfth = 100*i+10*j+k 
+!     - compute boundary conditions, resp. symmetry, wall, inlet, outlet:
+!               => iccfth = 91, 92, 93, 94
+
+
+! Values of iccfth 
+! ================
+
+! To summarize, the values for iccfth are as follows: 
+
+!   Values at the cell centers: 
+
+!   -> set calculation options (cst/variable cp)   : iccfth = -1
+!   -> set default initialization                  : iccfth =  0
+!   -> calculate gamma                             : iccfth =  1
+!   -> verification of the density                 : iccfth = -2
+!   -> verification of the energy                  : iccfth = -4
+!   -> calculation of temperature and energy 
+!                     from pressure and density    : iccfth =  12 or  60000
+!   -> calculation of density and energy 
+!                     from pressure and temperature: iccfth =  13 or 100000
+!   -> calculation of density and temperature 
+!                     from pressure and energy     : iccfth =  14 or 140000
+!   -> calculation of pressure and energy 
+!                     from density and temperature : iccfth =  23 or 150000
+!   -> calculation of pressure and temperature 
+!                     from density and energy      : iccfth =  24 or 210000
+!
+!                      2    dP |
+!   -> calculation of c  = ----|                   : iccfth = 126
+!                          drho|s
+!
+!                            dP|
+!   -> calculation of beta = --|                   : iccfth = 162
+!                            ds|rho
+!
+!                          de|
+!   -> calculation of Cv = --|                     : iccfth = 432
+!                          dT|rho
+!
+!   -> calculation of entropie                     : iccfth =   6
+!
+!
+!   Values at the boundary faces
+!
+!   -> calculation of the boundary conditions:  
+!     - symmetry                                   : iccfth =  90
+!     - wall                                       : iccfth =  91
+!     - inlet                                      : iccfth =  92
+!     - outlet                                     : iccfth =  93
+!     - different outlet,not implemented yet       : iccfth =  94
+!
+!   -> calculation of the variables at the faces for boundary conditions:  
+!     - temperature and energy 
+!         from pressure and density                : iccfth = 912 ou  60900
+!     - density and energy 
+!         from pressure and temperature            : iccfth = 913 ou 100900
+!     - density and temperature 
+!         from pressure and energy                 : iccfth = 914 ou 140900
+!     - pressure and energy 
+!         from density and temperature             : iccfth = 923 ou 150900
+!     - pressure and temperature 
+!         from density and energy                  : iccfth = 924 ou 210900
+
+
+!   Values at the cell centers and at the boundary faces
+
+!   -> calculation of 'internal energy - Cv.T'     : iccfth =   7
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
 !    nom           !type!mode !                   role                         !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! iccfth           ! e  ! <-- ! numero du type de calcul demande               !
-! imodif           ! e  ! <-- ! si calcul aux cellules : modif de rtp          !
-!                  !    !     !   quand imodif > 0 (en particulier             !
-!                  !    !     !   automatise l'init (voir uscfxi)              !
-!                  !    !     ! si calcul aux faces : numero de face           !
-!                  !    !     !   automatise l'init (voir uscfxi)              !
-! iphas            ! e  ! <-- ! numero de la phase courante                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
-! rtp,rtpa         ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! sorti1,2(*)      ! tr ! --> ! variables de sortie                            !
-!                  !    !     !   (inutilise si iccfth.lt.0)                   !
-! gamagr(*)        ! tr ! --> ! constante gamma equivalent du gaz              !
-!                  !    !     !   (inutilise si iccfth.lt.0)                   !
-!                  !    !     !   (premiere case utilisee en g.p.)             !
-! xmasmr(*)        ! tr ! --> ! masse molaire des constituants du gaz          !
-!                  !    !     !   (inutilise si iccfth.lt.0)                   !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! sorti1,2(*)      ! ra ! --> ! output variable (unused if iccfth.lt.0)        !
+! gamagr(*)        ! ra ! --> ! equivalent "gamma" constant of the gas         !
+!                  !    !     !   (unused if iccfth.lt.0)                      !
+!                  !    !     !   (first value only used for perfect gas)      !
+! xmasmr(*)        ! ra ! --> ! molar mass of the components of the gas        !
+!                  !    !     !   (unused if iccfth.lt.0)                      !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -286,7 +317,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision sorti1(*), sorti2(*), gamagr(*), xmasmr(*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iiph   , ifac0
@@ -309,24 +340,31 @@ double precision cstgr(npmax)
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
 
+!===============================================================================
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     However, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
+!===============================================================================
+
 if(1.eq.1) return
 
-!===============================================================================
+
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 0. INITIALISATION
-!     Pas d'intervention utilisateur requise.
+! 0. Initialization.
+!    No user input required.
 !===============================================================================
 
-!     Pointeurs m�moire
+! Memory pointers
 idebia = idbia0
 idebra = idbra0
 
-!     Indicateur d'erreur (stop si non nul)
+! Error indicator (stop if non zero)
 ierr   = 0
 
-!     Position des variables
+! Rank of the variables in their associated arrays 
 if(iccfth.ge.0.or.iccfth.le.-2) then
   ipriph = ipr(iphas)
   irhiph = isca(irho  (iphas))
@@ -344,46 +382,43 @@ if(iccfth.ge.0.or.iccfth.le.-2) then
   iclw = iclrtp(iwiph,icoef)
 endif
 
-
-!     Si calcul aux cellules,
-!       indique, si > 0, que RTP doit etre modifi�
-!     Si calcul aux faces,
-!       indique le num�ro de la face consid�r�e
+! For calculation of values at the cell centers, 
+!   ifac0 > indicates that the array rtp must be modified
+! For calculation of values at the cell faces,
+!   ifac0 is the number of the current face
 ifac0 = imodif
 
 !===============================================================================
-! 1. CHOIX DE LA THERMODYNAMIQUE POUR CHAQUE PHASE
-!     Intervention utilisateur requise.
+! 1. Thermodynamic law choice (for each phase)
+!    User input required.
 !===============================================================================
 
-! --> IEOS = 1 : Gaz Parfait avec Gamma constant
-! --> IEOS = 2 : Gaz Parfait avec Gamma variable
-! --> IEOS = 3 : Equation d'etat de Van Der Waals
+! --> ieos = 1: Perfect gas with constant Gamma
+! --> ieos = 2: Perfect gas with variable Gamma
+! --> ieos = 3: Van Der Waals
 
 do iiph = 1, nphas
   ieos(iiph) = 1
 enddo
 
 
-!            NE PAS OUBLIER DE RENSEIGNER LES PARAMETRES
-!                  DANS LA THERMODYNAMIQUE CHOISIE
-!            ===========================================
+! Warning: once the thermodynamic law has been chosen, 
+! =======  the remainder of the user subroutine must be modified
 
 
 !===============================================================================
-! 2.  GAZ PARFAIT
+! 2. Perfect gas
 !===============================================================================
 
 if(ieos(iphas).eq.1) then
 
 !===============================================================================
-! 2.1. PARAMETRES A RENSEIGNER PAR L'UTILISATEUR
-!     Intervention utilisateur requise.
+! 2.1. Parameters to be completed by the user 
 !===============================================================================
 
-!     Pour chaque phase
+! For each phase
 
-!     Masse molaire du gaz (en kg/mol)
+! --- Molar mass of the gas (kg/mol)
 
   if(iccfth.ge.0) then
 
@@ -396,21 +431,20 @@ if(ieos(iphas).eq.1) then
   endif
 
 !===============================================================================
-! 2.2. LOIS IMPLEMENTEES PAR DEFAUT
-!     Pas d'intervention utilisateur requise.
+! 2.2. Default laws
+!      No user input required.
 !===============================================================================
 
-!     CALCUL DE LA CONSTANTE GAMAGP
-!     =============================
-
-!     On la suppose sup�rieure ou �gale � 1.
-!     On la calcule � chaque appel, m�me si cela peut para�tre cher, dans
-!       par coh�rence avec le cas gamma variable, pour lequel, on n'a pas
-!       pr�vu de la conserver. Avec un save et un test, on pourrait
-!       s'affranchir du calcul si n�cessaire.
+! --- Calculation of the constant gamagp
 
   if(iccfth.gt.0) then
 
+    ! Gamagp is supposed to be superior or equal to 1. 
+    ! It is computed at each call, even if this may seem costly, 
+    !   to be coherent with the "constant gamma" case for which this 
+    !   constant is not saved. A ''save'' instruction and a test would  
+    !   be sufficient to avoid computing gamagp at each call if necessary.
+
     gamagp = 1.d0 + rr/(xmasml*cp0(iphas)-rr)
 
     if(gamagp.lt.1.d0) then
@@ -418,7 +452,8 @@ if(ieos(iphas).eq.1) then
       call csexit (1)
     endif
 
-!     On renvoie gamma si demande
+    ! Gamma is returned if required 
+
     if(iccfth.eq.1) then
       gamagr(1) = gamagp
     endif
@@ -426,22 +461,22 @@ if(ieos(iphas).eq.1) then
   endif
 
 
-!     OPTIONS DE CALCUL  : Cp ET Cv CONSTANTS (hypoth�se gaz parfait)
-!     =================
-
-!     La valeur de CP0 est � fournir dans usini1. La valeur de CV0
-!       est calcul�e plus bas (� partir de CP0).
-
+! --- Calculation options: constant Cp and Cv (perfect gas) 
 
   if(iccfth.eq.-1) then
 
+    ! The value for the isobaric specific heat Cp0 must be provided in
+    !   the user subroutine ''usini1''. The value for the isochoric 
+    !   specific heat Cv0 is calculated in a subsequent section (from Cp0)
+
     icp(iphas) = 0
     icv(iphas) = 0
 
 
-!     INITIALISATIONS PAR DEFAUT (avant uscfxi)
-!     ==========================
-!     T0 est forc�ment positif (v�rifi� dans verini)
+! --- Default initializations (before uscfxi)
+
+!     T0 is positive (this assumption has been checked in 
+!       the user programme 'verini')
 
   elseif(iccfth.eq.0) then
 
@@ -455,19 +490,15 @@ if(ieos(iphas).eq.1) then
     endif
 
 
-!     VERIFICATION DE rho
-!     ===================
+! --- Verification of the density
 
   elseif(iccfth.eq.-2) then
 
-
-! --- Clipping si rho est exactement nul + write + stop
-!       En effet, si c'est le cas, on va n�cessairement se planter
-!       dans la thermo (bon, d'accord, pas dans tous les cas, mais
-!       pour le moment, je pr�sume que les fluides � traiter seront
-!       assez classiques, avec des pbs � rho = 0)
-!       Appel� en fin de resolution de la masse volumique (apres
-!       clipping classique et avant communication parallele).
+    ! If the density is lower or equal to zero: clipping, write and stop.
+    !   Indeed, if this is the case, the thermodynamic computations will
+    !   most probably fail. 
+    ! This call is done at the end of the density calculation (after 
+    !   a classical clipping and before parallel communications).
 
     ierr = 0
     do iel = 1, ncel
@@ -485,17 +516,13 @@ if(ieos(iphas).eq.1) then
     endif
 
 
-!     VERIFICATION DE e
-!     ===================
+! --- Verification of the energy 
 
   elseif(iccfth.eq.-4) then
 
-
-! --- Clipping si e est exactement nul + write + stop
-!       En effet, si c'est le cas, on va n�cessairement se planter
-!       dans la thermo (bon, d'accord, pas dans tous les cas, mais
-!       pour le moment, je pr�sume que les fluides � traiter seront
-!       assez classiques, avec des pbs � e = 0)
+    ! If the total energy <= zero: clipping, write and stop
+    !   Indeed, if this is the case, the thermodynamic computations will
+    !   most probably fail. 
 
     ierr = 0
     do iel = 1, ncel
@@ -520,34 +547,34 @@ if(ieos(iphas).eq.1) then
     endif
 
 
-!     CALCUL DE T ET e EN FONCTION DE P ET rho :
-!     ========================================
+! --- Calculation of temperature and energy from pressure and density
 
   elseif(iccfth.eq.12.or.iccfth.eq.60000) then
 
-!     Test des valeurs de rho
+    ! Verification of the values of the density
     ierr = 0
     do iel = 1, ncel
       if(rtp(iel,irhiph).le.0.d0) then
         write(nfecra,3010)rtp(iel,irhiph),iel
       endif
     enddo
-!     Si pb on s'arrete, car rho a �t� fourni par l'utilisateur
-!       (initialisation erron�e sans doute)
+    ! Stop if a negative value is detected (since the density has been 
+    ! provided by the user, one potential cause is a wrong user 
+    ! initialization)
     if(ierr.eq.1) then
       call csexit (1)
     endif
 
     do iel = 1, ncel
-!     Temperature
+      ! Temperature
       sorti1(iel) = xmasml*rtp(iel,ipriph)/(rr*rtp(iel,irhiph))
-!     Energie totale
+      ! Total energy
       sorti2(iel) = cv0(iphas)*sorti1(iel)                        &
            + 0.5d0*( rtp(iel,iuiph)**2 + rtp(iel,iviph)**2        &
                                        + rtp(iel,iwiph)**2 )
     enddo
 
-!     Affectation a RTP
+    ! Transfer to the array rtp 
     if(imodif.gt.0) then
       do iel = 1, ncel
         rtp(iel,itkiph) = sorti1(iel)
@@ -556,34 +583,34 @@ if(ieos(iphas).eq.1) then
     endif
 
 
-!     CALCUL DE rho ET e EN FONCTION DE P ET T :
-!     ========================================
+! --- Calculation of density and energy from pressure and temperature:
 
   elseif(iccfth.eq.13.or.iccfth.eq.100000) then
 
-!     Test des valeurs de T
+    ! Verification of the values of the temperature
     ierr = 0
     do iel = 1, ncel
       if(rtp(iel,itkiph).le.0.d0) then
         write(nfecra,2010)rtp(iel,itkiph),iel
       endif
     enddo
-!     Si pb on s'arrete, car T a �t� fourni par l'utilisateur
-!       (initialisation erron�e par exemple, non en K ?)
+    ! Stop if a negative value is detected (since the temperature has been 
+    ! provided by the user, one potential cause is a wrong user 
+    ! initialization: a value not provided in Kelvin for example)
     if(ierr.eq.1) then
       call csexit (1)
     endif
 
     do iel = 1, ncel
-!     Masse volumique
+      ! Density
       sorti1(iel) = xmasml*rtp(iel,ipriph)/(rr*rtp(iel,itkiph))
-!     Energie totale
+      ! Total energy
       sorti2(iel) = cv0(iphas)*rtp(iel,itkiph)                    &
            + 0.5d0*( rtp(iel,iuiph)**2 + rtp(iel,iviph)**2        &
                                        + rtp(iel,iwiph)**2 )
     enddo
 
-!     Affectation a RTP
+    ! Transfer to the array rtp 
     if(imodif.gt.0) then
       do iel = 1, ncel
         rtp(iel,irhiph) = sorti1(iel)
@@ -592,24 +619,24 @@ if(ieos(iphas).eq.1) then
     endif
 
 
-!     CALCUL DE rho ET T EN FONCTION DE P ET e :
-!     ========================================
+! --- Calculation of density and temperature from pressure and energy
 
   elseif(iccfth.eq.14.or.iccfth.eq.140000) then
 
     do iel = 1, ncel
-!     Energie interne (�vite de diviser par T)
+      ! Internal energy (to avoid the need to divide by the temperature
+      ! to compute density)
       enint = rtp(iel,ieniph)                                     &
                - 0.5d0*( rtp(iel,iuiph)**2                        &
                        + rtp(iel,iviph)**2                        &
                        + rtp(iel,iwiph)**2 )
-!     Masse volumique
+      ! Density
       sorti1(iel) = rtp(iel,ipriph) / ( (gamagp-1.d0) * enint )
-!     Temperature
+      ! Temperature
       sorti2(iel) = xmasml * (gamagp-1.d0) * enint / rr
     enddo
 
-!     Affectation a RTP
+    ! Transfer to the array rtp 
     if(imodif.gt.0) then
       do iel = 1, ncel
         rtp(iel,irhiph) = sorti1(iel)
@@ -618,21 +645,20 @@ if(ieos(iphas).eq.1) then
     endif
 
 
-!     CALCUL DE P ET e EN FONCTION DE rho ET T :
-!     ========================================
+! --- Calculation of pressure and energy from density and temperature
 
   elseif(iccfth.eq.23.or.iccfth.eq.150000) then
 
     do iel = 1, ncel
-!     Pression
+      ! Pressure
       sorti1(iel) = rtp(iel,irhiph)*rtp(iel,itkiph)*rr/xmasml
-!     Energie totale
+      ! Total energy
       sorti2(iel) = cv0(iphas)*rtp(iel,itkiph)                    &
            + 0.5d0*( rtp(iel,iuiph)**2 + rtp(iel,iviph)**2        &
                                        + rtp(iel,iwiph)**2 )
     enddo
 
-!     Affectation a RTP
+    ! Transfer to the array rtp 
     if(imodif.gt.0) then
       do iel = 1, ncel
         rtp(iel,ipriph) = sorti1(iel)
@@ -641,24 +667,24 @@ if(ieos(iphas).eq.1) then
     endif
 
 
-!     CALCUL DE P ET T EN FONCTION DE rho ET e :
-!     ========================================
+! --- Calculation of pressure and temperature from density and energy
 
   elseif(iccfth.eq.24.or.iccfth.eq.210000) then
 
     do iel = 1, ncel
-!     Energie interne (�vite de diviser par T)
+      ! Internal energy (to avoid the need to divide by the temperature
+      ! to compute density)
       enint = rtp(iel,ieniph)                                     &
                - 0.5d0*( rtp(iel,iuiph)**2                        &
                        + rtp(iel,iviph)**2                        &
                        + rtp(iel,iwiph)**2 )
-!     Pression
+      ! Pressure
       sorti1(iel) = (gamagp-1.d0) * rtp(iel,irhiph) * enint
-!     Temperature
+      ! Temperature
       sorti2(iel) = xmasml * (gamagp-1.d0) * enint / rr
     enddo
 
-!       Affectation a RTP
+    ! Transfer to the array rtp 
     if(imodif.gt.0) then
       do iel = 1, ncel
         rtp(iel,ipriph) = sorti1(iel)
@@ -666,13 +692,17 @@ if(ieos(iphas).eq.1) then
       enddo
     endif
 
-!                2                            2          P
-!     CALCUL DE c  EN FONCTION DE P ET rho : c  = gamma*---
-!     ====================================              rho
+
+!                     2                            2         P
+! --- Calculation of c from pressure and density: c = gamma*---
+!                                                           rho
 
   elseif(iccfth.eq.126) then
 
-!     Test des valeurs de rho (on peut �liminer ce test pour optimiser)
+    ! Verification of the values of the density 
+    !   This test can be discarded to reduce the CPU time (if 
+    !     density is <= 0, the calculation will simply fail)
+    !   It is discarded here with iutile = 0
     iutile = 0
     if(iutile.eq.1) then
       ierr = 0
@@ -690,13 +720,16 @@ if(ieos(iphas).eq.1) then
       sorti1(iel) = gamagp * rtp(iel,ipriph) / rtp(iel,irhiph)
     enddo
 
-!                                                    gamma
-! CALCUL DE beta EN FONCTION DE P ET rho : beta = rho
-! ======================================
+
+!                                                              gamma
+! --- Calculation of beta from pressure and density: beta = rho
 
   elseif(iccfth.eq.162) then
 
-!     Test des valeurs de rho (on peut �liminer ce test pour optimiser)
+    ! Verification of the values of the density
+    !   This test can be discarded to reduce the CPU time (if 
+    !     density is <= 0, the calculation will simply fail)
+    !   It is discarded here with iutile = 0
     iutile = 0
     if(iutile.eq.1) then
       ierr = 0
@@ -715,18 +748,21 @@ if(ieos(iphas).eq.1) then
     enddo
 
 
-!     CALCUL DE LA CHALEUR MASSIQUE A VOLUME CONSTANT
-!     ===============================================
+! --- Calculation of the isochoric specific heat 
 
-!     elle est constante           !
+    ! It is a constant: nothing to do
+
+
+!                                                                  P
+! --- Calculation of the entropy from pressure and density: s = --------
+!                                                                  gamma
+!                                                               rho
 
-!                                                           P
-!     CALCUL DE L'ENTROPIE EN FONCTION DE P ET rho : s = --------
-!     ============================================          gamma
-!                                                        rho
   elseif(iccfth.eq.6) then
 
-!     Test des valeurs de rho (on peut �liminer ce test pour optimiser)
+    ! Verification of the values of the density
+    !   This test can be discarded to reduce the CPU time (if 
+    !     density is <= 0, the calculation will simply fail)
     ierr = 0
     do iel = 1, ncel
       if(rtp(iel,irhiph).le.0.d0) then
@@ -742,109 +778,113 @@ if(ieos(iphas).eq.1) then
     enddo
 
 
-!     CALCUL DE epsilon - Cv.T : epsilon - Cv.T = 0
-!     ========================
+! --- Calculation of 'internal energy - Cv.T' 
 
   elseif(iccfth.eq.7) then
 
-! --- A l'interieur du domaine
+    ! It is zero for a perfect gas 
 
+    !   At the cell centers 
     do iel = 1, ncel
       sorti1(iel) = 0.d0
     enddo
 
-! --- Sur les bords
-
+    !   On the boundary faces  
     do ifac = 1, nfabor
       sorti2(ifac) = 0.d0
     enddo
 
 
-!     CALCUL DES CONDITIONS AUX LIMITES : sur la face IFAC = IFAC0
-!     =================================
+! --- Calculation of the boundary conditions on the face ifac = ifac0
 
-!     PAROI
-!     -----
+!  -- Wall
 
   elseif(iccfth.eq.91) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-! --- Calcul du nombre de Mach normal a la frontiere
-
+    ! Calculation of the Mach number at the boundary face, using the 
+    !   cell center velocity projected on the vector normal to the boundary
     xmach =                                                       &
          ( rtp(iel,iuiph)*surfbo(1,ifac)                          &
          + rtp(iel,iviph)*surfbo(2,ifac)                          &
          + rtp(iel,iwiph)*surfbo(3,ifac) ) / ra(isrfbn+ifac-1)    &
          / sqrt( gamagp * rtp(iel,ipriph) / rtp(iel,irhiph) )
 
-! --- Pression
+    ! Pressure 
 
-!     On utilise un Neumann en pression. Bien que cela ne permette
-!       pas d'utiliser Rusanov, on espere que cela stabilise.
-!     On ajoute un test pour eviter de basculer
-!       de detente a choc d'un pas de temps � l'autre
+    !   A Neumann boundary condition is used. This does not allow to use 
+    !     the Rusanov scheme, but some stabilization effect is expected. 
+    !     A test based on the value of coefb at the previous time step 
+    !     is implemented to avoid oscillating between a rarefaction 
+    !     situation and a shock configuration from one time step to the 
+    !     next.
 
-!     Detente
+    !   Rarefaction
     if(xmach.lt.0.d0.and.coefb(ifac,iclp).le.1.d0) then
 
       if(xmach.gt.2.d0/(1.d0-gamagp)) then
         coefb(ifac,iclp) = (1.d0 + (gamagp-1.d0)/2.d0 * xmach)    &
              ** (2.d0*gamagp/(gamagp-1.d0))
-!         Si on detend trop fort : Dirichlet nul en pression
-!           (la valeur de COEFB ici est utilisee comme indicateur
-!            et sera retrait�e plus tard dans cfxtcl)
       else
+        ! In case the rarefaction is too strong, a zero Dirichlet value 
+        !   is used for pressure (the value of coefb is used here as an 
+        !   indicator and will be modified later in cfxtcl)
         coefb(ifac,iclp) = rinfin
       endif
 
-!     Choc
+      !  Shock
     elseif(xmach.gt.0.d0.and.coefb(ifac,iclp).ge.1.d0) then
 
       coefb(ifac,iclp) = 1.d0 + gamagp*xmach                      &
             *( (gamagp+1.d0)/4.d0*xmach                           &
                 + sqrt(1.d0 + (gamagp+1.d0)**2/16.d0*xmach**2) )
 
-!     Oscillation ou Mach nul
+      !  Oscillation between rarefaction and shock or zero Mach number
     else
       coefb(ifac,iclp) = 1.d0
     endif
 
 
-!     SYMETRIE
-!     --------
+!  -- Symmetry
 
   elseif(iccfth.eq.90) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-! --- On impose un Neumann Homogene en Pression par defaut
-!         Pas d'intervention requise
+    ! A zero flux condition (homogeneous Neumann condition) is 
+    !   prescribed by default.
+    ! No user input required
+
 
+!  -- Subsonic inlet with prescribed density and velocity
 
-! --- ENTREE SUBSONIQUE, RHO ET U DONNES (subsonique par hypoth�se)
-!     ----------------------------------
+    ! The subsonic nature of the inlet is postulated. 
 
-!     Contrairement � la conception initiale, on impose un Dirichlet
-!       explicite sur la pression et non pas un flux (on se base cpdt
-!       sur la meme valeur physique).
-!     Ceci a l'avantage de permettre l'utilisation de Rusanov pour
-!       lisser les conditions d'entree.
-!     En outre, ceci permet de ne pas avoir � g�rer le remplissage de
-!       coefb ici (c'est secondaire, car il faut le faire pour la paroi).
-!     Si on a des oscillations en temps, on pourra essayer d'eviter
-!       le basculement de d�tente � choc d'un pas de temps � l'autre.
-!     La pertinence de cette d�marche reste � d�montrer.
+    ! Further testing may be required here. Contrary to the initial 
+    !   development, an explicit Dirichlet condition is prescribed for 
+    !   pressure instead of a Neumann condition (however, the same 
+    !   physical value for pressure is used). 
+    ! The advantage of this approach is to allow the use of the Rusanov
+    !   scheme to stabilize the user defined inlet conditions. 
+    ! Moreover, with this approach, coefb does not have to be filled in 
+    !   here (it is not a major point, since coefb has to be filled in 
+    !   for the wall boundary condition anyway)  
+    ! Shall an oscillatory behavior (in time) be observed, it might be 
+    !   worth trying to add a test to avoid switching between  
+    !   rarefaction and shock from one time step to the other (just as 
+    !   for the wall boundary condition).  
+    ! The relevance of this approach remains to be demonstrated. 
 
   elseif(iccfth.eq.92) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-! --- Calcul du nombre de Mach entrant normalement a la frontiere
-
+    ! Calculation of the Mach number at the boundary face, using the 
+    !   cell center velocity projected on the vector normal to the boundary
     xmachi =                                                      &
          ( rtp(iel,iuiph)*surfbo(1,ifac)                          &
          + rtp(iel,iviph)*surfbo(2,ifac)                          &
@@ -857,7 +897,7 @@ if(ieos(iphas).eq.1) then
          / sqrt( gamagp * rtp(iel,ipriph) / rtp(iel,irhiph) )
     dxmach = xmachi - xmache
 
-! --- Pression : Detente
+    ! Pressure: rarefaction wave (Rusanov)
     if(dxmach.le.0.d0) then
 
       if(dxmach.gt.2.d0/(1.d0-gamagp)) then
@@ -868,7 +908,7 @@ if(ieos(iphas).eq.1) then
         coefa(ifac,iclp) = 0.d0
       endif
 
-! --- Pression : Choc
+      ! Pressure: shock (Rusanov)
     else
       coefa(ifac,iclp) = rtp(iel,ipriph)*                         &
            (  1.d0 + gamagp*dxmach                                &
@@ -876,18 +916,29 @@ if(ieos(iphas).eq.1) then
            + sqrt(1.d0 + (gamagp+1.d0)**2/16.d0*dxmach**2) )  )
     endif
 
-! --- Energie totale
+    ! This choice overrides the previous Rusanov choice 
     coefa(ifac,iclp) = rtp(iel,ipriph)
+
+    ! Total energy
     coefa(ifac,icle) =                                            &
          coefa(ifac,iclp)/((gamagp-1.d0)*coefa(ifac,iclr))        &
          + 0.5d0*(coefa(ifac,iclu)**2                             &
                 + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2)
 
 
-! --- ENTREE SUBSONIQUE, RHO*U ET RHO*U*H DONNES (subsonique par hypoth�se)
-!     ------------------------------------------
+!  -- Subsonic inlet with prescribed mass and enthalpy flow rates 
+    ! The quantities prescribed are rho*u and rho*u*h
+
+    ! The subsonic nature of the inlet is postulated. 
+
+    ! This section remains to be implemented: stop for the moment 
+
+    ! One may proceed as follows: 
+    !   Pressure computed with a Newton method 
+    !   Velocity and density computed from pressure
+    !   Total energy computed from enthalpy
+    !   (written on paper, to be implemented: contact the user support)
 
-!     Ceci reste a completer :
   elseif(iccfth.eq.94) then
 
     ifac = ifac0
@@ -898,28 +949,24 @@ if(ieos(iphas).eq.1) then
     call csexit (1)
     !==========
 
-!     P   : a calculer avec un newton
-!     u et rho en fonction de P
-!     E en fonction de H
-!     (je l'ai ecrit, reste � le coder ...)
 
+!  -- Subsonic outlet 
 
-!     SORTIE SUBSONIQUE (subsonique par hypoth�se)
-!     -----------------
+    ! The subsonic nature of the inlet is postulated. 
 
   elseif(iccfth.eq.93) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-! --- Detente :
+    ! Rarefaction case 
     if(coefa(ifac,iclp).le.rtp(iel,ipriph)) then
 
-!       Masse volumique
+      ! Density
       coefa(ifac,iclr) = rtp(iel,irhiph)                          &
            * (coefa(ifac,iclp)/rtp(iel,ipriph))**(1.d0/gamagp)
 
-!       Vitesse
+      ! Velocity
       coefa(ifac,iclu) = rtp(iel,iuiph)                           &
            + 2.d0/(gamagp-1.d0)                                   &
            * sqrt(gamagp*rtp(iel,ipriph)/rtp(iel,irhiph))         &
@@ -941,23 +988,23 @@ if(ieos(iphas).eq.1) then
                         )**((gamagp-1.d0)/(2.d0/gamagp)))         &
            * surfbo(3,ifac)/ra(isrfbn+ifac-1)
 
-!       Energie totale
+      ! Total energy
       coefa(ifac,icle) =                                          &
            coefa(ifac,iclp)/((gamagp-1.d0)*coefa(ifac,iclr))      &
            + 0.5d0*(coefa(ifac,iclu)**2                           &
                   + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2)
 
-! --- Choc :
+    ! Shock 
     else
 
-!       Masse volumique
+      ! Density
       coefa(ifac,iclr) = rtp(iel,irhiph)                          &
            * ( (gamagp+1.d0)*coefa(ifac,iclp)                     &
              + (gamagp-1.d0)*rtp(iel,ipriph) )                    &
            / ( (gamagp-1.d0)*coefa(ifac,iclp)                     &
              + (gamagp+1.d0)*rtp(iel,ipriph) )
 
-!       Vitesse
+      ! Velocity
       coefa(ifac,iclu) = rtp(iel,iuiph)                           &
            - (coefa(ifac,iclp)-rtp(iel,ipriph))                   &
            * sqrt(2.d0/                                           &
@@ -982,7 +1029,7 @@ if(ieos(iphas).eq.1) then
                     +(gamagp-1.d0)*rtp(iel,ipriph) )))            &
            * surfbo(3,ifac)/ra(isrfbn+ifac-1)
 
-!       Energie totale
+      ! Total energy
       coefa(ifac,icle) =                                          &
            coefa(ifac,iclp)/((gamagp-1.d0)*coefa(ifac,iclr))      &
            + 0.5d0*(coefa(ifac,iclu)**2                           &
@@ -991,92 +1038,89 @@ if(ieos(iphas).eq.1) then
     endif
 
 
-!     T ET e EN FONCTION DE P ET rho
-!     ------------------------------
-!      on a donn� des valeurs positives strictement (hypoth�se)
+! --- Calculation of temperature and energy from pressure and density 
+
+    ! It is postulated that the pressure and density values are 
+    !   strictly positive
 
   elseif(iccfth.eq.912.or.iccfth.eq.60900) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-!     Temperature
+    ! Temperature
     coefa(ifac,iclt) =                                            &
          xmasml*coefa(ifac,iclp)/(rr*coefa(ifac,iclr))
 
-!     Energie totale
+    ! Energie totale
     coefa(ifac,icle) =                                            &
          cv0(iphas)*coefa(ifac,iclt)                              &
          + 0.5d0*( coefa(ifac,iclu)**2                            &
                  + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2 )
 
 
-!     rho ET e EN FONCTION DE P ET T
-!     ------------------------------
+! --- Calculation of density and energy from pressure and temperature 
 
   elseif(iccfth.eq.913.or.iccfth.eq.100900) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-!     Masse volumique
+    ! Density
     coefa(ifac,iclr) =                                            &
          xmasml*coefa(ifac,iclp)/(rr*coefa(ifac,iclt))
 
-!     Energie totale
+    ! Total energy
     coefa(ifac,icle) =                                            &
          cv0(iphas)*coefa(ifac,iclt)                              &
          + 0.5d0*( coefa(ifac,iclu)**2                            &
                  + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2 )
 
 
-!     rho ET T EN FONCTION DE P ET e
-!     ------------------------------
+! --- Calculation of density and temperature from pressure and total energy
 
   elseif(iccfth.eq.914.or.iccfth.eq.140900) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
-
-!     Masse volumique
+    
+    ! Density
     coefa(ifac,iclr) = coefa(ifac,iclp)/( (gamagp-1.d0)*          &
          (coefa(ifac,icle)                                        &
          - 0.5d0*( coefa(ifac,iclu)**2                            &
                  + coefa(ifac,iclv)**2                            &
                  + coefa(ifac,iclw)**2 ) ) )
 
-!     Temperature
+    ! Temperature
     coefa(ifac,iclt)=                                             &
          xmasml*coefa(ifac,iclp)/(rr*coefa(ifac,iclr))
 
 
-!     P ET e EN FONCTION DE rho ET T
-!     ------------------------------
+! --- Calculation of pressure and energy from density and temperature
 
   elseif(iccfth.eq.923.or.iccfth.eq.150900) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-!     Pression
+    ! Pressure
     coefa(ifac,iclp) = coefa(ifac,iclr)*rr/xmasml                 &
                                        *coefa(ifac,iclt)
 
-!     Energie totale
+    ! Total energy
     coefa(ifac,icle) = cv0(iphas) * coefa(ifac,iclt)              &
          + 0.5d0*( coefa(ifac,iclu)**2                            &
                  + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2 )
 
 
-!     P ET T EN FONCTION DE rho ET e
-!     ------------------------------
+! --- Calculation of pressure and temperature from density and energy 
 
   elseif(iccfth.eq.924.or.iccfth.eq.210900) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-!     Pression
+    ! Pressure
     coefa(ifac,iclp) = (gamagp-1.d0)*coefa(ifac,iclr)             &
           *( coefa(ifac,icle)                                     &
             - 0.5d0*( coefa(ifac,iclu)**2                         &
@@ -1084,71 +1128,77 @@ if(ieos(iphas).eq.1) then
                     + coefa(ifac,iclw)**2 ) )
 
 
-!     Temperature
+    ! Temperature
     coefa(ifac,iclt)=                                             &
          xmasml*coefa(ifac,iclp)/(rr*coefa(ifac,iclr))
 
 
-! --- Fin de test sur GAZ PARFAIT
+! --- End of the treatment of the perfect gas
   endif
 
 
 !===============================================================================
-! 2.  GAZ PARFAIT AVEC GAMMA VARIABLE
+! 3. Perfect gas with variable gamma 
 !===============================================================================
 
+! This section requires further checking and testing
+
 elseif(ieos(iphas).eq.2) then
 
 !===============================================================================
 
-!     PARAMETRES
-!     ==========
+!===============================================================================
+! 3.1. Parameters to be completed by the user 
+!===============================================================================
+
+
+
+! --- Examples (to be copied and adapted in section ''3.1. Parameters ...''
 
 !-------------------------------------------------------------------------------
+! This test allows the user to ensure that the version of this subroutine
+!   used is that from his case definition, and not that from the library.
 
-!     EXEMPLES  (A recopier et a adapter apres 'PARAMETRES')
   if(0.eq.1) then
-!-------------------------------------------------------------------------------
 
-! --> EXEMPLE 1 : GAZ PARFAIT A 3 CONSTITUANTS
+! --- Ex. 1: Perfect gas containing 3 components
+!     Molar mass, gamma
 
-!     Phase
+    ! Phase
   if(iphas.eq.1) then
 
-!     Masses molaires des constituants (en kg/mol)
+    ! Molar mass of the components (kg/mol)
     cstgr(1)  = 18.d-3
     cstgr(2)  = 32.d-3
     cstgr(3)  = 28.d-3
 
-!     Calcul de la masse molaire du melange au centre des cellules
     if(iccfth.gt.0) then
+
+      ! Calculation of the molar mass of the mixture at cell centers  
       do iel = 1, ncel
         xmasmr(iel) = 1.d0 / ( rtp(iel,isca(1))/cstgr(1)          &
                              + rtp(iel,isca(2))/cstgr(2)          &
                              + rtp(iel,isca(3))/cstgr(3) )
       enddo
 
-
-!     Calcul du GAMMA equivalent au centre des cellules
+      ! Calculation of the equivalent gamma of the mixture at cell centers
       do iel = 1, ncel
         gamagr(iel) = propce(iel,ipproc(icp(iphas)))              &
            / ( propce(iel,ipproc(icp(iphas))) - rr/xmasmr(iel) )
       enddo
+
     endif
 
   endif
 
-!-------------------------------------------------------------------------------
-
-!     FIN DES EXEMPLES
   endif
+
 !-------------------------------------------------------------------------------
 
-!===============================================================================
+! End of the examples
 
 
-! TEST DE VALIDITE DE GAMAGR : GAMAGR >= 1
-! ==========================
+! Verification of the values of gamagr: gamagr >= 1., otherwise stop 
 
   ierr = 0
 
@@ -1164,8 +1214,8 @@ elseif(ieos(iphas).eq.2) then
   endif
 
 
-! OPTIONS DE CALCUL  : Cp ET Cv VARIABLES
-! =================
+! --- Calculation options: variable Cp and Cv  
+!     (isobaric and isochoric specific heat)
 
   if(iccfth.eq.-1) then
 
@@ -1175,8 +1225,7 @@ elseif(ieos(iphas).eq.2) then
     cv0(iphas) = epzero
 
 
-! INITIALISATIONS PAR DEFAUT :
-! ==========================
+! Default initializations 
 
   elseif(iccfth.eq.0) then
 
@@ -1190,27 +1239,25 @@ elseif(ieos(iphas).eq.2) then
     enddo
 
 
-! CALCUL DE T ET e EN FONCTION DE P ET rho :
-! ========================================
+! --- Calculation of temperature and energy from pressure and density
 
   elseif(iccfth.eq.12) then
 
     do iel = 1, ncel
 
-!     Temperature
+      ! Temperature
       sorti1(iel) =                                               &
            xmasmr(iel)/rr*rtp(iel,ipriph)/rtp(iel,irhiph)
 
-!     Energie totale
+      ! Total energy
       sorti2(iel) = propce(iel,ipproc(icv(iphas)))*sorti1(iel)    &
     + 0.5d0*( rtp(iel,iuiph)**2                                   &
            + rtp(iel,iviph)**2 + rtp(iel,iwiph)**2 )
 
     enddo
 
-
+    ! Transfer to the array rtp 
     if(imodif.gt.0) then
-!       Affectation directe a RTP
       do iel = 1, ncel
         rtp(iel,itkiph) = sorti1(iel)
         rtp(iel,ieniph) = sorti2(iel)
@@ -1218,18 +1265,17 @@ elseif(ieos(iphas).eq.2) then
     endif
 
 
-! CALCUL DE rho ET e EN FONCTION DE P ET T :
-! ========================================
+! --- Calculation of density and energy from pressure and temperature:
 
   elseif(iccfth.eq.13) then
 
     do iel = 1, ncel
 
-!     Masse volumique
+      ! Density
       sorti1(iel) =                                               &
            xmasmr(iel)/rr*rtp(iel,ipriph)/rtp(iel,itkiph)
 
-!     Energie totale
+      ! Total energy
       sorti2(iel) =                                               &
            propce(iel,ipproc(icv(iphas)))*rtp(iel,itkiph)         &
     + 0.5d0*( rtp(iel,iuiph)**2                                   &
@@ -1237,9 +1283,8 @@ elseif(ieos(iphas).eq.2) then
 
     enddo
 
-
+    ! Transfer to the array rtp 
     if(imodif.gt.0) then
-!       Affectation directe a RTP
       do iel = 1, ncel
         rtp(iel,irhiph) = sorti1(iel)
         rtp(iel,ieniph) = sorti2(iel)
@@ -1247,27 +1292,25 @@ elseif(ieos(iphas).eq.2) then
     endif
 
 
-! CALCUL DE rho ET T EN FONCTION DE P ET e :
-! ========================================
+! --- Calculation of density and temperature from pressure and energy
 
   elseif(iccfth.eq.14) then
 
     do iel = 1, ncel
 
-!     Masse volumique
+      ! Density
       sorti1(iel) =                                               &
            rtp(iel,ipriph)/(gamagr(iel)-1.d0)/( rtp(iel,ieniph)   &
   - 0.5d0*( rtp(iel,iuiph)**2                                     &
            + rtp(iel,iviph)**2 + rtp(iel,iwiph)**2 ) )
 
-!     Temperature
+      ! Temperature
       sorti2(iel) = xmasmr(iel)/rr*rtp(iel,ipriph)/sorti1(iel)
 
     enddo
 
-
+    ! Transfer to the array rtp 
     if(imodif.gt.0) then
-!       Affectation directe a RTP
       do iel = 1, ncel
         rtp(iel,irhiph) = sorti1(iel)
         rtp(iel,itkiph) = sorti2(iel)
@@ -1275,18 +1318,17 @@ elseif(ieos(iphas).eq.2) then
     endif
 
 
-! CALCUL DE P ET e EN FONCTION DE rho ET T :
-! ========================================
+! --- Calculation of pressure and energy from density and temperature
 
   elseif(iccfth.eq.23) then
 
     do iel = 1, ncel
 
-!     Pression
+      ! Pressure
       sorti1(iel) =                                               &
            rtp(iel,irhiph)*rr/xmasmr(iel)*rtp(iel,itkiph)
 
-!     Energie totale
+      ! Total energy
       sorti2(iel) =                                               &
            propce(iel,ipproc(icv(iphas)))*rtp(iel,itkiph)         &
     + 0.5d0*( rtp(iel,iuiph)**2                                   &
@@ -1294,9 +1336,8 @@ elseif(ieos(iphas).eq.2) then
 
     enddo
 
-
+    ! Transfer to the array rtp 
     if(imodif.gt.0) then
-!       Affectation directe a RTP
       do iel = 1, ncel
         rtp(iel,ipriph) = sorti1(iel)
         rtp(iel,ieniph) = sorti2(iel)
@@ -1304,53 +1345,52 @@ elseif(ieos(iphas).eq.2) then
     endif
 
 
-! CALCUL DE P ET T EN FONCTION DE rho ET e :
-! ========================================
+! --- Calculation of pressure and temperature from density and energy
 
   elseif(iccfth.eq.24) then
 
     do iel = 1, ncel
 
-!     Pression
+      ! Pressure
       sorti1(iel) =                                               &
            (gamagr(iel)-1.d0)*rtp(iel,irhiph)*( rtp(iel,ieniph)   &
   - 0.5d0*( rtp(iel,iuiph)**2                                     &
            + rtp(iel,iviph)**2 + rtp(iel,iwiph)**2 ) )
 
-!     Temperature
+      ! Temperature
       sorti2(iel) = xmasmr(iel)/rr*sorti1(iel)/rtp(iel,irhiph)
 
     enddo
 
+    ! Transfer to the array rtp 
     if(imodif.gt.0) then
-!       Affectation directe a RTP
       do iel = 1, ncel
         rtp(iel,ipriph) = sorti1(iel)
         rtp(iel,itkiph) = sorti2(iel)
       enddo
     endif
 
-!            2                            2          P
-! CALCUL DE c  EN FONCTION DE P ET rho : c  = gamma*---
-! ====================================              rho
+!                     2                            2         P
+! --- Calculation of c from pressure and density: c = gamma*---
+!                                                           rho
 
   elseif(iccfth.eq.126) then
 
     do iel = 1, ncel
 
-! --- Test de positivite de P
+      ! Verification of the positivity of the pressure 
       if(rtp(iel,ipriph).lt.0.d0) then
         write(nfecra,1110) iel , rtp(iel,ipriph)
         ierr = 1
 
-! --- Test de positivite de rho
+      ! Verification of the positivity of the density
       elseif(rtp(iel,irhiph).le.0.d0) then
         write(nfecra,1120) iel , rtp(iel,irhiph)
         ierr = 1
 
       else
 
-! --- Calcul
+        ! Computation
         sorti1(iel) =                                             &
              gamagr(iel) * rtp(iel,ipriph) / rtp(iel,irhiph)
 
@@ -1358,35 +1398,36 @@ elseif(ieos(iphas).eq.2) then
 
     enddo
 
+    ! Stop if error detected
     if(ierr.eq.1) call csexit (1)
 
-!                                                    gamma
-! CALCUL DE beta EN FONCTION DE P ET rho : beta = rho
-! ======================================
+
+!                                                              gamma
+! --- Calculation of beta from pressure and density: beta = rho
 
   elseif(iccfth.eq.162) then
 
     do iel = 1, ncel
 
-! --- Test de positivite de rho
+      ! Verification of the positivity of the density
       if(rtp(iel,irhiph).lt.0.d0) then
         write(nfecra,1220) iel , rtp(iel,irhiph)
         ierr = 1
 
       else
 
-! --- Calcul
+        ! Computation
         sorti1(iel) = rtp(iel,irhiph)**gamagr(iel)
 
       endif
 
     enddo
 
+    ! Stop if error detected
     if(ierr.eq.1) call csexit (1)
 
-!                           R
-! CALCUL DE Cv : Cv = Cp - ---
-! ============              M
+
+! --- Calculation of the isochoric specific heat: Cv = Cp - R/M 
 
   elseif(iccfth.eq.432) then
 
@@ -1396,29 +1437,31 @@ elseif(ieos(iphas).eq.2) then
 
     enddo
 
+    ! Stop if error detected (kept by consistance with other sections)
     if(ierr.eq.1) call csexit (1)
 
-!                                                       P
-! CALCUL DE L'ENTROPIE EN FONCTION DE P ET rho : s = --------
-! ============================================          gamma
-!                                                    rho
+!                                                                  P
+! --- Calculation of the entropy from pressure and density: s = --------
+!                                                                  gamma
+!                                                               rho
+
   elseif(iccfth.eq.6) then
 
     do iel = 1, ncel
 
-! --- Test de positivite de P
+      ! Verification of the positivity of the pressure 
       if(rtp(iel,ipriph).lt.0.d0) then
         write(nfecra,1310) iel , rtp(iel,ipriph)
         ierr = 1
 
-! --- Test de positivite de rho
+      ! Verification of the positivity of the density
       elseif(rtp(iel,irhiph).le.0.d0) then
         write(nfecra,1320) iel , rtp(iel,irhiph)
         ierr = 1
 
       else
 
-! --- Calcul
+        ! Computation
         sorti1(iel) =                                             &
              rtp(iel,ipriph) / (rtp(iel,irhiph)**gamagr(iel))
 
@@ -1426,54 +1469,50 @@ elseif(ieos(iphas).eq.2) then
 
     enddo
 
+    ! Stop if error detected 
     if(ierr.eq.1) call csexit (1)
 
 
-! CALCUL DE epsilon - Cv.T : epsilon - Cv.T = 0
-! ========================
+! --- Calculation of 'internal energy - Cv.T' 
 
   elseif(iccfth.eq.7) then
 
-! --- A l'interieur du domaine
+    ! It is zero for a perfect gas 
 
+    !   At the cell centers 
     do iel = 1, ncel
-
       sorti1(iel) = 0.d0
-
     enddo
 
-! --- Sur les bords
-
+    !   On the boundary faces  
     do ifac = 1, nfabor
-
       sorti2(ifac) = 0.d0
-
     enddo
 
+    ! Stop if error detected (kept by consistance with other sections)
     if(ierr.eq.1) call csexit (1)
 
 
-! CALCUL DES CONDITIONS AUX LIMITES :
-! =================================
+! --- Calculation of the boundary conditions on the face ifac = ifac0
+
+!  -- Wall/symmetry 
 
-!     PAROI/SYMETRIE
-!     --------------
   elseif(iccfth.eq.91) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-! --- Calcul du nombre de Mach normal a la frontiere
-
+    ! Calculation of the Mach number at the boundary face, using the 
+    !   cell center velocity projected on the vector normal to the boundary
     xmach = ( rtp(iel,iuiph)*surfbo(1,ifac)                       &
            + rtp(iel,iviph)*surfbo(2,ifac)                        &
            + rtp(iel,iwiph)*surfbo(3,ifac) ) / ra(isrfbn+ifac-1)  &
          / sqrt( gamagr(iel)*rtp(iel,ipriph)/rtp(iel,irhiph) )
 
-! --- Pression / Entropie : Detente
-
     coefa(ifac,iclp) = 0.d0
 
+    ! Pression and entropy: rarefaction 
+
     if(xmach.le.0.d0 .and. xmach.gt.2.d0/(1.d0-gamagr(iel))) then
       coefb(ifac,iclp) = (1.d0 + (gamagr(iel)-1.d0)/2.d0 * xmach) &
            ** (2.d0*gamagr(iel)/(gamagr(iel)-1.d0))
@@ -1483,7 +1522,7 @@ elseif(ieos(iphas).eq.2) then
       coefb(ifac,iclp) = 0.d0
       coefb(ifac,iclt) = 1.d0
 
-! --- Pression / Entropie : Choc
+      ! Pressure and entropy: shock
 
     else
       coefb(ifac,iclp) = 1.d0 + gamagr(iel)*xmach                 &
@@ -1496,21 +1535,23 @@ elseif(ieos(iphas).eq.2) then
               + rtp(iel,ipriph) *(1.d0-coefb(ifac,iclp)) )
     endif
 
-! --- Energie totale : Epsilon sup
+    ! Total energy: 'internal energy - Cv T' 
 
     coefa(ifac,icle) = 0.d0
 
+    ! Stop if error detected
     if(ierr.eq.1) call csexit (1)
 
-!     ENTREE
-!     ------
+
+!  -- Inlet
+
   elseif(iccfth.eq.92) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-! --- Calcul du nombre de Mach entrant normalement a la frontiere
-
+    ! Calculation of the Mach number at the boundary face, using the 
+    !   cell center velocity projected on the vector normal to the boundary
     xmachi = ( rtp(iel,iuiph)*surfbo(1,ifac)                      &
          + rtp(iel,iviph)*surfbo(2,ifac)                          &
          + rtp(iel,iwiph)*surfbo(3,ifac) )/ra(isrfbn+ifac-1)      &
@@ -1521,7 +1562,7 @@ elseif(ieos(iphas).eq.2) then
          / sqrt(gamagr(iel)*rtp(iel,ipriph)/rtp(iel,irhiph))
     dxmach = xmachi - xmache
 
-! --- Pression : Detente
+    ! Pressure: rarefaction wave
     if(dxmach.le.0.d0) then
 
       if(dxmach.gt.2.d0/(1.d0-gamagr(iel))) then
@@ -1532,7 +1573,7 @@ elseif(ieos(iphas).eq.2) then
         coefa(ifac,iclp) = 0.d0
       endif
 
-! --- Pression : Choc
+    ! Pressure: shock
     else
       coefa(ifac,iclp) = rtp(iel,ipriph)*                         &
            (  1.d0 + gamagr(iel)*dxmach                           &
@@ -1541,53 +1582,51 @@ elseif(ieos(iphas).eq.2) then
                                            *dxmach**2) )  )
     endif
 
-! --- Energie totale
-
+    ! This choice overrides the previous Rusanov choice 
     coefa(ifac,iclp) = rtp(iel,ipriph)
 
+    ! Total energy 
     coefa(ifac,icle) =                                            &
          coefa(ifac,iclp)/((gamagr(iel)-1.d0)*coefa(ifac,iclr))   &
          + 0.5d0*(coefa(ifac,iclu)**2                             &
                 + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2)
 
-!     SORTIE
-!     ------
+!  -- Outlet
+
   elseif(iccfth.eq.93) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-! --- Calcul du nombre de Mach sortant normalement a la frontiere
-
+    ! Calculation of the Mach number at the boundary face, using the 
+    !   cell center velocity projected on the vector normal to the boundary
     xmach = ( rtp(iel,iuiph)*surfbo(1,ifac)                       &
            + rtp(iel,iviph)*surfbo(2,ifac)                        &
            + rtp(iel,iwiph)*surfbo(3,ifac) ) / ra(isrfbn+ifac-1)  &
          / sqrt(gamagr(iel)*rtp(iel,ipriph)/rtp(iel,irhiph))
 
-! --- Sortie supersonique : Dirichlet sur toutes les variables
-!     -------------------
+    ! Supersonic outlet: Dirichlet for all variables 
     if(xmach.ge.1.d0) then
       do ivar = 1, nvar
         coefa(ifac,iclrtp(ivar,icoef)) = rtp(iel,ivar)
       enddo
 
-!           Entropie
+      ! Entropy
       coefa(ifac,iclt) =                                          &
            rtp(iel,ipriph)/rtp(iel,irhiph)**gamagr(iel)
 
-! --- Sortie subsonique
-!     -----------------
+    ! Subsonic outlet
     elseif(xmach.lt.1.d0 .and. xmach.ge.0.d0) then
 
-! --- Detente :
+      ! Rarefaction:
       if(coefa(ifac,iclp).le.rtp(iel,ipriph)) then
 
-!       Masse volumique
+        ! Density
         coefa(ifac,iclr) = rtp(iel,irhiph)                        &
              * (coefa(ifac,iclp)/rtp(iel,ipriph))                 &
                 **(1.d0/gamagr(iel))
 
-!       Vitesse
+        ! Velocity
         coefa(ifac,iclu) = rtp(iel,iuiph)                         &
              + 2.d0/(gamagr(iel)-1.d0)                            &
  * sqrt( gamagr(iel) * rtp(iel,ipriph) / rtp(iel,irhiph) )        &
@@ -1612,28 +1651,28 @@ elseif(ieos(iphas).eq.2) then
                **((gamagr(iel)-1.d0)/2.d0/gamagr(iel)) )          &
  * surfbo(3,ifac) / ra(isrfbn+ifac-1)
 
-!       Energie totale
+        ! Total energy
         coefa(ifac,icle) = coefa(ifac,iclp)                       &
  /( (gamagr(iel)-1.d0)*coefa(ifac,iclr) )                         &
               + 0.5d0*(coefa(ifac,iclu)**2                        &
                      + coefa(ifac,iclv)**2                        &
                      + coefa(ifac,iclw)**2)
 
-!       Entropie
+        ! Entropy
         coefa(ifac,iclt) = coefa(ifac,iclp)                       &
                              /coefa(ifac,iclr)**gamagr(iel)
 
-! --- Choc :
+      ! Shock:
       else
 
-!       Masse volumique
+        ! Density
         coefa(ifac,iclr) = rtp(iel,irhiph)                        &
  * ( (gamagr(iel)+1.d0)*coefa(ifac,iclp)                          &
    + (gamagr(iel)-1.d0)*rtp(iel,ipriph) )                         &
  / ( (gamagr(iel)-1.d0)*coefa(ifac,iclp)                          &
    + (gamagr(iel)+1.d0)*rtp(iel,ipriph) )
 
-!       Vitesse
+        ! Velocity
         coefa(ifac,iclu) = rtp(iel,iuiph)                         &
  - (coefa(ifac,iclp)-rtp(iel,ipriph))*sqrt(2.d0/rtp(iel,irhiph)   &
  / ( (gamagr(iel)+1.d0)*coefa(ifac,iclp)                          &
@@ -1652,345 +1691,378 @@ elseif(ieos(iphas).eq.2) then
    + (gamagr(iel)-1.d0)*rtp(iel,ipriph) ))                        &
  * surfbo(3,ifac) / ra(isrfbn+ifac-1)
 
-!       Energie totale
+        ! Total energy
         coefa(ifac,icle) = coefa(ifac,iclp)                       &
  /( (gamagr(iel)-1.d0)*coefa(ifac,iclr) )                         &
      + 0.5d0*(coefa(ifac,iclu)**2                                 &
             + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2)
 
-!       Entropie
+        ! Entropy
         coefa(ifac,iclt) = coefa(ifac,iclp)                       &
                              /coefa(ifac,iclr)**gamagr(iel)
 
       endif
 
     else
-      WRITE(NFECRA,*) 'ICCFTH = ',ICCFTH,'  MACH = ',XMACH
+      write(nfecra,*) 'iccfth = ',iccfth,'  Mach = ',xmach
       ierr = 1
     endif
 
     if(ierr.eq.1) call csexit (1)
 
 
-!     T ET e EN FONCTION DE P ET rho
-!     ------------------------------
+! --- Calculation of temperature and energy from pressure and density 
 
   elseif(iccfth.eq.912.or.iccfth.eq.60900) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-!     Temperature
+    ! Temperature
     coefa(ifac,iclt) = xmasmr(iel)/rr*coefa(ifac,iclp)            &
                                         /coefa(ifac,iclr)
 
-!     Energie totale
+    ! Total energy
     coefa(ifac,icle) = propce(iel,ipproc(icv(iphas)))             &
                * coefa(ifac,iclt) + 0.5d0*( coefa(ifac,iclu)**2   &
                     + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2)
 
 
-!     rho ET e EN FONCTION DE P ET T
-!     ------------------------------
+! --- Calculation of density and energy from pressure and temperature 
 
   elseif(iccfth.eq.913.or.iccfth.eq.100900) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-!     Masse volumique
+    ! Density
     coefa(ifac,iclr) = xmasmr(iel)/rr*coefa(ifac,iclp)            &
                                        /coefa(ifac,iclt)
 
-!     Energie totale
+    ! Total energy
     coefa(ifac,icle) = propce(iel,ipproc(icv(iphas)))             &
                * coefa(ifac,iclt) + 0.5d0*( coefa(ifac,iclu)**2   &
                     + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2)
 
 
-!     rho ET T EN FONCTION DE P ET e
-!     ------------------------------
+! --- Calculation of density and temperature from pressure and total energy 
 
   elseif(iccfth.eq.914.or.iccfth.eq.140900) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-!     Masse volumique
+    ! Density
     coefa(ifac,iclr) = coefa(ifac,iclp)/(gamagr(iel)-1.d0)        &
            / (coefa(ifac,icle) - 0.5d0*( coefa(ifac,iclu)**2      &
                  + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2 ))
 
-!     Temperature
+    ! Temperature
     coefa(ifac,iclt)= xmasmr(iel)/rr*coefa(ifac,iclp)             &
                                        /coefa(ifac,iclr)
 
 
-!     P ET e EN FONCTION DE rho ET T
-!     ------------------------------
+! --- Calculation of pressure and energy from density and temperature
 
   elseif(iccfth.eq.923.or.iccfth.eq.150900) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-!     Pression
+    ! Pressure
     coefa(ifac,iclp) = coefa(ifac,iclr)*rr/xmasmr(iel)            &
                                        *coefa(ifac,iclt)
 
-!     Energie totale
+    ! Total energy
     coefa(ifac,icle) = propce(iel,ipproc(icv(iphas)))             &
                * coefa(ifac,iclt) + 0.5d0*( coefa(ifac,iclu)**2   &
                     + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2)
 
 
-!     P ET T EN FONCTION DE rho ET e
-!     ------------------------------
+! --- Calculation of pressure and temperature from density and energy 
 
   elseif(iccfth.eq.924.or.iccfth.eq.210900) then
 
     ifac = ifac0
     iel  = ifabor(ifac)
 
-!     Pression
+    ! Pressure
     coefa(ifac,iclp) = (gamagr(iel)-1.d0)*coefa(ifac,iclr)        &
           *( coefa(ifac,icle) - 0.5d0*( coefa(ifac,iclu)**2       &
                 + coefa(ifac,iclv)**2 + coefa(ifac,iclw)**2 ) )
 
 
-!     Temperature
+    ! Temperature
     coefa(ifac,iclt)= xmasmr(iel)/rr*coefa(ifac,iclp)             &
                                        /coefa(ifac,iclr)
 
 
-! --- Fin de test sur GAZ PARFAIT A GAMMA VARIABLE
+! --- End of perfect gas with variable gamma 
   endif
 
-! --- Fin de test sur les thermos
+! --- End of test on the thermodynamic laws 
 endif
 
 
 !--------
-! FORMATS
+! Formats
 !--------
 
- 1010 format(                                                           &
-'@                                                            ',/,&
+ 1010 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USCFTH                        ',/,&
-'@    =========                                               ',/,&
-'@                                                            ',/,&
-'@    GAMMA DOIT ETRE UN REEL SUPERIEUR OU EGAL A 1           ',/,&
-'@    IL A POUR VALEUR ',E12.4                                 ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with constant gamma.',/,                 &  
+'@',/,                                                            &
+'@     Gamma = ',e12.4   ,/,                                      &  
+'@     Gamma must be a real number greater or equal to 1.',/,     &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
- 1020 format(                                                           &
-'@                                                            ',/,&
+'@',/)
+ 1020 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USCFTH                        ',/,&
-'@    =========                                               ',/,&
-'@                                                            ',/,&
-'@    GAMMA DOIT ETRE UN REEL SUPERIEUR OU EGAL A 1           ',/,&
-'@    IL EST NEGATIF OU NUL DANS LA CELLULE ',I10              ,/,&
-'@    IL A POUR VALEUR ',E12.4                                 ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with constant gamma.',/,                 &  
+'@',/,                                                            &
+'@     In cell ',i10   ,', Gamma = ',e12.4   ,/,                  &  
+'@     Gamma must be a real number greater or equal to 1.',/,     &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
- 2010 format(                                                           &
-'@                                                            ',/,&
+'@',/)
+ 2010 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USCFTH                        ',/,&
-'@    =========   CALCUL DE LA MASSE VOLUMIQUE                ',/,&
-'@                                                            ',/,&
-'@    LA TEMPERATURE DOIT ETRE UN REEL POSITIF STRICTEMENT    ',/,&
-'@    ELLE VAUT ',E12.4   ,' DANS LA CELLULE ',I10             ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with constant gamma.',/,                 &  
+'@',/,                                                            &
+'@     The computation of density failed.',/,                     &
+'@',/,                                                            &
+'@     Temperature = ',e12.4   ,' in cell ',i10  ,/,              &  
+'@     Temperature must be strictly positive.',/,                 &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
- 3010 format(                                                           &
-'@                                                            ',/,&
+'@',/)
+ 3010 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USCFTH                        ',/,&
-'@    =========   CALCUL DE LA TEMPERATURE                    ',/,&
-'@                                                            ',/,&
-'@    LA MASSE VOLUMIQUE DOIT ETRE UN REEL POSITIF STRICTEMENT',/,&
-'@    ELLE VAUT ',E12.4   ,' DANS LA CELLULE ',I10             ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with constant gamma.',/,                 &  
+'@',/,                                                            &
+'@     The computation of temperature failed.',/,                 &
+'@',/,                                                            &
+'@     Density = ',e12.4   ,' in cell ',i10  ,/,                  &  
+'@     Density must be strictly positive.',/,                     &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
- 4010 format(                                                           &
-'@                                                            ',/,&
+'@',/)
+ 4010 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USCFTH                        ',/,&
-'@    =========   CALCUL DE LA VARIABLE THERMODYNAMIQUE ''C2''',/,&
-'@                                                            ',/,&
-'@    LA MASSE VOLUMIQUE DOIT ETRE UN REEL POSITIF STRICTEMENT',/,&
-'@    ELLE VAUT ',E12.4   ,' DANS LA CELLULE ',I10             ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with constant gamma.',/,                 &  
+'@',/,                                                            &
+'@     The computation of the squared speed of sound failed.',/,  &
+'@',/,                                                            &
+'@     Density = ',e12.4   ,' in cell ',i10  ,/,                  &  
+'@     Density must be strictly positive.',/,                     &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
- 4020 format(                                                           &
-'@                                                            ',/,&
+'@',/)
+ 4020 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USCFTH                        ',/,&
-'@    =========   CALCUL DE LA VARIABLE THERMO        ''BETA''',/,&
-'@                                                            ',/,&
-'@    LA MASSE VOLUMIQUE DOIT ETRE UN REEL POSITIF            ',/,&
-'@    ELLE VAUT ',E12.4   ,' DANS LA CELLULE ',I10             ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with constant gamma.',/,                 &  
+'@',/,                                                            &
+'@     The computation of the variable beta failed.',/,           &
+'@',/,                                                            &
+'@     Density = ',e12.4   ,' in cell ',i10  ,/,                  &  
+'@     Density must be strictly positive.',/,                     &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
- 4030 format(                                                           &
-'@                                                            ',/,&
+'@',/)
+ 4030 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USCFTH                        ',/,&
-'@    =========   CALCUL DE LA VARIABLE THERMODYNAMIQUE ''S'' ',/,&
-'@                                                            ',/,&
-'@    LA MASSE VOLUMIQUE DOIT ETRE UN REEL POSITIF STRICTEMENT',/,&
-'@    ELLE VAUT ',E12.4   ,' DANS LA CELLULE ',I10             ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with constant gamma.',/,                 &  
+'@',/,                                                            &
+'@     The computation of the entropy failed.',/,                 &
+'@',/,                                                            &
+'@     Density = ',e12.4   ,' in cell ',i10  ,/,                  &  
+'@     Density must be strictly positive.',/,                     &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
- 7000 format (                                                          &
-'@                                                            ',/,&
+'@',/)
+ 7000 format (                                                    &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : CONDITION A LA LIMITE NON DISPONIBLE USCFTH ',/,&
-'@    =========                                               ',/,&
-'@                                                            ',/,&
-'@    La condition a la limite de type debit et debit         ',/,&
-'@      enthalpique imposes n''est pas disponible dans la     ',/,&
-'@      version courante.                                     ',/,&
-'@                                                            ',/,&
-'@    Le calcul ne peut pas etre execute.                     ',/,&
-'@                                                            ',/,&
-'@    Modifier uscfcl.                                        ',/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with constant gamma.',/,                 &  
+'@',/,                                                            &
+'@     The boundary condition of the type ''prescribed mass',/,   &
+'@     and enthalpy flow rates '' is not available in the ',/,    &
+'@     current release.',/,                                       &
+'@',/,                                                            &
+'@     Modify the user subroutine ''uscfth''.',/,                 &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
- 8000 format (                                                          &
-'@                                                            ',/,&
+'@',/)
+ 8000 format (                                                    &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : MASSE VOLUMIQUE NEGATIVE OU NULLE (USCFTH)  ',/,&
-'@    =========                                               ',/,&
-'@                                                            ',/,&
-'@    rho est negatif ou nul en ',I10   ,' cellules           ',/,&
-'@    On le limite a ',E12.4                                   ,/,&
-'@    et on met fin au calcul.                                ',/,&
-'@                                                            ',/,&
-'@    Si on souhaite que le calcul se poursuive, on peut      ',/,&
-'@      forcer un clipping standard par valeur inferieure en  ',/,&
-'@      renseignant la variable SCAMIN associee au scalaire   ',/,&
-'@      representant la masse volumique : ISCA(IRHO(IPHAS))   ',/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with constant gamma.',/,                 &  
+'@',/,                                                            &
+'@     Negative values of the density were encountered ',/,       &
+'@     in ',i10   ,' cells.',/,                                   &
+'@     The density was clipped at ',e12.4  ,/                     &
+'@     The run was stopped.',/,                                   &
+'@',/,                                                            &
+'@     If it is desired to continue the run in spite of this ',/, &
+'@     behavior, it is possible to force a standard clipping ',/, &
+'@     by setting a minimum value for the density variable in',/, &
+'@     the GUI or in the user subroutine ''usini1'' (set the ',/, &
+'@     scamin value associated to the variable ',/,               &
+'@     isca(irho(iphas)).',/,                                     & 
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
+'@',/)
  8100 format (                                                          &
-'@                                                            ',/,&
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ENERGIE INTERNE NEGATIVE OU NULLE (USCFTH)  ',/,&
-'@    =========                                               ',/,&
-'@                                                            ',/,&
-'@    e-0.5*u*u est negatif ou nul en ',I10   ,' cellules     ',/,&
-'@    On le limite a ',E12.4                                   ,/,&
-'@    et on met fin au calcul.                                ',/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with constant gamma.',/,                 &  
+'@',/,                                                            &
+'@     Negative values of the internal energy were encountered',/,&
+'@     in ',i10   ,' cells.',/,                                   &
+'@     The internal energy  was clipped at ',e12.4  ,/            &
+'@     The run was stopped.',/,                                   &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
+'@',/)
 
 
-
-! formats a eliminer apres mise au point de gama variable
-
+! The following formats may be discarded if or when the 
+! gamma variable option will have been fixed
 
 
  1110 format(                                                           &
-'@                                                            ',/,&
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USTHMO                        ',/,&
-'@    =========   CALCUL DE LA VARIABLE THERMODYNAMIQUE ''C2''',/,&
-'@                                                            ',/,&
-'@    P DOIT ETRE UN REEL POSITIF                             ',/,&
-'@    IL EST NEGATIF DANS LA CELLULE ',I10                     ,/,&
-'@    IL A POUR VALEUR ',E12.4                                 ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with variable gamma.',/,                 &  
+'@',/,                                                            &
+'@     The computation of the squared speed of sound failed.',/,  &
+'@',/,                                                            &
+'@     In cell ',i10   ,' Pressure = ',e12.4   ,/,                &  
+'@     Pressure must be positive.',/,                             &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
+'@',/)
  1120 format(                                                           &
-'@                                                            ',/,&
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USTHMO                        ',/,&
-'@    =========   CALCUL DE LA VARIABLE THERMODYNAMIQUE ''C2''',/,&
-'@                                                            ',/,&
-'@    RHO DOIT ETRE UN REEL POSITIF STRICTEMENT               ',/,&
-'@    IL EST NEGATIF OU NUL DANS LA CELLULE ',I10              ,/,&
-'@    IL A POUR VALEUR ',E12.4                                 ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with variable gamma.',/,                 &  
+'@',/,                                                            &
+'@     The computation of the squared speed of sound failed.',/,  &
+'@',/,                                                            &
+'@     In cell ',i10   ,' Density = ',e12.4   ,/,                 &  
+'@     Density must be strictly positive.',/,                     &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
+'@',/)
  1220 format(                                                           &
-'@                                                            ',/,&
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USTHMO                        ',/,&
-'@    =========   CALCUL DE LA VARIABLE THERMO ''BETA''       ',/,&
-'@                                                            ',/,&
-'@    RHO DOIT ETRE UN REEL POSITIF                           ',/,&
-'@    IL EST NEGATIF DANS LA CELLULE ',I10                     ,/,&
-'@    IL A POUR VALEUR ',E12.4                                 ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with variable gamma.',/,                 &  
+'@',/,                                                            &
+'@     The computation of the variable beta failed.',/,           &
+'@',/,                                                            &
+'@     In cell ',i10   ,' Density = ',e12.4   ,/,                 &  
+'@     Density must be strictly positive.',/,                     &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
+'@',/)
  1310 format(                                                           &
-'@                                                            ',/,&
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USTHMO                        ',/,&
-'@    =========   CALCUL DE LA VARIABLE THERMODYNAMIQUE ''S'' ',/,&
-'@                                                            ',/,&
-'@    P DOIT ETRE UN REEL POSITIF                             ',/,&
-'@    IL EST NEGATIF DANS LA CELLULE ',I10                     ,/,&
-'@    IL A POUR VALEUR ',E12.4                                 ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with variable gamma.',/,                 &  
+'@',/,                                                            &
+'@     The computation of the entropy failed.',/,                 &
+'@',/,                                                            &
+'@     In cell ',i10   ,' Pressure = ',e12.4   ,/,                &  
+'@     Pressure must be positive.',/,                             &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
+'@',/)
  1320 format(                                                           &
-'@                                                            ',/,&
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : PROBLEME DANS USTHMO                        ',/,&
-'@    =========   CALCUL DE LA VARIABLE THERMODYNAMIQUE ''S'' ',/,&
-'@                                                            ',/,&
-'@    RHO DOIT ETRE UN REEL POSITIF STRICTEMENT               ',/,&
-'@    IL EST NEGATIF OU NUL DANS LA CELLULE ',I10              ,/,&
-'@    IL A POUR VALEUR ',E12.4                                 ,/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in thermodynamics computations',/,         &
+'@    =======',/,                                                 &
+'@     Error encountered in the user subroutine ''uscfth'', ',/,  &  
+'@       for perfect gas with variable gamma.',/,                 &  
+'@',/,                                                            &
+'@     The computation of the entropy failed.',/,                 &
+'@',/,                                                            &
+'@     In cell ',i10   ,' Density = ',e12.4   ,/,                 &  
+'@     Density must be striclty positive.',/,                     &  
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
+'@',/)
 
 
 !----
-! FIN
+! End
 !----
 
 return
-
-end
+end subroutine 
diff --git a/users/cfbl/uscfx1.f90 b/users/cfbl/uscfx1.f90
index 1a4bf9a..294a853 100644
--- a/users/cfbl/uscfx1.f90
+++ b/users/cfbl/uscfx1.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,18 +28,18 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine uscfx1
+subroutine uscfx1
 !================
 
 
 !===============================================================================
-!  FONCTION  :
-!  ---------
+! Purpose:
+! -------
 
-!    INIT DES OPTIONS DE CALCUL NON STANDARD
-!            POUR LE COMPRESSIBLE SANS CHOC
+!    User subroutine.
+
+!    Initialize non standard options for the compressible flow scheme.
 
-!     (ex. : ICFGRP, IVIVAR...)
 
 !-------------------------------------------------------------------------------
 ! Arguments
@@ -48,16 +48,15 @@
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -75,6 +74,11 @@ include "ppincl.h"
 
 !===============================================================================
 
+! Arguments
+
+
+! Local variables
+
 integer          iphas
 
 !===============================================================================
@@ -83,9 +87,10 @@ integer          iphas
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     This subroutine is  mandatory for compressible flow,
+!       thus the default (library reference) version stops immediately.
 !===============================================================================
 
 if(1.eq.1) then
@@ -93,37 +98,31 @@ if(1.eq.1) then
   call csexit (1)
 endif
 
- 9000 format(                                                           &
-'@                                                            ',/,&
+ 9000 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DE L''ENTREE DES DONNEES         ',/,&
-'@    =========                                               ',/,&
-'@                      MODULE ELECTRIQUE                     ',/,&
-'@                                                            ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uscfx1 DOIT ETRE COMPLETE',/,&
-'@                                                            ',/,&
-'@     Ce sous-programme utilisateur permet de definir les    ',/,&
-'@       options generales. Il est indispensable.             ',/,&
-'@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in compressible flow options definition',/,&
+'@    =======',/,                                                 &
+'@     The user subroutine ''uscfx1'' must be completed.',/,      &
+'@',/,                                                            &
+'@  The calculation will not be run.',/,                          &
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
+'@',/)
+
 
-!===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 1. OPTIONS DE CALCUL
+! 1. Scheme options
 !===============================================================================
 
-!     Pour chaque phase
-
+! For each phase
 do iphas = 1, nphas
 
-! --> Conditions aux limites prenant en compte l'equilibre hydrostatique
-!     (oui = 1 , non = 0)
+  ! Specify if the hydrostatic equilibrium must be accounted for 
+  !     (yes = 1 , no = 0)
 
   icfgrp(iphas) = 1
 
@@ -134,4 +133,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/users/cfbl/uscfx2.f90 b/users/cfbl/uscfx2.f90
index eebd283..2d22a23 100644
--- a/users/cfbl/uscfx2.f90
+++ b/users/cfbl/uscfx2.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,20 +28,21 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine uscfx2
+subroutine uscfx2
 !================
 
 
-!===============================================================================
-!  FONCTION  :
-!  ---------
+! Purpose:
+! -------
 
-! INIT DES OPTIONS DES VARIABLES POUR LE COMPRESSIBLE SANS CHOC
-!   EN COMPLEMENT DE CE QUI A DEJA ETE FAIT DANS USINI1
+!    User subroutine.
 
+!    Set options for viscosity and conductivity for compressible flow.
 
-!    CE SOUS PROGRAMME UTILISATEUR EST OBLIGATOIRE
-!    =============================================
+!    In addition to options set in the user subroutine 'usini1' (or in 
+!    the GUI): this subroutine allows to set switches to indicate if the 
+!    volumetric viscosity and the conductivity are constants. If they are,
+!    the subroutines allows to set their values. 
 
 
 !-------------------------------------------------------------------------------
@@ -51,16 +52,18 @@
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
+!===============================================================================
+
 !===============================================================================
 
 include "paramx.h"
@@ -76,15 +79,20 @@ include "ppincl.h"
 
 !===============================================================================
 
+! Arguments
+
+! Local variables
+
 integer          iphas
 
 !===============================================================================
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     This subroutine is  mandatory for compressible flow,
+!       thus the default (library reference) version stops immediately.
 !===============================================================================
 
 if(1.eq.1) then
@@ -92,74 +100,67 @@ if(1.eq.1) then
   call csexit (1)
 endif
 
- 9000 format(                                                           &
-'@                                                            ',/,&
+ 9000 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DE L''ENTREE DES DONNEES         ',/,&
-'@    =========                                               ',/,&
-'@                      MODULE COMPRESSIBLE                   ',/,&
-'@                                                            ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uscfx2 DOIT ETRE COMPLETE',/,&
-'@                                                            ',/,&
-'@     Ce sous-programme utilisateur permet de definir les    ',/,&
-'@       options generales. Il est indispensable.             ',/,&
-'@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in data input for compressible flow',/,    &
+'@    =======',/,                                                 &
+'@     The user subroutine ''uscfx2'' must be completed',/,       &
+'@',/,                                                            &
+'@  The calculation will not be run.',/,                          &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
+'@',/)
+
 
-!===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 1. PROPRIETES PHYSIQUES
+! 1. Physical properties
 !===============================================================================
 
-! --> Pour chaque phase
+! --> Only done for phase 1
 
 iphas = 1
 
-! --> Conductivite thermique laminaire
+! --> Molecular thermal conductivity
 
-!       Conductivite thermique constante : IVISLS = 0
-!       Conductivite thermique variable  : IVISLS = 1
+!       constant  : ivisls = 0
+!       variable  : ivisls = 1
 
 ivisls(itempk(iphas)) = 0
 
-!       Conductivite thermique de reference :
-
-!       VISLS0 = LAMBDA0  (conductivite thermique en W/(m K))
-
+!       Reference molecular thermal conductivity 
+!       visls0 = lambda0  (molecular thermal conductivity, W/(m K))
 
-!       ATTENTION ! IL FAUT QUE VISLS0 SOIT STRICTEMENT POSITIF
-!         (donner une valeur meme si la conductivite est variable)
+!       WARNING: visls0 must be strictly positive 
+!         (set a realistic value here even if conductivity is variable)
 
 visls0(itempk(iphas)) = 3.d-2
 
-!       Si la conductivite thermique est variable, il faut donner
-!       sa loi de variation dans uscfpv.F
+!       If the molecular thermal conductivity is variable, its values 
+!         must be provided in the user subroutine 'uscfpv'
 
 
-! --> Viscosite en volume
+! --> Volumetric molecular viscosity 
 
-!       Viscosite en volume de reference :
+!       Reference volumetric molecular viscosity
 
-!       VISCV0 = KAPPA0  (viscosite en volume en kg/(m s))
-!       IVISCV = 0 : uniforme en espace et constant en temps
-!              = 1 : variable en espace et  en temps
+!       viscv0 = kappa0  (volumetric molecular viscosity, kg/(m s))
+!       iviscv = 0 : uniform  in space and constant in time
+!              = 1 : variable in space and time 
 
 iviscv(iphas) = 0
 viscv0(iphas) = 0.d0
 
-!       Si la Viscosite en volume est variable, il faut donner
-!       sa loi de variation dans uscfpv.F
+!       If the volumetric molecular viscosity is variable, its values 
+!         must be provided in the user subroutine 'uscfpv'
 
 
 !----
-! FIN
+! End 
 !----
 
 return
-end
+end subroutine
diff --git a/users/cfbl/uscfxi.f90 b/users/cfbl/uscfxi.f90
index a713b2e..a4670c1 100644
--- a/users/cfbl/uscfxi.f90
+++ b/users/cfbl/uscfxi.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,154 +45,117 @@ subroutine uscfxi &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
+! Purpose:
+! -------
 
-! INITIALISATION DES VARIABLES DE CALCUL
-!    POUR LA PHYSIQUE PARTICULIERE : COMPRESSIBLE SANS CHOC
-!    PENDANT DE USINIV.F
+!    User subroutine.
 
-! Cette routine est appelee en debut de calcul (suite ou non)
-!     dans la boucle en temps avant la resolution des scalaires
+!    Initialize the unknown variables for the compressible flow scheme.
 
-! Elle permet d'INITIALISER ou de MODIFIER (pour les calculs suite)
-!     les variables de calcul.
 
+! Description
+! ===========
 
-! On a repris a titre d'exemple dans cette routine utilisateur
-!     l'initialisation choisie par defaut.
+! This subroutine is similar to the user subroutine 'usiniv', but 
+! is dedicated to the compressible flow scheme. 
+! It is called at the beginning of the computation (only if it is 
+! not a restart), just before the time marching loop starts. 
+! It allows to initialize all the unknown variables. 
 
-! On pourra trouver des exemples d'initialisations dans usiniv.F
+! The standard initialization has been reproduced here as an example. 
 
+! More examples can be found in 'usiniv'. 
 
-! Les proprietes physiques sont accessibles dans le tableau
-!     PROPCE (prop au centre), PROPFA (aux faces internes),
-!     PROPFB (prop aux faces de bord)
-!     Ainsi,
-!      PROPCE(IEL,IPPROC(IROM  (IPHAS))) designe ROM   (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISCL(IPHAS))) designe VISCL (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(ICP   (IPHAS))) designe CP    (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISLS(ISCAL))) designe VISLS (IEL ,ISCAL)
 
-!      PROPFA(IFAC,IPPROF(IFLUMA(IVAR ))) designe FLUMAS(IFAC,IVAR)
+! Physical properties
+! ===================
 
-!      PROPFB(IFAC,IPPROB(IROM  (IPHAS))) designe ROMB  (IFAC,IPHAS)
-!      PROPFB(IFAC,IPPROB(IFLUMA(IVAR ))) designe FLUMAB(IFAC,IVAR)
+! The physical properties (viscosity, specific heat, thermal 
+! conductivity, Schmidt number) that are stored in the arrays propce, 
+! propfa and propfb must not be modified here: if it is necessary to 
+! do so, it must be done in the dedicated user programme 'uscfpv'. 
 
-! LA MODIFICATION DES PROPRIETES PHYSIQUES (ROM, VISCL, VISCLS, CP)
-!     SE FERA EN STANDARD DANS LE SOUS PROGRAMME PPPHYV
-!     ET PAS ICI
 
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
+! Cells identification
+! ====================
 
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
+! Cells may be identified using the 'getcel' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
 
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
 
 ! Arguments
 !__________________.____._____.________________________________________________.
 !    nom           !type!mode !                   role                         !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
-! rtp              ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! w1..4(ncelet)    ! tr ! --- ! tableaux de travail                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp(ncelet,*)    ! ra ! <-> ! calculated variables at cell centers           !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! w1..4(ncelet)    ! tr ! --- ! work arrays                                    !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -210,6 +173,8 @@ include "ppincl.h"
 
 !===============================================================================
 
+! Arguments
+
 integer          idbia0 , idbra0
 integer          ndim   , ncelet , ncel   , nfac   , nfabor
 integer          nfml   , nprfml
@@ -234,7 +199,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision w1(ncelet), w2(ncelet), w3(ncelet), w4(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, iphas
@@ -246,19 +211,26 @@ integer          iccfth, iscal, imodif, iutile
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
 
+!===============================================================================
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     However, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
+!===============================================================================
+
 if(1.eq.1) return
 
-!===============================================================================
+
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 0. IMPRESSION DE CONTROLE
+! 1. Control print
 !===============================================================================
 
 write(nfecra,9001)
 
 !===============================================================================
-! 1.  INITIALISATION VARIABLES LOCALES
+! 2.  Initialization of local variables
 !===============================================================================
 
 idebia = idbia0
@@ -267,20 +239,16 @@ idebra = idbra0
 imodif = 1
 
 !===============================================================================
-! 2. INITIALISATION DES INCONNUES :
-!      UNIQUEMENT SI ON NE FAIT PAS UNE SUITE
+! 3. Unknown variable initialization 
+!      for initial calculations (not in case of restart)
 !===============================================================================
 
 if ( isuite.eq.0 ) then
 
-! --- Pour chaque phase
-
   iphas  = 1
 
-! --- CONDITIONS INITIALES
-!     ====================
+! --- Velocity components
 
-! --- Vitesse
   do iel = 1, ncel
     rtp(iel,iu(iphas)) = 0.d0
     rtp(iel,iv(iphas)) = 0.d0
@@ -288,15 +256,16 @@ if ( isuite.eq.0 ) then
   enddo
 
 
-! --- Scalaires passifs
+! --- User defined scalars 
 
-!       Si il y a des scalaires passifs utilisateurs
+  ! If there are user defined scalars 
   if(nscaus.gt.0) then
-!         Boucle sur ces scalaires
+    ! For each scalar 
     do iscal = 1, nscaus
-!           Si le scalaire est porte par la phase consideree
+      ! If the scalar is associated to the considered phase iphas
       if(iphsca(iscal).eq.iphas) then
 
+        ! Initialize each cell value 
         do iel = 1, ncel
           rtp(iel,isca(iscal)) = 0.d0
         enddo
@@ -306,28 +275,30 @@ if ( isuite.eq.0 ) then
   endif
 
 
-! --- Pression, Masse Volumique, Temperature, Energie Totale Specifique
+! --- Pressure, Density, Temperature, Total Energy 
 
-!       Seules 2 variables sur les 4 sont independantes
-!       On peut donc initialiser le couple de variables que l'on veut
-!       (sauf Temperature-Energie) et les 2 autres variables seront
-!       calculees automatiquement
+  ! Only 2 out of these 4 variables are independent: one may choose to 
+  ! initialize any pair of variables picked out of these 4, except 
+  ! (Temperature-Energy). The remaining 2 variables will be deduced 
+  ! automatically.  
 
-!  ** Initialiser 2 variables et 2 seulement
 
-!        Pour cela, imposer IUTILE=1 pour les variables choisies
-!                        et IUTILE=0 pour les autres
+  ! Initialize 2 and only 2 variables 
 
-!        Ainsi, dans l'exemple fourni, on initialise la pression et
-!          la temperature
+  !   To do so, set iutile=1 for each of the 2 selected variables 
+  !             and iutile=0 for each of the 2 others
 
-!  ** ICCFTH est un indicateur permettant de reperer quelles variables
-!       ont �t� renseign�es. Ne pas le modifier.
+  !   In the example provided below, Pressure and Temperature are 
+  !   initialized.
 
 
+  ! iccfth indicates which variables have been set: 
+  !   it is completed automatically for each variable and 
+!     it must not be modified. 
   iccfth = 10000
 
-!     1. Pression (en Pa)
+
+  ! 1. Pressure (Pa)
   iutile = 1
   if(iutile.eq.1) then
     iccfth = iccfth*2
@@ -336,7 +307,7 @@ if ( isuite.eq.0 ) then
     enddo
   endif
 
-!     2. Masse Volumique (en kg/m3)
+  ! 2. Density (kg/m3)
   iutile = 0
   if(iutile.eq.1) then
     iccfth = iccfth*3
@@ -345,7 +316,7 @@ if ( isuite.eq.0 ) then
     enddo
   endif
 
-!     3. Temperature (en K)
+  ! 3. Temperature (K -- Warning: Kelvin)
   iutile = 1
   if(iutile.eq.1) then
     iccfth = iccfth*5
@@ -354,7 +325,7 @@ if ( isuite.eq.0 ) then
     enddo
   endif
 
-!     4. Energie Totale Specifique (en J/kg)
+  ! 4. Total Energy (J/kg)
   iutile = 0
   if(iutile.eq.1) then
     iccfth = iccfth*7
@@ -363,9 +334,10 @@ if ( isuite.eq.0 ) then
     enddo
   endif
 
-!  ** Calcul automatique des deux autres variables
-!     Ce sont les valeurs de ICCFTH qui d�terminent les variables
-!       connues et les variables � calculer.
+
+  ! ** The following subroutine returns automatically the values for the 
+  ! two remaining variables that need to be computed, using the 
+  ! indicator iccfth.  
 
   call uscfth                                                     &
   !==========
@@ -385,22 +357,20 @@ if ( isuite.eq.0 ) then
    rdevel , rtuser , ra     )
 
 
-! FIN DE TEST DE SUITE
 endif
 
 !----
-! FORMATS
+! Formats
 !----
 
- 9001 format(                                                           &
-'                                                             ',/,&
-'  uscfxi : Initialisation des variables par l''utilisateur   ',/,&
-'                                                             ',/)
+ 9001 format(                                                     &
+/,                                                                &
+'  uscfxi: User defined initialization of the variables.',/,      &
+/)
 
 !----
-! FIN
+! End
 !----
 
-
 return
-end
+end subroutine
diff --git a/users/cogz/usd3p1.f90 b/users/cogz/usd3p1.f90
index 491b00c..040a19a 100644
--- a/users/cogz/usd3p1.f90
+++ b/users/cogz/usd3p1.f90
@@ -1,12 +1,12 @@
 !-------------------------------------------------------------------------------
 
-!VERS
-
+!                      Code_Saturne version 2.0.0-beta2
+!                      --------------------------
 
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,36 +28,28 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine usd3p1
+subroutine usd3p1
 !================
 
 
 !===============================================================================
-!  FONCTION  :
-!  ---------
-
-!         INIT DES OPTIONS DES VARIABLES POUR
-!                  POUR LA COMBUSTION
-!           FLAMME DE DIFFUSION : CHIMIE 3 POINTS
-!   EN COMPLEMENT DE CE QUI A DEJA ETE FAIT DANS USINI1
-
-!-------------------------------------------------------------------------------
-! Arguments
-!__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
-!__________________!____!_____!________________________________________________!
-!__________________!____!_____!________________________________________________!
-
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!  Features of this subroutine:
+!  ----------------------------
+!  1. Variable Output
+!     a. Transported Variables
+!     b. Variables of State; User definied Variables
+!
+!  2. Additional Calculation Options
+!     a. Density Relaxation
+!
+!  3. Physical Constants
+!     a.Dynamic Diffusion Coefficient
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common Blocks
 !===============================================================================
 
 include "paramx.h"
@@ -81,64 +73,35 @@ include "radiat.h"
 integer          ipp
 
 !===============================================================================
-
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 1. Variable Output
 !===============================================================================
-
-if(1.eq.1) then
-  write(nfecra,9000)
-  call csexit (1)
-endif
-
- 9000 format(                                                           &
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES               ',/,&
-'@    =========                                               ',/,&
-'@     MODULE COMBUSTION GAZ MODELE CHIMIE TROIS POINTS       ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR usd3p1 DOIT ETRE COMPLETE',/,&
-'@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
+!    Function                             |  Key Word |   Indicator
+!    ---------------------------------------------------------------
+!    Variable Output in the result file   | ICHRVR()  | yes= 1  ; no=0
+!    Variable Output in the listing file  | ILISVR()  | yes= 1  ; no=0
+!    Output of the temporal evolution of  | IHISVR()  | yes=-1* ; no=0
+!    the variable at monitoring points    |           |
+!    -----------------------------------------------------------------
+!    *: Output for all monitoring points defined in subroutine usini1.f90
+!
 !===============================================================================
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
-
-
+! a. Transported Variables
 !===============================================================================
-! 1. VARIABLES TRANSPORTEES
-!===============================================================================
-
-!  Sortie chrono, suivi listing, sortie histo
-!     Si l'on n'affecte pas les tableaux suivants,
-!     les valeurs par defaut seront utilisees
-
-!       ICHRVR( ) = sortie chono (oui 1/non 0)
-!       ILISVR( ) = suivi listing (oui 1/non 0)
-!       IHISVR( ) = sortie historique (nombre de sondes et numeros)
-!       si IHISVR(.,1)  = -1 sortie sur toutes les sondes definies
-!                            dans usini1
 
-! ---- Taux de melange
+! ---- Mean mixture fraction
 ipp = ipprtp(isca(ifm))
 ichrvr(ipp)  = 1
 ilisvr(ipp)  = 1
 ihisvr(ipp,1)= -1
 
-! ---- Variance du taux de melange
+! ---- Variance of mixture fraction
 ipp = ipprtp(isca(ifp2m))
 ichrvr(ipp)  = 1
 ilisvr(ipp)  = 1
 ihisvr(ipp,1)= -1
 
-! ---- Enthalpie
+! ---- Enthalpy
  if ( ippmod(icod3p).eq.1 ) then
    ipp = ipprtp(isca(ihm))
    ichrvr(ipp)  = 1
@@ -148,7 +111,7 @@ ihisvr(ipp,1)= -1
 
 
 !===============================================================================
-! 2. VARIABLES ALGEBRIQUES OU D'ETAT
+! b. Variables of State; User definied Variables
 !===============================================================================
 
 ! ---- Temperature
@@ -157,43 +120,43 @@ ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-! ---- Fraction massique du combustible
+! ---- Fuel Mass fraction :    YM_Fuel
 ipp = ipppro(ipproc(iym(1)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-! ---- Fraction massique de l'oxydant
+! ---- Oxydizer Mass fraction : YM_Oxy
 ipp = ipppro(ipproc(iym(2)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-! ---- Fraction massique des produits
+! ---- Product Mass fraction : YM_Prod
 ipp = ipppro(ipproc(iym(3)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-! ---- Flamme de diffusion AVEC RAYONNEMENT
+! ---- Diffusion flame including gas radiation
 
 if ( iirayo.gt.0 ) then
 
-! ---- Coeff d'absorption
+! ---- Absorption Coefficient
   ipp = ipppro(ipproc(ickabs))
   NOMVAR(IPP)   = 'KABS'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-! ---- Terme T^4
+! ---- Term T^4
   ipp = ipppro(ipproc(it4m))
   NOMVAR(IPP)   = 'TEMP4'
   ichrvr(ipp)   = 0
   ilisvr(ipp)   = 0
   ihisvr(ipp,1) = -1
 
-! ---- Terme T^3
+! ---- Term T^3
   ipp = ipppro(ipproc(it3m))
   NOMVAR(IPP)   = 'TEMP3'
   ichrvr(ipp)   = 0
@@ -204,27 +167,26 @@ endif
 
 
 !===============================================================================
-! 3. OPTIONS DE CALCUL
+! 2. Additional Calculation Options
 !===============================================================================
 
-! --> Coefficient de relaxation de la masse volumique
+! -->  Density Relaxation
 !      RHO(n+1) = SRROM * RHO(n) + (1-SRROM) * RHO(n+1)
 
 srrom = 0.8d0
 
 
 !===============================================================================
-! 4. CONSTANTES PHYSIQUES
+! 3. Physical Constants
 !===============================================================================
 
-! --> Viscosite laminaire associee au scalaire enthalpie
-!       DIFTL0 (diffusivite dynamique en kg/(m s))
+!       DIFTL0: Dynamic Diffusion Coefficient (kg/(m s))
 diftl0 = 4.25d-5
 
 
 !----
-! FIN
+! END
 !----
 
 return
-end
+end subroutine
diff --git a/users/cogz/usd3pc.f90 b/users/cogz/usd3pc.f90
index 44e2664..b8f17e9 100644
--- a/users/cogz/usd3pc.f90
+++ b/users/cogz/usd3pc.f90
@@ -1,12 +1,12 @@
 !-------------------------------------------------------------------------------
 
-!VERS
-
+!                      Code_Saturne version 2.0.0-beta2
+!                      --------------------------
 
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine usd3pc                               &
+subroutine usd3pc &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -47,457 +47,425 @@
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
-
-!    ROUTINE UTILISATEUR POUR PHYSIQUE PARTICULIERE
-!       COMBUSTION GAZ - FLAMME DE DIFFUSION CHIMIE 3 POINTS
-!    REMPLISSAGE DU TABLEAU DE CONDITIONS AUX LIMITES
-!    (ICODCL,RCODCL) POUR LES VARIABLES INCONNUES
-!    PENDANT USCLIM.F
+! Purpose:
+! -------
 
+!    User subroutine.
 
+!    Fill boundary conditions arrays (icodcl, rcodcl)
+!    for unknown variables.
 
 
-! INTRODUCTION
+! Introduction
 ! ============
 
-! On donne ici les conditions aux limites par face de bord.
-
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
-
-! TYPE DE CONDITIONS AUX LIMITES
-! ==============================
-
-! On peut affecter les conditions aux limites de deux manieres.
-
-
-!    Pour les conditions "standard" :
-!    --------------------------------
-
-!     (entree, sortie libre, paroi, symetrie), on donne un code
-!     stocke dans le tableau ITYPFB (dimensionne au nombre de
-!     faces de bord,nombre de phases). Ce code sera ensuite
-!     utilise par un sous-programme non utilisateur pour affecter
-!     les conditions correspondantes (les scalaires, en
-!     particulier, recevront alors les conditions de la phase a
-!     laquelle ils sont associes). Ainsi :
-
-!     Code      |  Type de bord
-!     -------------------------
-!      IENTRE   |   Entree
-!      ISOLIB   |   Sortie libre
-!      ISYMET   |   Symetrie
-!      IPAROI   |   Paroi (lisse)
-!      IPARUG   |   Paroi rugueuse
-
-!     Les entiers IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!     sont affectes par ailleurs (include param.h). Leur valeur
-!     est superieure ou egale a 1 et
-!         inferieure ou egale a NTYPMX (valeur fixee dans paramx.h)
-
-
-
-!     En outre, il faut donner certaines valeurs :
-
-
-!     - Entree (plus precisement entree/sortie a debit impose, car le debit
-!               peut etre impose sortant) :
-
-!       -> Conditions de Dirichlet sur les variables
-!         autres que la pression obligatoire si le flux est entrant,
-!         optionnelle si le flux est sortant (le code affecte flux nul
-!         si aucun Dirichlet n'est specifie) ; ainsi
-!         en face IFAC, sur la variable IVAR : RCODCL(IFAC,IVAR,1)
-
-
-!     - Paroi lisse : (= solide impermeable, avec frottement lisse)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 5
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
+! Here we define boundary conditions on a per-face basis.
+
+! Boundary faces may be identified using the 'getfbr' subroutine.
+
+!  getfbr(string, nelts, eltlst) :
+!  - string is a user-supplied character string containing
+!    selection criteria;
+!  - nelts is set by the subroutine. It is an integer value
+!    corresponding to the number of boundary faces verifying the
+!    selection criteria;
+!  - lstelt is set by the subroutine. It is an integer array of
+!    size nelts containing the list of boundary faces verifying
+!    the selection criteria.
+
+!  string may contain:
+!  - references to colors (ex.: 1, 8, 26, ...
+!  - references to groups (ex.: inlet, group1, ...)
+!  - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!  These criteria may be combined using logical operators
+!  ('and', 'or') and parentheses.
+!  Example: '1 and (group2 or group3) and y < 1' will select boundary
+!  faces of color 1, belonging to groups 'group2' or 'group3' and
+!  with face center coordinate y less than 1.
+
+
+
+! Boundary condition types
+! ========================
+
+! Boundary conditions may be assigned in two ways.
+
+
+!    For "standard" boundary conditions:
+!    -----------------------------------
+
+!     (inlet, free outlet, wall, symmetry), we define a code
+!     in the 'itypfb' array (of dimensions number of boundary faces,
+!     number of phases). This code will then be used by a non-user
+!     subroutine to assign the following conditions (scalars in
+!     particular will receive the conditions of the phase to which
+!     they are assigned). Thus:
+
+!     Code      |  Boundary type
+!     --------------------------
+!      ientre   |   Inlet
+!      isolib   |   Free outlet
+!      isymet   |   Symmetry
+!      iparoi   |   Wall (smooth)
+!      iparug   |   Rough wall
+
+!     Integers ientre, isolib, isymet, iparoi, iparug
+!     are defined elsewhere (param.h). Their value is greater than
+!     or equal to 1 and less than or equal to ntypmx
+!     (value fixed in paramx.h)
+
+
+!     In addition, some values must be defined:
+
+
+!     - Inlet (more precisely, inlet/outlet with prescribed flow, as
+!              the flow may be prescribed as an outflow):
+
+!       -> Dirichlet conditions on variables
+!         other than pressure are mandatory if the flow is incoming,
+!         optional if the flow is outgoing (the code assigns 0 flux
+!         if no Dirichlet is specified); thus,
+!         at face 'ifac', for the variable 'ivar': rcodcl(ifac, ivar, 1)
+
+
+!     - Smooth wall: (= impermeable solid, with smooth friction)
+
+!       -> Velocity value for sliding wall if applicable
+!         at face ifac, rcodcl(ifac, iu, 1)
+!                       rcodcl(ifac, iv, 1)
+!                       rcodcl(ifac, iw, 1)
+!       -> Specific code and prescribed temperature value
+!         at wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 5
+!                       rcodcl(ifac, ivar, 1) = prescribed temperature
+!       -> Specific code and prescribed flux value
+!         at wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 3
+!                       rcodcl(ifac, ivar, 3) = prescribed flux
 !                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-
-!     - Paroi rugueuse : (= solide impermeable, avec frottement rugueux)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Valeur de la hauteur de rugosite dynamique a specifier dans
-!                       RCODCL(IFAC,IU,3) (valeur pour IV et IW non utilisee)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi rugueuse s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 6
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!                       RCODCL(IFAC,IVAR,3) = Hauteur de rugosite thermique
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
+!        Note that the default condition for scalars
+!         (other than k and epsilon) is homogeneous Neumann.
+
+
+!     - Rough wall: (= impermeable solid, with rough friction)
+
+!       -> Velocity value for sliding wall if applicable
+!         at face ifac, rcodcl(ifac, iu, 1)
+!                       rcodcl(ifac, iv, 1)
+!                       rcodcl(ifac, iw, 1)
+!       -> Value of the dynamic roughness height to specify in
+!                       rcodcl(ifac, iu, 3) (value for iv et iw not used)
+!       -> Specific code and prescribed temperature value
+!         at rough wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 6
+!                       rcodcl(ifac, ivar, 1) = prescribed temperature
+!                       rcodcl(ifac, ivar, 3) = dynamic roughness height
+!       -> Specific code and prescribed flux value
+!         at rough wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 3
+!                       rcodcl(ifac, ivar, 3) = prescribed flux
 !                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-!     - Symetrie (= paroi impermeable avec glissement) :
-
-!       -> Rien a preciser
-
-
-!     - Sortie libre (plus precisement entree/sortie libre a pression imposee)
-
-!       -> Rien a preciser pour la pression et la vitesse
-!          Pour les scalaires et grandeurs turbulentes, une valeur de Dirichlet
-!            peut etre specifiee de maniere optionnelle. Le comportement est le
-!            suivant :
-!              * la pression est toujours traitee en Dirichlet
-!              * si flux de masse entrant :
-!                  on retient la vitesse a l'infini
-!                  condition de Dirichlet pour les scalaires et grandeurs
-!                    turbulentes (ou flux nul si l'utilisateur n'a pas
-!                    specifie de Dirichlet)
-!                 si flux de masse sortant :
-!                    on impose un flux nul sur la vitesse, les scalaires et
-!                    les grandeurs turbulentes
-
-!       Noter que la pression sera recalee a P0
-!           sur la premiere face de sortie libre trouvee
-
-
-!    Pour les conditions "non standard" :
-!    ------------------------------------
-
-!     Autres que (entree, sortie libre, paroi, symetrie), on donne
-!      - d'une part, pour chaque face :
-!        -> une valeur de ITYPFB admissible
-!           ie superieure ou egale a 1 et inferieure ou egale a
-!           NTYPMX (voir sa valeur dans paramx.h).
-!           Les valeurs predefinies dans paramx.h
-!           IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG sont dans cet
-!           intervalle et il est preferable de ne pas affecter
-!           inconsidrement et par hasard a ITYPFB la valeur
-!           d'un de ces entiers. Pour eviter cela, on peut
-!           utiliser IINDEF si l'on souhaite eviter de verifier
-!           les valeurs dans paramx.h. IINDEF est une valeur
-!           admissible a laquelle n'est attachee aucune condition
-!           limite predefinie.
-!           Noter que le tableau ITYPFB est
-!           reinitialise a chaque pas de temps a la valeur
-!           non admissible 0. Si on oublie de modifier ITYPFB pour
-!           une face, le code s'arretera.
-
-!      - et d'autre part pour chaque face et chaque variable :
-!        -> un code     ICODCL(IFAC,IVAR)
-!        -> trois reels RCODCL(IFAC,IVAR,1)
-!                       RCODCL(IFAC,IVAR,2)
-!                       RCODCL(IFAC,IVAR,3)
-!     La valeur de ICODCL est prise parmi les suivantes :
-!       1 : Dirichlet      (utilisable pour toute variable)
-!       3 : Neumann        (utilisable pour toute variable)
-!       4 : Symetrie       (utilisable uniquement pour la vitesse et
-!                                   les composantes du tenseur Rij)
-!       5 : Paroi lisse    (utilisable pour toute variable sauf la
-!                                                         pression)
-!       6 : Paroi rugueuse (utilisable pour toute variable sauf la
-!                                                         pression)
-!       9 : Sortie libre   (utilisable uniquement pour la vitesse)
-!     Les valeurs des 3 reels RCODCL sont les suivantes
-!      RCODCL(IFAC,IVAR,1) :
-!         Dirichlet sur la variable        si ICODCL(IFAC,IVAR)=  1
-!         valeur en paroi (defilmnt, temp) si ICODCL(IFAC,IVAR)=  5
-!         La dimension de RCODCL(IFAC,IVAR,1) est celle de la
-!           variable resolue : ex U (vitesse en m/s),
-!                                 T (temperature en degres)
-!                                 H (enthalpie en J/kg)
-!                                 F (scalaire passif en -)
-!      RCODCL(IFAC,IVAR,2) :
-!         coefficient d'echange "exterieur" (entre la valeur
-!                          imposee et la valeur au bord du domaine)
-!                          RINFIN = infini par defaut
-!         Pour les vitesses U,             en kg/(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =            (VISCL+VISCT) / D
-!         Pour la  pression P,             en  s/m          :
-!           RCODCL(IFAC,IVAR,2) =                       DT / D
-!         Pour les temperatures T,         en Watt/(m2 degres) :
-!           RCODCL(IFAC,IVAR,2) = CP*(VISCLS+VISCT/SIGMAS) / D
-!         Pour les enthalpies H,           en kg /(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!              (D a la dimension d'une distance en m)
-
-!      RCODCL(IFAC,IVAR,3) si ICODCL(IFAC,IVAR)<>6 :
-!        Densite de flux (< 0 si gain, n normale orientee vers l'exterieur)
-!                         si ICODCL(IFAC,IVAR)= 3
-!         Pour les vitesses U,             en kg/(m s2) = J :
-!           RCODCL(IFAC,IVAR,3) =           -(VISCL+VISCT) * (GRAD U).n
-!         Pour la  pression P,             en kg/(m2 s)     :
-!           RCODCL(IFAC,IVAR,3) =                      -DT * (GRAD P).n
-!         Pour les temperatures T,         en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =-CP*(VISCLS+VISCT/SIGMAS) * (GRAD T).n
-!         Pour les enthalpies H,           en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD H).n
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD F).n
-
-!      RCODCL(IFAC,IVAR,3) SI ICODCL(IFAC,IVAR)=6 :
-!        Rugosites de la loi rugueuse
-!         Pour les vitesses U, rugosite dynamique
-!           RCODCL(IFAC,IVAR,3) = RUGD
-!         Pour les autres scalaires, rugosite thermique
-!           RCODCL(IFAC,IVAR,3) = RUGT
-
-
-!      Noter bien que si l'utilisateur affecte une valeur a ITYPFB
-!       parmi     IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!       et qu'il ne modifie pas ICODCL (valeur nulle par defaut),
-!       c'est ITYPFB qui imposera la condition limite.
-
-!      Par contre, si l'utilisateur impose
-!        ICODCL(IFAC,IVAR) (non nul),
-!        ce sont alors les valeurs de RCODCL qu'il aura fournies
-!        qui sont retenues pour la face et la variable consideree
-!        (s'il ne precise pas RCODCL, ce sont les valeurs
-!        par defaut qui sont retenues pour la face et
-!        la variable consideree soit :
-!                                 RCODCL(IFAC,IVAR,1) = 0.D0
-!                                 RCODCL(IFAC,IVAR,2) = RINFIN
-!                                 RCODCL(IFAC,IVAR,3) = 0.D0)
-!        En particulier, on peut par exemple
-!        -> donner ITYPFB(IFAC,IPHAS) = IPAROI
-!        qui impose les conditions de paroi par defaut pour toutes
-!        les variables sur la face IFAC,
-!        -> et preciser EN OUTRE pour la variable IVAR sur cette
-!        face IFAC des conditions paarticulieres en imposant
-!        ICODCL(IFAC,IVAR) et les 3 RCODCL.
-
-
-!      L'utilisateur peut egalement affecter a ITYPFB une valeur
-!       non egale a IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG, IINDEF
-!       mais superieure ou egale a 1 et inferieure ou egale a
-!       NTYPMX (voir les valeurs dans param.h) pour reperer
-!       des groupes de couleurs dans d'autres sous programmes
-!       qui lui seraient propres et ou ITYPFB serait disponible.
-!       Dans ce cas cependant, il faudra
-!       imposer les conditions limites en donnant des valeurs a
-!       ICODCL et aux trois RCODCL (puisque la valeur de ITYPFB
-!       ne sera pas predefinie dans le code).
-
-
-! REGLES DE COHERENCE
-! ===================
-
-!       Quelques regles de coherence entre les codes ICODCL
-!         des variables pour les conditions non standard :
-
-!           Les codes des vitesses doivent etre identiques
-!           Les codes des Rij      doivent etre identiques
-!           Si code (vitesse ou Rij) = 4
-!             il faut code (vitesse et Rij) = 4
-!           Si code (vitesse ou turbulence) = 5
-!             il faut code (vitesse et turbulence) = 5
-!           Si code (vitesse ou turbulence) = 6
-!             il faut code (vitesse et turbulence) = 6
-!           Si code scalaire (hormis pression ou fluctuations) = 5
-!             il faut code vitesse = 5
-!           Si code scalaire (hormis pression ou fluctuations) = 6
-!             il faut code vitesse = 6
-
-
-! REMARQUES
-! ==========
-
-!       Attention : pour imposer un flux (non nul) sur les Rij,
-!                   la viscosite a prendre en compte est VISCL
-!                   meme si VISCT existe (VISCT=RHO CMU K2/EPSILON)
-
-
-!       On dispose du tableau de tri des faces de bord au pas
-!           de temps precedent (sauf au premier pas de temps, ou
-!           ITRIFB n'a pas ete renseigne).
-!       Le tableau du type des faces de bord ITYPFB a ete
-!           reinitialise avant d'entrer dans le sous programme.
-
-
-
-!       Noter comment acceder a certaines variables :
-
-! Valeurs aux cellules
-!               Soit        IEL = IFABOR(IFAC)
-
-! * Masse vol                       phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IROM (IPHAS)))
-! * Viscosite moleculaire dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCL(IPHAS)))
-! * Viscosite turbulente  dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCT(IPHAS)))
-! * Chaleur specifique              phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(ICP   (IPHAS)))
-! * Diffusivite lambda           scalaire ISCAL, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISLS(ISCAL)))
-
-! Valeurs aux faces de bord
-
-! * Masse vol                      phase IPHAS, face de bord IFAC :
-!                  PROPFB(IFAC,IPPROB(IROM (IPHAS)))
-! * Flux de masse relatif a la variable  IVAR , face de bord IFAC :
-!      (i.e. le flux de masse servant a la convection de IVAR)
-!                  PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))
-! * Pour les autres grandeurs              a la face de bord IFAC :
-!      prendre pour approximation la valeur dans la cellule  IEL
-!      adjacente i.e. comme plus haut avec IEL = IFABOR(IFAC).
+!        Note that the default condition for scalars
+!         (other than k and epsilon) is homogeneous Neumann.
+
+!     - Symmetry (= impermeable frictionless wall):
+
+!       -> Nothing to specify
+
+
+!     - Free outlet (more precisely free inlet/outlet with prescribed pressure)
+
+!       -> Nothing to prescribe for pressure and velocity
+!          For scalars and turbulent values, a Dirichlet value may optionally
+!            be specified. The behavior is as follows:
+!              * pressure is always handled as a Dirichlet condition
+!              * if the mass flow is inflowing:
+!                  we retain the velocity at infinity
+!                  Dirichlet condition for scalars and turbulent values
+!                    (or zero flux if the user has not specified a
+!                    Dirichlet value)
+!                if the mass flow is outflowing:
+!                  we prescribe zero flux on the velocity, the scalars,
+!                  and turbulent values
+
+!       Note that the pressure will be reset to P0
+!           on the first free outlet face found
+
+
+!    For "non-standard" conditions:
+!    ------------------------------
+
+!     Other than (inlet, free outlet, wall, symmetry), we define
+!      - on one hand, for each face:
+!        -> an admissible 'itypfb' value
+!           (i.e. greater than or equal to 1 and less than or equal to
+!            ntypmx; see its value in paramx.h).
+!           The values predefined in paramx.h:
+!           'ientre', 'isolib', 'isymet', 'iparoi', 'iparug' are in
+!           this range, and it is preferable not to assign one of these
+!           integers to 'itypfb' randomly or in an inconsiderate manner.
+!           To avoid this, we may use 'iindef' if we wish to avoid
+!           checking values in paramx.h. 'iindef' is an admissible
+!           value to which no predefined boundary condition is attached.
+!           Note that the 'itypfb' array is reinitialized at each time
+!           step to the non-admissible value of 0. If we forget to
+!           modify 'typfb' for a given face, the code will stop.
+
+!      - and on the other hand, for each face and each variable:
+!        -> a code             icodcl(ifac, ivar)
+!        -> three real values  rcodcl(ifac, ivar, 1)
+!                              rcodcl(ifac, ivar, 2)
+!                              rcodcl(ifac, ivar, 3)
+!     The value of 'icodcl' is taken from the following:
+!       1: Dirichlet      (usable for any variable)
+!       3: Neumann        (usable for any variable)
+!       4: Symmetry       (usable only for the velocity and
+!                          components of the Rij tensor)
+!       5: Smooth wall    (usable for any variable except for pressure)
+!       6: Rough wall     (usable for any variable except for pressure)
+!       9: Free outlet    (usable only for velocity)
+!     The values of the 3 'rcodcl' components are
+!      rcodcl(ifac, ivar, 1):
+!         Dirichlet for the variable          if icodcl(ifac, ivar) =  1
+!         wall value (sliding velocity, temp) if icodcl(ifac, ivar) =  5
+!         The dimension of rcodcl(ifac, ivar, 1) is that of the
+!           resolved variable: ex U (velocity in m/s),
+!                                 T (temperature in degrees)
+!                                 H (enthalpy in J/kg)
+!                                 F (passive scalar in -)
+!      rcodcl(ifac, ivar, 2):
+!         "exterior" exchange coefficient (between the prescribed value
+!                          and the value at the domain boundary)
+!                          rinfin = infinite by default
+!         For velocities U,                in kg/(m2 s):
+!           rcodcl(ifac, ivar, 2) =          (viscl+visct) / d
+!         For the pressure P,              in  s/m:
+!           rcodcl(ifac, ivar, 2) =                     dt / d
+!         For temperatures T,              in Watt/(m2 degres):
+!           rcodcl(ifac, ivar, 2) = Cp*(viscls+visct/sigmas) / d
+!         For enthalpies H,                in kg /(m2 s):
+!           rcodcl(ifac, ivar, 2) =    (viscls+visct/sigmas) / d
+!         For other scalars F              in:
+!           rcodcl(ifac, ivar, 2) =    (viscls+visct/sigmas) / d
+!              (d has the dimension of a distance in m)
+!
+!      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) <> 6:
+!        Flux density (< 0 if gain, n outwards-facing normal)
+!                         if icodcl(ifac, ivar)= 3
+!         For velocities U,                in kg/(m s2) = J:
+!           rcodcl(ifac, ivar, 3) =         -(viscl+visct) * (grad U).n
+!         For pressure P,                  en kg/(m2 s):
+!           rcodcl(ifac, ivar, 3) =                    -dt * (grad P).n
+!         For temperatures T,              in Watt/m2:
+!           rcodcl(ifac, ivar, 3) = -Cp*(viscls+visct/sigmas) * (grad T).n
+!         For enthalpies H,                in Watt/m2:
+!           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad H).n
+!         For other scalars F in :
+!           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad F).n
+
+!      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) = 6:
+!        Roughness for the rough wall law
+!         For velocities U, dynamic roughness
+!           rcodcl(ifac, ivar, 3) = rugd
+!         For other scalars, thermal roughness
+!           rcodcl(ifac, ivar, 3) = rugt
+
+
+!      Note that if the user assigns a value to itypfb equal to
+!       ientre, isolib, isymet, iparoi, or iparug
+!       and does not modify icodcl (zero value by default),
+!       itypfb will define the boundary condition type.
+
+!      To the contrary, if the user prescribes
+!        icodcl(ifac, ivar) (nonzero),
+!        the values assigned to rcodcl will be used for the considered
+!        face and variable (if rcodcl values are not set, the default
+!        values will be used for the face and variable, so:
+!                                 rcodcl(ifac, ivar, 1) = 0.d0
+!                                 rcodcl(ifac, ivar, 2) = rinfin
+!                                 rcodcl(ifac, ivar, 3) = 0.d0)
+!        Especially, we may have for example:
+!        -> set itypfb(ifac, iphas) = iparoi
+!        which prescribes default wall conditions for all variables at
+!        face ifac,
+!        -> and define IN ADDITION for variable ivar on this face
+!        specific conditions by specifying
+!        icodcl(ifac, ivar) and the 3 rcodcl values.
+
+
+!      The user may also assign to itypfb a value not equal to
+!       ientre, isolib, isymet, iparoi, iparug, iindef
+!       but greater than or equal to 1 and less than or equal to
+!       ntypmx (see values in param.h) to distinguish
+!       groups or colors in other subroutines which are specific
+!       to the case and in which itypfb is accessible.
+!       In this case though it will be necessary to
+!       prescribe boundary conditions by assigning values to
+!       icodcl and to the 3 rcodcl fields (as the value of itypfb
+!       will not be predefined in the code).
+
+
+! Consistency rules
+! =================
+
+!       A few consistency rules between 'icodcl' codes for
+!         variables with non-standard boundary conditions:
+
+!           Codes for velocity components must be identical
+!           Codes for Rij components must be identical
+!           If code (velocity or Rij) = 4
+!             we must have code (velocity and Rij) = 4
+!           If code (velocity or turbulence) = 5
+!             we must have code (velocity and turbulence) = 5
+!           If code (velocity or turbulence) = 6
+!             we must have code (velocity and turbulence) = 6
+!           If scalar code (except pressure or fluctuations) = 5
+!             we must have velocity code = 5
+!           If scalar code (except pressure or fluctuations) = 6
+!             we must have velocity code = 6
+
+
+! Remarks
+! =======
+
+!       Caution: to prescribe a flux (nonzero) to Rij,
+!                the viscosity to take into account is viscl
+!                even if visct exists (visct=rho cmu k2/epsilon)
+
+!       We have the ordering array for boundary faces from the
+!           previous time step (except for the fist time step,
+!           where 'itrifb' has not been set yet).
+!       The array of boundary face types 'itypfb' has been
+!           reset before entering the subroutine.
+
+
+!       Note how to access some variables:
+
+! Cell values
+!               Let         iel = ifabor(ifac)
+
+! * Density                         phase iphas, cell iel:
+!                  propce(iel, ipproc(irom(iphas)))
+! * Dynamic molecular viscosity     phase iphas, cell iel:
+!                  propce(iel, ipproc(iviscl(iphas)))
+! * Turbulent viscosity   dynamique phase iphas, cell iel:
+!                  propce(iel, ipproc(ivisct(iphas)))
+! * Specific heat                   phase iphas, cell iel:
+!                  propce(iel, ipproc(icp(iphasl))
+! * Diffusivity: lambda          scalaire iscal, cell iel:
+!                  propce(iel, ipproc(ivisls(iscal)))
+
+! Boundary face values
+
+! * Density                        phase iphas, boundary face ifac :
+!                  propfb(ifac, ipprob(irom(iphas)))
+! * Mass flow relative to variable ivar, boundary face ifac:
+!      (i.e. the mass flow used for convecting ivar)
+!                  propfb(ifac, pprob(ifluma(ivar )))
+! * For other values                  at boundary face ifac:
+!      take as an approximation the value in the adjacent cell iel
+!      i.e. as above with iel = ifabor(ifac).
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! --> ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! izfppp           ! te ! --> ! numero de zone de la face de bord              !
-! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2 ou                !
-!                  !    !     !  hauteur de rugosite (m) si icodcl=6           !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! tab de trav                                    !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
+! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common Blocks
 !===============================================================================
 
 include "paramx.h"
@@ -551,7 +519,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! LOCAL VARIABLES
 
 integer          idebia, idebra
 integer          ifac, iphas, izone, ii
@@ -562,39 +530,11 @@ double precision xkent, xeent
 
 !===============================================================================
 
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
-!===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
-!===============================================================================
-
-if(1.eq.1) then
-  write(nfecra,9001)
-  call csexit (1)
-  !==========
-endif
-
- 9001 format(                                                           &
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DE L''ENTREE DES COND. LIM.      ',/,&
-'@    =========                                               ',/,&
-'@     MODULE COMBUSTION GAZ MODELE CHIMIE TROIS POINTS       ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR usd3pc DOIT ETRE COMPLETE',/,&
-'@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 
 
 !===============================================================================
-! 1.  INITIALISATIONS
+! 1.  INITIALISATION
 
 !===============================================================================
 
@@ -604,21 +544,16 @@ idebra = idbra0
 d2s3 = 2.d0/3.d0
 
 !===============================================================================
-! 2.  REMPLISSAGE DU TABLEAU DES CONDITIONS LIMITES
-!       ON BOUCLE SUR LES FACES DE BORD
-!         ON DETERMINE LA FAMILLE ET SES PROPRIETES
-!           ON IMPOSE LA CONDITION LIMITE
-
-!          IMPOSER ICI LES CONDITIONS LIMITES SUR LES FACES DE BORD
-
-!          INTERVENTION UTLISATEUR
+! 2.  Assign boundary conditions to boundary faces here
 
+!     We may use selection criteria to filter boundary case subsets
+!       Loop on faces from a subset
+!         Set the boundary condition for each face
 !===============================================================================
 
 iphas = 1
 
-! ---- Facette de type entree correspondant
-!      a une entree de carburant
+!   Definition of a fuel flow inlet for each face of colour 11
 
 CALL GETFBR('11',NLELT,LSTELT)
 !==========
@@ -627,54 +562,41 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!   Type de condition aux limites pour les variables standard
+!   Type of pre-defined boundary condidition (see above)
   itypfb(ifac,iphas) = ientre
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 1
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone
   izfppp(ifac) = izone
 
+!   Indicating the inlet as a fuel flow inlet
   ientfu(izone) = 1
-!      - Debit en kg/s
+
+!   The incoming fuel flow refers to:
+!   a) a massflow rate   -> iqimp()  = 1
   iqimp(izone)  = 1
   qimp(izone)   = 2.62609d-4 / 72.d0
-!      - Temperature en K
-  tinfue        = 436.d0
-
-! ------ Si on impose une entree a debit impose
-!        Alors l'utilisateur donne donc ici uniquement
-!              la direction du vecteur vitesse
-
+!
+!   b) an inlet velocity -> iqimp()  = 0
   rcodcl(ifac,iu(iphas),1) = 0.d0
   rcodcl(ifac,iv(iphas),1) = 0.d0
   rcodcl(ifac,iw(iphas),1) = 21.47d0
-
-! ------ Traitement de la turbulence
-
-!        La turbulence est calculee par defaut si ICALKE different de 0
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference adaptes a l'entree courante si ICALKE = 1
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference et de l'intensite turvulente
-!            adaptes a l'entree courante si ICALKE = 2
-
-!        Choix pour le calcul automatique ICALKE = 1 ou 2
+! ATTENTION: If iqimp()  = 1 the direction vector of the massfow has
+!            to begiven here.
+!
+!   Inlet Temperature in K
+  tinfue        = 436.d0
+!
+!   Boundary conditions of turbulence
   icalke(izone) = 1
-!        Saisie des donnees
-  dh(izone)     = 0.032d0
-  xintur(izone) = 0.d0
-
-! Exemple de cas ou ICALKE(IZONE) = 0 : DEBUT
-!    Eliminer ces lignes pour la clarte si on a fait le choix ICALKE(IZONE) = 1
+!
+!    - If ICALKE = 0 the boundary conditions of turbulence at
+!      the inlet are calculated as follows:
 
   if(icalke(izone).eq.0) then
 
-!         Calcul de k et epsilon en entree (XKENT et XEENT) a partir
-!           l'intensite turbulente et de lois standards en conduite
-!           circulaire (leur initialisation est inutile mais plus
-!           propre)
     uref2 = rcodcl(ifac,iu(iphas),1)**2                           &
            +rcodcl(ifac,iv(iphas),1)**2                           &
            +rcodcl(ifac,iw(iphas),1)**2
@@ -687,7 +609,6 @@ do ilelt = 1, nlelt
       ( uref2, xintur(izone), dh(izone), cmu, xkappa,             &
         xkent, xeent )
 
-!     (ITUTYR est un indicateur qui vaut ITURB/10)
     if    (itytur(iphas).eq.2) then
 
       rcodcl(ifac,ik(iphas),1)  = xkent
@@ -718,29 +639,21 @@ do ilelt = 1, nlelt
     endif
 
   endif
-! Exemple de cas ou ICALKE(IZONE) = 0 : FIN
-
-! ------ Traitement des scalaires physiques particulieres
-!        Ils sont traites automatiquement
-
-
-! ------ Traitement des scalaires utilisateurs
-
-! Exemple : On traite les scalaires rattaches a la phase courante : DEBUT
-!     Eliminer ces lignes pour la clarte s'il n'y en a pas
-  if ( (nscal-nscapp).gt.0 ) then
-    do ii = 1, (nscal-nscapp)
-      if(iphsca(ii).eq.iphas) then
-        rcodcl(ifac,isca(ii),1) = 1.d0
-      endif
-    enddo
-  endif
-! Exemple : On traite les scalaires rattaches a la phase courante : FIN
+!
+!    - If ICALKE = 1 the boundary conditions of turbulence at
+!      the inlet refer to both, a hydraulic diameter and a
+!      reference velocity given in usini1.f90.
+!
+  dh(izone)     = 0.032d0
+!
+!    - If ICALKE = 2 the boundary conditions of turbulence at
+!      the inlet refer to a turbulence intensity.
+!
+  xintur(izone) = 0.d0
 
 enddo
 
-! ---- Facette de type entree correspondant
-!      a une entree d'oxydant
+!   Definition of an air flow inlet for each face of colour 21
 
 CALL GETFBR('21',NLELT,LSTELT)
 !==========
@@ -749,54 +662,97 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!   Type de condition aux limites pour les variables standard
+!   Type of pre-defined boundary condidition (see above)
   itypfb(ifac,iphas) = ientre
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 2
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone
   izfppp(ifac) = izone
 
+!   Indicating the inlet as a air flow inlet
   ientox(izone) = 1
-!      - Debit en kg/s
+!   The inflowing fuel flow refers to:
+!   a) a massflow rate   -> iqimp()  = 1
   iqimp(izone)  = 1
   qimp(izone)   = 4.282d-3 / 72.d0
-!      - Temperature en K
-  tinoxy        = 353.d0
-
-! ------ Si on impose une entree a debit impose
-!        Alors l'utilisateur donne donc ici uniquement
-!              la direction du vecteur vitesse
-
+!
+!   b) an inlet velocity -> iqimp()  = 0
   rcodcl(ifac,iu(iphas),1) = 0.d0
   rcodcl(ifac,iv(iphas),1) = 0.d0
   rcodcl(ifac,iw(iphas),1) = 0.097d0
+! ATTENTION: If iqimp()  = 1 the direction vector of the massfow has
+!            to be given here.
+!
+!   Inlet Temperature in K
+  tinoxy        = 353.d0
 
-! ------ Traitement de la turbulence
+!   Boundary conditions of turbulence
+  icalke(izone) = 1
+!
+!    - If ICALKE = 0 the boundary conditions of turbulence at
+!      the inlet are calculated as follows:
 
-!        La turbulence est calculee par defaut si ICALKE different de 0
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference adaptes a l'entree courante si ICALKE = 1
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference et de l'intensite turvulente
-!            adaptes a l'entree courante si ICALKE = 2
+  if(icalke(izone).eq.0) then
 
-!        Choix pour le calcul automatique ICALKE = 1 ou 2
-  icalke(izone) = 1
-!        Saisie des donnees
-  dh(izone)     = 0.218d0
-  xintur(izone) = 0.d0
+    uref2 = rcodcl(ifac,iu(iphas),1)**2                           &
+           +rcodcl(ifac,iv(iphas),1)**2                           &
+           +rcodcl(ifac,iw(iphas),1)**2
+    uref2 = max(uref2,1.d-12)
+    xkent  = epzero
+    xeent  = epzero
 
+    call keenin                                                   &
+    !==========
+      ( uref2, xintur(izone), dh(izone), cmu, xkappa,             &
+        xkent, xeent )
 
-! ------ Traitement des scalaires physiques particulieres
-!        Ils sont traites automatiquement
+    if    (itytur(iphas).eq.2) then
+
+      rcodcl(ifac,ik(iphas),1)  = xkent
+      rcodcl(ifac,iep(iphas),1) = xeent
 
-! ------ Traitement des scalaires utilisateurs
+    elseif(itytur(iphas).eq.3) then
 
+      rcodcl(ifac,ir11(iphas),1) = d2s3*xkent
+      rcodcl(ifac,ir22(iphas),1) = d2s3*xkent
+      rcodcl(ifac,ir33(iphas),1) = d2s3*xkent
+      rcodcl(ifac,ir12(iphas),1) = 0.d0
+      rcodcl(ifac,ir13(iphas),1) = 0.d0
+      rcodcl(ifac,ir23(iphas),1) = 0.d0
+      rcodcl(ifac,iep(iphas),1)  = xeent
+
+    elseif (iturb(iphas).eq.50) then
+
+      rcodcl(ifac,ik(iphas),1)   = xkent
+      rcodcl(ifac,iep(iphas),1)  = xeent
+      rcodcl(ifac,iphi(iphas),1) = d2s3
+      rcodcl(ifac,ifb(iphas),1)  = 0.d0
+
+    elseif (iturb(iphas).eq.60) then
+
+      rcodcl(ifac,ik(iphas),1)   = xkent
+      rcodcl(ifac,iomg(iphas),1) = xeent/cmu/xkent
+
+    endif
+
+  endif
+!
+!    - If ICALKE = 1 the boundary conditions of turbulence at
+!      the inlet refer to both, a hydraulic diameter and a
+!      reference velocity given in usini1.f90.
+!
+  dh(izone)     = 0.218d0
+!
+!    - If ICALKE = 2 the boundary conditions of turbulence at
+!      the inlet refer to a turbulence intensity.
+!
+  xintur(izone) = 0.d0
+!
 enddo
 
-! --- On impose en couleur 51 et 59 une paroi laterale
+!  Definition of a wall for each face of colour 51 up to 59
 
 CALL GETFBR('51 to 59',NLELT,LSTELT)
 !==========
@@ -805,23 +761,19 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          PAROI : DEBIT NUL (FLUX NUL POUR LA PRESSION)
-!                  FROTTEMENT POUR LES VITESSES (+GRANDEURS TURB)
-!                  FLUX NUL SUR LES SCALAIRES
-
-!   Type de condition aux limites pour les variables standard
+!   Type of pre-defined boundary condidition (see above)
   itypfb(ifac,iphas)   = iparoi
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 3
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone
   izfppp(ifac) = izone
 
 enddo
 
 
-! --- On impose en couleur 91 une sortie
+!  Definition of an exit for each face of colour 91
 
 CALL GETFBR('91',NLELT,LSTELT)
 !==========
@@ -830,22 +782,19 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          SORTIE : FLUX NUL VITESSE ET TEMPERATURE, PRESSION IMPOSEE
-!            Noter que la pression sera recalee a P0
-!                sur la premiere face de sortie libre (ISOLIB)
-
-!   Type de condition aux limites pour les variables standard
+!   Type of pre-defined boundary condidition (see above)
   itypfb(ifac,iphas)   = isolib
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 4
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone
   izfppp(ifac) = izone
 
 enddo
 
-! --- On impose en couleur 41 et 4 une symetrie
+!  Definition of symmetric boundary conditions for each
+!  face of colour 41 and 4.
 
 CALL GETFBR('41 or 4',NLELT,LSTELT)
 !==========
@@ -854,23 +803,21 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          SYMETRIES
-
-!   Type de condition aux limites pour les variables standard
+!   Type of pre-defined boundary condidition (see above)
   itypfb(ifac,iphas)   = isymet
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 5
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone
   izfppp(ifac) = izone
 
 enddo
 
 
 !----
-! FIN
+! END
 !----
 
 return
-end
+end subroutine
diff --git a/users/cogz/usd3pi.f90 b/users/cogz/usd3pi.f90
index 0eaf9d1..f33cf46 100644
--- a/users/cogz/usd3pi.f90
+++ b/users/cogz/usd3pi.f90
@@ -1,12 +1,12 @@
 !-------------------------------------------------------------------------------
 
-!VERS
-
+!                      Code_Saturne version 2.0.0-beta2
+!                      --------------------------
 
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine usd3pi                               &
+subroutine usd3pi &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -44,152 +44,196 @@
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! PURPOSE :
 ! --------
-
-! INITIALISATION DES VARIABLES DE CALCUL
-!    POUR LA PHYSIQUE PARTICULIERE :
-!        COMBUSTION GAZ - FLAMME DE DIFFUSION CHIMIE 3 POINTS
-!    PENDANT DE USINIV.F
-
-! Cette routine est appelee en debut de calcul (suite ou non)
-!     dans la boucle en temps avant la resolution des variables
-!     scalaires,
-
-! Elle permet d'INITIALISER ou de MODIFIER (pour les calculs suite)
-!     les variables de calcul.
-
-
-! On a repris a titre d'exemple dans cette routine utilisateur
-!     l'initialisation choisie par defaut.
-
-
-! Les proprietes physiques sont accessibles dans le tableau
-!     PROPCE (prop au centre), PROPFA (aux faces internes),
-!     PROPFB (prop aux faces de bord)
-!     Ainsi,
-!      PROPCE(IEL,IPPROC(IROM  (IPHAS))) designe ROM   (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISCL(IPHAS))) designe VISCL (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(ICP   (IPHAS))) designe CP    (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISLS(ISCAL))) designe VISLS (IEL ,ISCAL)
-
-!      PROPFA(IFAC,IPPROF(IFLUMA(IVAR ))) designe FLUMAS(IFAC,IVAR)
-
-!      PROPFB(IFAC,IPPROB(IROM  (IPHAS))) designe ROMB  (IFAC,IPHAS)
-!      PROPFB(IFAC,IPPROB(IFLUMA(IVAR ))) designe FLUMAB(IFAC,IVAR)
-
-! LA MODIFICATION DES PROPRIETES PHYSIQUES (ROM, VISCL, VISCLS, CP)
-!     SE FERA EN STANDARD DANS LE SOUS PROGRAMME PPPHYV
-!     ET PAS ICI
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Initialisation of the transported variables of the 3-point
+! chemistry combustion model. The latter ones are used to calculate
+! diffusion flame properties by applying detailed thermochemistry data.
+!
+! FEATURES:
+! --------
+! - This subroutine is called at the beginning of both a restart-calculation
+!   and a new calculation.
+! - The user is able to modify the initial conditions of the tranported
+!   variables.
+! - All variables of state deducible from the transported variables, as well as
+!   the detailed thermochemistry data (JANAF-table) are located in the array named
+!
+!   a) PROPCE (Properties in the cell center).
+!   b) PROPFA (Properties at internal faces).
+!   c) PROPFB (Properties at boundary faces).
+!
+!   Examples:
+!   PROPCE(IEL,IPPROC(IROM  (IPHAS))) =  IROM of cell IEL of phase IPHAS
+!   PROPCE(IEL,IPPROC(ICP   (IPHAS))) =  ICP  of cell IEL of phase IPHAS
+!
+!   PROPFA(IFAC,IPPROF(IFLUMA(IVAR )))=  FLUMAS of IVAR at the internal face IFAC
+!
+!   PROPFB(IFAC,IPPROB(IROM  (IPHAS)))=  ROMB of IPHAS at the boundary face IFAC
+!   PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))=  FLUMAB of IVAR at the boundary face IFAC
+
+!   All cells can be identified by using the subroutine 'getcel'.
+!    Syntax of getcel:
+!     getcel(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+
+!       string may contain:
+!       - references to colors (ex.: 1, 8, 26, ...
+!       - references to groups (ex.: inlet, group1, ...)
+!       - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!       These criteria may be combined using logical operators
+!       ('and', 'or') and parentheses.
+!       Example: '1 and (group2 or group3) and y < 1' will select boundary
+!       faces of color 1, belonging to groups 'group2' or 'group3' and
+!       with face center coordinate y less than 1.
+!
+!   All boundary faces may be identified using the 'getfbr' subroutine.
+!    Syntax of getfbr:
+!     getfbr(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
+!
+!   All internam faces may be identified using the 'getfac' subroutine.
+!    Syntax of getfac:
+!     getfac(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
-! rtp              ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! tab de trav                                    !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
+! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     COMMON BLOCKS
 !===============================================================================
 
 include "paramx.h"
@@ -233,7 +277,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! LOCAL VARIABLES
 
 integer          idebia, idebra
 integer          iel, igg, iphas
@@ -243,22 +287,15 @@ double precision coefg(ngazgm)
 !===============================================================================
 
 
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
-!===============================================================================
-
-if(1.eq.1) return
 
 !===============================================================================
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
-
-!===============================================================================
-! 0. IMPRESSION DE CONTROLE
+! 0. CONTROL OUTPUT
 !===============================================================================
 
 write(nfecra,9001)
 
 !===============================================================================
-! 1.  INITIALISATION VARIABLES LOCALES
+! 1.  INITIALISATION OF LOCAL VARIABLES
 !===============================================================================
 
 idebia = idbia0
@@ -272,21 +309,20 @@ iphas    = 1
 
 
 !===============================================================================
-! 2. INITIALISATION DES INCONNUES :
-!      UNIQUEMENT SI ON NE FAIT PAS UNE SUITE
+! 2. INITIALISATION OF TRANSPORTED VARIABLES
 !===============================================================================
 
 if ( isuite.eq.0 ) then
 
   do iel = 1, ncel
 
-! ----- Moyenne et variance du taux de melange
-
+! ----- Mean Mixture Fraction
     rtp(iel,isca(ifm))   = fs(1)
-    rtp(iel,isca(ifp2m)) = zero
 
-! ----- Enthalpie
+! ----- Variance of Mixture Fraction
+    rtp(iel,isca(ifp2m)) = zero
 
+! ----- Enthalpy
     if ( ippmod(icod3p).eq.1 ) then
       rtp(iel,isca(ihm)) = hinfue*fs(1)+hinoxy*(1.d0-fs(1))
     endif
@@ -302,14 +338,14 @@ endif
 
  9001 format(                                                           &
 '                                                             ',/,&
-'  usd3pi : Initialisation des variables par l''utilisateur   ',/,&
+'  usd3pi : user defined initialisation of variables          ',/,&
 '                                                             ',/)
 
 
 !----
-! FIN
+! END
 !----
 
 
 return
-end
+end subroutine
diff --git a/users/cogz/usebu1.f90 b/users/cogz/usebu1.f90
index 17aa0a7..d666e09 100644
--- a/users/cogz/usebu1.f90
+++ b/users/cogz/usebu1.f90
@@ -1,12 +1,12 @@
 !-------------------------------------------------------------------------------
 
-!VERS
-
+!                      Code_Saturne version 2.0.0-beta2
+!                      --------------------------
 
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,36 +28,24 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine usebu1
-!================
-
-
+subroutine usebu1
 !===============================================================================
-!  FONCTION  :
-!  ---------
-
-!         INIT DES OPTIONS DES VARIABLES POUR
-!                  POUR LA COMBUSTION
-!           FLAMME DE PREMELANGE : MODELE EBU
-!   EN COMPLEMENT DE CE QUI A DEJA ETE FAIT DANS USINI1
-
-!-------------------------------------------------------------------------------
-! Arguments
-!__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
-!__________________!____!_____!________________________________________________!
-!__________________!____!_____!________________________________________________!
-
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!  PURPOSE:
+!  --------
+!  1. Variable Output
+!     a. Transported Variables
+!     b. Variables of State; User definied Variables
+!
+!  2. Additional Calculation Options
+!     a. Density Relaxation
+!
+!  3. Physical Constants
+!     a.Dynamic Diffusion Coefficient
 !===============================================================================
-
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common Blocks
 !===============================================================================
 
 include "paramx.h"
@@ -81,53 +69,22 @@ include "radiat.h"
 integer          ipp
 
 !===============================================================================
-
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
-!===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
 !===============================================================================
-
-if(1.eq.1) then
-  write(nfecra,9000)
-  call csexit (1)
-endif
-
- 9000 format(                                                           &
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES               ',/,&
-'@    =========                                               ',/,&
-'@     MODULE COMBUSTION GAZ MODELE EBU :                     ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR usebu1 DOIT ETRE COMPLETE',/,&
-'@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
+! 1. Variable Output
 !===============================================================================
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
-
-
+!    Function                             |  Key Word |   Indicator
+!    ---------------------------------------------------------------
+!    Variable Output in the result file   | ICHRVR()  | yes= 1  ; no=0
+!    Variable Output in the listing file  | ILISVR()  | yes= 1  ; no=0
+!    Output of the temporal evolution of  | IHISVR()  | yes=-1* ; no=0
+!    the variable at monitoring points    |           |
+!    -----------------------------------------------------------------
+!    *: Output for all monitoring points defined in subroutine usini1.f90
+!
 !===============================================================================
-! 1. VARIABLES TRANSPORTEES
+! a. Transported Variables
 !===============================================================================
-
-!  Sortie chrono, suivi listing, sortie histo
-!     Si l'on n'affecte pas les tableaux suivants,
-!     les valeurs par defaut seront utilisees
-
-!       ICHRVR( ) = sortie chono (oui 1/non 0)
-!       ILISVR( ) = suivi listing (oui 1/non 0)
-!       IHISVR( ) = sortie historique (nombre de sondes et numeros)
-!       si IHISVR(.,1)  = -1 sortie sur toutes les sondes definies
-!                            dans usini1
-
-
-! ---- Fraction massique de gaz frais
+! ---- Mass fraction of unburned (or fresh)  gas
 if ( ippmod(icoebu).ge.0 ) then
   ipp = ipprtp(isca(iygfm))
   ichrvr(ipp)  = 1
@@ -135,7 +92,7 @@ if ( ippmod(icoebu).ge.0 ) then
   ihisvr(ipp,1)= -1
 endif
 
-! ---- Taux de melange
+! ---- Mean Mixture Fraction
 if ( ippmod(icoebu).ge.2 ) then
   ipp = ipprtp(isca(ifm))
   ichrvr(ipp)  = 1
@@ -144,7 +101,7 @@ if ( ippmod(icoebu).ge.2 ) then
 endif
 
 
-! ---- Enthalpie
+! ---- Enthalpy
 if ( ippmod(icoebu).eq.1 .or.                                     &
      ippmod(icoebu).eq.3      ) then
   ipp = ipprtp(isca(ihm))
@@ -155,7 +112,7 @@ endif
 
 
 !===============================================================================
-! 2. VARIABLES ALGEBRIQUES OU D'ETAT
+! b. Variables of State; User definied Variables
 !===============================================================================
 
 ! ---- Temperature
@@ -164,43 +121,43 @@ ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-! ---- Fraction massique du combustible
+! ---- Mean mass fraction of Fuel:    YM_Fuel
 ipp = ipppro(ipproc(iym(1)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-! ---- Fraction massique de l'oxydant
+! ---- Mean mass fraction of Oxidizer : YM_Oxy
 ipp = ipppro(ipproc(iym(2)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-! ---- Fraction massique des produits
+! ---- Mean mass fraction of Product: YM_Prod
 ipp = ipppro(ipproc(iym(3)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-! ---- Modele EBU AVEC RAYONNEMENT
+! ---- Premixed flame including gas radiation
 
 if ( iirayo.gt.0 ) then
 
-! ---- Coeff d'absorption
+! ---- Absorption Coefficient
   ipp = ipppro(ipproc(ickabs))
   NOMVAR(IPP)   = 'KABS'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-! ---- Terme T^4
+! ---- Term T^4
   ipp = ipppro(ipproc(it4m))
   NOMVAR(IPP)   = 'TEMP4'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-! ---- Terme T^3
+! ---- Term T^3
   ipp = ipppro(ipproc(it3m))
   NOMVAR(IPP)   = 'TEMP3'
   ichrvr(ipp)   = 0
@@ -211,31 +168,30 @@ endif
 
 
 !===============================================================================
-! 3. OPTIONS DE CALCUL
+! 2. Additional Calculation Options
 !===============================================================================
 
-! --> Coefficient de relaxation de la masse volumique
+! -->  Density Relaxation
 !      RHO(n+1) = SRROM * RHO(n) + (1-SRROM) * RHO(n+1)
 
 srrom = 0.8d0
 
 
 !===============================================================================
-! 4. CONSTANTES PHYSIQUES
+! 3. Physical Constants
 !===============================================================================
 
-! --> Viscosite laminaire associee au scalaire enthalpie
-!       DIFTL0 (diffusivite dynamique en kg/(m s))
+!       DIFTL0: Dynamic Diffusion Coefficient (kg/(m s))
 diftl0 = 4.25d-5
 
-! --> Constante du modele EBU
+!       cebu: EBU-model constant
 
-cebu   = 2.5d0
+ cebu   = 2.5d0
 
 
 !----
-! FIN
+! END
 !----
 
 return
-end
+end subroutine
diff --git a/users/cogz/usebuc.f90 b/users/cogz/usebuc.f90
index 8c5e2f8..22072b9 100644
--- a/users/cogz/usebuc.f90
+++ b/users/cogz/usebuc.f90
@@ -1,12 +1,12 @@
 !-------------------------------------------------------------------------------
 
-!VERS
-
+!                      Code_Saturne version 2.0.0-beta2
+!                      --------------------------
 
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,458 +47,425 @@ subroutine usebuc &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
-
-!    ROUTINE UTILISATEUR POUR PHYSIQUE PARTICULIERE
-!               COMBUSTION GAZ MODELE EBU
-!    REMPLISSAGE DU TABLEAU DE CONDITIONS AUX LIMITES
-!    (ICODCL,RCODCL) POUR LES VARIABLES INCONNUES
-!    PENDANT USCLIM.F
+! Purpose:
+! -------
 
+!    User subroutine.
 
+!    Fill boundary conditions arrays (icodcl, rcodcl)
+!    for unknown variables.
 
 
-! INTRODUCTION
+! Introduction
 ! ============
 
-! On donne ici les conditions aux limites par face de bord.
+! Here we define boundary conditions on a per-face basis.
 
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
+! Boundary faces may be identified using the 'getfbr' subroutine.
 
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
+!  getfbr(string, nelts, eltlst) :
+!  - string is a user-supplied character string containing
+!    selection criteria;
+!  - nelts is set by the subroutine. It is an integer value
+!    corresponding to the number of boundary faces verifying the
+!    selection criteria;
+!  - lstelt is set by the subroutine. It is an integer array of
+!    size nelts containing the list of boundary faces verifying
+!    the selection criteria.
 
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+!  string may contain:
+!  - references to colors (ex.: 1, 8, 26, ...
+!  - references to groups (ex.: inlet, group1, ...)
+!  - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!  These criteria may be combined using logical operators
+!  ('and', 'or') and parentheses.
+!  Example: '1 and (group2 or group3) and y < 1' will select boundary
+!  faces of color 1, belonging to groups 'group2' or 'group3' and
+!  with face center coordinate y less than 1.
 
 
-! TYPE DE CONDITIONS AUX LIMITES
-! ==============================
 
-! On peut affecter les conditions aux limites de deux manieres.
+! Boundary condition types
+! ========================
 
+! Boundary conditions may be assigned in two ways.
 
-!    Pour les conditions "standard" :
-!    --------------------------------
 
-!     (entree, sortie libre, paroi, symetrie), on donne un code
-!     stocke dans le tableau ITYPFB (dimensionne au nombre de
-!     faces de bord,nombre de phases). Ce code sera ensuite
-!     utilise par un sous-programme non utilisateur pour affecter
-!     les conditions correspondantes (les scalaires, en
-!     particulier, recevront alors les conditions de la phase a
-!     laquelle ils sont associes). Ainsi :
+!    For "standard" boundary conditions:
+!    -----------------------------------
 
-!     Code      |  Type de bord
-!     -------------------------
-!      IENTRE   |   Entree
-!      ISOLIB   |   Sortie libre
-!      ISYMET   |   Symetrie
-!      IPAROI   |   Paroi (lisse)
-!      IPARUG   |   Paroi rugueuse
+!     (inlet, free outlet, wall, symmetry), we define a code
+!     in the 'itypfb' array (of dimensions number of boundary faces,
+!     number of phases). This code will then be used by a non-user
+!     subroutine to assign the following conditions (scalars in
+!     particular will receive the conditions of the phase to which
+!     they are assigned). Thus:
 
-!     Les entiers IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!     sont affectes par ailleurs (include param.h). Leur valeur
-!     est superieure ou egale a 1 et
-!         inferieure ou egale a NTYPMX (valeur fixee dans paramx.h)
+!     Code      |  Boundary type
+!     --------------------------
+!      ientre   |   Inlet
+!      isolib   |   Free outlet
+!      isymet   |   Symmetry
+!      iparoi   |   Wall (smooth)
+!      iparug   |   Rough wall
 
+!     Integers ientre, isolib, isymet, iparoi, iparug
+!     are defined elsewhere (param.h). Their value is greater than
+!     or equal to 1 and less than or equal to ntypmx
+!     (value fixed in paramx.h)
 
 
-!     En outre, il faut donner certaines valeurs :
+!     In addition, some values must be defined:
 
 
-!     - Entree (plus precisement entree/sortie a debit impose, car le debit
-!               peut etre impose sortant) :
+!     - Inlet (more precisely, inlet/outlet with prescribed flow, as
+!              the flow may be prescribed as an outflow):
 
-!       -> Conditions de Dirichlet sur les variables
-!         autres que la pression obligatoire si le flux est entrant,
-!         optionnelle si le flux est sortant (le code affecte flux nul
-!         si aucun Dirichlet n'est specifie) ; ainsi
-!         en face IFAC, sur la variable IVAR : RCODCL(IFAC,IVAR,1)
+!       -> Dirichlet conditions on variables
+!         other than pressure are mandatory if the flow is incoming,
+!         optional if the flow is outgoing (the code assigns 0 flux
+!         if no Dirichlet is specified); thus,
+!         at face 'ifac', for the variable 'ivar': rcodcl(ifac, ivar, 1)
 
 
-!     - Paroi lisse : (= solide impermeable, avec frottement lisse)
+!     - Smooth wall: (= impermeable solid, with smooth friction)
 
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 5
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
+!       -> Velocity value for sliding wall if applicable
+!         at face ifac, rcodcl(ifac, iu, 1)
+!                       rcodcl(ifac, iv, 1)
+!                       rcodcl(ifac, iw, 1)
+!       -> Specific code and prescribed temperature value
+!         at wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 5
+!                       rcodcl(ifac, ivar, 1) = prescribed temperature
+!       -> Specific code and prescribed flux value
+!         at wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 3
+!                       rcodcl(ifac, ivar, 3) = prescribed flux
 !                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-
-!     - Paroi rugueuse : (= solide impermeable, avec frottement rugueux)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Valeur de la hauteur de rugosite dynamique a specifier dans
-!                       RCODCL(IFAC,IU,3) (valeur pour IV et IW non utilisee)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi rugueuse s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 6
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!                       RCODCL(IFAC,IVAR,3) = Hauteur de rugosite thermique
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
+!        Note that the default condition for scalars
+!         (other than k and epsilon) is homogeneous Neumann.
+
+
+!     - Rough wall: (= impermeable solid, with rough friction)
+
+!       -> Velocity value for sliding wall if applicable
+!         at face ifac, rcodcl(ifac, iu, 1)
+!                       rcodcl(ifac, iv, 1)
+!                       rcodcl(ifac, iw, 1)
+!       -> Value of the dynamic roughness height to specify in
+!                       rcodcl(ifac, iu, 3) (value for iv et iw not used)
+!       -> Specific code and prescribed temperature value
+!         at rough wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 6
+!                       rcodcl(ifac, ivar, 1) = prescribed temperature
+!                       rcodcl(ifac, ivar, 3) = dynamic roughness height
+!       -> Specific code and prescribed flux value
+!         at rough wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 3
+!                       rcodcl(ifac, ivar, 3) = prescribed flux
 !                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-!     - Symetrie (= paroi impermeable avec glissement) :
-
-!       -> Rien a preciser
-
-
-!     - Sortie libre (plus precisement entree/sortie libre a pression imposee)
-
-!       -> Rien a preciser pour la pression et la vitesse
-!          Pour les scalaires et grandeurs turbulentes, une valeur de Dirichlet
-!            peut etre specifiee de maniere optionnelle. Le comportement est le
-!            suivant :
-!              * la pression est toujours traitee en Dirichlet
-!              * si flux de masse entrant :
-!                  on retient la vitesse a l'infini
-!                  condition de Dirichlet pour les scalaires et grandeurs
-!                    turbulentes (ou flux nul si l'utilisateur n'a pas
-!                    specifie de Dirichlet)
-!                 si flux de masse sortant :
-!                    on impose un flux nul sur la vitesse, les scalaires et
-!                    les grandeurs turbulentes
-
-!       Noter que la pression sera recalee a P0
-!           sur la premiere face de sortie libre trouvee
-
-
-!    Pour les conditions "non standard" :
-!    ------------------------------------
-
-!     Autres que (entree, sortie libre, paroi, symetrie), on donne
-!      - d'une part, pour chaque face :
-!        -> une valeur de ITYPFB admissible
-!           ie superieure ou egale a 1 et inferieure ou egale a
-!           NTYPMX (voir sa valeur dans paramx.h).
-!           Les valeurs predefinies dans paramx.h
-!           IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG sont dans cet
-!           intervalle et il est preferable de ne pas affecter
-!           inconsidrement et par hasard a ITYPFB la valeur
-!           d'un de ces entiers. Pour eviter cela, on peut
-!           utiliser IINDEF si l'on souhaite eviter de verifier
-!           les valeurs dans paramx.h. IINDEF est une valeur
-!           admissible a laquelle n'est attachee aucune condition
-!           limite predefinie.
-!           Noter que le tableau ITYPFB est
-!           reinitialise a chaque pas de temps a la valeur
-!           non admissible 0. Si on oublie de modifier ITYPFB pour
-!           une face, le code s'arretera.
-
-!      - et d'autre part pour chaque face et chaque variable :
-!        -> un code     ICODCL(IFAC,IVAR)
-!        -> trois reels RCODCL(IFAC,IVAR,1)
-!                       RCODCL(IFAC,IVAR,2)
-!                       RCODCL(IFAC,IVAR,3)
-!     La valeur de ICODCL est prise parmi les suivantes :
-!       1 : Dirichlet      (utilisable pour toute variable)
-!       3 : Neumann        (utilisable pour toute variable)
-!       4 : Symetrie       (utilisable uniquement pour la vitesse et
-!                                   les composantes du tenseur Rij)
-!       5 : Paroi lisse    (utilisable pour toute variable sauf la
-!                                                         pression)
-!       6 : Paroi rugueuse (utilisable pour toute variable sauf la
-!                                                         pression)
-!       9 : Sortie libre   (utilisable uniquement pour la vitesse)
-!     Les valeurs des 3 reels RCODCL sont les suivantes
-!      RCODCL(IFAC,IVAR,1) :
-!         Dirichlet sur la variable        si ICODCL(IFAC,IVAR)=  1
-!         valeur en paroi (defilmnt, temp) si ICODCL(IFAC,IVAR)=  5
-!         La dimension de RCODCL(IFAC,IVAR,1) est celle de la
-!           variable resolue : ex U (vitesse en m/s),
-!                                 T (temperature en degres)
-!                                 H (enthalpie en J/kg)
-!                                 F (scalaire passif en -)
-!      RCODCL(IFAC,IVAR,2) :
-!         coefficient d'echange "exterieur" (entre la valeur
-!                          imposee et la valeur au bord du domaine)
-!                          RINFIN = infini par defaut
-!         Pour les vitesses U,             en kg/(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =            (VISCL+VISCT) / D
-!         Pour la  pression P,             en  s/m          :
-!           RCODCL(IFAC,IVAR,2) =                       DT / D
-!         Pour les temperatures T,         en Watt/(m2 degres) :
-!           RCODCL(IFAC,IVAR,2) = CP*(VISCLS+VISCT/SIGMAS) / D
-!         Pour les enthalpies H,           en kg /(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!              (D a la dimension d'une distance en m)
-
-!      RCODCL(IFAC,IVAR,3) si ICODCL(IFAC,IVAR)<>6 :
-!        Densite de flux (< 0 si gain, n normale orientee vers l'exterieur)
-!                         si ICODCL(IFAC,IVAR)= 3
-!         Pour les vitesses U,             en kg/(m s2) = J :
-!           RCODCL(IFAC,IVAR,3) =           -(VISCL+VISCT) * (GRAD U).n
-!         Pour la  pression P,             en kg/(m2 s)     :
-!           RCODCL(IFAC,IVAR,3) =                      -DT * (GRAD P).n
-!         Pour les temperatures T,         en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =-CP*(VISCLS+VISCT/SIGMAS) * (GRAD T).n
-!         Pour les enthalpies H,           en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD H).n
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD F).n
-
-!      RCODCL(IFAC,IVAR,3) SI ICODCL(IFAC,IVAR)=6 :
-!        Rugosites de la loi rugueuse
-!         Pour les vitesses U, rugosite dynamique
-!           RCODCL(IFAC,IVAR,3) = RUGD
-!         Pour les autres scalaires, rugosite thermique
-!           RCODCL(IFAC,IVAR,3) = RUGT
-
-
-!      Noter bien que si l'utilisateur affecte une valeur a ITYPFB
-!       parmi     IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!       et qu'il ne modifie pas ICODCL (valeur nulle par defaut),
-!       c'est ITYPFB qui imposera la condition limite.
-
-!      Par contre, si l'utilisateur impose
-!        ICODCL(IFAC,IVAR) (non nul),
-!        ce sont alors les valeurs de RCODCL qu'il aura fournies
-!        qui sont retenues pour la face et la variable consideree
-!        (s'il ne precise pas RCODCL, ce sont les valeurs
-!        par defaut qui sont retenues pour la face et
-!        la variable consideree soit :
-!                                 RCODCL(IFAC,IVAR,1) = 0.D0
-!                                 RCODCL(IFAC,IVAR,2) = RINFIN
-!                                 RCODCL(IFAC,IVAR,3) = 0.D0)
-!        En particulier, on peut par exemple
-!        -> donner ITYPFB(IFAC,IPHAS) = IPAROI
-!        qui impose les conditions de paroi par defaut pour toutes
-!        les variables sur la face IFAC,
-!        -> et preciser EN OUTRE pour la variable IVAR sur cette
-!        face IFAC des conditions paarticulieres en imposant
-!        ICODCL(IFAC,IVAR) et les 3 RCODCL.
-
-
-!      L'utilisateur peut egalement affecter a ITYPFB une valeur
-!       non egale a IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG, IINDEF
-!       mais superieure ou egale a 1 et inferieure ou egale a
-!       NTYPMX (voir les valeurs dans param.h) pour reperer
-!       des groupes de couleurs dans d'autres sous programmes
-!       qui lui seraient propres et ou ITYPFB serait disponible.
-!       Dans ce cas cependant, il faudra
-!       imposer les conditions limites en donnant des valeurs a
-!       ICODCL et aux trois RCODCL (puisque la valeur de ITYPFB
-!       ne sera pas predefinie dans le code).
-
-
-! REGLES DE COHERENCE
-! ===================
-
-!       Quelques regles de coherence entre les codes ICODCL
-!         des variables pour les conditions non standard :
-
-!           Les codes des vitesses doivent etre identiques
-!           Les codes des Rij      doivent etre identiques
-!           Si code (vitesse ou Rij) = 4
-!             il faut code (vitesse et Rij) = 4
-!           Si code (vitesse ou turbulence) = 5
-!             il faut code (vitesse et turbulence) = 5
-!           Si code (vitesse ou turbulence) = 6
-!             il faut code (vitesse et turbulence) = 6
-!           Si code scalaire (hormis pression ou fluctuations) = 5
-!             il faut code vitesse = 5
-!           Si code scalaire (hormis pression ou fluctuations) = 6
-!             il faut code vitesse = 6
-
-
-! REMARQUES
-! ==========
-
-!       Attention : pour imposer un flux (non nul) sur les Rij,
-!                   la viscosite a prendre en compte est VISCL
-!                   meme si VISCT existe (VISCT=RHO CMU K2/EPSILON)
-
-
-!       On dispose du tableau de tri des faces de bord au pas
-!           de temps precedent (sauf au premier pas de temps, ou
-!           ITRIFB n'a pas ete renseigne).
-!       Le tableau du type des faces de bord ITYPFB a ete
-!           reinitialise avant d'entrer dans le sous programme.
-
-
-
-!       Noter comment acceder a certaines variables :
-
-! Valeurs aux cellules
-!               Soit        IEL = IFABOR(IFAC)
-
-! * Masse vol                       phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IROM (IPHAS)))
-! * Viscosite moleculaire dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCL(IPHAS)))
-! * Viscosite turbulente  dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCT(IPHAS)))
-! * Chaleur specifique              phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(ICP   (IPHAS)))
-! * Diffusivite lambda           scalaire ISCAL, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISLS(ISCAL)))
-
-! Valeurs aux faces de bord
-
-! * Masse vol                      phase IPHAS, face de bord IFAC :
-!                  PROPFB(IFAC,IPPROB(IROM (IPHAS)))
-! * Flux de masse relatif a la variable  IVAR , face de bord IFAC :
-!      (i.e. le flux de masse servant a la convection de IVAR)
-!                  PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))
-! * Pour les autres grandeurs              a la face de bord IFAC :
-!      prendre pour approximation la valeur dans la cellule  IEL
-!      adjacente i.e. comme plus haut avec IEL = IFABOR(IFAC).
+!        Note that the default condition for scalars
+!         (other than k and epsilon) is homogeneous Neumann.
+
+!     - Symmetry (= impermeable frictionless wall):
+
+!       -> Nothing to specify
+
+
+!     - Free outlet (more precisely free inlet/outlet with prescribed pressure)
+
+!       -> Nothing to prescribe for pressure and velocity
+!          For scalars and turbulent values, a Dirichlet value may optionally
+!            be specified. The behavior is as follows:
+!              * pressure is always handled as a Dirichlet condition
+!              * if the mass flow is inflowing:
+!                  we retain the velocity at infinity
+!                  Dirichlet condition for scalars and turbulent values
+!                    (or zero flux if the user has not specified a
+!                    Dirichlet value)
+!                if the mass flow is outflowing:
+!                  we prescribe zero flux on the velocity, the scalars,
+!                  and turbulent values
+
+!       Note that the pressure will be reset to P0
+!           on the first free outlet face found
+
+
+!    For "non-standard" conditions:
+!    ------------------------------
+
+!     Other than (inlet, free outlet, wall, symmetry), we define
+!      - on one hand, for each face:
+!        -> an admissible 'itypfb' value
+!           (i.e. greater than or equal to 1 and less than or equal to
+!            ntypmx; see its value in paramx.h).
+!           The values predefined in paramx.h:
+!           'ientre', 'isolib', 'isymet', 'iparoi', 'iparug' are in
+!           this range, and it is preferable not to assign one of these
+!           integers to 'itypfb' randomly or in an inconsiderate manner.
+!           To avoid this, we may use 'iindef' if we wish to avoid
+!           checking values in paramx.h. 'iindef' is an admissible
+!           value to which no predefined boundary condition is attached.
+!           Note that the 'itypfb' array is reinitialized at each time
+!           step to the non-admissible value of 0. If we forget to
+!           modify 'typfb' for a given face, the code will stop.
+
+!      - and on the other hand, for each face and each variable:
+!        -> a code             icodcl(ifac, ivar)
+!        -> three real values  rcodcl(ifac, ivar, 1)
+!                              rcodcl(ifac, ivar, 2)
+!                              rcodcl(ifac, ivar, 3)
+!     The value of 'icodcl' is taken from the following:
+!       1: Dirichlet      (usable for any variable)
+!       3: Neumann        (usable for any variable)
+!       4: Symmetry       (usable only for the velocity and
+!                          components of the Rij tensor)
+!       5: Smooth wall    (usable for any variable except for pressure)
+!       6: Rough wall     (usable for any variable except for pressure)
+!       9: Free outlet    (usable only for velocity)
+!     The values of the 3 'rcodcl' components are
+!      rcodcl(ifac, ivar, 1):
+!         Dirichlet for the variable          if icodcl(ifac, ivar) =  1
+!         wall value (sliding velocity, temp) if icodcl(ifac, ivar) =  5
+!         The dimension of rcodcl(ifac, ivar, 1) is that of the
+!           resolved variable: ex U (velocity in m/s),
+!                                 T (temperature in degrees)
+!                                 H (enthalpy in J/kg)
+!                                 F (passive scalar in -)
+!      rcodcl(ifac, ivar, 2):
+!         "exterior" exchange coefficient (between the prescribed value
+!                          and the value at the domain boundary)
+!                          rinfin = infinite by default
+!         For velocities U,                in kg/(m2 s):
+!           rcodcl(ifac, ivar, 2) =          (viscl+visct) / d
+!         For the pressure P,              in  s/m:
+!           rcodcl(ifac, ivar, 2) =                     dt / d
+!         For temperatures T,              in Watt/(m2 degres):
+!           rcodcl(ifac, ivar, 2) = Cp*(viscls+visct/sigmas) / d
+!         For enthalpies H,                in kg /(m2 s):
+!           rcodcl(ifac, ivar, 2) =    (viscls+visct/sigmas) / d
+!         For other scalars F              in:
+!           rcodcl(ifac, ivar, 2) =    (viscls+visct/sigmas) / d
+!              (d has the dimension of a distance in m)
+!
+!      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) <> 6:
+!        Flux density (< 0 if gain, n outwards-facing normal)
+!                         if icodcl(ifac, ivar)= 3
+!         For velocities U,                in kg/(m s2) = J:
+!           rcodcl(ifac, ivar, 3) =         -(viscl+visct) * (grad U).n
+!         For pressure P,                  en kg/(m2 s):
+!           rcodcl(ifac, ivar, 3) =                    -dt * (grad P).n
+!         For temperatures T,              in Watt/m2:
+!           rcodcl(ifac, ivar, 3) = -Cp*(viscls+visct/sigmas) * (grad T).n
+!         For enthalpies H,                in Watt/m2:
+!           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad H).n
+!         For other scalars F in :
+!           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad F).n
+
+!      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) = 6:
+!        Roughness for the rough wall law
+!         For velocities U, dynamic roughness
+!           rcodcl(ifac, ivar, 3) = rugd
+!         For other scalars, thermal roughness
+!           rcodcl(ifac, ivar, 3) = rugt
+
+
+!      Note that if the user assigns a value to itypfb equal to
+!       ientre, isolib, isymet, iparoi, or iparug
+!       and does not modify icodcl (zero value by default),
+!       itypfb will define the boundary condition type.
+
+!      To the contrary, if the user prescribes
+!        icodcl(ifac, ivar) (nonzero),
+!        the values assigned to rcodcl will be used for the considered
+!        face and variable (if rcodcl values are not set, the default
+!        values will be used for the face and variable, so:
+!                                 rcodcl(ifac, ivar, 1) = 0.d0
+!                                 rcodcl(ifac, ivar, 2) = rinfin
+!                                 rcodcl(ifac, ivar, 3) = 0.d0)
+!        Especially, we may have for example:
+!        -> set itypfb(ifac, iphas) = iparoi
+!        which prescribes default wall conditions for all variables at
+!        face ifac,
+!        -> and define IN ADDITION for variable ivar on this face
+!        specific conditions by specifying
+!        icodcl(ifac, ivar) and the 3 rcodcl values.
+
+
+!      The user may also assign to itypfb a value not equal to
+!       ientre, isolib, isymet, iparoi, iparug, iindef
+!       but greater than or equal to 1 and less than or equal to
+!       ntypmx (see values in param.h) to distinguish
+!       groups or colors in other subroutines which are specific
+!       to the case and in which itypfb is accessible.
+!       In this case though it will be necessary to
+!       prescribe boundary conditions by assigning values to
+!       icodcl and to the 3 rcodcl fields (as the value of itypfb
+!       will not be predefined in the code).
+
+
+! Consistency rules
+! =================
+
+!       A few consistency rules between 'icodcl' codes for
+!         variables with non-standard boundary conditions:
+
+!           Codes for velocity components must be identical
+!           Codes for Rij components must be identical
+!           If code (velocity or Rij) = 4
+!             we must have code (velocity and Rij) = 4
+!           If code (velocity or turbulence) = 5
+!             we must have code (velocity and turbulence) = 5
+!           If code (velocity or turbulence) = 6
+!             we must have code (velocity and turbulence) = 6
+!           If scalar code (except pressure or fluctuations) = 5
+!             we must have velocity code = 5
+!           If scalar code (except pressure or fluctuations) = 6
+!             we must have velocity code = 6
+
+
+! Remarks
+! =======
+
+!       Caution: to prescribe a flux (nonzero) to Rij,
+!                the viscosity to take into account is viscl
+!                even if visct exists (visct=rho cmu k2/epsilon)
+
+!       We have the ordering array for boundary faces from the
+!           previous time step (except for the fist time step,
+!           where 'itrifb' has not been set yet).
+!       The array of boundary face types 'itypfb' has been
+!           reset before entering the subroutine.
+
+
+!       Note how to access some variables:
+
+! Cell values
+!               Let         iel = ifabor(ifac)
+
+! * Density                         phase iphas, cell iel:
+!                  propce(iel, ipproc(irom(iphas)))
+! * Dynamic molecular viscosity     phase iphas, cell iel:
+!                  propce(iel, ipproc(iviscl(iphas)))
+! * Turbulent viscosity   dynamique phase iphas, cell iel:
+!                  propce(iel, ipproc(ivisct(iphas)))
+! * Specific heat                   phase iphas, cell iel:
+!                  propce(iel, ipproc(icp(iphasl))
+! * Diffusivity: lambda          scalaire iscal, cell iel:
+!                  propce(iel, ipproc(ivisls(iscal)))
+
+! Boundary face values
+
+! * Density                        phase iphas, boundary face ifac :
+!                  propfb(ifac, ipprob(irom(iphas)))
+! * Mass flow relative to variable ivar, boundary face ifac:
+!      (i.e. the mass flow used for convecting ivar)
+!                  propfb(ifac, pprob(ifluma(ivar )))
+! * For other values                  at boundary face ifac:
+!      take as an approximation the value in the adjacent cell iel
+!      i.e. as above with iel = ifabor(ifac).
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! --> ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! izfppp           ! te ! --> ! numero de zone de la face de bord              !
-! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2 ou                !
-!                  !    !     !  hauteur de rugosite (m) si icodcl=6           !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! tab de trav                                    !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
+! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common Blocks
 !===============================================================================
 
 include "paramx.h"
@@ -552,7 +519,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local Variables
 
 integer          idebia, idebra
 integer          ifac, iphas, izone, ii
@@ -562,36 +529,8 @@ double precision uref2, xkent, xeent, d2s3
 
 !===============================================================================
 
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
-!===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
-!===============================================================================
-
-if(1.eq.1) then
-  write(nfecra,9001)
-  call csexit (1)
-  !==========
-endif
-
- 9001 format(                                                           &
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DE L''ENTREE DES COND. LIM.      ',/,&
-'@    =========                                               ',/,&
-'@     MODULE COMBUSTION GAZ MODELE EBU :                     ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR usebuc DOIT ETRE COMPLETE',/,&
-'@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 !===============================================================================
-! 1.  INITIALISATIONS
+! 1.  INITIALISATION
 
 !===============================================================================
 
@@ -601,29 +540,18 @@ idebra = idbra0
 d2s3 = 2.d0/3.d0
 
 !===============================================================================
-! 2.  REMPLISSAGE DU TABLEAU DES CONDITIONS LIMITES
-!       ON BOUCLE SUR LES FACES DE BORD
-!         ON DETERMINE LA FAMILLE ET SES PROPRIETES
-!           ON IMPOSE LA CONDITION LIMITE
-
-!          IMPOSER ICI LES CONDITIONS LIMITES SUR LES FACES DE BORD
-
-!          INTERVENTION UTLISATEUR
+! 2.  Assign boundary conditions to boundary faces here
 
+!     We may use selection criteria to filter boundary case subsets
+!       Loop on faces from a subset
+!         Set the boundary condition for each face
 !===============================================================================
 
-!   Pour chaque type de condition relative aux physiques particulieres
-!       on affecte un numero de zone de maniere a pouvoir donner les
-!       conditions aux limites par zone physique et non par face de maillage
-!       Un numero de zone est un entier arbitraire strictement positif
-!         et inferieur ou egal a NOZPPM (dont la valeur est fixee en
-!         parametre dans ppppar.h)
-
 iphas = 1
 
 
-! ---- Facette de type entree correspondant
-!      a une entree de gaz brules (flamme pilote)
+! Definition of a burned gas inlet (pilot flame) for each face of colour 11
+
 
 CALL GETFBR('11',NLELT,LSTELT)
 !==========
@@ -632,59 +560,42 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!   Type de condition aux limites pour les variables standard
+!   Type of pre-defined boundary condidition (see above)
   itypfb(ifac,iphas) = ientre
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 1
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone
   izfppp(ifac) = izone
 
-!      - Indicateur gaz brule
+!   Indicating the inlet as a burned gas inlet
   ientgb(izone) = 1
-!      - Debit en kg/s
+!   The incoming burned gas flow refers to:
+!   a) a massflow rate   -> iqimp()  = 1
   iqimp(izone) = 0
   qimp (izone) = zero
-!      - Fraction de melange
+!
+!   b) an inlet velocity -> iqimp()  = 0
+  rcodcl(ifac,iu(iphas),1) = 0.d0
+  rcodcl(ifac,iv(iphas),1) = 0.d0
+  rcodcl(ifac,iw(iphas),1) = 21.47d0
+! ATTENTION: If iqimp()  = 1 the direction vector of the massfow has
+!            to be given here.
+!
+!   Mean Mixture Fraction at Inlet
   fment(izone) = 1.d0*fs(1)
-!      - Temperature en K
+!   Inlet Temperature in K
   tkent(izone) = 2000.d0
 
-! ------ Si on impose une entree a debit impose IQIMP(IZONE) = 1
-!        Alors l'utilisateur donne donc ici uniquement
-!              la direction du vecteur vitesse
-
-  rcodcl(ifac,iu(iphas),1) = 120.d0
-  rcodcl(ifac,iv(iphas),1) = 0.d0
-  rcodcl(ifac,iw(iphas),1) = 0.d0
-
-! ------ Traitement de la turbulence
-
-!        La turbulence est calculee par defaut si ICALKE different de 0
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference adaptes a l'entree courante si ICALKE = 1
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference et de l'intensite turvulente
-!            adaptes a l'entree courante si ICALKE = 2
-
-!        Choix pour le calcul automatique ICALKE = 1 ou 2
+!   Boundary Conditions of Turbulence
   icalke(izone) = 1
-!        Saisie des donnees
-  dh(izone)     = 0.02d0
-  xintur(izone) = 0.1d0
-
-
-
-! Exemple de cas ou ICALKE(IZONE) = 0 : DEBUT
-!    Eliminer ces lignes pour la clarte si on a fait le choix ICALKE(IZONE) = 1
+!
+!    - If ICALKE = 0 the boundary conditions of turbulence at
+!      the inlet are calculated as follows:
 
   if(icalke(izone).eq.0) then
 
-!         Calcul de k et epsilon en entree (XKENT et XEENT) a partir
-!           l'intensite turbulente et de lois standards en conduite
-!           circulaire (leur initialisation est inutile mais plus
-!           propre)
     uref2 = rcodcl(ifac,iu(iphas),1)**2                           &
            +rcodcl(ifac,iv(iphas),1)**2                           &
            +rcodcl(ifac,iw(iphas),1)**2
@@ -697,7 +608,6 @@ do ilelt = 1, nlelt
       ( uref2, xintur(izone), dh(izone), cmu, xkappa,             &
         xkent, xeent )
 
-!     (ITYTUR est un indicateur qui vaut ITURB/10)
     if    (itytur(iphas).eq.2) then
 
       rcodcl(ifac,ik(iphas),1)  = xkent
@@ -726,34 +636,25 @@ do ilelt = 1, nlelt
       rcodcl(ifac,iomg(iphas),1) = xeent/cmu/xkent
 
     endif
-  endif
-! Exemple de cas ou ICALKE(IZONE) = 0 : FIN
-
-
-! ------ Traitement des scalaires physiques particulieres :
-!        Ils sont traites automatiquement
-
-
-! ------ Traitement des scalaires utilisateurs eventuels
 
-! Exemple : On traite les scalaires rattaches a la phase courante : DEBUT
-!     Eliminer ces lignes pour la clarte s'il n'y en a pas
-  if ( (nscal-nscapp).gt.0 ) then
-    do ii = 1, (nscal-nscapp)
-      if(iphsca(ii).eq.iphas) then
-        rcodcl(ifac,isca(ii),1) = 1.d0
-      endif
-    enddo
   endif
-! Exemple : On traite les scalaires rattaches a la phase courante : FIN
-
+!
+!    - If ICALKE = 1 the boundary conditions of turbulence at
+!      the inlet refer to both, a hydraulic diameter and a
+!      reference velocity given in usini1.f90.
+!
+  dh(izone)     = 0.032d0
+!
+!    - If ICALKE = 2 the boundary conditions of turbulence at
+!      the inlet refer to a turbulence intensity.
+!
+  xintur(izone) = 0.d0
 
 enddo
 
 
 
-! ---- Facette de type entree correspondant
-!      a une entree de gaz frais
+! Definition of an unburned gas inlet for each face of colour 12
 
 CALL GETFBR('12',NLELT,LSTELT)
 !==========
@@ -762,105 +663,52 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!   Type de condition aux limites pour les variables standard
+!   Type of pre-defined boundary condidition (see above)
   itypfb(ifac,iphas) = ientre
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 2
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone
   izfppp(ifac) = izone
 
-!      - Indicateur gaz frais
+!   Indicating the inlet as an unburned gas inlet
   ientgf(izone) = 1
-!      - Debit en kg/s
+!   The incoming unburned gas flow refers to:
+!   a) a massflow rate   -> iqimp()  = 1
   iqimp(izone) = 0
   qimp(izone)  = zero
-!      - Fraction de melange
-  fment(izone) = 8.d-1*fs(1)
-!      - Temperature en K
-  tkent(izone) = 600.d0
-
-! ------ Si on impose une entree a debit impose IQIMP(IZONE) = 1
-!        Alors l'utilisateur donne donc ici uniquement
-!              la direction du vecteur vitesse
-
+!
+!   b) an inlet velocity -> iqimp()  = 0
   rcodcl(ifac,iu(iphas),1) = 60.d0
   rcodcl(ifac,iv(iphas),1) = 0.d0
   rcodcl(ifac,iw(iphas),1) = 0.d0
+! ATTENTION: If iqimp()  = 1 the direction vector of the massfow has
+!            to be given here.
 
-! ------ Traitement de la turbulence
-!        La turbulence est calculee par defaut si ICALKE different de 0
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference adaptes a l'entree courante si ICALKE = 1
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference et de l'intensite turvulente
-!            adaptes a l'entree courante si ICALKE = 2
-
-!        Choix pour le calcul automatique ICALKE = 1 ou 2
-  icalke(izone) = 1
-!        Saisie des donnees
-  dh(izone)     = 0.08d0
-  xintur(izone) = 0.1d0
-
-enddo
-
-
-! ---- Facette de type entree correspondant
-!      a une entree de dilution (traite comme une entree de gaz frais)
-
-CALL GETFBR('13',NLELT,LSTELT)
-!==========
-
-do ilelt = 1, nlelt
-
-  ifac = lstelt(ilelt)
-
-!   Type de condition aux limites pour les variables standard
-  itypfb(ifac,iphas) = ientre
-
-!   Numero de zone (on numerote de 1 a n)
-  izone = 3
-
-!      - Reperage de la zone a laquelle appartient la face
-  izfppp(ifac) = izone
+!   Mean Mixture Fraction at Inlet
+  fment(izone) = 8.d-1*fs(1)
 
-!      - Indicateur gaz frais
-  ientgf(izone) = 1
-!      - Debit en kg/s
-  iqimp(izone) = 0
-  qimp(izone)  = zero
-!      - Fraction de melange
-  fment(izone) = zero
-!      -Temperature en K
+!   Inlet Temperature in K
   tkent(izone) = 600.d0
 
-! ------ Si on impose une entree a debit impose IQIMP(IZONE) = 1
-!        Alors l'utilisateur donne donc ici uniquement
-!              la direction du vecteur vitesse
-
-  rcodcl(ifac,iu(iphas),1) = 120.d0
-  rcodcl(ifac,iv(iphas),1) = 0.d0
-  rcodcl(ifac,iw(iphas),1) = 0.d0
-
-! ------ Traitement de la turbulence
-
-!        La turbulence est calculee par defaut si ICALKE different de 0
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference adaptes a l'entree courante si ICALKE = 1
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference et de l'intensite turvulente
-!            adaptes a l'entree courante si ICALKE = 2
-
-!        Choix pour le calcul automatique ICALKE = 1 ou 2
+!   Boundary Conditions of Turbulence
   icalke(izone) = 1
-!        Saisie des donnees
-  dh(izone)     = 0.02d0
+!
+!    - If ICALKE = 1 the boundary conditions of turbulence at
+!      the inlet refer to both, a hydraulic diameter and a
+!      reference velocity given in usini1.f90.
+!
+  dh(izone)     = 0.08d0
+!
+!    - If ICALKE = 2 the boundary conditions of turbulence at
+!      the inlet refer to a turbulence intensity.
+!
   xintur(izone) = 0.1d0
 
 enddo
 
-! --- On impose en couleur 51 et 5 une paroi laterale
+!  Definition of a wall for each face of colour 51 and 5
 
 CALL GETFBR('51 or 5',NLELT,LSTELT)
 !==========
@@ -869,24 +717,18 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          PAROI : DEBIT NUL (FLUX NUL POUR LA PRESSION)
-!                  FROTTEMENT POUR LES VITESSES (+GRANDEURS TURB)
-!                  FLUX NUL SUR LES SCALAIRES
-
-
-
 !   Type de condition aux limites pour les variables standard
   itypfb(ifac,iphas)   = iparoi
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 4
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone
   izfppp(ifac) = izone
 
 enddo
 
-! --- On impose en couleur 91 et 9 une sortie
+!  Definition of an exit for each face of colour 91 and 9
 
 CALL GETFBR('91 or 9',NLELT,LSTELT)
 !==========
@@ -895,22 +737,19 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          SORTIE : FLUX NUL VITESSE ET TEMPERATURE, PRESSION IMPOSEE
-!            Noter que la pression sera recalee a P0
-!                sur la premiere face de sortie libre (ISOLIB)
-
 !   Type de condition aux limites pour les variables standard
   itypfb(ifac,iphas)   = isolib
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 5
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone 9
   izfppp(ifac) = izone
 
 enddo
 
-! --- On impose en couleur 41 et 4 une symetrie
+!  Definition of symmetric boundary conditions for each
+!  face of colour 41 and 4.
 
 CALL GETFBR('41 or 4',NLELT,LSTELT)
 !==========
@@ -919,23 +758,21 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          SYMETRIES
-
 !   Type de condition aux limites pour les variables standard
   itypfb(ifac,iphas)   = isymet
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 6
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zonec
   izfppp(ifac) = izone
 
 enddo
 
 
 !----
-! FIN
+! END
 !----
 
 return
-end
+end subroutine
diff --git a/users/cogz/usebui.f90 b/users/cogz/usebui.f90
index c7b9181..28accf6 100644
--- a/users/cogz/usebui.f90
+++ b/users/cogz/usebui.f90
@@ -1,12 +1,12 @@
 !-------------------------------------------------------------------------------
 
-!VERS
-
+!                      Code_Saturne version 2.0.0-beta2
+!                      --------------------------
 
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,150 +44,196 @@ subroutine usebui &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! PURPOSE :
 ! --------
-
-! INITIALISATION DES VARIABLES DE CALCUL
-!    POUR LA PHYSIQUE PARTICULIERE : COMBUSTION GAZ MODELE EBU
-!    PENDANT DE USINIV.F
-
-! Cette routine est appelee en debut de calcul (suite ou non)
-!     dans la boucle en temps avant la resolution des scalaires
-
-! Elle permet d'INITIALISER ou de MODIFIER (pour les calculs suite)
-!     les variables de calcul.
-
-
-! On a repris a titre d'exemple dans cette routine utilisateur
-!     l'initialisation choisie par defaut.
-
-
-! Les proprietes physiques sont accessibles dans le tableau
-!     PROPCE (prop au centre), PROPFA (aux faces internes),
-!     PROPFB (prop aux faces de bord)
-!     Ainsi,
-!      PROPCE(IEL,IPPROC(IROM  (IPHAS))) designe ROM   (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISCL(IPHAS))) designe VISCL (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(ICP   (IPHAS))) designe CP    (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISLS(ISCAL))) designe VISLS (IEL ,ISCAL)
-
-!      PROPFA(IFAC,IPPROF(IFLUMA(IVAR ))) designe FLUMAS(IFAC,IVAR)
-
-!      PROPFB(IFAC,IPPROB(IROM  (IPHAS))) designe ROMB  (IFAC,IPHAS)
-!      PROPFB(IFAC,IPPROB(IFLUMA(IVAR ))) designe FLUMAB(IFAC,IVAR)
-
-! LA MODIFICATION DES PROPRIETES PHYSIQUES (ROM, VISCL, VISCLS, CP)
-!     SE FERA EN STANDARD DANS LE SOUS PROGRAMME PPPHYV
-!     ET PAS ICI
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Initialisation of the transported variables of EBU combustion model.
+! The latter ones are used to calculate premixed flame properties
+! by applying detailed thermochemistry data.
+!
+! FEATURES:
+! --------
+! - This subroutine is called at the beginning of both a restart-calculation
+!   and a new calculation.
+! - The user is able to modify the initial conditions of the tranported
+!   variables.
+! - All variables of state deducible from the transported variables, as well as
+!   the detailed thermochemistry data (JANAF-table) are located in the array named
+!
+!   a) PROPCE (Properties in the cell center).
+!   b) PROPFA (Properties at internal faces).
+!   c) PROPFB (Properties at boundary faces).
+!
+!   Examples:
+!   PROPCE(IEL,IPPROC(IROM  (IPHAS))) =  IROM of cell IEL of phase IPHAS
+!   PROPCE(IEL,IPPROC(ICP   (IPHAS))) =  ICP  of cell IEL of phase IPHAS
+!
+!   PROPFA(IFAC,IPPROF(IFLUMA(IVAR )))=  FLUMAS of IVAR at the internal face IFAC
+!
+!   PROPFB(IFAC,IPPROB(IROM  (IPHAS)))=  ROMB of IPHAS at the boundary face IFAC
+!   PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))=  FLUMAB of IVAR at the boundary face IFAC
+
+!   All cells can be identified by using the subroutine 'getcel'.
+!    Syntax of getcel:
+!     getcel(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+
+!       string may contain:
+!       - references to colors (ex.: 1, 8, 26, ...
+!       - references to groups (ex.: inlet, group1, ...)
+!       - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!       These criteria may be combined using logical operators
+!       ('and', 'or') and parentheses.
+!       Example: '1 and (group2 or group3) and y < 1' will select boundary
+!       faces of color 1, belonging to groups 'group2' or 'group3' and
+!       with face center coordinate y less than 1.
+!
+!   All boundary faces may be identified using the 'getfbr' subroutine.
+!    Syntax of getfbr:
+!     getfbr(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
+!
+!   All internam faces may be identified using the 'getfac' subroutine.
+!    Syntax of getfac:
+!     getfac(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
-! rtp              ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! tab de trav                                    !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
+! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common Blocks
 !===============================================================================
 
 include "paramx.h"
@@ -206,6 +252,7 @@ include "cpincl.h"
 include "ppincl.h"
 
 !===============================================================================
+!Arguments
 
 integer          idbia0 , idbra0
 integer          ndim   , ncelet , ncel   , nfac   , nfabor
@@ -230,7 +277,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local Variables
 
 integer          idebia, idebra
 integer          iel, mode, igg, iphas, izone
@@ -240,22 +287,15 @@ double precision sommqf, sommqt, sommq, tentm, fmelm
 !===============================================================================
 
 
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
-!===============================================================================
-
-if(1.eq.1) return
 
 !===============================================================================
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
-
-!===============================================================================
-! 0. IMPRESSION DE CONTROLE
+! 0. CONTROL OUTPUT
 !===============================================================================
 
 write(nfecra,9001)
 
 !===============================================================================
-! 1.  INITIALISATION VARIABLES LOCALES
+! 1.  INITIALISATION OF LOCAL VARIABLES
 !===============================================================================
 
 idebia = idbia0
@@ -269,18 +309,19 @@ iphas  = 1
 
 
 !===============================================================================
-! 2. INITIALISATION DES INCONNUES :
-!      UNIQUEMENT SI ON NE FAIT PAS UNE SUITE
+! 2. INITIALISATION OF TRANSPORTED VARIABLES
 !===============================================================================
 
 if ( isuite.eq.0 ) then
 
 
-! ----- Calculs preliminaires : Fraction de melange, T, H
-!     (la valeur NOZAPM est utilisee pour inclure les aspects parall)
+! a. Preliminary calculations
+
   sommqf = zero
   sommq  = zero
   sommqt = zero
+
+!    For multiple inlets
   do izone = 1, nozapm
     sommqf = sommqf + qimp(izone)*fment(izone)
     sommqt = sommqt + qimp(izone)*tkent(izone)
@@ -295,12 +336,16 @@ if ( isuite.eq.0 ) then
     tentm = t0(iphas)
   endif
 
-! ----- Enthalpie du melange HINIT
+! ----- Calculation of the Enthalpy of the mean gas mixture
+!       (unburned - or fresh- gas at mean mixture fraction)
   if ( ippmod(icoebu).eq.1 .or. ippmod(icoebu).eq.3 ) then
     coefg(1) = fmelm
     coefg(2) = (1.d0-fmelm)
     coefg(3) = zero
     mode     = -1
+
+!       Converting the mean boundary conditions into
+!       enthalpy values
     call cothht                                                   &
     !==========
         ( mode   , ngazg , ngazgm  , coefg  ,                     &
@@ -308,20 +353,21 @@ if ( isuite.eq.0 ) then
           hinit  , tentm )
   endif
 
+! b. Initialisation
 
   do iel = 1, ncel
 
-! ----- Fraction massique de gaz frais
+! ----- Mass fraction of Unburned Gas
 
     rtp(iel,isca(iygfm)) = 5.d-1
 
-! ----- Fraction de melange
+! ----- Mean Mixture Fraction
 
     if ( ippmod(icoebu).eq.2 .or. ippmod(icoebu).eq.3 ) then
       rtp(iel,isca(ifm)) = fmelm
     endif
 
-! ----- Enthalpie du melange
+! ----- Enthalpy
 
     if ( ippmod(icoebu).eq.1 .or. ippmod(icoebu).eq.3 ) then
       rtp(iel,isca(ihm)) = hinit
@@ -337,13 +383,13 @@ endif
 
  9001 format(                                                           &
 '                                                             ',/,&
-'  usd3pi : Initialisation des variables par l''utilisateur   ',/,&
+'  usd3pi : Variables intialisation by user                   ',/,&
 '                                                             ',/)
 
 !----
-! FIN
+! END
 !----
 
 
 return
-end
+end subroutine
diff --git a/users/cogz/uslwc1.f90 b/users/cogz/uslwc1.f90
index 27d6c93..d5de4d3 100644
--- a/users/cogz/uslwc1.f90
+++ b/users/cogz/uslwc1.f90
@@ -1,12 +1,12 @@
 !-------------------------------------------------------------------------------
 
-!VERS
-
+!                      Code_Saturne version 2.0.0-beta2
+!                      --------------------------
 
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,36 +28,28 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine uslwc1
-!================
+subroutine uslwc1
 
 
 !===============================================================================
-!  FONCTION  :
-!  ---------
-
-!         INIT DES OPTIONS DES VARIABLES POUR
-!                  POUR LA COMBUSTION
-!           FLAMME DE PREMELANGE : MODELE LWC
-!   EN COMPLEMENT DE CE QUI A DEJA ETE FAIT DANS USINI1
-
-!-------------------------------------------------------------------------------
-! Arguments
-!__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
-!__________________!____!_____!________________________________________________!
-!__________________!____!_____!________________________________________________!
-
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!  PURPOSE:
+!  --------
+!  1. Variable Output
+!     a. Transported Variables
+!     b. Variables of State; User definied Variables
+!
+!  2. Additional Calculation Options
+!     a. Density Relaxation
+!
+!  3. Physical Constants
+!     a.Dynamic Diffusion Coefficient
+!     b.Constants of the Libby-Williams Model
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common Blocks
 !===============================================================================
 
 include "paramx.h"
@@ -81,72 +73,42 @@ include "radiat.h"
 integer          ipp, idirac
 
 !===============================================================================
-
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 1. Variable Output
 !===============================================================================
-
-if(1.eq.1) then
-  write(nfecra,9000)
-  call csexit (1)
-endif
-
- 9000 format(                                                           &
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES               ',/,&
-'@    =========                                               ',/,&
-'@     MODULE COMBUSTION GAZ MODELE LWC :                     ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uslwc1 DOIT ETRE COMPLETE',/,&
-'@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
-!===============================================================================
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
-
-
+!    Function                             |  Key Word |   Indicator
+!    ---------------------------------------------------------------
+!    Variable Output in the result file   | ICHRVR()  | yes= 1  ; no=0
+!    Variable Output in the listing file  | ILISVR()  | yes= 1  ; no=0
+!    Output of the temporal evolution of  | IHISVR()  | yes=-1* ; no=0
+!    the variable at monitoring points    |           |
+!    -----------------------------------------------------------------
+!    *: Output for all monitoring points defined in subroutine usini1.f90
+!
 !===============================================================================
-! 1. VARIABLES TRANSPORTEES
+! a. Transported Variables
 !===============================================================================
 
-!  Sortie chrono, suivi listing, sortie histo
-!     Si l'on n'affecte pas les tableaux suivants,
-!     les valeurs par defaut seront utilisees
-
-!       ICHRVR( ) = sortie chono (oui 1/non 0)
-!       ILISVR( ) = suivi listing (oui 1/non 0)
-!       IHISVR( ) = sortie historique (nombre de sondes et numeros)
-!       si IHISVR(.,1)  = -1 sortie sur toutes les sondes definies
-!                            dans usini1
-
-
-! ---- Fraction de melange
+! ---- Mean Mixture Fraction
 if ( ippmod(icolwc).ge.0 ) then
   ipp = ipprtp(isca(ifm))
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
   ihisvr(ipp,1)= -1
 
-! ---- Variance de la fraction de melange
+! ---- Variance of Mixture Fraction
   ipp = ipprtp(isca(ifp2m))
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
   ihisvr(ipp,1)= -1
 
-! ---- Fraction massique de fuel
+! ---- Fuel Mass fraction
   ipp = ipprtp(isca(iyfm))
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
   ihisvr(ipp,1)= -1
 
-! ---- Variance de la fraction massique de fuel
+! ---- Variance of Fuel Mass fraction
   ipp = ipprtp(isca(iyfp2m))
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
@@ -160,7 +122,7 @@ if (ippmod(icolwc).ge.2) then
     ihisvr(ipp,1)= -1
 endif
 
-! ---- Enthalpie
+! ---- Enthalpy
 if ( ippmod(icolwc).eq.1 .or.                                     &
      ippmod(icolwc).eq.3 .or.                                     &
      ippmod(icolwc).eq.5    ) then
@@ -172,34 +134,34 @@ endif
 
 
 !===============================================================================
-! 2. VARIABLES ALGEBRIQUES OU D'ETAT
+! b. Variables of State; User definied Variables
 !===============================================================================
 
-! --- Terme source
+! --- Source term
   ipp = ipppro(ipproc(itsc))
   NOMVAR(IPP)   = 'T.SOURCE'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
-! --- temperature
+! --- Temperature in K
   ipp = ipppro(ipproc(itemp))
   NOMVAR(IPP)   = 'Temperature'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
-! --- fraction massique Combustible
+! --- Fuel Mass fraction
   ipp = ipppro(ipproc(iym(1)))
   NOMVAR(IPP)   = 'YM_Fuel'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
-! --- fraction massique Oxydant
+! --- Oxidizer Mass fraction
   ipp = ipppro(ipproc(iym(2)))
   NOMVAR(IPP)   = 'YM_Oxyd'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
-! --- fraction massique Produit
+! --- Products Mass fraction
   ipp = ipppro(ipproc(iym(3)))
   NOMVAR(IPP)   = 'YM_Prod'
   ichrvr(ipp)   = 1
@@ -250,25 +212,25 @@ endif
     ihisvr(ipp,1) = -1
   enddo
 
-! ---- Modele LWC AVEC RAYONNEMENT
+! ---- Premixed flame including gas radiation
 
 if ( iirayo.gt.0 ) then
 
-! ---- Coeff d'absorption
+! ---- Absorption Coefficient
   ipp = ipppro(ipproc(ickabs))
   NOMVAR(IPP)   = 'KABS'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-! ---- Terme T^4
+! ---- Term T^4
   ipp = ipppro(ipproc(it4m))
   NOMVAR(IPP)   = 'TEMP4'
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-! ---- Terme T^3
+! ---- Term T^3
   ipp = ipppro(ipproc(it3m))
   NOMVAR(IPP)   = 'TEMP3'
   ichrvr(ipp)   = 0
@@ -279,37 +241,36 @@ endif
 
 
 !===============================================================================
-! 3. OPTIONS DE CALCUL
+! 2. Additional Calculation Options
 !===============================================================================
 
-! --> Coefficient de relaxation de la masse volumique
-!      RHO(n+1) = SRROM * RHO(n) + (1-SRROM) * RHO(n+1)
+! -->  Density Relaxation
+!      RHO(n+1) = SRROM * RHO(n) + (1-SRROM) * RHO(n+1))
 
 srrom = 0.95d0
 
 
 !===============================================================================
-! 4. CONSTANTES PHYSIQUES
+! 3. Physical Constants
 !===============================================================================
 
-! --> Viscosite laminaire associee au scalaire enthalpie
-!       DIFTL0 (diffusivite dynamique en kg/(m s))
+! --> DIFTL0: Dynamic Diffusion Coefficient (kg/(m s))
 diftl0 = 4.25d-5
 
-! --> Constante du modele LWC
+! --> Constants of the Libby-Williams Model
 
-! --- Vitesse de reference
+! --- Reference velocity
  vref = 60.d0
-! --- Longueur de reference
+! --- Reference length scale
  lref = 0.1d0
-! --- Temperature d'activation
+! --- Activation Temperature
  ta   = 0.2d5
-! --- Temperature de cross-over (combustion du propane)
+! --- Cross-over Temperature (combustion of propane)
  tstar= 0.12d4
 
 !----
-! FIN
+! END
 !----
 
 return
-end
+end subroutine
diff --git a/users/cogz/uslwcc.f90 b/users/cogz/uslwcc.f90
index 0a0a6f5..a232fc2 100644
--- a/users/cogz/uslwcc.f90
+++ b/users/cogz/uslwcc.f90
@@ -1,12 +1,12 @@
 !-------------------------------------------------------------------------------
 
-!VERS
-
+!                      Code_Saturne version 2.0.0-beta2
+!                      --------------------------
 
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,458 +47,425 @@ subroutine uslwcc &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! --------
-
-!    ROUTINE UTILISATEUR POUR PHYSIQUE PARTICULIERE
-!               COMBUSTION GAZ MODELE LWC
-!    REMPLISSAGE DU TABLEAU DE CONDITIONS AUX LIMITES
-!    (ICODCL,RCODCL) POUR LES VARIABLES INCONNUES
-!    PENDANT USCLIM.F
+! Purpose:
+! -------
 
+!    User subroutine.
 
+!    Fill boundary conditions arrays (icodcl, rcodcl)
+!    for unknown variables.
 
 
-! INTRODUCTION
+! Introduction
 ! ============
 
-! On donne ici les conditions aux limites par face de bord.
+! Here we define boundary conditions on a per-face basis.
 
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
+! Boundary faces may be identified using the 'getfbr' subroutine.
 
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
+!  getfbr(string, nelts, eltlst) :
+!  - string is a user-supplied character string containing
+!    selection criteria;
+!  - nelts is set by the subroutine. It is an integer value
+!    corresponding to the number of boundary faces verifying the
+!    selection criteria;
+!  - lstelt is set by the subroutine. It is an integer array of
+!    size nelts containing the list of boundary faces verifying
+!    the selection criteria.
 
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+!  string may contain:
+!  - references to colors (ex.: 1, 8, 26, ...
+!  - references to groups (ex.: inlet, group1, ...)
+!  - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!  These criteria may be combined using logical operators
+!  ('and', 'or') and parentheses.
+!  Example: '1 and (group2 or group3) and y < 1' will select boundary
+!  faces of color 1, belonging to groups 'group2' or 'group3' and
+!  with face center coordinate y less than 1.
 
 
-! TYPE DE CONDITIONS AUX LIMITES
-! ==============================
 
-! On peut affecter les conditions aux limites de deux manieres.
+! Boundary condition types
+! ========================
 
+! Boundary conditions may be assigned in two ways.
 
-!    Pour les conditions "standard" :
-!    --------------------------------
 
-!     (entree, sortie libre, paroi, symetrie), on donne un code
-!     stocke dans le tableau ITYPFB (dimensionne au nombre de
-!     faces de bord,nombre de phases). Ce code sera ensuite
-!     utilise par un sous-programme non utilisateur pour affecter
-!     les conditions correspondantes (les scalaires, en
-!     particulier, recevront alors les conditions de la phase a
-!     laquelle ils sont associes). Ainsi :
+!    For "standard" boundary conditions:
+!    -----------------------------------
 
-!     Code      |  Type de bord
-!     -------------------------
-!      IENTRE   |   Entree
-!      ISOLIB   |   Sortie libre
-!      ISYMET   |   Symetrie
-!      IPAROI   |   Paroi (lisse)
-!      IPARUG   |   Paroi rugueuse
+!     (inlet, free outlet, wall, symmetry), we define a code
+!     in the 'itypfb' array (of dimensions number of boundary faces,
+!     number of phases). This code will then be used by a non-user
+!     subroutine to assign the following conditions (scalars in
+!     particular will receive the conditions of the phase to which
+!     they are assigned). Thus:
 
-!     Les entiers IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!     sont affectes par ailleurs (include param.h). Leur valeur
-!     est superieure ou egale a 1 et
-!         inferieure ou egale a NTYPMX (valeur fixee dans paramx.h)
+!     Code      |  Boundary type
+!     --------------------------
+!      ientre   |   Inlet
+!      isolib   |   Free outlet
+!      isymet   |   Symmetry
+!      iparoi   |   Wall (smooth)
+!      iparug   |   Rough wall
 
+!     Integers ientre, isolib, isymet, iparoi, iparug
+!     are defined elsewhere (param.h). Their value is greater than
+!     or equal to 1 and less than or equal to ntypmx
+!     (value fixed in paramx.h)
 
 
-!     En outre, il faut donner certaines valeurs :
+!     In addition, some values must be defined:
 
 
-!     - Entree (plus precisement entree/sortie a debit impose, car le debit
-!               peut etre impose sortant) :
+!     - Inlet (more precisely, inlet/outlet with prescribed flow, as
+!              the flow may be prescribed as an outflow):
 
-!       -> Conditions de Dirichlet sur les variables
-!         autres que la pression obligatoire si le flux est entrant,
-!         optionnelle si le flux est sortant (le code affecte flux nul
-!         si aucun Dirichlet n'est specifie) ; ainsi
-!         en face IFAC, sur la variable IVAR : RCODCL(IFAC,IVAR,1)
+!       -> Dirichlet conditions on variables
+!         other than pressure are mandatory if the flow is incoming,
+!         optional if the flow is outgoing (the code assigns 0 flux
+!         if no Dirichlet is specified); thus,
+!         at face 'ifac', for the variable 'ivar': rcodcl(ifac, ivar, 1)
 
 
-!     - Paroi lisse : (= solide impermeable, avec frottement lisse)
+!     - Smooth wall: (= impermeable solid, with smooth friction)
 
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 5
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
+!       -> Velocity value for sliding wall if applicable
+!         at face ifac, rcodcl(ifac, iu, 1)
+!                       rcodcl(ifac, iv, 1)
+!                       rcodcl(ifac, iw, 1)
+!       -> Specific code and prescribed temperature value
+!         at wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 5
+!                       rcodcl(ifac, ivar, 1) = prescribed temperature
+!       -> Specific code and prescribed flux value
+!         at wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 3
+!                       rcodcl(ifac, ivar, 3) = prescribed flux
 !                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-
-!     - Paroi rugueuse : (= solide impermeable, avec frottement rugueux)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Valeur de la hauteur de rugosite dynamique a specifier dans
-!                       RCODCL(IFAC,IU,3) (valeur pour IV et IW non utilisee)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi rugueuse s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 6
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!                       RCODCL(IFAC,IVAR,3) = Hauteur de rugosite thermique
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
+!        Note that the default condition for scalars
+!         (other than k and epsilon) is homogeneous Neumann.
+
+
+!     - Rough wall: (= impermeable solid, with rough friction)
+
+!       -> Velocity value for sliding wall if applicable
+!         at face ifac, rcodcl(ifac, iu, 1)
+!                       rcodcl(ifac, iv, 1)
+!                       rcodcl(ifac, iw, 1)
+!       -> Value of the dynamic roughness height to specify in
+!                       rcodcl(ifac, iu, 3) (value for iv et iw not used)
+!       -> Specific code and prescribed temperature value
+!         at rough wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 6
+!                       rcodcl(ifac, ivar, 1) = prescribed temperature
+!                       rcodcl(ifac, ivar, 3) = dynamic roughness height
+!       -> Specific code and prescribed flux value
+!         at rough wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 3
+!                       rcodcl(ifac, ivar, 3) = prescribed flux
 !                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-!     - Symetrie (= paroi impermeable avec glissement) :
-
-!       -> Rien a preciser
-
-
-!     - Sortie libre (plus precisement entree/sortie libre a pression imposee)
-
-!       -> Rien a preciser pour la pression et la vitesse
-!          Pour les scalaires et grandeurs turbulentes, une valeur de Dirichlet
-!            peut etre specifiee de maniere optionnelle. Le comportement est le
-!            suivant :
-!              * la pression est toujours traitee en Dirichlet
-!              * si flux de masse entrant :
-!                  on retient la vitesse a l'infini
-!                  condition de Dirichlet pour les scalaires et grandeurs
-!                    turbulentes (ou flux nul si l'utilisateur n'a pas
-!                    specifie de Dirichlet)
-!                 si flux de masse sortant :
-!                    on impose un flux nul sur la vitesse, les scalaires et
-!                    les grandeurs turbulentes
-
-!       Noter que la pression sera recalee a P0
-!           sur la premiere face de sortie libre trouvee
-
-
-!    Pour les conditions "non standard" :
-!    ------------------------------------
-
-!     Autres que (entree, sortie libre, paroi, symetrie), on donne
-!      - d'une part, pour chaque face :
-!        -> une valeur de ITYPFB admissible
-!           ie superieure ou egale a 1 et inferieure ou egale a
-!           NTYPMX (voir sa valeur dans paramx.h).
-!           Les valeurs predefinies dans paramx.h
-!           IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG sont dans cet
-!           intervalle et il est preferable de ne pas affecter
-!           inconsidrement et par hasard a ITYPFB la valeur
-!           d'un de ces entiers. Pour eviter cela, on peut
-!           utiliser IINDEF si l'on souhaite eviter de verifier
-!           les valeurs dans paramx.h. IINDEF est une valeur
-!           admissible a laquelle n'est attachee aucune condition
-!           limite predefinie.
-!           Noter que le tableau ITYPFB est
-!           reinitialise a chaque pas de temps a la valeur
-!           non admissible 0. Si on oublie de modifier ITYPFB pour
-!           une face, le code s'arretera.
-
-!      - et d'autre part pour chaque face et chaque variable :
-!        -> un code     ICODCL(IFAC,IVAR)
-!        -> trois reels RCODCL(IFAC,IVAR,1)
-!                       RCODCL(IFAC,IVAR,2)
-!                       RCODCL(IFAC,IVAR,3)
-!     La valeur de ICODCL est prise parmi les suivantes :
-!       1 : Dirichlet      (utilisable pour toute variable)
-!       3 : Neumann        (utilisable pour toute variable)
-!       4 : Symetrie       (utilisable uniquement pour la vitesse et
-!                                   les composantes du tenseur Rij)
-!       5 : Paroi lisse    (utilisable pour toute variable sauf la
-!                                                         pression)
-!       6 : Paroi rugueuse (utilisable pour toute variable sauf la
-!                                                         pression)
-!       9 : Sortie libre   (utilisable uniquement pour la vitesse)
-!     Les valeurs des 3 reels RCODCL sont les suivantes
-!      RCODCL(IFAC,IVAR,1) :
-!         Dirichlet sur la variable        si ICODCL(IFAC,IVAR)=  1
-!         valeur en paroi (defilmnt, temp) si ICODCL(IFAC,IVAR)=  5
-!         La dimension de RCODCL(IFAC,IVAR,1) est celle de la
-!           variable resolue : ex U (vitesse en m/s),
-!                                 T (temperature en degres)
-!                                 H (enthalpie en J/kg)
-!                                 F (scalaire passif en -)
-!      RCODCL(IFAC,IVAR,2) :
-!         coefficient d'echange "exterieur" (entre la valeur
-!                          imposee et la valeur au bord du domaine)
-!                          RINFIN = infini par defaut
-!         Pour les vitesses U,             en kg/(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =            (VISCL+VISCT) / D
-!         Pour la  pression P,             en  s/m          :
-!           RCODCL(IFAC,IVAR,2) =                       DT / D
-!         Pour les temperatures T,         en Watt/(m2 degres) :
-!           RCODCL(IFAC,IVAR,2) = CP*(VISCLS+VISCT/SIGMAS) / D
-!         Pour les enthalpies H,           en kg /(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!              (D a la dimension d'une distance en m)
-
-!      RCODCL(IFAC,IVAR,3) si ICODCL(IFAC,IVAR)<>6 :
-!        Densite de flux (< 0 si gain, n normale orientee vers l'exterieur)
-!                         si ICODCL(IFAC,IVAR)= 3
-!         Pour les vitesses U,             en kg/(m s2) = J :
-!           RCODCL(IFAC,IVAR,3) =           -(VISCL+VISCT) * (GRAD U).n
-!         Pour la  pression P,             en kg/(m2 s)     :
-!           RCODCL(IFAC,IVAR,3) =                      -DT * (GRAD P).n
-!         Pour les temperatures T,         en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =-CP*(VISCLS+VISCT/SIGMAS) * (GRAD T).n
-!         Pour les enthalpies H,           en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD H).n
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD F).n
-
-!      RCODCL(IFAC,IVAR,3) SI ICODCL(IFAC,IVAR)=6 :
-!        Rugosites de la loi rugueuse
-!         Pour les vitesses U, rugosite dynamique
-!           RCODCL(IFAC,IVAR,3) = RUGD
-!         Pour les autres scalaires, rugosite thermique
-!           RCODCL(IFAC,IVAR,3) = RUGT
-
-
-!      Noter bien que si l'utilisateur affecte une valeur a ITYPFB
-!       parmi     IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!       et qu'il ne modifie pas ICODCL (valeur nulle par defaut),
-!       c'est ITYPFB qui imposera la condition limite.
-
-!      Par contre, si l'utilisateur impose
-!        ICODCL(IFAC,IVAR) (non nul),
-!        ce sont alors les valeurs de RCODCL qu'il aura fournies
-!        qui sont retenues pour la face et la variable consideree
-!        (s'il ne precise pas RCODCL, ce sont les valeurs
-!        par defaut qui sont retenues pour la face et
-!        la variable consideree soit :
-!                                 RCODCL(IFAC,IVAR,1) = 0.D0
-!                                 RCODCL(IFAC,IVAR,2) = RINFIN
-!                                 RCODCL(IFAC,IVAR,3) = 0.D0)
-!        En particulier, on peut par exemple
-!        -> donner ITYPFB(IFAC,IPHAS) = IPAROI
-!        qui impose les conditions de paroi par defaut pour toutes
-!        les variables sur la face IFAC,
-!        -> et preciser EN OUTRE pour la variable IVAR sur cette
-!        face IFAC des conditions paarticulieres en imposant
-!        ICODCL(IFAC,IVAR) et les 3 RCODCL.
-
-
-!      L'utilisateur peut egalement affecter a ITYPFB une valeur
-!       non egale a IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG, IINDEF
-!       mais superieure ou egale a 1 et inferieure ou egale a
-!       NTYPMX (voir les valeurs dans param.h) pour reperer
-!       des groupes de couleurs dans d'autres sous programmes
-!       qui lui seraient propres et ou ITYPFB serait disponible.
-!       Dans ce cas cependant, il faudra
-!       imposer les conditions limites en donnant des valeurs a
-!       ICODCL et aux trois RCODCL (puisque la valeur de ITYPFB
-!       ne sera pas predefinie dans le code).
-
-
-! REGLES DE COHERENCE
-! ===================
-
-!       Quelques regles de coherence entre les codes ICODCL
-!         des variables pour les conditions non standard :
-
-!           Les codes des vitesses doivent etre identiques
-!           Les codes des Rij      doivent etre identiques
-!           Si code (vitesse ou Rij) = 4
-!             il faut code (vitesse et Rij) = 4
-!           Si code (vitesse ou turbulence) = 5
-!             il faut code (vitesse et turbulence) = 5
-!           Si code (vitesse ou turbulence) = 6
-!             il faut code (vitesse et turbulence) = 6
-!           Si code scalaire (hormis pression ou fluctuations) = 5
-!             il faut code vitesse = 5
-!           Si code scalaire (hormis pression ou fluctuations) = 6
-!             il faut code vitesse = 6
-
-
-! REMARQUES
-! ==========
-
-!       Attention : pour imposer un flux (non nul) sur les Rij,
-!                   la viscosite a prendre en compte est VISCL
-!                   meme si VISCT existe (VISCT=RHO CMU K2/EPSILON)
-
-
-!       On dispose du tableau de tri des faces de bord au pas
-!           de temps precedent (sauf au premier pas de temps, ou
-!           ITRIFB n'a pas ete renseigne).
-!       Le tableau du type des faces de bord ITYPFB a ete
-!           reinitialise avant d'entrer dans le sous programme.
-
-
-
-!       Noter comment acceder a certaines variables :
-
-! Valeurs aux cellules
-!               Soit        IEL = IFABOR(IFAC)
-
-! * Masse vol                       phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IROM (IPHAS)))
-! * Viscosite moleculaire dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCL(IPHAS)))
-! * Viscosite turbulente  dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCT(IPHAS)))
-! * Chaleur specifique              phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(ICP   (IPHAS)))
-! * Diffusivite lambda           scalaire ISCAL, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISLS(ISCAL)))
-
-! Valeurs aux faces de bord
-
-! * Masse vol                      phase IPHAS, face de bord IFAC :
-!                  PROPFB(IFAC,IPPROB(IROM (IPHAS)))
-! * Flux de masse relatif a la variable  IVAR , face de bord IFAC :
-!      (i.e. le flux de masse servant a la convection de IVAR)
-!                  PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))
-! * Pour les autres grandeurs              a la face de bord IFAC :
-!      prendre pour approximation la valeur dans la cellule  IEL
-!      adjacente i.e. comme plus haut avec IEL = IFABOR(IFAC).
+!        Note that the default condition for scalars
+!         (other than k and epsilon) is homogeneous Neumann.
+
+!     - Symmetry (= impermeable frictionless wall):
+
+!       -> Nothing to specify
+
+
+!     - Free outlet (more precisely free inlet/outlet with prescribed pressure)
+
+!       -> Nothing to prescribe for pressure and velocity
+!          For scalars and turbulent values, a Dirichlet value may optionally
+!            be specified. The behavior is as follows:
+!              * pressure is always handled as a Dirichlet condition
+!              * if the mass flow is inflowing:
+!                  we retain the velocity at infinity
+!                  Dirichlet condition for scalars and turbulent values
+!                    (or zero flux if the user has not specified a
+!                    Dirichlet value)
+!                if the mass flow is outflowing:
+!                  we prescribe zero flux on the velocity, the scalars,
+!                  and turbulent values
+
+!       Note that the pressure will be reset to P0
+!           on the first free outlet face found
+
+
+!    For "non-standard" conditions:
+!    ------------------------------
+
+!     Other than (inlet, free outlet, wall, symmetry), we define
+!      - on one hand, for each face:
+!        -> an admissible 'itypfb' value
+!           (i.e. greater than or equal to 1 and less than or equal to
+!            ntypmx; see its value in paramx.h).
+!           The values predefined in paramx.h:
+!           'ientre', 'isolib', 'isymet', 'iparoi', 'iparug' are in
+!           this range, and it is preferable not to assign one of these
+!           integers to 'itypfb' randomly or in an inconsiderate manner.
+!           To avoid this, we may use 'iindef' if we wish to avoid
+!           checking values in paramx.h. 'iindef' is an admissible
+!           value to which no predefined boundary condition is attached.
+!           Note that the 'itypfb' array is reinitialized at each time
+!           step to the non-admissible value of 0. If we forget to
+!           modify 'typfb' for a given face, the code will stop.
+
+!      - and on the other hand, for each face and each variable:
+!        -> a code             icodcl(ifac, ivar)
+!        -> three real values  rcodcl(ifac, ivar, 1)
+!                              rcodcl(ifac, ivar, 2)
+!                              rcodcl(ifac, ivar, 3)
+!     The value of 'icodcl' is taken from the following:
+!       1: Dirichlet      (usable for any variable)
+!       3: Neumann        (usable for any variable)
+!       4: Symmetry       (usable only for the velocity and
+!                          components of the Rij tensor)
+!       5: Smooth wall    (usable for any variable except for pressure)
+!       6: Rough wall     (usable for any variable except for pressure)
+!       9: Free outlet    (usable only for velocity)
+!     The values of the 3 'rcodcl' components are
+!      rcodcl(ifac, ivar, 1):
+!         Dirichlet for the variable          if icodcl(ifac, ivar) =  1
+!         wall value (sliding velocity, temp) if icodcl(ifac, ivar) =  5
+!         The dimension of rcodcl(ifac, ivar, 1) is that of the
+!           resolved variable: ex U (velocity in m/s),
+!                                 T (temperature in degrees)
+!                                 H (enthalpy in J/kg)
+!                                 F (passive scalar in -)
+!      rcodcl(ifac, ivar, 2):
+!         "exterior" exchange coefficient (between the prescribed value
+!                          and the value at the domain boundary)
+!                          rinfin = infinite by default
+!         For velocities U,                in kg/(m2 s):
+!           rcodcl(ifac, ivar, 2) =          (viscl+visct) / d
+!         For the pressure P,              in  s/m:
+!           rcodcl(ifac, ivar, 2) =                     dt / d
+!         For temperatures T,              in Watt/(m2 degres):
+!           rcodcl(ifac, ivar, 2) = Cp*(viscls+visct/sigmas) / d
+!         For enthalpies H,                in kg /(m2 s):
+!           rcodcl(ifac, ivar, 2) =    (viscls+visct/sigmas) / d
+!         For other scalars F              in:
+!           rcodcl(ifac, ivar, 2) =    (viscls+visct/sigmas) / d
+!              (d has the dimension of a distance in m)
+!
+!      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) <> 6:
+!        Flux density (< 0 if gain, n outwards-facing normal)
+!                         if icodcl(ifac, ivar)= 3
+!         For velocities U,                in kg/(m s2) = J:
+!           rcodcl(ifac, ivar, 3) =         -(viscl+visct) * (grad U).n
+!         For pressure P,                  en kg/(m2 s):
+!           rcodcl(ifac, ivar, 3) =                    -dt * (grad P).n
+!         For temperatures T,              in Watt/m2:
+!           rcodcl(ifac, ivar, 3) = -Cp*(viscls+visct/sigmas) * (grad T).n
+!         For enthalpies H,                in Watt/m2:
+!           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad H).n
+!         For other scalars F in :
+!           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad F).n
+
+!      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) = 6:
+!        Roughness for the rough wall law
+!         For velocities U, dynamic roughness
+!           rcodcl(ifac, ivar, 3) = rugd
+!         For other scalars, thermal roughness
+!           rcodcl(ifac, ivar, 3) = rugt
+
+
+!      Note that if the user assigns a value to itypfb equal to
+!       ientre, isolib, isymet, iparoi, or iparug
+!       and does not modify icodcl (zero value by default),
+!       itypfb will define the boundary condition type.
+
+!      To the contrary, if the user prescribes
+!        icodcl(ifac, ivar) (nonzero),
+!        the values assigned to rcodcl will be used for the considered
+!        face and variable (if rcodcl values are not set, the default
+!        values will be used for the face and variable, so:
+!                                 rcodcl(ifac, ivar, 1) = 0.d0
+!                                 rcodcl(ifac, ivar, 2) = rinfin
+!                                 rcodcl(ifac, ivar, 3) = 0.d0)
+!        Especially, we may have for example:
+!        -> set itypfb(ifac, iphas) = iparoi
+!        which prescribes default wall conditions for all variables at
+!        face ifac,
+!        -> and define IN ADDITION for variable ivar on this face
+!        specific conditions by specifying
+!        icodcl(ifac, ivar) and the 3 rcodcl values.
+
+
+!      The user may also assign to itypfb a value not equal to
+!       ientre, isolib, isymet, iparoi, iparug, iindef
+!       but greater than or equal to 1 and less than or equal to
+!       ntypmx (see values in param.h) to distinguish
+!       groups or colors in other subroutines which are specific
+!       to the case and in which itypfb is accessible.
+!       In this case though it will be necessary to
+!       prescribe boundary conditions by assigning values to
+!       icodcl and to the 3 rcodcl fields (as the value of itypfb
+!       will not be predefined in the code).
+
+
+! Consistency rules
+! =================
+
+!       A few consistency rules between 'icodcl' codes for
+!         variables with non-standard boundary conditions:
+
+!           Codes for velocity components must be identical
+!           Codes for Rij components must be identical
+!           If code (velocity or Rij) = 4
+!             we must have code (velocity and Rij) = 4
+!           If code (velocity or turbulence) = 5
+!             we must have code (velocity and turbulence) = 5
+!           If code (velocity or turbulence) = 6
+!             we must have code (velocity and turbulence) = 6
+!           If scalar code (except pressure or fluctuations) = 5
+!             we must have velocity code = 5
+!           If scalar code (except pressure or fluctuations) = 6
+!             we must have velocity code = 6
+
+
+! Remarks
+! =======
+
+!       Caution: to prescribe a flux (nonzero) to Rij,
+!                the viscosity to take into account is viscl
+!                even if visct exists (visct=rho cmu k2/epsilon)
+
+!       We have the ordering array for boundary faces from the
+!           previous time step (except for the fist time step,
+!           where 'itrifb' has not been set yet).
+!       The array of boundary face types 'itypfb' has been
+!           reset before entering the subroutine.
+
+
+!       Note how to access some variables:
+
+! Cell values
+!               Let         iel = ifabor(ifac)
+
+! * Density                         phase iphas, cell iel:
+!                  propce(iel, ipproc(irom(iphas)))
+! * Dynamic molecular viscosity     phase iphas, cell iel:
+!                  propce(iel, ipproc(iviscl(iphas)))
+! * Turbulent viscosity   dynamique phase iphas, cell iel:
+!                  propce(iel, ipproc(ivisct(iphas)))
+! * Specific heat                   phase iphas, cell iel:
+!                  propce(iel, ipproc(icp(iphasl))
+! * Diffusivity: lambda          scalaire iscal, cell iel:
+!                  propce(iel, ipproc(ivisls(iscal)))
+
+! Boundary face values
+
+! * Density                        phase iphas, boundary face ifac :
+!                  propfb(ifac, ipprob(irom(iphas)))
+! * Mass flow relative to variable ivar, boundary face ifac:
+!      (i.e. the mass flow used for convecting ivar)
+!                  propfb(ifac, pprob(ifluma(ivar )))
+! * For other values                  at boundary face ifac:
+!      take as an approximation the value in the adjacent cell iel
+!      i.e. as above with iel = ifabor(ifac).
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! --> ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! izfppp           ! te ! --> ! numero de zone de la face de bord              !
-! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2 ou                !
-!                  !    !     !  hauteur de rugosite (m) si icodcl=6           !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! tab de trav                                    !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
+! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common Blocks
 !===============================================================================
 
 include "paramx.h"
@@ -552,7 +519,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local Variables
 
 integer          idebia, idebra
 integer          ifac, iphas, izone, ii
@@ -562,37 +529,8 @@ double precision uref2, xkent, xeent, d2s3
 
 !===============================================================================
 
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
-!===============================================================================
-
-if(1.eq.1) then
-  write(nfecra,9001)
-  call csexit (1)
-  !==========
-endif
-
- 9001 format(                                                           &
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DE L''ENTREE DES COND. LIM.      ',/,&
-'@    =========                                               ',/,&
-'@     MODULE COMBUSTION GAZ MODELE LWC :                     ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uslwcc DOIT ETRE COMPLETE',/,&
-'@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
-'@                                                            ',/,&
-'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
-!===============================================================================
-! 1.  INITIALISATIONS
-
+! 1.  INITIALISATION
 !===============================================================================
 
 idebia = idbia0
@@ -601,31 +539,18 @@ idebra = idbra0
 d2s3 = 2.d0/3.d0
 
 !===============================================================================
-! 2.  REMPLISSAGE DU TABLEAU DES CONDITIONS LIMITES
-!       ON BOUCLE SUR LES FACES DE BORD
-!         ON DETERMINE LA FAMILLE ET SES PROPRIETES
-!           ON IMPOSE LA CONDITION LIMITE
-
-!          IMPOSER ICI LES CONDITIONS LIMITES SUR LES FACES DE BORD
-
-!          INTERVENTION UTLISATEUR
+! 2.  Assign boundary conditions to boundary faces here
 
+!     We may use selection criteria to filter boundary case subsets
+!       Loop on faces from a subset
+!         Set the boundary condition for each face
 !===============================================================================
 
-!   Pour chaque type de condition relative aux physiques particulieres
-!       on affecte un numero de zone de maniere a pouvoir donner les
-!       conditions aux limites par zone physique et non par face de maillage
-!       Un numero de zone est un entier arbitraire strictement positif
-!         et inferieur ou egal a NOZPPM (dont la valeur est fixee en
-!         parametre dans ppppar.h)
-
 iphas = 1
 
-!      ELEMENT ADJACENT A LA FACE DE BORD
 
+! Definition of a burned gas inlet (pilot flame) for each face of colour 11
 
-! ---- Facette de type entree correspondant
-!      a une entree de gaz brules (flamme pilote)
 
 CALL GETFBR('11',NLELT,LSTELT)
 !==========
@@ -634,59 +559,42 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!   Type de condition aux limites pour les variables standard
+!   Type of pre-defined boundary condidition (see above)
   itypfb(ifac,iphas) = ientre
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 1
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone
   izfppp(ifac) = izone
 
-!      - Indicateur gaz brule
+!   Indicating the inlet as a burned gas inlet
   ientgb(izone) = 1
-!      - Debit en kg/s
+!   The incoming burned gas flow refers to:
+!   a) a massflow rate   -> iqimp()  = 1
   iqimp(izone) = 0
   qimp (izone) = zero
-!      - Fraction de melange
+!
+!   b) an inlet velocity -> iqimp()  = 0
+  rcodcl(ifac,iu(iphas),1) = 0.d0
+  rcodcl(ifac,iv(iphas),1) = 0.d0
+  rcodcl(ifac,iw(iphas),1) = 21.47d0
+! ATTENTION: If iqimp()  = 1 the direction vector of the massfow has
+!            to be given here.
+!
+!   Mean Mixture Fraction at Inlet
   fment(izone) = 1.d0*fs(1)
-!      - Temperature en K
+!   Inlet Temperature in K
   tkent(izone) = 2000.d0
 
-! ------ Si on impose une entree a debit impose IQIMP(IZONE) = 1
-!        Alors l'utilisateur donne donc ici uniquement
-!              la direction du vecteur vitesse
-
-  rcodcl(ifac,iu(iphas),1) = 120.d0
-  rcodcl(ifac,iv(iphas),1) = 0.d0
-  rcodcl(ifac,iw(iphas),1) = 0.d0
-
-! ------ Traitement de la turbulence
-
-!        La turbulence est calculee par defaut si ICALKE different de 0
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference adaptes a l'entree courante si ICALKE = 1
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference et de l'intensite turvulente
-!            adaptes a l'entree courante si ICALKE = 2
-
-!        Choix pour le calcul automatique ICALKE = 1 ou 2
+!   Boundary Conditions of Turbulence
   icalke(izone) = 1
-!        Saisie des donnees
-  dh(izone)     = 0.02d0
-  xintur(izone) = 0.1d0
-
-
-
-! Exemple de cas ou ICALKE(IZONE) = 0 : DEBUT
-!    Eliminer ces lignes pour la clarte si on a fait le choix ICALKE(IZONE) = 1
+!
+!    - If ICALKE = 0 the boundary conditions of turbulence at
+!      the inlet are calculated as follows:
 
   if(icalke(izone).eq.0) then
 
-!         Calcul de k et epsilon en entree (XKENT et XEENT) a partir
-!           l'intensite turbulente et de lois standards en conduite
-!           circulaire (leur initialisation est inutile mais plus
-!           propre)
     uref2 = rcodcl(ifac,iu(iphas),1)**2                           &
            +rcodcl(ifac,iv(iphas),1)**2                           &
            +rcodcl(ifac,iw(iphas),1)**2
@@ -699,7 +607,6 @@ do ilelt = 1, nlelt
       ( uref2, xintur(izone), dh(izone), cmu, xkappa,             &
         xkent, xeent )
 
-!     (ITYTUR est un indicateur qui vaut ITURB/10)
     if    (itytur(iphas).eq.2) then
 
       rcodcl(ifac,ik(iphas),1)  = xkent
@@ -722,39 +629,31 @@ do ilelt = 1, nlelt
       rcodcl(ifac,iphi(iphas),1) = d2s3
       rcodcl(ifac,ifb(iphas),1)  = 0.d0
 
-    elseif(iturb(iphas).eq.60) then
+    elseif (iturb(iphas).eq.60) then
 
       rcodcl(ifac,ik(iphas),1)   = xkent
       rcodcl(ifac,iomg(iphas),1) = xeent/cmu/xkent
 
     endif
-  endif
-! Exemple de cas ou ICALKE(IZONE) = 0 : FIN
-
 
-! ------ Traitement des scalaires physiques particulieres :
-!        Ils sont traites automatiquement
-
-
-! ------ Traitement des scalaires utilisateurs eventuels
-
-! Exemple : On traite les scalaires rattaches a la phase courante : DEBUT
-!     Eliminer ces lignes pour la clarte s'il n'y en a pas
-  if ( (nscal-nscapp).gt.0 ) then
-    do ii = 1, (nscal-nscapp)
-      if(iphsca(ii).eq.iphas) then
-        rcodcl(ifac,isca(ii),1) = 1.d0
-      endif
-    enddo
   endif
-! Exemple : On traite les scalaires rattaches a la phase courante : FIN
+!
+!    - If ICALKE = 1 the boundary conditions of turbulence at
+!      the inlet refer to both, a hydraulic diameter and a
+!      reference velocity given in usini1.f90.
+!
+  dh(izone)     = 0.032d0
+!
+!    - If ICALKE = 2 the boundary conditions of turbulence at
+!      the inlet refer to a turbulence intensity.
+!
+  xintur(izone) = 0.d0
 
 enddo
 
 
 
-! ---- Facette de type entree correspondant
-!      a une entree de gaz frais
+! Definition of an unburned gas inlet for each face of colour 12
 
 CALL GETFBR('12',NLELT,LSTELT)
 !==========
@@ -763,106 +662,52 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!   Type de condition aux limites pour les variables standard
+!   Type of pre-defined boundary condidition (see above)
   itypfb(ifac,iphas) = ientre
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 2
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone
   izfppp(ifac) = izone
 
-!      - Indicateur gaz frais
+!   Indicating the inlet as an unburned gas inlet
   ientgf(izone) = 1
-!      - Debit en kg/s
+!   The incoming unburned gas flow refers to:
+!   a) a massflow rate   -> iqimp()  = 1
   iqimp(izone) = 0
   qimp(izone)  = zero
-!      - Fraction de melange
-  fment(izone) = 8.d-1*fs(1)
-!      - Temperature en K
-  tkent(izone) = 600.d0
-
-! ------ Si on impose une entree a debit impose IQIMP(IZONE) = 1
-!        Alors l'utilisateur donne donc ici uniquement
-!              la direction du vecteur vitesse
-
+!
+!   b) an inlet velocity -> iqimp()  = 0
   rcodcl(ifac,iu(iphas),1) = 60.d0
   rcodcl(ifac,iv(iphas),1) = 0.d0
   rcodcl(ifac,iw(iphas),1) = 0.d0
+! ATTENTION: If iqimp()  = 1 the direction vector of the massfow has
+!            to be given here.
 
-! ------ Traitement de la turbulence
-!        La turbulence est calculee par defaut si ICALKE different de 0
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference adaptes a l'entree courante si ICALKE = 1
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference et de l'intensite turvulente
-!            adaptes a l'entree courante si ICALKE = 2
-
-!        Choix pour le calcul automatique ICALKE = 1 ou 2
-  icalke(izone) = 1
-!        Saisie des donnees
-  dh(izone)     = 0.08d0
-  xintur(izone) = 0.1d0
-
-
-enddo
-
-
-! ---- Facette de type entree correspondant
-!      a une entree de dilution (traite comme une entree de gaz frais)
-
-CALL GETFBR('13',NLELT,LSTELT)
-!==========
-
-do ilelt = 1, nlelt
-
-  ifac = lstelt(ilelt)
-
-!   Type de condition aux limites pour les variables standard
-  itypfb(ifac,iphas) = ientre
-
-!   Numero de zone (on numerote de 1 a n)
-  izone = 3
-
-!      - Reperage de la zone a laquelle appartient la face
-  izfppp(ifac) = izone
+!   Mean Mixture Fraction at Inlet
+  fment(izone) = 8.d-1*fs(1)
 
-!      - Indicateur gaz frais
-  ientgf(izone) = 1
-!      - Debit en kg/s
-  iqimp(izone) = 0
-  qimp(izone)  = zero
-!      - Fraction de melange
-  fment(izone) = zero
-!      - Temperature en K
+!   Inlet Temperature in K
   tkent(izone) = 600.d0
 
-! ------ Si on impose une entree a debit impose IQIMP(IZONE) = 1
-!        Alors l'utilisateur donne donc ici uniquement
-!              la direction du vecteur vitesse
-
-  rcodcl(ifac,iu(iphas),1) = 120.d0
-  rcodcl(ifac,iv(iphas),1) = 0.d0
-  rcodcl(ifac,iw(iphas),1) = 0.d0
-
-! ------ Traitement de la turbulence
-
-!        La turbulence est calculee par defaut si ICALKE different de 0
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference adaptes a l'entree courante si ICALKE = 1
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference et de l'intensite turvulente
-!            adaptes a l'entree courante si ICALKE = 2
-
-!        Choix pour le calcul automatique ICALKE = 1 ou 2
+!   Boundary Conditions of Turbulence
   icalke(izone) = 1
-!        Saisie des donnees
-  dh(izone)     = 0.02d0
+!
+!    - If ICALKE = 1 the boundary conditions of turbulence at
+!      the inlet refer to both, a hydraulic diameter and a
+!      reference velocity given in usini1.f90.
+!
+  dh(izone)     = 0.08d0
+!
+!    - If ICALKE = 2 the boundary conditions of turbulence at
+!      the inlet refer to a turbulence intensity.
+!
   xintur(izone) = 0.1d0
 
 enddo
 
-! --- On impose en couleur 51 et 5 une paroi laterale
+!  Definition of a wall for each face of colour 51 and 5
 
 CALL GETFBR('51 or 5',NLELT,LSTELT)
 !==========
@@ -871,24 +716,18 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          PAROI : DEBIT NUL (FLUX NUL POUR LA PRESSION)
-!                  FROTTEMENT POUR LES VITESSES (+GRANDEURS TURB)
-!                  FLUX NUL SUR LES SCALAIRES
-
-
-
 !   Type de condition aux limites pour les variables standard
   itypfb(ifac,iphas)   = iparoi
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 4
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone
   izfppp(ifac) = izone
 
 enddo
 
-! --- On impose en couleur 91 et 9 une sortie
+!  Definition of an exit for each face of colour 91 and 9
 
 CALL GETFBR('91 or 9',NLELT,LSTELT)
 !==========
@@ -897,22 +736,19 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          SORTIE : FLUX NUL VITESSE ET TEMPERATURE, PRESSION IMPOSEE
-!            Noter que la pression sera recalee a P0
-!                sur la premiere face de sortie libre (ISOLIB)
-
 !   Type de condition aux limites pour les variables standard
   itypfb(ifac,iphas)   = isolib
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 5
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zone 9
   izfppp(ifac) = izone
 
 enddo
 
-! --- On impose en couleur 41 et 4 une symetrie
+!  Definition of symmetric boundary conditions for each
+!  face of colour 41 and 4.
 
 CALL GETFBR('41 or 4',NLELT,LSTELT)
 !==========
@@ -921,24 +757,21 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          SYMETRIES
-
 !   Type de condition aux limites pour les variables standard
   itypfb(ifac,iphas)   = isymet
 
-!   Numero de zone (on numerote de 1 a n)
+!   Zone number (arbitrary number between 1 and n)
   izone = 6
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Allocation of the actual face to the zonec
   izfppp(ifac) = izone
 
 enddo
 
 
-
 !----
-! FIN
+! END
 !----
 
 return
-end
+end subroutine
diff --git a/users/cogz/uslwci.f90 b/users/cogz/uslwci.f90
index 9582823..1b31606 100644
--- a/users/cogz/uslwci.f90
+++ b/users/cogz/uslwci.f90
@@ -1,12 +1,12 @@
 !-------------------------------------------------------------------------------
 
-!VERS
-
+!                      Code_Saturne version 2.0.0-beta2
+!                      --------------------------
 
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,150 +44,196 @@ subroutine uslwci &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! PURPOSE :
 ! --------
-
-! INITIALISATION DES VARIABLES DE CALCUL
-!    POUR LA PHYSIQUE PARTICULIERE : COMBUSTION GAZ MODELE LWC
-!    PENDANT DE USINIV.F
-
-! Cette routine est appelee en debut de calcul (suite ou non)
-!     dans la boucle en temps avant la resolution des scalaires
-
-! Elle permet d'INITIALISER ou de MODIFIER (pour les calculs suite)
-!     les variables de calcul.
-
-
-! On a repris a titre d'exemple dans cette routine utilisateur
-!     l'initialisation choisie par defaut.
-
-
-! Les proprietes physiques sont accessibles dans le tableau
-!     PROPCE (prop au centre), PROPFA (aux faces internes),
-!     PROPFB (prop aux faces de bord)
-!     Ainsi,
-!      PROPCE(IEL,IPPROC(IROM  (IPHAS))) designe ROM   (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISCL(IPHAS))) designe VISCL (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(ICP   (IPHAS))) designe CP    (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISLS(ISCAL))) designe VISLS (IEL ,ISCAL)
-
-!      PROPFA(IFAC,IPPROF(IFLUMA(IVAR ))) designe FLUMAS(IFAC,IVAR)
-
-!      PROPFB(IFAC,IPPROB(IROM  (IPHAS))) designe ROMB  (IFAC,IPHAS)
-!      PROPFB(IFAC,IPPROB(IFLUMA(IVAR ))) designe FLUMAB(IFAC,IVAR)
-
-! LA MODIFICATION DES PROPRIETES PHYSIQUES (ROM, VISCL, VISCLS, CP)
-!     SE FERA EN STANDARD DANS LE SOUS PROGRAMME PPPHYV
-!     ET PAS ICI
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Initialisation of the transported variables of EBU combustion model.
+! The latter ones are used to calculate premixed flame properties
+! by applying detailed thermochemistry data.
+!
+! FEATURES:
+! --------
+! - This subroutine is called at the beginning of both a restart-calculation
+!   and a new calculation.
+! - The user is able to modify the initial conditions of the tranported
+!   variables.
+! - All variables of state deducible from the transported variables, as well as
+!   the detailed thermochemistry data (JANAF-table) are located in the array named
+!
+!   a) PROPCE (Properties in the cell center).
+!   b) PROPFA (Properties at internal faces).
+!   c) PROPFB (Properties at boundary faces).
+!
+!   Examples:
+!   PROPCE(IEL,IPPROC(IROM  (IPHAS))) =  IROM of cell IEL of phase IPHAS
+!   PROPCE(IEL,IPPROC(ICP   (IPHAS))) =  ICP  of cell IEL of phase IPHAS
+!
+!   PROPFA(IFAC,IPPROF(IFLUMA(IVAR )))=  FLUMAS of IVAR at the internal face IFAC
+!
+!   PROPFB(IFAC,IPPROB(IROM  (IPHAS)))=  ROMB of IPHAS at the boundary face IFAC
+!   PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))=  FLUMAB of IVAR at the boundary face IFAC
+
+!   All cells can be identified by using the subroutine 'getcel'.
+!    Syntax of getcel:
+!     getcel(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+
+!       string may contain:
+!       - references to colors (ex.: 1, 8, 26, ...
+!       - references to groups (ex.: inlet, group1, ...)
+!       - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!       These criteria may be combined using logical operators
+!       ('and', 'or') and parentheses.
+!       Example: '1 and (group2 or group3) and y < 1' will select boundary
+!       faces of color 1, belonging to groups 'group2' or 'group3' and
+!       with face center coordinate y less than 1.
+!
+!   All boundary faces may be identified using the 'getfbr' subroutine.
+!    Syntax of getfbr:
+!     getfbr(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
+!
+!   All internam faces may be identified using the 'getfac' subroutine.
+!    Syntax of getfac:
+!     getfac(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
-! rtp              ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! tab de trav                                    !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
+! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common Blocks
 !===============================================================================
 
 include "paramx.h"
@@ -206,7 +252,7 @@ include "cpincl.h"
 include "ppincl.h"
 
 !===============================================================================
-
+! Arguments
 integer          idbia0 , idbra0
 integer          ndim   , ncelet , ncel   , nfac   , nfabor
 integer          nfml   , nprfml
@@ -230,7 +276,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local Variables
 
 integer          idebia, idebra
 integer          iel, mode, igg, iphas, izone
@@ -245,22 +291,15 @@ double precision valmax, valmin
 !===============================================================================
 
 
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
-!===============================================================================
-
-if(1.eq.1) return
 
 !===============================================================================
-! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
-
-!===============================================================================
-! 0. IMPRESSION DE CONTROLE
+! 0. CONTROL OUTPUT
 !===============================================================================
 
 write(nfecra,9001)
 
 !===============================================================================
-! 1.  INITIALISATION VARIABLES LOCALES
+! 1.  INITIALISATION OF LOCAL VARIABLES
 !===============================================================================
 
 idebia = idbia0
@@ -273,18 +312,18 @@ enddo
 iphas  = 1
 
 !===============================================================================
-! 2. INITIALISATION DES INCONNUES :
-!      UNIQUEMENT SI ON NE FAIT PAS UNE SUITE
+! 2. INITIALISATION OF TRANSPORTED VARIABLES
 !===============================================================================
 
 if ( isuite.eq.0 ) then
 
-! ----- Calculs preliminaires : Fraction de melange, T, H
-!     (la valeur NOZAPM est utilisee pour inclure les aspects parall)
+! a. Preliminary calculations
 
   sommqf = zero
   sommq  = zero
   sommqt = zero
+
+!    Deals with multiple inlets
   do izone = 1, nozapm
     sommqf = sommqf + qimp(izone)*fment(izone)
     sommqt = sommqt + qimp(izone)*tkent(izone)
@@ -299,7 +338,8 @@ if ( isuite.eq.0 ) then
     tentm = t0(iphas)
   endif
 
-! ----- Enthalpie du melange HINIT
+! ----- Calculation of the Enthalpy of the gas mixture
+!       (unburned mean gas)
 
   if ( ippmod(icolwc).eq.1 .or. ippmod(icolwc).eq.3               &
                              .or. ippmod(icolwc).eq.5 ) then
@@ -307,6 +347,9 @@ if ( isuite.eq.0 ) then
     coefg(2) = (1.d0-fmelm)
     coefg(3) = zero
     mode     = -1
+
+!       Converting the mean temperatur boundary conditions into
+!       enthalpy values
     call cothht                                                   &
     !==========
       ( mode   , ngazg , ngazgm  , coefg  ,                       &
@@ -317,25 +360,24 @@ if ( isuite.eq.0 ) then
   do iel = 1, ncel
 
 
-! ---- initialisation de f et y
-!          on initialise y=0 pour avoir des gazs brules
-!          et enflamer le melange
+! b. Initialisation
 
+! ----- Mass fraction of Unburned (fresh) Gas
     rtp(iel,isca(iyfm))  = 0.0d0*fmelm
+! ----- Mean Mixture Fraction
     rtp(iel,isca(ifm))   = 0.d0*fmelm
-
-! ---- initialisation des variances
-
+! ---- Variance of fuel Mass fraction
     rtp(iel,isca(iyfp2m)) = zero
+! ---- Variance of Mixture Fraction
     rtp(iel,isca(ifp2m))  = zero
 
-! -----  initialisation de la covariance pour NDIRAC >= 3
+! ----- Covariance for NDIRAC >= 3
 
     if ( ippmod(icolwc).ge. 2 ) then
       rtp(iel,isca(icoyfp))   = zero
     endif
 
-! ----- Enthalpie du melange
+! ----- Enthalpy
 
     if ( ippmod(icolwc).eq.1 .or. ippmod(icolwc).eq.3             &
                                .or. ippmod(icolwc).eq.5 ) then
@@ -344,7 +386,7 @@ if ( isuite.eq.0 ) then
 
   enddo
 
-! ---> Impressions de controle des valeurs entrees par l'utlisateur
+! ---> Control Output of the user defined initialisation values
 
     write(nfecra,2000)
 
@@ -369,15 +411,13 @@ if ( isuite.eq.0 ) then
 
 endif
 
-!     Initialisation des scalaires
-
 !----
 ! FORMATS
 !----
 
  9001 format(                                                           &
 '                                                             ',/,&
-'  uslwci : Initialisation des variables par l''utilisateur   ',/,&
+'  uslwci : variables initialisation by user                  ',/,&
 '                                                             ',/)
 
  2000 format(                                                           &
@@ -385,9 +425,9 @@ endif
 ' ----------------------------------------------------------- ',/,&
 '                                                             ',/,&
 '                                                             ',/,&
-' ** INITIALISATION DES VARIABLES PROPRES AU GAZ (FL PRE LWC) ',/,&
+' ** INITIALISATION OF VARIABLES FOR Libby-Williams model     ',/,&
 '    -------------------------------------------------------- ',/,&
-'           1 SEUL PASSAGE                                    ',/,&
+'           ONLY ONE PASS                                     ',/,&
 ' ---------------------------------                           ',/,&
 '  Variable  Valeur min  Valeur max                           ',/,&
 ' ---------------------------------                           '  )
@@ -400,8 +440,8 @@ endif
 
 
 !----
-! FIN
+! END
 !----
 
 return
-end
+end subroutine
diff --git a/users/cplv/uscpcl.f90 b/users/cplv/uscpcl.f90
index 09dd739..90acec3 100644
--- a/users/cplv/uscpcl.f90
+++ b/users/cplv/uscpcl.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,458 +47,423 @@ subroutine uscpcl &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! PURPOSE  :
 ! --------
-
-!    ROUTINE UTILISATEUR POUR PHYSIQUE PARTICULIERE
-!                COMBUSTION CHARBON PULVERISE
-!    REMPLISSAGE DU TABLEAU DE CONDITIONS AUX LIMITES
-!    (ICODCL,RCODCL) POUR LES VARIABLES INCONNUES
-!    PENDANT DE USCLIM.F
-
-
-
-
-! INTRODUCTION
+!    USER'S ROUTINE FOR EXTENDED PHYSIC
+!           PULVERISED COAL COMBUSTION
+!    ALLOCATION OF BOUNDARY CONDITIONS (ICODCL,RCODCL)
+!    FOR VARIABLES UNKNOWN DURING USCLIM
+!
+! Introduction
 ! ============
 
-! On donne ici les conditions aux limites par face de bord.
+! Here we define boundary conditions on a per-face basis.
 
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
+! Boundary faces may be identified using the 'getfbr' subroutine.
 
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
+!  getfbr(string, nelts, eltlst) :
+!  - string is a user-supplied character string containing
+!    selection criteria;
+!  - nelts is set by the subroutine. It is an integer value
+!    corresponding to the number of boundary faces verifying the
+!    selection criteria;
+!  - lstelt is set by the subroutine. It is an integer array of
+!    size nelts containing the list of boundary faces verifying
+!    the selection criteria.
 
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+!  string may contain:
+!  - references to colors (ex.: 1, 8, 26, ...
+!  - references to groups (ex.: inlet, group1, ...)
+!  - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!  These criteria may be combined using logical operators
+!  ('and', 'or') and parentheses.
+!  Example: '1 and (group2 or group3) and y < 1' will select boundary
+!  faces of color 1, belonging to groups 'group2' or 'group3' and
+!  with face center coordinate y less than 1.
 
 
-! TYPE DE CONDITIONS AUX LIMITES
-! ==============================
 
-! On peut affecter les conditions aux limites de deux manieres.
+! Boundary condition types
+! ========================
 
+! Boundary conditions may be assigned in two ways.
 
-!    Pour les conditions "standard" :
-!    --------------------------------
 
-!     (entree, sortie libre, paroi, symetrie), on donne un code
-!     stocke dans le tableau ITYPFB (dimensionne au nombre de
-!     faces de bord,nombre de phases). Ce code sera ensuite
-!     utilise par un sous-programme non utilisateur pour affecter
-!     les conditions correspondantes (les scalaires, en
-!     particulier, recevront alors les conditions de la phase a
-!     laquelle ils sont associes). Ainsi :
+!    For "standard" boundary conditions:
+!    -----------------------------------
 
-!     Code      |  Type de bord
-!     -------------------------
-!      IENTRE   |   Entree
-!      ISOLIB   |   Sortie libre
-!      ISYMET   |   Symetrie
-!      IPAROI   |   Paroi (lisse)
-!      IPARUG   |   Paroi rugueuse
+!     (inlet, free outlet, wall, symmetry), we define a code
+!     in the 'itypfb' array (of dimensions number of boundary faces,
+!     number of phases). This code will then be used by a non-user
+!     subroutine to assign the following conditions (scalars in
+!     particular will receive the conditions of the phase to which
+!     they are assigned). Thus:
 
-!     Les entiers IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!     sont affectes par ailleurs (include param.h). Leur valeur
-!     est superieure ou egale a 1 et
-!         inferieure ou egale a NTYPMX (valeur fixee dans paramx.h)
+!     Code      |  Boundary type
+!     --------------------------
+!      ientre   |   Inlet
+!      isolib   |   Free outlet
+!      isymet   |   Symmetry
+!      iparoi   |   Wall (smooth)
+!      iparug   |   Rough wall
 
+!     Integers ientre, isolib, isymet, iparoi, iparug
+!     are defined elsewhere (param.h). Their value is greater than
+!     or equal to 1 and less than or equal to ntypmx
+!     (value fixed in paramx.h)
 
 
-!     En outre, il faut donner certaines valeurs :
+!     In addition, some values must be defined:
 
 
-!     - Entree (plus precisement entree/sortie a debit impose, car le debit
-!               peut etre impose sortant) :
+!     - Inlet (more precisely, inlet/outlet with prescribed flow, as
+!              the flow may be prescribed as an outflow):
 
-!       -> Conditions de Dirichlet sur les variables
-!         autres que la pression obligatoire si le flux est entrant,
-!         optionnelle si le flux est sortant (le code affecte flux nul
-!         si aucun Dirichlet n'est specifie) ; ainsi
-!         en face IFAC, sur la variable IVAR : RCODCL(IFAC,IVAR,1)
+!       -> Dirichlet conditions on variables
+!         other than pressure are mandatory if the flow is incoming,
+!         optional if the flow is outgoing (the code assigns 0 flux
+!         if no Dirichlet is specified); thus,
+!         at face 'ifac', for the variable 'ivar': rcodcl(ifac, ivar, 1)
 
 
-!     - Paroi lisse : (= solide impermeable, avec frottement lisse)
+!     - Smooth wall: (= impermeable solid, with smooth friction)
 
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 5
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
+!       -> Velocity value for sliding wall if applicable
+!         at face ifac, rcodcl(ifac, iu, 1)
+!                       rcodcl(ifac, iv, 1)
+!                       rcodcl(ifac, iw, 1)
+!       -> Specific code and prescribed temperature value
+!         at wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 5
+!                       rcodcl(ifac, ivar, 1) = prescribed temperature
+!       -> Specific code and prescribed flux value
+!         at wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 3
+!                       rcodcl(ifac, ivar, 3) = prescribed flux
 !                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-
-!     - Paroi rugueuse : (= solide impermeable, avec frottement rugueux)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Valeur de la hauteur de rugosite dynamique a specifier dans
-!                       RCODCL(IFAC,IU,3) (valeur pour IV et IW non utilisee)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi rugueuse s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 6
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!                       RCODCL(IFAC,IVAR,3) = Hauteur de rugosite thermique
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
+!        Note that the default condition for scalars
+!         (other than k and epsilon) is homogeneous Neumann.
+
+
+!     - Rough wall: (= impermeable solid, with rough friction)
+
+!       -> Velocity value for sliding wall if applicable
+!         at face ifac, rcodcl(ifac, iu, 1)
+!                       rcodcl(ifac, iv, 1)
+!                       rcodcl(ifac, iw, 1)
+!       -> Value of the dynamic roughness height to specify in
+!                       rcodcl(ifac, iu, 3) (value for iv et iw not used)
+!       -> Specific code and prescribed temperature value
+!         at rough wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 6
+!                       rcodcl(ifac, ivar, 1) = prescribed temperature
+!                       rcodcl(ifac, ivar, 3) = dynamic roughness height
+!       -> Specific code and prescribed flux value
+!         at rough wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 3
+!                       rcodcl(ifac, ivar, 3) = prescribed flux
 !                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-!     - Symetrie (= paroi impermeable avec glissement) :
-
-!       -> Rien a preciser
-
-
-!     - Sortie libre (plus precisement entree/sortie libre a pression imposee)
-
-!       -> Rien a preciser pour la pression et la vitesse
-!          Pour les scalaires et grandeurs turbulentes, une valeur de Dirichlet
-!            peut etre specifiee de maniere optionnelle. Le comportement est le
-!            suivant :
-!              * la pression est toujours traitee en Dirichlet
-!              * si flux de masse entrant :
-!                  on retient la vitesse a l'infini
-!                  condition de Dirichlet pour les scalaires et grandeurs
-!                    turbulentes (ou flux nul si l'utilisateur n'a pas
-!                    specifie de Dirichlet)
-!                 si flux de masse sortant :
-!                    on impose un flux nul sur la vitesse, les scalaires et
-!                    les grandeurs turbulentes
-
-!       Noter que la pression sera recalee a P0
-!           sur la premiere face de sortie libre trouvee
-
-
-!    Pour les conditions "non standard" :
-!    ------------------------------------
-
-!     Autres que (entree, sortie libre, paroi, symetrie), on donne
-!      - d'une part, pour chaque face :
-!        -> une valeur de ITYPFB admissible
-!           ie superieure ou egale a 1 et inferieure ou egale a
-!           NTYPMX (voir sa valeur dans paramx.h).
-!           Les valeurs predefinies dans paramx.h
-!           IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG sont dans cet
-!           intervalle et il est preferable de ne pas affecter
-!           inconsidrement et par hasard a ITYPFB la valeur
-!           d'un de ces entiers. Pour eviter cela, on peut
-!           utiliser IINDEF si l'on souhaite eviter de verifier
-!           les valeurs dans paramx.h. IINDEF est une valeur
-!           admissible a laquelle n'est attachee aucune condition
-!           limite predefinie.
-!           Noter que le tableau ITYPFB est
-!           reinitialise a chaque pas de temps a la valeur
-!           non admissible 0. Si on oublie de modifier ITYPFB pour
-!           une face, le code s'arretera.
-
-!      - et d'autre part pour chaque face et chaque variable :
-!        -> un code     ICODCL(IFAC,IVAR)
-!        -> trois reels RCODCL(IFAC,IVAR,1)
-!                       RCODCL(IFAC,IVAR,2)
-!                       RCODCL(IFAC,IVAR,3)
-!     La valeur de ICODCL est prise parmi les suivantes :
-!       1 : Dirichlet      (utilisable pour toute variable)
-!       3 : Neumann        (utilisable pour toute variable)
-!       4 : Symetrie       (utilisable uniquement pour la vitesse et
-!                                   les composantes du tenseur Rij)
-!       5 : Paroi lisse    (utilisable pour toute variable sauf la
-!                                                         pression)
-!       6 : Paroi rugueuse (utilisable pour toute variable sauf la
-!                                                         pression)
-!       9 : Sortie libre   (utilisable uniquement pour la vitesse)
-!     Les valeurs des 3 reels RCODCL sont les suivantes
-!      RCODCL(IFAC,IVAR,1) :
-!         Dirichlet sur la variable        si ICODCL(IFAC,IVAR)=  1
-!         valeur en paroi (defilmnt, temp) si ICODCL(IFAC,IVAR)=  5
-!         La dimension de RCODCL(IFAC,IVAR,1) est celle de la
-!           variable resolue : ex U (vitesse en m/s),
-!                                 T (temperature en degres)
-!                                 H (enthalpie en J/kg)
-!                                 F (scalaire passif en -)
-!      RCODCL(IFAC,IVAR,2) :
-!         coefficient d'echange "exterieur" (entre la valeur
-!                          imposee et la valeur au bord du domaine)
-!                          RINFIN = infini par defaut
-!         Pour les vitesses U,             en kg/(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =            (VISCL+VISCT) / D
-!         Pour la  pression P,             en  s/m          :
-!           RCODCL(IFAC,IVAR,2) =                       DT / D
-!         Pour les temperatures T,         en Watt/(m2 degres) :
-!           RCODCL(IFAC,IVAR,2) = CP*(VISCLS+VISCT/SIGMAS) / D
-!         Pour les enthalpies H,           en kg /(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!              (D a la dimension d'une distance en m)
-
-!      RCODCL(IFAC,IVAR,3) si ICODCL(IFAC,IVAR)<>6 :
-!        Densite de flux (< 0 si gain, n normale orientee vers l'exterieur)
-!                         si ICODCL(IFAC,IVAR)= 3
-!         Pour les vitesses U,             en kg/(m s2) = J :
-!           RCODCL(IFAC,IVAR,3) =           -(VISCL+VISCT) * (GRAD U).n
-!         Pour la  pression P,             en kg/(m2 s)     :
-!           RCODCL(IFAC,IVAR,3) =                      -DT * (GRAD P).n
-!         Pour les temperatures T,         en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =-CP*(VISCLS+VISCT/SIGMAS) * (GRAD T).n
-!         Pour les enthalpies H,           en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD H).n
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD F).n
-
-!      RCODCL(IFAC,IVAR,3) SI ICODCL(IFAC,IVAR)=6 :
-!        Rugosites de la loi rugueuse
-!         Pour les vitesses U, rugosite dynamique
-!           RCODCL(IFAC,IVAR,3) = RUGD
-!         Pour les autres scalaires, rugosite thermique
-!           RCODCL(IFAC,IVAR,3) = RUGT
-
-
-!      Noter bien que si l'utilisateur affecte une valeur a ITYPFB
-!       parmi     IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!       et qu'il ne modifie pas ICODCL (valeur nulle par defaut),
-!       c'est ITYPFB qui imposera la condition limite.
-
-!      Par contre, si l'utilisateur impose
-!        ICODCL(IFAC,IVAR) (non nul),
-!        ce sont alors les valeurs de RCODCL qu'il aura fournies
-!        qui sont retenues pour la face et la variable consideree
-!        (s'il ne precise pas RCODCL, ce sont les valeurs
-!        par defaut qui sont retenues pour la face et
-!        la variable consideree soit :
-!                                 RCODCL(IFAC,IVAR,1) = 0.D0
-!                                 RCODCL(IFAC,IVAR,2) = RINFIN
-!                                 RCODCL(IFAC,IVAR,3) = 0.D0)
-!        En particulier, on peut par exemple
-!        -> donner ITYPFB(IFAC,IPHAS) = IPAROI
-!        qui impose les conditions de paroi par defaut pour toutes
-!        les variables sur la face IFAC,
-!        -> et preciser EN OUTRE pour la variable IVAR sur cette
-!        face IFAC des conditions paarticulieres en imposant
-!        ICODCL(IFAC,IVAR) et les 3 RCODCL.
-
-
-!      L'utilisateur peut egalement affecter a ITYPFB une valeur
-!       non egale a IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG, IINDEF
-!       mais superieure ou egale a 1 et inferieure ou egale a
-!       NTYPMX (voir les valeurs dans param.h) pour reperer
-!       des groupes de couleurs dans d'autres sous programmes
-!       qui lui seraient propres et ou ITYPFB serait disponible.
-!       Dans ce cas cependant, il faudra
-!       imposer les conditions limites en donnant des valeurs a
-!       ICODCL et aux trois RCODCL (puisque la valeur de ITYPFB
-!       ne sera pas predefinie dans le code).
-
-
-! REGLES DE COHERENCE
-! ===================
-
-!       Quelques regles de coherence entre les codes ICODCL
-!         des variables pour les conditions non standard :
-
-!           Les codes des vitesses doivent etre identiques
-!           Les codes des Rij      doivent etre identiques
-!           Si code (vitesse ou Rij) = 4
-!             il faut code (vitesse et Rij) = 4
-!           Si code (vitesse ou turbulence) = 5
-!             il faut code (vitesse et turbulence) = 5
-!           Si code (vitesse ou turbulence) = 6
-!             il faut code (vitesse et turbulence) = 6
-!           Si code scalaire (hormis pression ou fluctuations) = 5
-!             il faut code vitesse = 5
-!           Si code scalaire (hormis pression ou fluctuations) = 6
-!             il faut code vitesse = 6
-
-
-! REMARQUES
-! ==========
-
-!       Attention : pour imposer un flux (non nul) sur les Rij,
-!                   la viscosite a prendre en compte est VISCL
-!                   meme si VISCT existe (VISCT=RHO CMU K2/EPSILON)
-
-
-!       On dispose du tableau de tri des faces de bord au pas
-!           de temps precedent (sauf au premier pas de temps, ou
-!           ITRIFB n'a pas ete renseigne).
-!       Le tableau du type des faces de bord ITYPFB a ete
-!           reinitialise avant d'entrer dans le sous programme.
-
-
-
-!       Noter comment acceder a certaines variables :
-
-! Valeurs aux cellules
-!               Soit        IEL = IFABOR(IFAC)
-
-! * Masse vol                       phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IROM (IPHAS)))
-! * Viscosite moleculaire dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCL(IPHAS)))
-! * Viscosite turbulente  dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCT(IPHAS)))
-! * Chaleur specifique              phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(ICP   (IPHAS)))
-! * Diffusivite lambda           scalaire ISCAL, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISLS(ISCAL)))
-
-! Valeurs aux faces de bord
-
-! * Masse vol                      phase IPHAS, face de bord IFAC :
-!                  PROPFB(IFAC,IPPROB(IROM (IPHAS)))
-! * Flux de masse relatif a la variable  IVAR , face de bord IFAC :
-!      (i.e. le flux de masse servant a la convection de IVAR)
-!                  PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))
-! * Pour les autres grandeurs              a la face de bord IFAC :
-!      prendre pour approximation la valeur dans la cellule  IEL
-!      adjacente i.e. comme plus haut avec IEL = IFABOR(IFAC).
+!        Note that the default condition for scalars
+!         (other than k and epsilon) is homogeneous Neumann.
+
+!     - Symmetry (= impermeable frictionless wall):
+
+!       -> Nothing to specify
+
+
+!     - Free outlet (more precisely free inlet/outlet with prescribed pressure)
+
+!       -> Nothing to prescribe for pressure and velocity
+!          For scalars and turbulent values, a Dirichlet value may optionally
+!            be specified. The behavior is as follows:
+!              * pressure is always handled as a Dirichlet condition
+!              * if the mass flow is inflowing:
+!                  we retain the velocity at infinity
+!                  Dirichlet condition for scalars and turbulent values
+!                    (or zero flux if the user has not specified a
+!                    Dirichlet value)
+!                if the mass flow is outflowing:
+!                  we prescribe zero flux on the velocity, the scalars,
+!                  and turbulent values
+
+!       Note that the pressure will be reset to P0
+!           on the first free outlet face found
+
+
+!    For "non-standard" conditions:
+!    ------------------------------
+
+!     Other than (inlet, free outlet, wall, symmetry), we define
+!      - on one hand, for each face:
+!        -> an admissible 'itypfb' value
+!           (i.e. greater than or equal to 1 and less than or equal to
+!            ntypmx; see its value in paramx.h).
+!           The values predefined in paramx.h:
+!           'ientre', 'isolib', 'isymet', 'iparoi', 'iparug' are in
+!           this range, and it is preferable not to assign one of these
+!           integers to 'itypfb' randomly or in an inconsiderate manner.
+!           To avoid this, we may use 'iindef' if we wish to avoid
+!           checking values in paramx.h. 'iindef' is an admissible
+!           value to which no predefined boundary condition is attached.
+!           Note that the 'itypfb' array is reinitialized at each time
+!           step to the non-admissible value of 0. If we forget to
+!           modify 'typfb' for a given face, the code will stop.
+
+!      - and on the other hand, for each face and each variable:
+!        -> a code             icodcl(ifac, ivar)
+!        -> three real values  rcodcl(ifac, ivar, 1)
+!                              rcodcl(ifac, ivar, 2)
+!                              rcodcl(ifac, ivar, 3)
+!     The value of 'icodcl' is taken from the following:
+!       1: Dirichlet      (usable for any variable)
+!       3: Neumann        (usable for any variable)
+!       4: Symmetry       (usable only for the velocity and
+!                          components of the Rij tensor)
+!       5: Smooth wall    (usable for any variable except for pressure)
+!       6: Rough wall     (usable for any variable except for pressure)
+!       9: Free outlet    (usable only for velocity)
+!     The values of the 3 'rcodcl' components are
+!      rcodcl(ifac, ivar, 1):
+!         Dirichlet for the variable          if icodcl(ifac, ivar) =  1
+!         wall value (sliding velocity, temp) if icodcl(ifac, ivar) =  5
+!         The dimension of rcodcl(ifac, ivar, 1) is that of the
+!           resolved variable: ex U (velocity in m/s),
+!                                 T (temperature in degrees)
+!                                 H (enthalpy in J/kg)
+!                                 F (passive scalar in -)
+!      rcodcl(ifac, ivar, 2):
+!         "exterior" exchange coefficient (between the prescribed value
+!                          and the value at the domain boundary)
+!                          rinfin = infinite by default
+!         For velocities U,                in kg/(m2 s):
+!           rcodcl(ifac, ivar, 2) =          (viscl+visct) / d
+!         For the pressure P,              in  s/m:
+!           rcodcl(ifac, ivar, 2) =                     dt / d
+!         For temperatures T,              in Watt/(m2 degres):
+!           rcodcl(ifac, ivar, 2) = Cp*(viscls+visct/sigmas) / d
+!         For enthalpies H,                in kg /(m2 s):
+!           rcodcl(ifac, ivar, 2) =    (viscls+visct/sigmas) / d
+!         For other scalars F              in:
+!           rcodcl(ifac, ivar, 2) =    (viscls+visct/sigmas) / d
+!              (d has the dimension of a distance in m)
+!
+!      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) <> 6:
+!        Flux density (< 0 if gain, n outwards-facing normal)
+!                         if icodcl(ifac, ivar)= 3
+!         For velocities U,                in kg/(m s2) = J:
+!           rcodcl(ifac, ivar, 3) =         -(viscl+visct) * (grad U).n
+!         For pressure P,                  en kg/(m2 s):
+!           rcodcl(ifac, ivar, 3) =                    -dt * (grad P).n
+!         For temperatures T,              in Watt/m2:
+!           rcodcl(ifac, ivar, 3) = -Cp*(viscls+visct/sigmas) * (grad T).n
+!         For enthalpies H,                in Watt/m2:
+!           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad H).n
+!         For other scalars F in :
+!           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad F).n
+
+!      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) = 6:
+!        Roughness for the rough wall law
+!         For velocities U, dynamic roughness
+!           rcodcl(ifac, ivar, 3) = rugd
+!         For other scalars, thermal roughness
+!           rcodcl(ifac, ivar, 3) = rugt
+
+
+!      Note that if the user assigns a value to itypfb equal to
+!       ientre, isolib, isymet, iparoi, or iparug
+!       and does not modify icodcl (zero value by default),
+!       itypfb will define the boundary condition type.
+
+!      To the contrary, if the user prescribes
+!        icodcl(ifac, ivar) (nonzero),
+!        the values assigned to rcodcl will be used for the considered
+!        face and variable (if rcodcl values are not set, the default
+!        values will be used for the face and variable, so:
+!                                 rcodcl(ifac, ivar, 1) = 0.d0
+!                                 rcodcl(ifac, ivar, 2) = rinfin
+!                                 rcodcl(ifac, ivar, 3) = 0.d0)
+!        Especially, we may have for example:
+!        -> set itypfb(ifac, iphas) = iparoi
+!        which prescribes default wall conditions for all variables at
+!        face ifac,
+!        -> and define IN ADDITION for variable ivar on this face
+!        specific conditions by specifying
+!        icodcl(ifac, ivar) and the 3 rcodcl values.
+
+
+!      The user may also assign to itypfb a value not equal to
+!       ientre, isolib, isymet, iparoi, iparug, iindef
+!       but greater than or equal to 1 and less than or equal to
+!       ntypmx (see values in param.h) to distinguish
+!       groups or colors in other subroutines which are specific
+!       to the case and in which itypfb is accessible.
+!       In this case though it will be necessary to
+!       prescribe boundary conditions by assigning values to
+!       icodcl and to the 3 rcodcl fields (as the value of itypfb
+!       will not be predefined in the code).
+
+
+! Consistency rules
+! =================
+
+!       A few consistency rules between 'icodcl' codes for
+!         variables with non-standard boundary conditions:
+
+!           Codes for velocity components must be identical
+!           Codes for Rij components must be identical
+!           If code (velocity or Rij) = 4
+!             we must have code (velocity and Rij) = 4
+!           If code (velocity or turbulence) = 5
+!             we must have code (velocity and turbulence) = 5
+!           If code (velocity or turbulence) = 6
+!             we must have code (velocity and turbulence) = 6
+!           If scalar code (except pressure or fluctuations) = 5
+!             we must have velocity code = 5
+!           If scalar code (except pressure or fluctuations) = 6
+!             we must have velocity code = 6
+
+
+! Remarks
+! =======
+
+!       Caution: to prescribe a flux (nonzero) to Rij,
+!                the viscosity to take into account is viscl
+!                even if visct exists (visct=rho cmu k2/epsilon)
+
+!       We have the ordering array for boundary faces from the
+!           previous time step (except for the fist time step,
+!           where 'itrifb' has not been set yet).
+!       The array of boundary face types 'itypfb' has been
+!           reset before entering the subroutine.
+
+
+!       Note how to access some variables:
+
+! Cell values
+!               Let         iel = ifabor(ifac)
+
+! * Density                         phase iphas, cell iel:
+!                  propce(iel, ipproc(irom(iphas)))
+! * Dynamic molecular viscosity     phase iphas, cell iel:
+!                  propce(iel, ipproc(iviscl(iphas)))
+! * Turbulent viscosity   dynamique phase iphas, cell iel:
+!                  propce(iel, ipproc(ivisct(iphas)))
+! * Specific heat                   phase iphas, cell iel:
+!                  propce(iel, ipproc(icp(iphasl))
+! * Diffusivity: lambda          scalaire iscal, cell iel:
+!                  propce(iel, ipproc(ivisls(iscal)))
+
+! Boundary face values
+
+! * Density                        phase iphas, boundary face ifac :
+!                  propfb(ifac, ipprob(irom(iphas)))
+! * Mass flow relative to variable ivar, boundary face ifac:
+!      (i.e. the mass flow used for convecting ivar)
+!                  propfb(ifac, pprob(ifluma(ivar )))
+! * For other values                  at boundary face ifac:
+!      take as an approximation the value in the adjacent cell iel
+!      i.e. as above with iel = ifabor(ifac).
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! --> ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! izfppp           ! te ! --> ! numero de zone de la face de bord              !
-! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2 ou                !
-!                  !    !     !  hauteur de rugosite (m) si icodcl=6           !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! tab de trav                                    !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
+! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     COMMON OF DATA
 !===============================================================================
 
 include "ihmpre.h"
@@ -553,7 +518,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! LOCAL VARIABLES
 
 integer          idebia, idebra
 integer          ifac, iphas, ii
@@ -568,9 +533,8 @@ double precision xkent, xeent
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  THIS TEST CERTIFY THIS VERY ROUTINE IS USED
+!     IN PLACE OF LIBRARY'S ONE
 !===============================================================================
 
 if (iihmpr.eq.1) then
@@ -585,12 +549,12 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DE L''ENTREE DES COND. LIM.      ',/,&
+'@ @@ BEWARE : STOP DURING BOUNDARY CONDITIONS INLET          ',/,&
 '@    =========                                               ',/,&
-'@     CHARBON PULVERISE                                      ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uscpcl DOIT ETRE COMPLETE',/,&
+'@     FOR PULVERISED COAL COMBUSTION                         ',/,&
+'@     THE USER SUBROUTINE uscpcl HAVE TO BE COMPLETED        ',/,&
 '@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@  The computation will not start                            ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
@@ -609,21 +573,21 @@ idebra = idbra0
 d2s3 = 2.d0/3.d0
 
 !===============================================================================
-! 2.  REMPLISSAGE DU TABLEAU DES CONDITIONS LIMITES
-!       ON BOUCLE SUR LES FACES DE BORD
-!         ON DETERMINE LA FAMILLE ET SES PROPRIETES
-!           ON IMPOSE LA CONDITION LIMITE
-
-!          IMPOSER ICI LES CONDITIONS LIMITES SUR LES FACES DE BORD
-
-!          INTERVENTION UTLISATEUR
-
+! 2.  ALLOCATION OF BOUNDARY CONDITIONS VECTOR
+!       LOOP ON BOUNDARY FACE
+!         FAMILY AND PROPERTIES ARE DETERMINED
+!         BOUNDARY CONDITION ALLOCATED
+!
+!     BOUNDARY CONDITIONS ON BONDARY FACE HAVE TO BE ALLOCATED HERE
+!
+!     USER'S WORK TO DO
+!
 !===============================================================================
 
 iphas = 1
 
-! ---- Facette de type entree correspondant a une entree d'air
-!        Par exemple : Air secondaire ou Air tertiaire
+! ---- BOUNDARY FACE corresponding to AIR INLET
+!      e.g. : secondary or tertiary air
 
 CALL GETFBR('12',NLELT,LSTELT)
 !==========
@@ -632,60 +596,43 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!   Type de condition aux limites pour les variables standard
+!   Kind of boundary conditions for standard variables
   itypfb(ifac,iphas) = ientre
 
-!   Numero de zone (on les numerote de 1 a n)
+!   zone's number (from 1 to n)
   izone = 1
 
-!      - Reperage de la zone a laquelle appartient la face
+!      - Allocation of the zone's number to the face
   izfppp(ifac) = izone
 
-! ------ Pour ces facettes d'entree , on est a debit impose
+!      - For theses inlet faces, mass flux is fixed
 
   ientat(izone) = 1
   iqimp(izone)  = 1
-!      - Numero de l'oxydant
+!      - Oxidizer's number (1 to 3)
   inmoxy(izone) = 1
-!      - Debit en kg/s pour l'oxydant
+!      - Oxidizer mass flow rate  in kg/s
   qimpat(izone) = 1.46d-03
-!      - Temperature en K pour l'oxydant
+!      - Oxidizer's Temperature in K
   timpat(izone) = 400.d0 + tkelvi
 
-! ------ On impose en couleur 12 une entree a debit impose
-!        L'utilisateur donne donc ici uniquement
-!          la direction du vecteur vitesse
+!      - The color 12 becomes an fixed flow rate inlet
+!        The user gives speed vector direction
+!        (speed vector norm is irrelevent)
 
   rcodcl(ifac,iu(iphas),1) = 0.d0
   rcodcl(ifac,iv(iphas),1) = 0.d0
   rcodcl(ifac,iw(iphas),1) = 5.d0
 
-! ------ Traitement de la turbulence
-
-!        La turbulence est calculee par defaut si ICALKE different de 0
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference adaptes a l'entree courante si ICALKE = 1
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference et de l'intensite turbulente
-!            adaptes a l'entree courante si ICALKE = 2
-
-!        Choix pour le calcul automatique ICALKE = 1 ou 2
+! ------ Turbulence treatment
+!   Boundary conditions of turbulence
   icalke(izone) = 1
-!        Saisie des donnees
-  dh(izone)     = 0.1d0
-  xintur(izone) = 0.1d0
-
-
-
-! Exemple de cas ou ICALKE(IZONE) = 0 : DEBUT
-!    Eliminer ces lignes pour la clarte si on a fait le choix ICALKE(IZONE) = 1
+!
+!    - If ICALKE = 0 the boundary conditions of turbulence at
+!      the inlet are calculated as follows:
 
   if(icalke(izone).eq.0) then
 
-!         Calcul de k et epsilon en entree (XKENT et XEENT) a partir
-!           l'intensite turbulente et de lois standards en conduite
-!           circulaire (leur initialisation est inutile mais plus
-!           propre)
     uref2 = rcodcl(ifac,iu(iphas),1)**2                           &
            +rcodcl(ifac,iv(iphas),1)**2                           &
            +rcodcl(ifac,iw(iphas),1)**2
@@ -698,7 +645,6 @@ do ilelt = 1, nlelt
       ( uref2, xintur(izone), dh(izone), cmu, xkappa,             &
         xkent, xeent )
 
-!     (ITYTUR est un indicateur qui vaut ITURB/10)
     if    (itytur(iphas).eq.2) then
 
       rcodcl(ifac,ik(iphas),1)  = xkent
@@ -729,16 +675,23 @@ do ilelt = 1, nlelt
     endif
 
   endif
-! Exemple de cas ou ICALKE(IZONE) = 0 : FIN
+!
+!    - If ICALKE = 1 the boundary conditions of turbulence at
+!      the inlet refer to both, a hydraulic diameter and a
+!      reference velocity given in usini1.f90.
+!
+  dh(izone)     = 0.032d0
+!
+!    - If ICALKE = 2 the boundary conditions of turbulence at
+!      the inlet refer to a turbulence intensity.
+!
+  xintur(izone) = 0.d0
 
-! ------ Traitement des scalaires physiques particulieres
-!        Ils sont traites automatiquement
+! ------ Automatic treatment of scalars for extended physic
 
 
-! ------ Traitement des scalaires utilisateurs
+! ------ treatment of user's scalars
 
-! Exemple : On traite les scalaires rattaches a la phase courante : DEBUT
-!     Eliminer ces lignes pour la clarte s'il n'y en a pas
   if ( (nscal-nscapp).gt.0 ) then
     do ii = 1, (nscal-nscapp)
       if(iphsca(ii).eq.iphas) then
@@ -749,8 +702,7 @@ do ilelt = 1, nlelt
 
 enddo
 
-! ---- Facette de type entree correspondant a une entree d'air + CP
-!        (Air Primaire + Charbon Pulverise)
+! ---- BOUNDARY FACE for pulverised COAL & primary air INLET
 
 CALL GETFBR('11',NLELT,LSTELT)
 !==========
@@ -759,27 +711,27 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!   Type de condition aux limites pour les variables standard
+!   Kind of boundary conditions for standard variables
   itypfb(ifac,iphas) = ientre
 
-!   Numero de zone (on les numerote de 1 a n)
+!   zone's number (from 1 to n)
   izone = 2
 
-!      - Reperage de la zone a laquelle appartient la face
+!      - Allocation of the zone's number to the face
   izfppp(ifac) = izone
 
-! ------ Pour ces facettes d'entree , on est a debit impose
+!      - For theses inlet faces, mass flux is fixed
 
   ientcp(izone) = 1
   iqimp(izone)  = 1
-!      - Numero de l'oxydant
+!      - Oxidizer's number (1 to 3)
   inmoxy(izone) = 1
-!      - Debit en kg/s pour l'oxydant
+!      - Oxidizer's mass flow rate in kg/s
   qimpat(izone) = 1.46d-03
-!      - Temperature en K pour l'oxydant
+!      - Oxidizer's Temperature in K
   timpat(izone) = 800.d0  + tkelvi
 
-! ------ Initialisation (debit temperature et composition)
+!        Coal inlet, initialisation
   do icha = 1, ncharm
     qimpcp(izone,icha) = zero
     timpcp(izone,icha) = zero
@@ -788,26 +740,30 @@ do ilelt = 1, nlelt
     enddo
   enddo
 
-! ------ Traitement pour le charbon ICHA = 1
+! Code_Saturne deals with NCHA different coals (component of blend)
+!       every coal is described by NCLPCH(icha) class of particles
+!       (each of them described by an inlet diameter)
+!
+!      - Treatment for the first coal
   icha = 1
-!      - Debit en kg/s pour le charbon ICHA
+!      - Coal mass flow rate in kg/s
    qimpcp(izone,icha) = 1.46d-4
-!      - Distribution en masse en % pour le charbon ICHA
-!        relative a la classe ICLAPC (1 < ICLAPC < NCLPCH(ICHA))
+!      - PERCENTAGE mass fraction of each granulometric class
   do iclapc = 1, nclpch(icha)
     distch(izone,icha,iclapc) = 100.d0/dble(nclpch(icha))
   enddo
-!      - Temperature en K pour le charbon ICHA
+!      - Inlet temperature for coal & primary air
   timpcp(izone,icha) = 800.d0 + tkelvi
 
-! ------ On impose en couleur 11 une entree a debit impose
-!        L'utilisateur donne donc ici uniquement
-!          la direction du vecteur vitesse
+!      - The color 11 becomes an fixed flow rate inlet
+!        The user gives speed vector direction
+!        (speed vector norm is irrelevent)
 
   rcodcl(ifac,iu(iphas),1) = 0.d0
   rcodcl(ifac,iv(iphas),1) = 0.d0
   rcodcl(ifac,iw(iphas),1) = 5.d0
 
+! PPl
 ! ------ Traitement de la turbulence
 
 !        La turbulence est calculee par defaut si ICALKE different de 0
@@ -823,9 +779,11 @@ do ilelt = 1, nlelt
   dh(izone)     = 0.1d0
   xintur(izone) = 0.1d0
 
+! PPl
+!
 enddo
 
-! --- On impose en couleur 15 une paroi laterale
+!     The color 15 become a WALL
 
 CALL GETFBR('15',NLELT,LSTELT)
 !==========
@@ -834,24 +792,24 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          PAROI : DEBIT NUL (FLUX NUL POUR LA PRESSION)
-!                  FROTTEMENT POUR LES VITESSES (+GRANDEURS TURB)
-!                  FLUX NUL SUR LES SCALAIRES
+!          WALL : NUL MASS FLUX (PRESSURE FLUX is zero valued)
+!                 FRICTION FOR SPEED (& TURBULENCE)
+!                 NUL SCALAR FLUX
 
-!   Type de condition aux limites pour les variables standard
+!   Kind of boundary conditions for standard variables
   itypfb(ifac,iphas)   = iparoi
 
 
-!   Numero de zone (on les numerote de 1 a n)
+!   zone's number (from 1 to n)
   izone = 3
 
-!      - Reperage de la zone a laquelle appartient la face
+!      - Allocation of the zone's number to the face
   izfppp(ifac) = izone
 
 enddo
 
 
-! --- On impose en couleur 19 une sortie
+!     The color 19 becomes an OUTLET
 
 CALL GETFBR('19',NLELT,LSTELT)
 !==========
@@ -860,22 +818,20 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          SORTIE : FLUX NUL VITESSE ET TEMPERATURE, PRESSION IMPOSEE
-!            Noter que la pression sera recalee a P0
-!                sur la premiere face de sortie libre (ISOLIB)
+!          OUTLET : NUL FLUX for SPEED & SCALARS, FIXED PRESSURE
 
-!   Type de condition aux limites pour les variables standard
+!   Kind of boundary conditions for standard variables
   itypfb(ifac,iphas)   = isolib
 
-!   Numero de zone (on les numerote de 1 a n)
+!   zone's number (from 1 to n)
   izone = 4
 
-!      - Reperage de la zone a laquelle appartient la face
+!      - Allocation of the zone's number to the face
   izfppp(ifac) = izone
 
 enddo
 
-! --- On impose en couleur 14 une symetrie
+!     The color 14 becomes a symetry plane
 
 CALL GETFBR('14 or 4',NLELT,LSTELT)
 !==========
@@ -886,21 +842,21 @@ do ilelt = 1, nlelt
 
 !          SYMETRIES
 
-!   Type de condition aux limites pour les variables standard
+!   Kind of boundary conditions for standard variables
   itypfb(ifac,iphas)   = isymet
 
-!   Numero de zone (on les numerote de 1 a n)
+!   zone's number (from 1 to n)
   izone = 5
 
-!      - Reperage de la zone a laquelle appartient la face
+!      - Allocation of the zone's number to the face
   izfppp(ifac) = izone
 
 enddo
 
 
 !----
-! FIN
+! END
 !----
 
 return
-end
+end subroutine
diff --git a/users/cplv/uscpi1.f90 b/users/cplv/uscpi1.f90
index 95d957a..e6a0ce7 100644
--- a/users/cplv/uscpi1.f90
+++ b/users/cplv/uscpi1.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,35 +28,33 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine uscpi1
+subroutine uscpi1
 !================
 
 
 !===============================================================================
-!  FONCTION  :
+!  PURPOSE   :
 !  ---------
 
-!  ROUTINE UTILISATEUR POUR ENTREE DES PARAMETRES DE CALCUL
-!  RELATIFS A LA COMBUSTION DU CHARBON PULVERISE
-!    (COMMONS)
+!  User's routine to control outing of variables for pulverised coal combustion
+!  (these parameters are in COMMON)
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -84,9 +82,8 @@ integer          ipp , icla , icha
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  THIS TEST CERTIFY THIS VERY ROUTINE IS USED
+!     IN PLACE OF LIBRARY'S ONE
 !===============================================================================
 
 if (iihmpr.eq.1) then
@@ -100,12 +97,11 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES               ',/,&
+'@ @@ BEWARE : STOP during data inlet for pulverised coal     ',/,&
 '@    =========                                               ',/,&
-'@     CHARBON PULVERISE :                                    ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uscpi1 DOIT ETRE COMPLETE',/,&
+'@     THE USER SUBROUTINE uscpi1 have to be modified         ',/,&
 '@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@  The computation will not start                            ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
@@ -115,57 +111,55 @@ endif
 
 
 !===============================================================================
-! 1. VARIABLES TRANSPORTEES
+! 1. TRANSPORTED VARIABLES
 !===============================================================================
 
-!  Sortie chrono, suivi listing, sortie histo
-!     Si l'on n'affecte pas les tableaux suivants,
-!     les valeurs par defaut seront utilisees
+! OUTLET chrono, listing, and histo
+!     if below vector are not allocated, default values will be used
 
-!       ICHRVR( ) = sortie chono (oui 1/non 0)
-!       ILISVR( ) = suivi listing (oui 1/non 0)
-!       IHISVR( ) = sortie historique (nombre de sondes et numeros)
-!       si IHISVR(.,1)  = -1 sortie sur toutes les sondes definies
-!                            dans usini1
+!       ICHRVR( ) =  chono outlet (Yes 1/No  0)
+!       ILISVR( ) =  listing outlet (Yes 1/No  0)
+!       IHISVR( ) =  histo outlet (number of roiqu and number)
+!       if IHISVR(.,1)  = -1 every probes defined in usini1
 
 
-! --> Variables propres a la suspension gaz - particules
+! --> Variables for the mix (carrying gas and coal particles)
 
-!      - Enthalpie de la suspension
+!      - Enthalpy
 ipp = ipprtp(isca(ihm))
 ichrvr(ipp)  = 1
 ilisvr(ipp)  = 1
 ihisvr(ipp,1)= -1
 
-! --> Variables propres a la phase dispersee
+! --> Variables for coal particles
 
 do icla = 1, nclacp
 
-!       - Fraction massique de coke (de la classe ICLA)
+!       - Char mass fraction (in class ICLA)
   ipp = ipprtp(isca(ixck(icla)))
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
   ihisvr(ipp,1)= -1
 
-!       - Fraction massique de charbon reactif (de la classe ICLA)
+!       - Coal mass fraction (in class ICLA)
   ipp = ipprtp(isca(ixch(icla)))
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
   ihisvr(ipp,1)= -1
 
-!       - Nb de particules par kg de melange (de la classe ICLA)
+!       - Number of particles for 1 kg mix (from class ICLA)
   ipp = ipprtp(isca(inp(icla)))
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
   ihisvr(ipp,1)= -1
 
-!       - Enthalpie massique (de la classe ICLA)
+!       - Enthalpy J/kg (for class ICLA)
   ipp = ipprtp(isca(ih2(icla)))
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
   ihisvr(ipp,1)= -1
 
-!       - Fraction massique d'eau (de la classe ICLA)
+!       - Water mass fraction (in class ICLA)
   if ( ippmod(icp3pl) .eq. 1 ) then
     ipp = ipprtp(isca(ixwt(icla)))
     ichrvr(ipp)  = 1
@@ -174,19 +168,19 @@ do icla = 1, nclacp
   endif
 enddo
 
-! --> Variables propres a la phase continue
+! --> Variables for the carrier phase
 
 do icha = 1, ncharb
 
-!       - Moyenne du traceur 1
-!         (representatif des MV legeres du charbon ICHA)
+!       - Mean of 1 mixture fraction
+!         (from light volatiles of char ICHA)
   ipp = ipprtp(isca(if1m(icha)))
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
   ihisvr(ipp,1)= -1
 
-!       - Moyenne du traceur 2
-!         (representatif des MV lourdes du charbon ICHA)
+!       - Mean of 2 mixture fraction
+!         (from heavy volatiles of char ICHA)
   ipp = ipprtp(isca(if2m(icha)))
   ichrvr(ipp)  = 1
   ilisvr(ipp)  = 1
@@ -194,15 +188,15 @@ do icha = 1, ncharb
 
 enddo
 
-!     - Moyenne du traceur 3 (representatif du C libere sous forme de CO
-!       lors de la combustion heterogene avec O2)
+!     - Mean of 3 mixture fraction
+!       (C from heterogeneoux oxidation, of char, by O2)
 ipp = ipprtp(isca(if3m))
 ichrvr(ipp)  = 1
 ilisvr(ipp)  = 1
 ihisvr(ipp,1)= -1
 
-!     - Moyenne du traceur 3 (representatif du C libere sous forme de CO
-!       lors de la combustion heterogene avec CO2)
+!     - Meam of (6 ?) mixture fraction
+!       (C from heterogeneous reaction between char and CO2)
 if ( ihtco2 .eq. 1) then
   ipp = ipprtp(isca(if3mc2))
   ichrvr(ipp)  = 1
@@ -210,14 +204,15 @@ if ( ihtco2 .eq. 1) then
   ihisvr(ipp,1)= -1
 endif
 
-!     - Variance associe au traceur 4 (representatif de l'air)
+!     - Variance of 4 mixture fraction
+!       (oxidisers)
 ipp = ipprtp(isca(if4p2m))
 ichrvr(ipp)  = 1
 ilisvr(ipp)  = 1
 ihisvr(ipp,1)= -1
 
-!     - Moyenne du traceur 5 (representatif de la vapeur d'eau liberee
-!       lors de la phase de sechage)
+!     - Mean of 5 mixture fraction
+!       (water vapor from drying)
 if ( ippmod(icp3pl) .eq. 1 ) then
   ipp = ipprtp(isca(if5m))
   ichrvr(ipp)  = 1
@@ -225,7 +220,7 @@ if ( ippmod(icp3pl) .eq. 1 ) then
   ihisvr(ipp,1)= -1
 endif
 
-!     - YCO2
+!     - Mass fraction of CO2 or CO (relaxation to equilibrium)
 
 if ( ieqco2 .ge. 1 ) then
   ipp = ipprtp(isca(iyco2))
@@ -235,79 +230,77 @@ if ( ieqco2 .ge. 1 ) then
 endif
 
 !===============================================================================
-! 2. VARIABLES ALGEBRIQUES OU D'ETAT
+! 2. Sate variables
 !===============================================================================
 
-!  Sortie chrono, suivi listing, sortie histo
-!     Si l'on n'affecte pas les tableaux suivants,
-!     les valeurs par defaut seront utilisees
+! OUTLET chrono, listing, and histo
+!     if below vector are not allocated, default values will be used
 
-!       ICHRVR( ) = sortie chono (oui 1/non 0)
-!       ILISVR( ) = suivi listing (oui 1/non 0)
-!       IHISVR( ) = sortie historique (nombre de sondes et numeros)
-!       si IHISVR(.,1)  = -1 sortie sur toutes les sondes definies
-!                            dans usini1
+!       ICHRVR( ) =  chono outlet (Yes 1/No  0)
+!       ILISVR( ) =  listing outlet (Yes 1/No  0)
+!       IHISVR( ) =  histo outlet (number of roiqu and number)
+!       if IHISVR(.,1)  = -1 every probes defined in usini1
 
-! --> Variables algebriques propres a la suspension gaz - particules
+! --> State varables for the mix
 
-!     - Masse molaire du melange gazeux
+!     - Mean Molar Mass
 ipp = ipppro(ipproc(immel))
 ichrvr(ipp)   = 0
 ilisvr(ipp)   = 0
 ihisvr(ipp,1) = -1
 
-! --> Variables algebriques propres a la phase dispersee
+! --> State variables for coal particles
 
 do icla = 1, nclacp
 
-!       - Temperature des particules (de la classe ICLA)
+!       - Particles' Temperature K (of class ICLA)
   ipp = ipppro(ipproc(itemp2(icla)))
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-!       - Masse volumique des particules (de la classe ICLA)
+!       - Particles' Density kg/m3 (of class ICLA)
   ipp = ipppro(ipproc(irom2(icla)))
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-!       - Diametre des particules (de la classe ICLA)
+!       - Particles' Diameter m (of class ICLA)
   ipp = ipppro(ipproc(idiam2(icla)))
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
   ihisvr(ipp,1) = -1
 
-!       - Taux de disparition du charbon reactif (s-1) < 0
-!         (de la classe ICLA)
+!       - Rate of coal consumption  (s-1) < 0
+!         (for class ICLA)
   ipp = ipppro(ipproc(igmdch(icla)))
   ichrvr(ipp)   = 0
   ilisvr(ipp)   = 0
   ihisvr(ipp,1) = -1
 
-!       - Transfert de masse du au degagemnt des MV legeres (s-1) < 0
-!         (de la classe ICLA)
+!       - Rate of light volatiles exhaust (s-1) < 0
+!         (for class ICLA)
   ipp = ipppro(ipproc(igmdv1(icla)))
   ichrvr(ipp)   = 0
   ilisvr(ipp)   = 0
   ihisvr(ipp,1) = -1
 
-!       - Transfert de masse du au degagemnt des MV lourdes (s-1) < 0
+!       - Rate of heavy volatile exhaust (s-1) < 0
 !         (de la classe ICLA)
   ipp = ipppro(ipproc(igmdv2(icla)))
   ichrvr(ipp)   = 0
   ilisvr(ipp)   = 0
   ihisvr(ipp,1) = -1
 
-!       - Taux de disparition du charbon reactif (s-1) < 0 par O2
-!         (de la classe ICLA)
+!       - Rate of char oxidation by O2 (s-1) < 0
+!         (from class ICLA)
   ipp = ipppro(ipproc(igmhet(icla)))
   ichrvr(ipp)   = 0
   ilisvr(ipp)   = 0
   ihisvr(ipp,1) = -1
 
-!       - Taux de disparition du charbon reactif (s-1) < 0 par le CO2
-!         (de la classe ICLA)
+!       - Rate of char gazeification by CO2 (s-1) < 0
+!         (from class ICLA)
   if ( ihtco2 .eq. 1 ) then
     ipp = ipppro(ipproc(ighco2(icla)))
     ichrvr(ipp)   = 0
@@ -315,8 +308,8 @@ do icla = 1, nclacp
     ihisvr(ipp,1) = -1
   endif
 
-!       - Taux de disparitionde l'humidite < 0
-!         (de la classe ICLA)
+!       - Rate of drying (s-1) < 0
+!         (from class ICLA)
   if ( ippmod(icp3pl) .eq. 1 ) then
     ipp = ipppro(ipproc(igmsec(icla)))
     ichrvr(ipp)   = 0
@@ -324,7 +317,7 @@ do icla = 1, nclacp
     ihisvr(ipp,1) = -1
   endif
 
-!       - Fraction massique de solide (de la classe ICLA)
+!       - Mass fraction (of class ICLA) in mix
   ipp = ipppro(ipproc(ix2(icla)))
   ichrvr(ipp)   = 1
   ilisvr(ipp)   = 1
@@ -332,51 +325,51 @@ do icla = 1, nclacp
 
 enddo
 
-! --> Variables algebriques propres a la phase continue
+! --> State variables for carrier gas phase
 
-!     - Temperature du melange gazeux
+!     - Temperature of gas mixture
 ipp = ipppro(ipproc(itemp1))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du CHx1m
+!     - Mass fraction (among gases) of  CHx1m
 ipp = ipppro(ipproc(iym1(1)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du CHx2m
+!     - mass fraction (among gases) of CHx2m
 ipp = ipppro(ipproc(iym1(2)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du CO
+!     - mass fraction (among gases) of CO
 ipp = ipppro(ipproc(iym1(3)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du O2
+!     - mass fraction (among gases) of O2
 ipp = ipppro(ipproc(iym1(4)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du CO2
+!     - mass fraction (among gases) of CO2
 ipp = ipppro(ipproc(iym1(5)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du H2O
+!     - mass fraction (among gases) of H2O
 ipp = ipppro(ipproc(iym1(6)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
 ihisvr(ipp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du N2
+!     - mass fraction (among gases) of N2
 ipp = ipppro(ipproc(iym1(7)))
 ichrvr(ipp)   = 1
 ilisvr(ipp)   = 1
@@ -384,28 +377,28 @@ ihisvr(ipp,1) = -1
 
 
 !===============================================================================
-! 3. OPTIONS DE CALCUL
+! 3. Computation OPTION
 !===============================================================================
 
-! --- Coefficient de relaxation de la masse volumique
+! --- Relaxation for density (Advisable when starting combustion computation)
+!                            (Forbidden for unstationnary computation)
 !      RHO(n+1) = SRROM * RHO(n) + (1-SRROM) * RHO(n+1)
 
 srrom = 0.95d0
 
 
 !===============================================================================
-! 4. CONSTANTES PHYSIQUES
+! 4. Physical constants
 !===============================================================================
 
-! ---> Viscosite laminaire associee au scalaire enthalpie
-!       DIFTL0 (diffusivite dynamique en kg/(m s))
+! ---  Laminar viscosity for enthalpy (dynamical diffusivity) kg/(m.s)
 diftl0 = 4.25d-5
 
 
 !----
-! FIN
+! END
 !----
 
 return
 
-end
+end subroutine
diff --git a/users/cplv/uscpiv.f90 b/users/cplv/uscpiv.f90
index 946a371..e3398b7 100644
--- a/users/cplv/uscpiv.f90
+++ b/users/cplv/uscpiv.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,151 +44,196 @@ subroutine uscpiv &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! PURPOSE  :
 ! --------
 
-! INITIALISATION DES VARIABLES DE CALCUL
-!    POUR LA PHYSIQUE PARTICULIERE : COMBUSTION CP
-!    PENDANT DE USINIV.F
-
-! Cette routine est appelee en debut de calcul (suite ou non)
-!     avant le debut de la boucle en temps
-
-! Elle permet d'INITIALISER ou de MODIFIER (pour les calculs suite)
-!     les variables de calcul (inconnues transportees),
-!     la valeur du pas de temps,
-
-! On a repris a titre d'exemple dans cette routine utilisateur
-!     l'initialisation choisie par defaut.
-
-
-
-! Les proprietes physiques sont accessibles dans le tableau
-!     PROPCE (prop au centre), PROPFA (aux faces internes),
-!     PROPFB (prop aux faces de bord)
-!     Ainsi,
-!      PROPCE(IEL,IPPROC(IROM  (IPHAS))) designe ROM   (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISCL(IPHAS))) designe VISCL (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(ICP   (IPHAS))) designe CP    (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISLS(ISCAL))) designe VISLS (IEL ,ISCAL)
-
-!      PROPFA(IFAC,IPPROF(IFLUMA(IVAR ))) designe FLUMAS(IFAC,IVAR)
-
-!      PROPFB(IFAC,IPPROB(IROM  (IPHAS))) designe ROMB  (IFAC,IPHAS)
-!      PROPFB(IFAC,IPPROB(IFLUMA(IVAR ))) designe FLUMAB(IFAC,IVAR)
-
-! LA MODIFICATION DES PROPRIETES PHYSIQUES (ROM, VISCL, VISCLS, CP)
-!     SE FERA EN STANDARD DANS LE SOUS PROGRAMME PPPHYV
-!     ET PAS ICI
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Initialisation of transported variables for extended physics :
+!  pulverised coal combustion
+!   similar to USINIV
+!
+! This routine is called at the beginning of every computation
+!  (new or continuation) before the time loop
+!
+! This routine initialize or modify (if continuation)
+!  values of transported variables and of the time step
+!
+! The exemple is ... default value
+
+!
+! Physical properties are stored in PROPCE(cell center)
+!  PROPFA(inner face) and PROPFB(boundary face)
+!  e.g.
+!  PROPCE(IEL, IPPROC(IROM  (IPHAS))) is ROM(IEL,IPHAS) mean density kg/m3
+!  PROPFA(IFAC,IPPROF(IFLUMA(IVAR ))) is FLUMAS(IFAC,IVAR) convective flux
+!                                                        of variable IVAR
+!  PROPFB(......                      .................................
+!
+! Physical properties (ROM, VISCL, CP ...) are computed in PPPHYV
+!  not to be modified here
+!
+!   All cells can be identified by using the subroutine 'getcel'.
+!    Syntax of getcel:
+!     getcel(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+
+!       string may contain:
+!       - references to colors (ex.: 1, 8, 26, ...
+!       - references to groups (ex.: inlet, group1, ...)
+!       - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!       These criteria may be combined using logical operators
+!       ('and', 'or') and parentheses.
+!       Example: '1 and (group2 or group3) and y < 1' will select boundary
+!       faces of color 1, belonging to groups 'group2' or 'group3' and
+!       with face center coordinate y less than 1.
+!
+!   All boundary faces may be identified using the 'getfbr' subroutine.
+!    Syntax of getfbr:
+!     getfbr(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
+!
+!   All internam faces may be identified using the 'getfac' subroutine.
+!    Syntax of getfac:
+!     getfac(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
+!
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
-! rtp              ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! tab de trav                                    !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
+! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -257,13 +302,13 @@ if(1.eq.1) return
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 0. IMPRESSION DE CONTROLE
+! 0. Control Print
 !===============================================================================
 
 write(nfecra,9001)
 
 !===============================================================================
-! 1.  INITIALISATION VARIABLES LOCALES
+! 1.  Local variables initialisation
 !===============================================================================
 
 idebia = idbia0
@@ -272,15 +317,15 @@ idebra = idbra0
 d2s3 = 2.d0/3.d0
 
 !===============================================================================
-! 2. INITIALISATION DES INCONNUES :
-!      UNIQUEMENT SI ON NE FAIT PAS UNE SUITE
+! 2. Unknows initialisation
+!      Only if the computation is'nt a continuation
 !===============================================================================
 
 if ( isuite.eq.0 ) then
 
   iphas = 1
 
-! --> Initialisation de k et epsilon (exemple)
+! --> Initialisation of k and epsilon (exemple)
 
   xkent = 1.d-10
   xeent = 1.d-10
@@ -324,15 +369,16 @@ if ( isuite.eq.0 ) then
 
   endif
 
-! --> On initialise tout le domaine de calcul avec de l'air a TINITK
+! --> All the domain is filled with the fisrt oxidizer at TINITK
 !                   ================================================
 
-! ---- Calculs de H1INIT et H2INIT
+! ---- Computation of H1INIT and H2INIT
 
   t1init = t0(iphas)
   t2init = t0(iphas)
 
-! ------ Variables de transport relatives a la phase solide
+! ------ Transported variables for the solid phase
+!         initialy lacking
 
   do icla = 1, nclacp
     icha = ichcor(icla)
@@ -351,13 +397,14 @@ if ( isuite.eq.0 ) then
     enddo
   enddo
 
-! ------ Variables de transport relatives au melange
+! ------ Transported variables for the mix (solid+carrying gas)²
 
   do ige = 1, ngazem
     coefe(ige) = zero
   enddo
 
-!       On considere l'oxydant 1
+!       Oxidizer are mix of O2, N2 (air), CO2 and H2O (recycled exhaust)
+!       the composition of the fisrt oxidiser is taken in account
 
   coefe(io2) = wmole(io2)*oxyo2(1)                                &
               /( wmole(io2) *oxyo2(1) +wmole(in2) *oxyn2(1)       &
@@ -384,8 +431,7 @@ if ( isuite.eq.0 ) then
     rtp(iel,isca(ihm)) = h1init
   enddo
 
-! ------ Variables de transport relatives au melange gazeux
-!        (scalaires passifs et variances associees)
+! ------ Transported variables for the mix (passive scalars, variance)
 
   do icha = 1, ncharb
     do iel = 1, ncel
@@ -442,11 +488,12 @@ endif
 
  9001 format(                                                           &
 '                                                             ',/,&
-'  uscpiv : Initialisation des variables par l''utilisateur   ',/,&
+'  uscpiv : Variables Initialisation for                      ',/,&
+'                    Pulverised Coal by USer                  ',/,&
 '                                                             ',/)
 
 !----
-! FIN
+! END
 !----
 return
-end
+end subroutine
diff --git a/users/cplv/uscpl1.f90 b/users/cplv/uscpl1.f90
index 1c43876..501e672 100644
--- a/users/cplv/uscpl1.f90
+++ b/users/cplv/uscpl1.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine uscpl1
+subroutine uscpl1
 !================
 
 
@@ -271,4 +271,4 @@ diftl0 = 4.25d-5
 
 return
 
-end
+end subroutine
diff --git a/users/cplv/uscplc.f90 b/users/cplv/uscplc.f90
index 14ce2fe..8f5e392 100644
--- a/users/cplv/uscplc.f90
+++ b/users/cplv/uscplc.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -829,4 +829,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/users/ctwr/usctcl.f90 b/users/ctwr/usctcl.f90
index d7d0dcd..864377c 100644
--- a/users/ctwr/usctcl.f90
+++ b/users/ctwr/usctcl.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -62,447 +62,126 @@ subroutine usctcl &
 !    =============================================
 
 
-
-! INTRODUCTION
+! Introduction
 ! ============
 
-! On donne ici les conditions aux limites par face de bord.
-
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
-
-
-! TYPE DE CONDITIONS AUX LIMITES
-! ==============================
-
-! On peut affecter les conditions aux limites de deux manieres.
-
-
-!    Pour les conditions "standard" :
-!    --------------------------------
-
-!     (entree, sortie libre, paroi, symetrie), on donne un code
-!     stocke dans le tableau ITYPFB (dimensionne au nombre de
-!     faces de bord,nombre de phases). Ce code sera ensuite
-!     utilise par un sous-programme non utilisateur pour affecter
-!     les conditions correspondantes (les scalaires, en
-!     particulier, recevront alors les conditions de la phase a
-!     laquelle ils sont associes). Ainsi :
-
-!     Code      |  Type de bord
-!     -------------------------
-!      IENTRE   |   Entree
-!      ISOLIB   |   Sortie libre
-!      ISYMET   |   Symetrie
-!      IPAROI   |   Paroi (lisse)
-!      IPARUG   |   Paroi rugueuse
-
-!     Les entiers IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!     sont affectes par ailleurs (include param.h). Leur valeur
-!     est superieure ou egale a 1 et
-!         inferieure ou egale a NTYPMX (valeur fixee dans paramx.h)
-
-
-
-!     En outre, il faut donner certaines valeurs :
-
-
-!     - Entree (plus precisement entree/sortie a debit impose, car le debit
-!               peut etre impose sortant) :
-
-!       -> Conditions de Dirichlet sur les variables
-!         autres que la pression obligatoire si le flux est entrant,
-!         optionnelle si le flux est sortant (le code affecte flux nul
-!         si aucun Dirichlet n'est specifie) ; ainsi
-!         en face IFAC, sur la variable IVAR : RCODCL(IFAC,IVAR,1)
-
-
-!     - Paroi lisse : (= solide impermeable, avec frottement lisse)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 5
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
-!                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-
-!     - Paroi rugueuse : (= solide impermeable, avec frottement rugueux)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Valeur de la hauteur de rugosite dynamique a specifier dans
-!                       RCODCL(IFAC,IU,3) (valeur pour IV et IW non utilisee)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi rugueuse s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 6
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!                       RCODCL(IFAC,IVAR,3) = Hauteur de rugosite thermique
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
-!                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-!     - Symetrie (= paroi impermeable avec glissement) :
-
-!       -> Rien a preciser
-
-
-!     - Sortie libre (plus precisement entree/sortie libre a pression imposee)
-
-!       -> Rien a preciser pour la pression et la vitesse
-!          Pour les scalaires et grandeurs turbulentes, une valeur de Dirichlet
-!            peut etre specifiee de maniere optionnelle. Le comportement est le
-!            suivant :
-!              * la pression est toujours traitee en Dirichlet
-!              * si flux de masse entrant :
-!                  on retient la vitesse a l'infini
-!                  condition de Dirichlet pour les scalaires et grandeurs
-!                    turbulentes (ou flux nul si l'utilisateur n'a pas
-!                    specifie de Dirichlet)
-!                 si flux de masse sortant :
-!                    on impose un flux nul sur la vitesse, les scalaires et
-!                    les grandeurs turbulentes
-
-!       Noter que la pression sera recalee a P0
-!           sur la premiere face de sortie libre trouvee
-
-
-!    Pour les conditions "non standard" :
-!    ------------------------------------
-
-!     Autres que (entree, sortie libre, paroi, symetrie), on donne
-!      - d'une part, pour chaque face :
-!        -> une valeur de ITYPFB admissible
-!           ie superieure ou egale a 1 et inferieure ou egale a
-!           NTYPMX (voir sa valeur dans paramx.h).
-!           Les valeurs predefinies dans paramx.h
-!           IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG sont dans cet
-!           intervalle et il est preferable de ne pas affecter
-!           inconsidrement et par hasard a ITYPFB la valeur
-!           d'un de ces entiers. Pour eviter cela, on peut
-!           utiliser IINDEF si l'on souhaite eviter de verifier
-!           les valeurs dans paramx.h. IINDEF est une valeur
-!           admissible a laquelle n'est attachee aucune condition
-!           limite predefinie.
-!           Noter que le tableau ITYPFB est
-!           reinitialise a chaque pas de temps a la valeur
-!           non admissible 0. Si on oublie de modifier ITYPFB pour
-!           une face, le code s'arretera.
-
-!      - et d'autre part pour chaque face et chaque variable :
-!        -> un code     ICODCL(IFAC,IVAR)
-!        -> trois reels RCODCL(IFAC,IVAR,1)
-!                       RCODCL(IFAC,IVAR,2)
-!                       RCODCL(IFAC,IVAR,3)
-!     La valeur de ICODCL est prise parmi les suivantes :
-!       1 : Dirichlet      (utilisable pour toute variable)
-!       3 : Neumann        (utilisable pour toute variable)
-!       4 : Symetrie       (utilisable uniquement pour la vitesse et
-!                                   les composantes du tenseur Rij)
-!       5 : Paroi lisse    (utilisable pour toute variable sauf la
-!                                                         pression)
-!       6 : Paroi rugueuse (utilisable pour toute variable sauf la
-!                                                         pression)
-!       9 : Sortie libre   (utilisable uniquement pour la vitesse)
-!     Les valeurs des 3 reels RCODCL sont les suivantes
-!      RCODCL(IFAC,IVAR,1) :
-!         Dirichlet sur la variable        si ICODCL(IFAC,IVAR)=  1
-!         valeur en paroi (defilmnt, temp) si ICODCL(IFAC,IVAR)=  5
-!         La dimension de RCODCL(IFAC,IVAR,1) est celle de la
-!           variable resolue : ex U (vitesse en m/s),
-!                                 T (temperature en degres)
-!                                 H (enthalpie en J/kg)
-!                                 F (scalaire passif en -)
-!      RCODCL(IFAC,IVAR,2) :
-!         coefficient d'echange "exterieur" (entre la valeur
-!                          imposee et la valeur au bord du domaine)
-!                          RINFIN = infini par defaut
-!         Pour les vitesses U,             en kg/(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =            (VISCL+VISCT) / D
-!         Pour la  pression P,             en  s/m          :
-!           RCODCL(IFAC,IVAR,2) =                       DT / D
-!         Pour les temperatures T,         en Watt/(m2 degres) :
-!           RCODCL(IFAC,IVAR,2) = CP*(VISCLS+VISCT/SIGMAS) / D
-!         Pour les enthalpies H,           en kg /(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!              (D a la dimension d'une distance en m)
-
-!      RCODCL(IFAC,IVAR,3) si ICODCL(IFAC,IVAR)<>6 :
-!        Densite de flux (< 0 si gain, n normale orientee vers l'exterieur)
-!                         si ICODCL(IFAC,IVAR)= 3
-!         Pour les vitesses U,             en kg/(m s2) = J :
-!           RCODCL(IFAC,IVAR,3) =           -(VISCL+VISCT) * (GRAD U).n
-!         Pour la  pression P,             en kg/(m2 s)     :
-!           RCODCL(IFAC,IVAR,3) =                      -DT * (GRAD P).n
-!         Pour les temperatures T,         en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =-CP*(VISCLS+VISCT/SIGMAS) * (GRAD T).n
-!         Pour les enthalpies H,           en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD H).n
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD F).n
-
-!      RCODCL(IFAC,IVAR,3) SI ICODCL(IFAC,IVAR)=6 :
-!        Rugosites de la loi rugueuse
-!         Pour les vitesses U, rugosite dynamique
-!           RCODCL(IFAC,IVAR,3) = RUGD
-!         Pour les autres scalaires, rugosite thermique
-!           RCODCL(IFAC,IVAR,3) = RUGT
-
-
-!      Noter bien que si l'utilisateur affecte une valeur a ITYPFB
-!       parmi     IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!       et qu'il ne modifie pas ICODCL (valeur nulle par defaut),
-!       c'est ITYPFB qui imposera la condition limite.
-
-!      Par contre, si l'utilisateur impose
-!        ICODCL(IFAC,IVAR) (non nul),
-!        ce sont alors les valeurs de RCODCL qu'il aura fournies
-!        qui sont retenues pour la face et la variable consideree
-!        (s'il ne precise pas RCODCL, ce sont les valeurs
-!        par defaut qui sont retenues pour la face et
-!        la variable consideree soit :
-!                                 RCODCL(IFAC,IVAR,1) = 0.D0
-!                                 RCODCL(IFAC,IVAR,2) = RINFIN
-!                                 RCODCL(IFAC,IVAR,3) = 0.D0)
-!        En particulier, on peut par exemple
-!        -> donner ITYPFB(IFAC,IPHAS) = IPAROI
-!        qui impose les conditions de paroi par defaut pour toutes
-!        les variables sur la face IFAC,
-!        -> et preciser EN OUTRE pour la variable IVAR sur cette
-!        face IFAC des conditions paarticulieres en imposant
-!        ICODCL(IFAC,IVAR) et les 3 RCODCL.
-
-
-!      L'utilisateur peut egalement affecter a ITYPFB une valeur
-!       non egale a IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG, IINDEF
-!       mais superieure ou egale a 1 et inferieure ou egale a
-!       NTYPMX (voir les valeurs dans param.h) pour reperer
-!       des groupes de couleurs dans d'autres sous programmes
-!       qui lui seraient propres et ou ITYPFB serait disponible.
-!       Dans ce cas cependant, il faudra
-!       imposer les conditions limites en donnant des valeurs a
-!       ICODCL et aux trois RCODCL (puisque la valeur de ITYPFB
-!       ne sera pas predefinie dans le code).
-
-
-! REGLES DE COHERENCE
-! ===================
-
-!       Quelques regles de coherence entre les codes ICODCL
-!         des variables pour les conditions non standard :
-
-!           Les codes des vitesses doivent etre identiques
-!           Les codes des Rij      doivent etre identiques
-!           Si code (vitesse ou Rij) = 4
-!             il faut code (vitesse et Rij) = 4
-!           Si code (vitesse ou turbulence) = 5
-!             il faut code (vitesse et turbulence) = 5
-!           Si code (vitesse ou turbulence) = 6
-!             il faut code (vitesse et turbulence) = 6
-!           Si code scalaire (hormis pression ou fluctuations) = 5
-!             il faut code vitesse = 5
-!           Si code scalaire (hormis pression ou fluctuations) = 6
-!             il faut code vitesse = 6
-
-
-! REMARQUES
-! ==========
-
-!       Attention : pour imposer un flux (non nul) sur les Rij,
-!                   la viscosite a prendre en compte est VISCL
-!                   meme si VISCT existe (VISCT=RHO CMU K2/EPSILON)
-
-
-!       On dispose du tableau de tri des faces de bord au pas
-!           de temps precedent (sauf au premier pas de temps, ou
-!           ITRIFB n'a pas ete renseigne).
-!       Le tableau du type des faces de bord ITYPFB a ete
-!           reinitialise avant d'entrer dans le sous programme.
-
-
-
-!       Noter comment acceder a certaines variables :
-
-! Valeurs aux cellules
-!               Soit        IEL = IFABOR(IFAC)
-
-! * Masse vol                       phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IROM (IPHAS)))
-! * Viscosite moleculaire dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCL(IPHAS)))
-! * Viscosite turbulente  dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCT(IPHAS)))
-! * Chaleur specifique              phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(ICP   (IPHAS)))
-! * Diffusivite lambda           scalaire ISCAL, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISLS(ISCAL)))
-
-! Valeurs aux faces de bord
-
-! * Masse vol                      phase IPHAS, face de bord IFAC :
-!                  PROPFB(IFAC,IPPROB(IROM (IPHAS)))
-! * Flux de masse relatif a la variable  IVAR , face de bord IFAC :
-!      (i.e. le flux de masse servant a la convection de IVAR)
-!                  PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))
-! * Pour les autres grandeurs              a la face de bord IFAC :
-!      prendre pour approximation la valeur dans la cellule  IEL
-!      adjacente i.e. comme plus haut avec IEL = IFABOR(IFAC).
+! Here one defines boundary conditions on a per-face basis.
+
+! Boundary faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
+
+! Boundary condition types
+! ========================
+
+! Boundary conditions setup for standard variables (pressure, velocity,
+! turbulence, scalars) is described precisely in the 'usclim' subroutine.
+
+! Detailed explanation will be found in the theory guide.
+
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! --> ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb           ! ia ! <-- ! indirection for boundary faces ordering        !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
 ! izfppp           ! te ! --> ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2 ou                !
-!                  !    !     !  hauteur de rugosite (m) si icodcl=6           !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!  (nfabor,nvar,3) !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "ihmpre.h"
@@ -555,7 +234,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, iel, ii, ivar, iphas
@@ -701,4 +380,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/users/ctwr/usctdz.f90 b/users/ctwr/usctdz.f90
index a13162b..2ec6ed2 100644
--- a/users/ctwr/usctdz.f90
+++ b/users/ctwr/usctdz.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-subroutine  usctdz                              &
+subroutine usctdz &
 !=================
 
  ( idbia0 , idbra0 ,                                              &
@@ -51,34 +51,30 @@ subroutine  usctdz                              &
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
 ! (nfml,nprfml)    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
 ! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
 !   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
 ! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
@@ -88,27 +84,25 @@ subroutine  usctdz                              &
 ! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
 !   (lndfbr  )     !    !     !  (optionnel)                                   !
 ! ia(*)            ! te ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
@@ -116,7 +110,7 @@ implicit none
 !===============================================================================
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -155,7 +149,7 @@ double precision xyznod(ndim,nnod), volume(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          imzech,ntypze,idimze,neleze
 
diff --git a/users/ctwr/uscti1.f90 b/users/ctwr/uscti1.f90
index 9dafbcf..c01f117 100644
--- a/users/ctwr/uscti1.f90
+++ b/users/ctwr/uscti1.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -40,20 +40,19 @@ subroutine uscti1
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
diff --git a/users/ctwr/usctiv.f90 b/users/ctwr/usctiv.f90
index 6e76642..2e4f5a2 100644
--- a/users/ctwr/usctiv.f90
+++ b/users/ctwr/usctiv.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -88,119 +88,86 @@ subroutine usctiv &
 !     ET PAS ICI
 
 
+! Cells identification
+! ====================
 
-! POUR LA COMBUSTION, LE CHARBON, L'INITIALISATION EST FAITE
-!   PAR DEFAUT : IL EST CONSEILLE DE LA CONSERVER.
+! Cells may be identified using the 'getcel' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
 
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
 
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
 ! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
 ! rtp              ! tr ! <-- ! variables de calcul au centre des              !
 ! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
 !  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -241,7 +208,7 @@ double precision propfa(nfac,*), propfb(nfabor,*)
 double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, iutile, iphas
@@ -323,4 +290,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/users/elec/uselcl.f90 b/users/elec/uselcl.f90
index a219f61..e439dd5 100644
--- a/users/elec/uselcl.f90
+++ b/users/elec/uselcl.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,463 +47,146 @@ subroutine uselcl &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! Purpose
 ! --------
-
-!    ROUTINE UTILISATEUR POUR PHYSIQUE PARTICULIERE
-!                MODULE ELECTRIQUE
-!   (Effet Joule, Arc Electrique, Conduction ionique)
-!    REMPLISSAGE DU TABLEAU DE CONDITIONS AUX LIMITES
-!    (ICODCL,RCODCL) POUR LES VARIABLES INCONNUES
-!    PENDANT DE USCLIM.F
-
-
-
-!    CE SOUS PROGRAMME UTILISATEUR EST OBLIGATOIRE
-!    =============================================
-
-
-
-! INTRODUCTION
+!
+!    User subroutine
+!
+!    THIS ROUTINE IS UNAVOIDABLE
+!    ===========================
+!
+!    Fill boundary conditions arrays (icodcl, rcodcl) for variables
+!    used in the electric modules of the code
+!    (Joule effect by direct conduction, Electric arc and ionic mobility).
+!
+!    The variable are the standart one (enthalpy, velocity )and the "electric variables".
+!
+!    The "electric" variable are :
+!     - at first and always the electric potential (real component in the case of complex potential)
+!     - in option you could have imaginary component of the electrical potential
+!       (Joule effect by direct conduction)
+!
+!     - 3 components of the vector potential A (for Electric arc module)
+!
+!
+!
+! Introduction
 ! ============
 
-! On donne ici les conditions aux limites par face de bord.
-
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
-
-
-! TYPE DE CONDITIONS AUX LIMITES
-! ==============================
-
-! On peut affecter les conditions aux limites de deux manieres.
-
-
-!    Pour les conditions "standard" :
-!    --------------------------------
-
-!     (entree, sortie libre, paroi, symetrie), on donne un code
-!     stocke dans le tableau ITYPFB (dimensionne au nombre de
-!     faces de bord,nombre de phases). Ce code sera ensuite
-!     utilise par un sous-programme non utilisateur pour affecter
-!     les conditions correspondantes (les scalaires, en
-!     particulier, recevront alors les conditions de la phase a
-!     laquelle ils sont associes). Ainsi :
-
-!     Code      |  Type de bord
-!     -------------------------
-!      IENTRE   |   Entree
-!      ISOLIB   |   Sortie libre
-!      ISYMET   |   Symetrie
-!      IPAROI   |   Paroi (lisse)
-!      IPARUG   |   Paroi rugueuse
-
-!     Les entiers IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!     sont affectes par ailleurs (include param.h). Leur valeur
-!     est superieure ou egale a 1 et
-!         inferieure ou egale a NTYPMX (valeur fixee dans paramx.h)
-
-
-
-!     En outre, il faut donner certaines valeurs :
-
-
-!     - Entree (plus precisement entree/sortie a debit impose, car le debit
-!               peut etre impose sortant) :
-
-!       -> Conditions de Dirichlet sur les variables
-!         autres que la pression obligatoire si le flux est entrant,
-!         optionnelle si le flux est sortant (le code affecte flux nul
-!         si aucun Dirichlet n'est specifie) ; ainsi
-!         en face IFAC, sur la variable IVAR : RCODCL(IFAC,IVAR,1)
-
-
-!     - Paroi lisse : (= solide impermeable, avec frottement lisse)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 5
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
-!                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-
-!     - Paroi rugueuse : (= solide impermeable, avec frottement rugueux)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Valeur de la hauteur de rugosite dynamique a specifier dans
-!                       RCODCL(IFAC,IU,3) (valeur pour IV et IW non utilisee)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi rugueuse s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 6
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!                       RCODCL(IFAC,IVAR,3) = Hauteur de rugosite thermique
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
-!                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-!     - Symetrie (= paroi impermeable avec glissement) :
-
-!       -> Rien a preciser
-
-
-!     - Sortie libre (plus precisement entree/sortie libre a pression imposee)
-
-!       -> Rien a preciser pour la pression et la vitesse
-!          Pour les scalaires et grandeurs turbulentes, une valeur de Dirichlet
-!            peut etre specifiee de maniere optionnelle. Le comportement est le
-!            suivant :
-!              * la pression est toujours traitee en Dirichlet
-!              * si flux de masse entrant :
-!                  on retient la vitesse a l'infini
-!                  condition de Dirichlet pour les scalaires et grandeurs
-!                    turbulentes (ou flux nul si l'utilisateur n'a pas
-!                    specifie de Dirichlet)
-!                 si flux de masse sortant :
-!                    on impose un flux nul sur la vitesse, les scalaires et
-!                    les grandeurs turbulentes
-
-!       Noter que la pression sera recalee a P0
-!           sur la premiere face de sortie libre trouvee
-
-
-!    Pour les conditions "non standard" :
-!    ------------------------------------
-
-!     Autres que (entree, sortie libre, paroi, symetrie), on donne
-!      - d'une part, pour chaque face :
-!        -> une valeur de ITYPFB admissible
-!           ie superieure ou egale a 1 et inferieure ou egale a
-!           NTYPMX (voir sa valeur dans paramx.h).
-!           Les valeurs predefinies dans paramx.h
-!           IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG sont dans cet
-!           intervalle et il est preferable de ne pas affecter
-!           inconsidrement et par hasard a ITYPFB la valeur
-!           d'un de ces entiers. Pour eviter cela, on peut
-!           utiliser IINDEF si l'on souhaite eviter de verifier
-!           les valeurs dans paramx.h. IINDEF est une valeur
-!           admissible a laquelle n'est attachee aucune condition
-!           limite predefinie.
-!           Noter que le tableau ITYPFB est
-!           reinitialise a chaque pas de temps a la valeur
-!           non admissible 0. Si on oublie de modifier ITYPFB pour
-!           une face, le code s'arretera.
-
-!      - et d'autre part pour chaque face et chaque variable :
-!        -> un code     ICODCL(IFAC,IVAR)
-!        -> trois reels RCODCL(IFAC,IVAR,1)
-!                       RCODCL(IFAC,IVAR,2)
-!                       RCODCL(IFAC,IVAR,3)
-!     La valeur de ICODCL est prise parmi les suivantes :
-!       1 : Dirichlet      (utilisable pour toute variable)
-!       3 : Neumann        (utilisable pour toute variable)
-!       4 : Symetrie       (utilisable uniquement pour la vitesse et
-!                                   les composantes du tenseur Rij)
-!       5 : Paroi lisse    (utilisable pour toute variable sauf la
-!                                                         pression)
-!       6 : Paroi rugueuse (utilisable pour toute variable sauf la
-!                                                         pression)
-!       9 : Sortie libre   (utilisable uniquement pour la vitesse)
-!     Les valeurs des 3 reels RCODCL sont les suivantes
-!      RCODCL(IFAC,IVAR,1) :
-!         Dirichlet sur la variable        si ICODCL(IFAC,IVAR)=  1
-!         valeur en paroi (defilmnt, temp) si ICODCL(IFAC,IVAR)=  5
-!         La dimension de RCODCL(IFAC,IVAR,1) est celle de la
-!           variable resolue : ex U (vitesse en m/s),
-!                                 T (temperature en degres)
-!                                 H (enthalpie en J/kg)
-!                                 F (scalaire passif en -)
-!      RCODCL(IFAC,IVAR,2) :
-!         coefficient d'echange "exterieur" (entre la valeur
-!                          imposee et la valeur au bord du domaine)
-!                          RINFIN = infini par defaut
-!         Pour les vitesses U,             en kg/(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =            (VISCL+VISCT) / D
-!         Pour la  pression P,             en  s/m          :
-!           RCODCL(IFAC,IVAR,2) =                       DT / D
-!         Pour les temperatures T,         en Watt/(m2 degres) :
-!           RCODCL(IFAC,IVAR,2) = CP*(VISCLS+VISCT/SIGMAS) / D
-!         Pour les enthalpies H,           en kg /(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!              (D a la dimension d'une distance en m)
-
-!      RCODCL(IFAC,IVAR,3) si ICODCL(IFAC,IVAR)<>6 :
-!        Densite de flux (< 0 si gain, n normale orientee vers l'exterieur)
-!                         si ICODCL(IFAC,IVAR)= 3
-!         Pour les vitesses U,             en kg/(m s2) = J :
-!           RCODCL(IFAC,IVAR,3) =           -(VISCL+VISCT) * (GRAD U).n
-!         Pour la  pression P,             en kg/(m2 s)     :
-!           RCODCL(IFAC,IVAR,3) =                      -DT * (GRAD P).n
-!         Pour les temperatures T,         en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =-CP*(VISCLS+VISCT/SIGMAS) * (GRAD T).n
-!         Pour les enthalpies H,           en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD H).n
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD F).n
-
-!      RCODCL(IFAC,IVAR,3) SI ICODCL(IFAC,IVAR)=6 :
-!        Rugosites de la loi rugueuse
-!         Pour les vitesses U, rugosite dynamique
-!           RCODCL(IFAC,IVAR,3) = RUGD
-!         Pour les autres scalaires, rugosite thermique
-!           RCODCL(IFAC,IVAR,3) = RUGT
-
-
-!      Noter bien que si l'utilisateur affecte une valeur a ITYPFB
-!       parmi     IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!       et qu'il ne modifie pas ICODCL (valeur nulle par defaut),
-!       c'est ITYPFB qui imposera la condition limite.
-
-!      Par contre, si l'utilisateur impose
-!        ICODCL(IFAC,IVAR) (non nul),
-!        ce sont alors les valeurs de RCODCL qu'il aura fournies
-!        qui sont retenues pour la face et la variable consideree
-!        (s'il ne precise pas RCODCL, ce sont les valeurs
-!        par defaut qui sont retenues pour la face et
-!        la variable consideree soit :
-!                                 RCODCL(IFAC,IVAR,1) = 0.D0
-!                                 RCODCL(IFAC,IVAR,2) = RINFIN
-!                                 RCODCL(IFAC,IVAR,3) = 0.D0)
-!        En particulier, on peut par exemple
-!        -> donner ITYPFB(IFAC,IPHAS) = IPAROI
-!        qui impose les conditions de paroi par defaut pour toutes
-!        les variables sur la face IFAC,
-!        -> et preciser EN OUTRE pour la variable IVAR sur cette
-!        face IFAC des conditions paarticulieres en imposant
-!        ICODCL(IFAC,IVAR) et les 3 RCODCL.
-
-
-!      L'utilisateur peut egalement affecter a ITYPFB une valeur
-!       non egale a IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG, IINDEF
-!       mais superieure ou egale a 1 et inferieure ou egale a
-!       NTYPMX (voir les valeurs dans param.h) pour reperer
-!       des groupes de couleurs dans d'autres sous programmes
-!       qui lui seraient propres et ou ITYPFB serait disponible.
-!       Dans ce cas cependant, il faudra
-!       imposer les conditions limites en donnant des valeurs a
-!       ICODCL et aux trois RCODCL (puisque la valeur de ITYPFB
-!       ne sera pas predefinie dans le code).
-
-
-! REGLES DE COHERENCE
-! ===================
-
-!       Quelques regles de coherence entre les codes ICODCL
-!         des variables pour les conditions non standard :
-
-!           Les codes des vitesses doivent etre identiques
-!           Les codes des Rij      doivent etre identiques
-!           Si code (vitesse ou Rij) = 4
-!             il faut code (vitesse et Rij) = 4
-!           Si code (vitesse ou turbulence) = 5
-!             il faut code (vitesse et turbulence) = 5
-!           Si code (vitesse ou turbulence) = 6
-!             il faut code (vitesse et turbulence) = 6
-!           Si code scalaire (hormis pression ou fluctuations) = 5
-!             il faut code vitesse = 5
-!           Si code scalaire (hormis pression ou fluctuations) = 6
-!             il faut code vitesse = 6
-
-
-! REMARQUES
-! ==========
-
-!       Attention : pour imposer un flux (non nul) sur les Rij,
-!                   la viscosite a prendre en compte est VISCL
-!                   meme si VISCT existe (VISCT=RHO CMU K2/EPSILON)
-
-
-!       On dispose du tableau de tri des faces de bord au pas
-!           de temps precedent (sauf au premier pas de temps, ou
-!           ITRIFB n'a pas ete renseigne).
-!       Le tableau du type des faces de bord ITYPFB a ete
-!           reinitialise avant d'entrer dans le sous programme.
+! Here one defines boundary conditions on a per-face basis.
 
+! Boundary faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
 
 
-!       Noter comment acceder a certaines variables :
+! Boundary condition types
+! ========================
 
-! Valeurs aux cellules
-!               Soit        IEL = IFABOR(IFAC)
+! Boundary conditions setup for standard variables (pressure, velocity,
+! turbulence, scalars) is described precisely in the 'usclim' subroutine.
 
-! * Masse vol                       phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IROM (IPHAS)))
-! * Viscosite moleculaire dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCL(IPHAS)))
-! * Viscosite turbulente  dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCT(IPHAS)))
-! * Chaleur specifique              phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(ICP   (IPHAS)))
-! * Diffusivite lambda           scalaire ISCAL, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISLS(ISCAL)))
-
-! Valeurs aux faces de bord
-
-! * Masse vol                      phase IPHAS, face de bord IFAC :
-!                  PROPFB(IFAC,IPPROB(IROM (IPHAS)))
-! * Flux de masse relatif a la variable  IVAR , face de bord IFAC :
-!      (i.e. le flux de masse servant a la convection de IVAR)
-!                  PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))
-! * Pour les autres grandeurs              a la face de bord IFAC :
-!      prendre pour approximation la valeur dans la cellule  IEL
-!      adjacente i.e. comme plus haut avec IEL = IFABOR(IFAC).
+! Detailed explanation will be found in the theory guide.
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! --> ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! izfppp           ! te ! --> ! numero de zone de la face de bord              !
-! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2 ou                !
-!                  !    !     !  hauteur de rugosite (m) si icodcl=6           !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! work array                                     !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!    Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -553,7 +236,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac, ii, iphas , iel
@@ -570,9 +253,10 @@ double precision z1   , z2
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     If a file from the GUI is used, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
 !===============================================================================
 
 if(1.eq.1) then
@@ -580,30 +264,25 @@ if(1.eq.1) then
   call csexit (1)
 endif
 
- 9001 format(                                                           &
-'@                                                            ',/,&
+ 9001 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DE L''ENTREE DES COND. LIM.      ',/,&
-'@    =========                                               ',/,&
-'@                      MODULE ELECTRIQUE                     ',/,&
-'@                                                            ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uselcl DOIT ETRE COMPLETE',/,&
+'@ @@ WARNING:    stop in definition of boundary conditions   ',/,&
+'@    =======                                                 ',/,&
+'@                         ELECTRIC MODULE                    ',/,&
 '@                                                            ',/,&
-'@     Ce sous-programme utilisateur permet de definir les    ',/,&
-'@       conditions aux limites. Il est indispensable.        ',/,&
+'@     The user subroutine ''uselcl'' must be completed.      ',/, &
 '@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@  The calculation will not be run.                          ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
+'@',/)
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 1.  INITIALISATIONS
-
+! 1.  Initialization
 !===============================================================================
 
 idebia = idbia0
@@ -612,21 +291,20 @@ idebra = idbra0
 d2s3 = 2.d0/3.d0
 
 !===============================================================================
-! 2.  REMPLISSAGE DU TABLEAU DES CONDITIONS LIMITES
-!       ON BOUCLE SUR LES FACES DE BORD
-!         ON DETERMINE LA FAMILLE ET SES PROPRIETES
-!           ON IMPOSE LA CONDITION LIMITE
-
-!          IMPOSER ICI LES CONDITIONS LIMITES SUR LES FACES DE BORD
+! 2.  Assign boundary conditions to boundary faces here
 
+!     One may use selection criteria to filter boundary case subsets
+!       Loop on faces from a subset
+!         Set the boundary condition for each face
 !===============================================================================
 
 iphas = 1
 
-
-! --- On impose en couleur 1 une entree ; exemple de Cathode
-!     ======================================================
-
+! --- For boundary faces of color 1 assign an inlet for all phases
+!     ============================================================
+!        and assign a cathode for "electric" variables.
+!        =============================================
+!
 CALL GETFBR('1',NLELT,LSTELT)
 !==========
 
@@ -636,10 +314,10 @@ do ilelt = 1, nlelt
 
   itypfb(ifac,iphas) = ientre
 
-!      - Numero de zone (on numerote de 1 a n)
+!      - Zone Number (from 1 to n)
   izone = 1
 
-!      - Reperage de la zone a laquelle appartient la face
+!      - Zone localization for a given face
   izfppp(ifac) = izone
 
   rcodcl(ifac,iu(iphas),1) = 0.d0
@@ -657,32 +335,29 @@ do ilelt = 1, nlelt
            +rcodcl(ifac,iw(iphas),1)**2
     uref2 = max(uref2,1.d-12)
 
-
-!       Exemple de turbulence calculee a partir
-!         de formules valables pour une conduite
-
-!       On veillera a specifier le diametre hydraulique
-!         adapte a l'entree courante.
-
-!       On s'attachera egalement a utiliser si besoin une formule
-!         plus precise pour la viscosite dynamique utilisee dans le
-!         calcul du nombre de Reynolds (en particulier, lorsqu'elle
-!         est variable, il peut etre utile de reprendre ici la loi
-!         imposee dans USPHYV. On utilise ici par defaut la valeur
-!         VISCL0 donnee dans USINI1
-!       En ce qui concerne la masse volumique, on dispose directement
-!         de sa valeur aux faces de bord (ROMB) et c'est celle que
-!         utilise donc ici (elle est en particulier coherente avec
-!         le traitement implante dans USPHYV, en cas de masse
-!         volumique variable)
-
-!         Diametre hydraulique
+!   Turbulence example computed using equations valid for a pipe.
+
+!   We will be careful to specify a hydraulic diameter adapted
+!     to the current inlet.
+
+!   We will also be careful if necessary to use a more precise
+!     formula for the dynamic viscosity use in the calculation of
+!     the Reynolds number (especially if it is variable, it may be
+!     useful to take the law from 'usphyv'. Here, we use by default
+!     the 'viscl0" value given in 'usini1'.
+!   Regarding the density, we have acess to its value at boundary
+!     faces (romb) so this value is the one used here (specifically,
+!     it is consistent with the processing in 'usphyv', in case of
+!     variable density)
+!
+!     Hydraulic diameter
     dhy     = 0.075d0
 
-!         Calcul de la vitesse de frottement au carre (USTAR2)
-!           et de k et epsilon en entree (XKENT et XEENT) a partir
-!           de lois standards en conduite circulaire
-!           (leur initialisation est inutile mais plus propre)
+!   Calculation of friction velocity squared (ustar2)
+!     and of k and epsilon at the inlet (xkent and xeent) using
+!     standard laws for a circular pipe
+!     (their initialization is not needed here but is good practice).
+
     rhomoy = propfb(ifac,ipprob(irom(iphas)))
     ustar2 = 0.d0
     xkent  = epzero
@@ -724,21 +399,30 @@ do ilelt = 1, nlelt
 
   endif
 
-! --- On traite les scalaires
-
-!      Enthalpie en J/kg
+! --- Handle Scalars
 
+!      Enthalpy in J/kg (ihm)
+!      On this example we impose the value of the enthalpy
+!      the arbitrary value of 1.d6 corresponds to a temperature of 2200 Kelvin
+!      for argon at atmospheric pressure (see dp_ELE)
+!
   ii = ihm
   icodcl(ifac,isca(ii))   = 1
   rcodcl(ifac,isca(ii),1) = 1.d6
 
-!  Potentiel electrique reel impose a 0. volts (exemple de Cathode en arc)
+!  Electric potential  ( ipotr)
+! (could corresponds also to the real part of the electrical potential if Joule Effect by direct conduction)
+!
+! In the Cathode example (electric arc applications),
+! we impose a constant value of the electrical potential which is zero,
+! assuming that the potential is equal to "ipotr + an arbitrary constant"
+! (What is important for electric arc is the difference between anode and cathode potentials)
 
   ii = ipotr
   icodcl(ifac,isca(ii))   = 1
   rcodcl(ifac,isca(ii),1) = 0.d0
 
-!  Fraction massique des (N-1) constituants
+!  Mass fraction of the (n-1) gas mixture components
 
   if ( ngazg .gt. 1 ) then
     do iesp=1,ngazg-1
@@ -748,9 +432,8 @@ do ilelt = 1, nlelt
     enddo
   endif
 
-!  Specifique Version Effet Joule :
-
-!       Potentiel Imaginaire impose a 0
+!  Specific model for Joule effect by direct conduction:
+!  Imaginary part of the potentiel (ipoti) is imposed to zero
 
   if ( ippmod(ieljou).ge. 2 ) then
     ii = ipoti
@@ -758,9 +441,14 @@ do ilelt = 1, nlelt
     rcodcl(ifac,isca(ii),1) = 0.d0
   endif
 
-!  Specifique Version Arc Electrique :
-
-!       Potentiel vecteur : Flux nul
+!  Specific model for Electric arc :
+!  Vector Potential  : Zero flux by default beacuse we don't a lot about vector potential
+!  (what we know, is that A is equal to zero at the infinite)
+!
+!  All the boundary conditions for A are zero flux, except on some chosen faces
+!  where we need to impose a value in order to have a stable calculation (well defined problem)
+!  These faces are chosen where we are sure that the electrical current density remains very low
+!  generally far from the center of the electric arc and from the electrodes (see above)
 
   if ( ippmod(ielarc).ge.2 ) then
     do idim= 1,ndimve
@@ -772,55 +460,51 @@ do ilelt = 1, nlelt
 
 enddo
 
-! --- On impose en couleur 5 une entree/sortie ;
-!     ====================================== exemple d'Electrode en Joule
-!                                            ============================
-
+! --- For boundary faces of color 5 assign an free outlet for all phases
+!     ==================================================================
+!        and example of electrode for Joule Effect by direct conduction.
+!        ==============================================================
+!
 CALL GETFBR('5',NLELT,LSTELT)
 !==========
 
 do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
-
-!          SORTIE : FLUX NUL VITESSE ET TEMPERATURE, PRESSION IMPOSEE
-!            Noter que la pression sera recalee a P0
-!                sur la premiere face de sortie libre (ISOLIB)
-
+!
   itypfb(ifac,iphas)   = isolib
 
-!      - Numero de zone (on numerote de 1 a n)
+!      - Zone Number (from 1 to n)
   izone = 2
 
-!      - Reperage de la zone a laquelle appartient la face
-  izfppp(ifac) = izone
+!     - Zone localization for a given face
 
-! --- On traite les scalaires rattaches a la phase courante
+  izfppp(ifac) = izone
 
-!  Enthalpie en J/kg  (Par defaut flux nul avec ISOLIB)
-!     Rien a faire
+! --- Handle Scalars
 
-!  Fraction massique des (N-1) constituants (Par defaut flux nul avec ISOLIB)
-!     Rien a faire
+!  Enthalpy in J/kg  (By default zero flux with ISOLIB)
+!     Nothing to do
 
-!  Specifique Version Effet Joule :
+!  Mass fraction of the (n-1) gas mixture components (Zero flux by defaut with ISOLIB)
+!     Nothing to do
 
-!     En effet Joule,
-!       si l'on souhaite faire un calcul en recalant les conditions
-!         aux limites (utiliser IELCOR=1 dans useli1)
-!       pour atteindre la valeur de la puissance PUISIM
-!         (a imposer dans useli1 en Ampere.Volt)
-!       on multiplie la condition limite initiale sur le potentiel
-!          reel (et sur le potentiel imaginaire s'il est pris en
-!          compte) par le coefficient COEJOU.
-!       COEJOU est determine automatiquement pour que la puissance
-!          dissipee par effet Joule (partie reelle et partie
-!          imaginaire si besoin) soit PUISIM
-!       au debut du calcul, COEJOU vaut 1 ; COEJOU est transmis dans
-!          les fichiers suites.
+!  Specific model for Joule Effect by direct conduction :
+!
+!     If you want to make a simulation with an imposed Power PUISIM
+!     (you want to get PUISIM imposed in useli1 and PUISIM = Amp x Volt)
+!     you need to impose IELCOR=1 in useli1
+!     The boundary conditions will be scaled by COEJOU coefficient
+!     for example the electrical potential will be multiplied bu COEJOU
+!     (both real and imaginary part of the electrical potential if needed)
+!
+!     COEJOU is automatically defined in order that the calculated dissipated power by Joule effect
+!     (both real and imaginary part if needed) is equal to PUISIM
+!
+!      At the beginning of the calculation, COEJOU ie equal to 1 ;
+!      COEJOU is writing and reading in the result files.
 
-!     Si on ne souhaite pas faire un calcul avec recalage, on impose
-!       directement une valeur adaptee.
+!      If you don't want to calculate with by scaling, you can impose directly the value .
 
   if ( ippmod(ieljou).ge. 1 ) then
     ii = ipotr
@@ -844,50 +528,57 @@ do ilelt = 1, nlelt
 
 enddo
 
-! --- On impose en couleur 2 une entree/sortie ;
-!     ============================== exemple d'Anode en arc electrique
-!                                    =================================
-
+! --- For boundary faces of color 2 assign a free outlet for all phases
+!     =================================================================
+!        and example of anode for electric arc.
+!        =====================================
+!
 CALL GETFBR('2',NLELT,LSTELT)
 !==========
 
 do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
-
-!          SORTIE : FLUX NUL VITESSE ET TEMPERATURE, PRESSION IMPOSEE
-!            Noter que la pression sera recalee a P0
-!                sur la premiere face de sortie libre (ISOLIB)
-
+!
   itypfb(ifac,iphas)   = isolib
 
-!      - Numero de zone (on numerote de 1 a n)
+!      - Zone number (from 1 to n)
   izone = 3
 
-!      - Reperage de la zone a laquelle appartient la face
+!      - Zone localization for a given face
   izfppp(ifac) = izone
 
-! --- On traite les scalaires rattaches a la phase courante
-
-!  Enthalpie en J/kg  (Par defaut flux nul avec ISOLIB)
-!     Rien a faire
-
-!  Potentiel electrique reel
-
-!     En arc electrique,
-!       si l'on souhaite faire un calcul en recalant le potentiel
-!          de l'anode (utiliser IELCOR=1 dans useli1)
-!       pour atteindre la valeur du courant COUIMP
-!         (a imposer dans useli1 en Amperes)
-!       on utilise alors la valeur DPOT comme condition limite
-!       DPOT est en effet automatiquement adaptee par le calcul
-!          pour que (j.E Volume/DPOT) = COUIMP
-!          (initialiser DPOT dans useli1 en Volts avec une valeur
-!           representative de la difference de potentiel imposee)
-
-!     Si on ne souhaite pas faire un calcul avec recalage,  on impose
-!       directement une valeur adaptee au cas
-!       (par exemple, ici 1000 Volts ).
+! --- Handle scalars
+
+!  Enthalpy in J/kg  (Zero flux by default with ISOLIB)
+!     Nothing to do
+!
+!  Real component of the electrical potential
+!
+!     For electric arc model,
+!     ======================
+!   *  we generally calculate the "electric variables" assuming that the total intensity
+!      of the electrical current is imposed (COUIMP is the value of the imposed total current).
+!
+!      In that case, you need to impose IELCOR=1 in useli1
+!      The "electrical variables" will be scaled by COEPOT coefficient :
+!      for example the electrical potential will be multiplied by COEPOT,
+!      Joule effect will be multipied by COEPOT * COEPOT and so on (see uselrc.f)
+!
+!      COEJOU is defined in uselrc.fr : different possibilities are described in uselrc.f,
+!      depending on the different physics you want to simulate (scaling from current, from power,
+!      special model for restriking ...)
+!
+!      The variable DPOT is defined : it correspond to the ddp (electrical potential difference)
+!      between the electrodes (Anode potential - cathode Potential).
+!      DPOT is calculated in uselrc.f. DPOT is saved at each time step, and for a following
+!      calculation
+
+!      DPOT is the value of the boundary condition on anode assuming that the cathode potential
+!      is equel to zero.
+
+!   *  It is also possible to fixe the value of the potential on the anode.
+!       (for example, 1000 Volts ).
 
   ii = ipotr
   icodcl(ifac,isca(ii))   = 1
@@ -898,43 +589,74 @@ do ilelt = 1, nlelt
     rcodcl(ifac,isca(ii),1) = 1000.d0
   endif
 
-
-!  Fraction massique des (N-1) constituants (Par defaut flux nul avec ISOLIB)
-
-!  Specifique Version Arc Electrique :
-!      Potentiel vecteur : flux nul (par defaut)
-
-
+!  Mass fraction of the (n-1) gas mixture components
+!   zero flux by default with ISOLIB
+!   nothing to do
+!
+!  vector Potential
+!   zero flux by default with ISOLIB
+!   nothing to do
+!
 enddo
 
-! --- On impose en couleur 3 une paroi
-!     ================================
-
+! --- For boundary faces of color 3 assign a wall for all phases
+!     ==========================================================
+!        and example of potential vector Dirichlet condition
+!        ===================================================
+!
 CALL GETFBR('3',NLELT,LSTELT)
 !==========
 
 do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
-
-!          PAROI : DEBIT NUL (FLUX NUL POUR LA PRESSION)
-!                  FROTTEMENT POUR LES VITESSES (+GRANDEURS TURB)
-!                  FLUX NUL SUR LES SCALAIRES
-
-!          Pour un calcul arc electrique 3D, on cale le potentiel
-!            vecteur avec une condition de Dirichlet issue des valeurs
-!            du potentiel vecteur au pas de temps precedent
-!            dans une zone de paroi choisie
-!            Par defaut, ailleurs, un flux nul s'applique (paroi isolee).
-
+!
   itypfb(ifac,iphas)   = iparoi
 
-!      - Numero de zone (on numerote de 1 a n)
+!      - Zone number (from 1 to n)
   izone = 4
 
-!      - Reperage de la zone a laquelle appartient la face
+!      - Zone localization for a given face
   izfppp(ifac) = izone
-
+!
+!
+! Wall: zero flow (zero flux for pressure)
+!       friction for velocities (+ turbulent variables)
+!       zero flux for scalars
+!
+! --- Handle scalars
+!  Enthalpy in J/kg  (Zero flux by default)
+!     Nothing to do
+!
+!  Real component of the electrical potential
+!     Zero flux by default
+!     Nothing to do
+!
+!
+!  Specific model for Electric arc :
+!  ================================
+!
+!  Vector potential  A (Ax, Ay, Az)
+!
+!     Zero flux by default because we don't a lot about vector potential
+!    (what we know, is that A is equal to zero at the infinite)
+!
+!     All the boundary conditions for A are zero flux, except on some chosen faces
+!     where we need to impose a value in order to have a stable calculation
+!     These faces are chosen where we are sure that the electrical current density remains
+!     very low generally far from the center of the electric arc and from the electrodes :
+!     on the following example, we choose to impose a "dirichlet" value for the 3 components of A
+!     on a small zone of the boundary located near the certical free outlet of the computation domain.
+!     In this example, the electric arc is at the center of the computational domain,
+!     located on z axis (near x = 0 and y = 0).
+!     The x (1st ) and y (the 3rd) coordinates are contained between -2.5 cm nd 2.5 cm :
+!
+!        Ax(t, x,y,z) = Ax(t-dt, x=2.5cm, y=2.5cm, z)
+!        Ay(t, x,y,z) = Ay(t-dt, x=2.5cm, y=2.5cm, z)
+!        Az(t, x,y,z) = Az(t-dt, x=2.5cm, y=2.5cm, z)
+!
+!
+!
   if ( ippmod(ielarc).ge.2 ) then
     if ( cdgfbo(1,ifac) .le.  2.249d-2  .or.                      &
          cdgfbo(1,ifac) .ge.  2.249d-2  .or.                      &
@@ -951,9 +673,12 @@ do ilelt = 1, nlelt
 
 enddo
 
-! --- On impose en couleur 51 : anode avec claquage
-!     =============================================
-
+!
+! --- For boundary faces of color 51 assign a wall
+!     ============================================
+!        and restriking model for electric arc (anode boundaray condition)
+!        =================================================================
+!
 CALL GETFBR('51',NLELT,LSTELT)
 !==========
 
@@ -963,20 +688,21 @@ do ilelt = 1, nlelt
 
   itypfb(ifac,iphas)   = iparoi
 
-!      - Numero de zone (on numerote de 1 a n)
+!      - Zone number (from 1 to n)
   izone = 5
 
-!      - Reperage de la zone a laquelle appartient la face
+!      - Zone localization for a given face
   izfppp(ifac) = izone
 
-! ---- Enthalpie (J/kg ) : coef echange impose
-
+! ---- Enthalpy (J/kg ) :
+!      imposed heat transfer coefficient
+!
   ii=ihm
   icodcl(ifac,isca(ii))   = 1
   rcodcl(ifac,isca(ii),1) = 2.d4
   rcodcl(ifac,isca(ii),2) = 1.d5
-
-!  Potentiel electrique reel
+!
+!  Real electrical potential :anode boundary condition : dpot calculated in uselrc.f
 
   ii = ipotr
   icodcl(ifac,isca(ii))   = 1
@@ -987,9 +713,11 @@ do ilelt = 1, nlelt
     rcodcl(ifac,isca(ii),1) = 100.d0
   endif
 
-!       Si CLAQUAGE : a adapter en fonction du cas et du
-!                     sous-programme USELRC
-
+! Restriking modeling  :
+! ===================
+!    example to fit depending on the case, the geometry etc... and also in agreement with uselrc.fr
+!
+!
   if ( ippmod(ielarc).ge.1 .and. ielcor .eq.1) then
     if(iclaq.eq.1 .and. ntcabs.le.ntdcla+30) then
 
@@ -1009,7 +737,7 @@ do ilelt = 1, nlelt
     endif
   endif
 
-!       Potentiel vecteur : Flux nul
+! Vector potential : Zero flux
 
   if ( ippmod(ielarc).ge.2 ) then
     do idim= 1,ndimve
@@ -1021,8 +749,10 @@ do ilelt = 1, nlelt
 
 enddo
 
-! --- On impose en couleur 4 une symetrie
-!     ===================================
+!
+! --- For boundary faces of color 4 assign a symetry
+!     ==============================================
+!
 
 CALL GETFBR('4',NLELT,LSTELT)
 !==========
@@ -1035,17 +765,18 @@ do ilelt = 1, nlelt
 
   itypfb(ifac,iphas)   = isymet
 
-!      - Numero de zone (on numerote de 1 a n)
+!      - Zone number (from 1 to n)
   izone = 6
 
-!      - Reperage de la zone a laquelle appartient la face
+!      - Zone localization for a given face
   izfppp(ifac) = izone
 
-!     Par defaut tous les scalaires (potentiels en particulier)
-!       recoivent une condition de flux nul.
-!     En effet Joule, on peut souhaiter imposer une condition
-!       d'antisymetrie sur le potentiel imaginaire selon la
-!       configuration des electrodes :
+!    For all scalars, by default a zero flux condition is assumed ( for potentials also)
+!
+!    In Joule effect direct conduction,
+!    we can use an anti-symetry condition for the imaginary component of the electrical potential
+!    depending on the electrode configuration :
+!
   if ( ippmod(ieljou).ge. 2 ) then
     ii = ipoti
     icodcl(ifac,isca(ii))   = 1
@@ -1063,4 +794,4 @@ enddo
 !----
 
 return
-end
+end subroutine
diff --git a/users/elec/uselen.f90 b/users/elec/uselen.f90
index 3b09f73..1af5eb3 100644
--- a/users/elec/uselen.f90
+++ b/users/elec/uselen.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -48,10 +48,10 @@ subroutine uselen &
    tracel , trafac , trafbr , rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! Purpose :
 ! --------
 
-! POUR LA SORTIE POST-TRAITEMENT MODULE ELECTRIQUE
+! For post-processing in electric module
 
 !-------------------------------------------------------------------------------
 ! Arguments
@@ -151,7 +151,7 @@ subroutine uselen &
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!    Common blocks
 !===============================================================================
 
 include "dimfbr.h"
@@ -204,7 +204,7 @@ double precision trafac(nfacps*3), trafbr(nfbrps*3)
 double precision w1(ncelet,3), w2(ncelet,3)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 character*32     namevr
 integer          idebia, idebra, iel   , iloc
@@ -224,7 +224,7 @@ double precision rbid(1)
 !     L'UTILISATEUR N'A PAS A MODIFIER LE PRESENT SOUS-PROGRAMME DANS
 !       LES CONDITIONS D'UTILISATION STANDARD.
 !     DANS LE CAS OU IL SOUHAITE PRODUIRE DES VARIABLES SUPPLEMENTAIRES
-!       ILPEUT LES AJOUTER A LA FIN, VOIR LA DOCUMENTATION DE USEEVO
+!       IL PEUT LES AJOUTER A LA FIN, VOIR LA DOCUMENTATION DE USEEVO
 !===============================================================================
 
 
@@ -234,7 +234,7 @@ idebra = idbra0
 if(nummai.eq.-1) then
 
 !===============================================================================
-! 1.   Gradient du potentiel reel
+! 1.   Graident of the real potential
 !===============================================================================
 
   idimt  = 3
@@ -251,18 +251,9 @@ if(nummai.eq.-1) then
   epsrgp = epsrgr(ivar)
   climgp = climgr(ivar)
   extrap = extrag(ivar)
-
-! En periodique et parallele, echange avant calcul du gradient
-!     Cela a deja ete fait puisqu'on a deja fait le calcul de cette variable
-
-!  IVAR0 = 0 (indique pour la periodicite de rotation que la variable
-!     n'est pas la vitesse ni Rij)
   ivar0 = 0
-
-!    Sans prise en compte de la pression hydrostatique
-
   iphydp = 0
-
+!
   call grdcel                                                     &
   !==========
  ( idebia , idebra ,                                              &
@@ -283,9 +274,7 @@ if(nummai.eq.-1) then
    w2(1,1) , w2(1,2) , w2(1,3) ,                                  &
    rdevel , rtuser , ra     )
 
-!       Le gradient est defini sur le maillage principal tout entier ;
-!       inutile de le recopier, on utilise l'indirection (IVARPR = 1),
-!       et les valeurs sont non entrelacees (IENTLA = 0)
+!
   ientla = 0
   ivarpr = 1
 
@@ -294,7 +283,8 @@ if(nummai.eq.-1) then
               ntcabs, ttcabs, w1, rbid, rbid)
 
 !===============================================================================
-! 2.   Gradient du potentiel imaginaire si Joule
+! 2.   For Joule Heating by direct conduction :
+!                           gradient of the imaginary component of the potential
 !===============================================================================
 
   if (ippmod(ieljou).eq.2 .or. ippmod(ieljou).eq.4) then
@@ -313,18 +303,10 @@ if(nummai.eq.-1) then
     epsrgp = epsrgr(ivar)
     climgp = climgr(ivar)
     extrap = extrag(ivar)
-
-! En periodique et parallele, echange avant calcul du gradient
-!     Cela a deja ete fait puisqu'on a deja fait le calcul de cette variable
-
-!  IVAR0 = 0 (indique pour la periodicite de rotation que la variable
-!     n'est pas la vitesse ni Rij)
+!
     ivar0 = 0
-
-!    Sans prise en compte de la pression hydrostatique
-
     iphydp = 0
-
+!
     call grdcel                                                   &
     !==========
  ( idebia , idebra ,                                              &
@@ -341,13 +323,11 @@ if(nummai.eq.-1) then
    rtp(1,ivar), coefa(1,iclimv) , coefb(1,iclimv)  ,              &
 !       POTI
    w1(1,1) , w1(1,2) , w1(1,3) ,                                  &
-!       d POTR /dx   d POTR /dy   d POTR /dz
+!       d POTI /dx   d POTI /dy   d POTI /dz
    w2(1,1) , w2(1,2) , w2(1,3) ,                                  &
    rdevel , rtuser , ra     )
 
-!         Le gradient est defini sur le maillage principal tout entier ;
-!         inutile de le recopier, on utilise l'indirection (IVARPR = 1),
-!         et les valeurs sont non entrelacees (IENTLA = 0)
+!
     ientla = 0
     ivarpr = 1
 
@@ -358,7 +338,8 @@ if(nummai.eq.-1) then
   endif
 
 !===============================================================================
-! 3.   Courant imaginaire si Joule
+! 3.  For Joule heating by direct conduction :
+!                                     imaginary component of the current density
 !===============================================================================
 
   if(ippmod(ieljou).eq.2 .or. ippmod(ieljou).eq.4 ) then
@@ -369,7 +350,7 @@ if(nummai.eq.-1) then
     ivar = isca(ipoti)
     iclimv = iclrtp(ivar,icoef)
 
-!     Commme dans elflux
+!    As in elflux
     ipcsii = ipproc(ivisls(ipoti))
 
     inc = 1
@@ -380,16 +361,8 @@ if(nummai.eq.-1) then
     epsrgp = epsrgr(ivar)
     climgp = climgr(ivar)
     extrap = extrag(ivar)
-
-! En periodique et parallele, echange avant calcul du gradient
-!     Cela a deja ete fait puisqu'on a deja fait le calcul de cette variable
-
-!  IVAR0 = 0 (indique pour la periodicite de rotation que la variable
-!     n'est pas la vitesse ni Rij)
+!
     ivar0 = 0
-
-!    Sans prise en compte de la pression hydrostatique
-
     iphydp = 0
 
     call grdcel                                                   &
@@ -408,7 +381,7 @@ if(nummai.eq.-1) then
    rtp(1,ivar), coefa(1,iclimv) , coefb(1,iclimv)  ,              &
 !       POTI
    w1(1,1) , w1(1,2) , w1(1,3) ,                                  &
-!       d POTR /dx   d POTR /dy   d POTR /dz
+!       d POTI /dx   d POTI /dy   d POTI /dz
    w2(1,1) , w2(1,2) , w2(1,3) ,                                  &
    rdevel , rtuser , ra     )
 
@@ -418,10 +391,7 @@ if(nummai.eq.-1) then
       tracel(iloc+ncelps)   = -propce(iel,ipcsii)*w1(iel,2)
       tracel(iloc+2*ncelps) = -propce(iel,ipcsii)*w1(iel,3)
     enddo
-
-!         La variable est d�finie sur le tableau de travail. On
-!         a deja utilise l'indirection via LSTCEL (donc IVARPR = 0),
-!         et les valeurs sont non entrelacees (IENTLA = 0)
+!
     ientla = 0
     ivarpr = 0
 
@@ -431,16 +401,16 @@ if(nummai.eq.-1) then
 
   endif
 
-!===============================================================================
-! 5.   Champ Magnetique si Arc
-!===============================================================================
+!==========================================================
+! 5.   For electric arc : electromagnetic field calculation
+!==========================================================
 
   if( ippmod(ielarc).ge.2 ) then
 
     idimt  = 3
     NAMEVR = 'Ch_Mag'
 
-!    Sur Ax
+!   Ax Component
 
     ivar = isca(ipotva(1))
     iclimv = iclrtp(ivar,icoef)
@@ -453,19 +423,10 @@ if(nummai.eq.-1) then
     epsrgp = epsrgr(ivar)
     climgp = climgr(ivar)
     extrap = extrag(ivar)
-
-! En periodique et parallele, echange avant calcul du gradient
-!     Cela a deja ete fait puisqu'on a deja fait le calcul de cette variable
-
-!  IVAR0 = 0 (indique pour la periodicite de rotation que la variable
-!     n'est pas la vitesse ni Rij)
-
+!
     ivar0 = 0
-
-!    SANS PRISE EN COMPTE DE LA PRESSION HYDROSTATIQUE
-
     iphydp = 0
-
+!
     call grdcel                                                   &
     !==========
  ( idebia , idebra ,                                              &
@@ -485,7 +446,7 @@ if(nummai.eq.-1) then
    w2(1,1) , w2(1,2) , w2(1,3) ,                                  &
    rdevel , rtuser , ra     )
 
-!       B = rot A
+!       B = rot A ( B = curl A)
 
     do iloc = 1, ncelps
       iel = lstcel(iloc)
@@ -494,7 +455,7 @@ if(nummai.eq.-1) then
       tracel(iloc+2*ncelps) = -w1(iel,2)
     enddo
 
-!    Sur Ay
+!    Ay component
 
     ivar = isca(ipotva(2))
     iclimv = iclrtp(ivar,icoef)
@@ -507,19 +468,10 @@ if(nummai.eq.-1) then
     epsrgp = epsrgr(ivar)
     climgp = climgr(ivar)
     extrap = extrag(ivar)
-
-! En periodique et parallele, echange avant calcul du gradient
-!     Cela a deja ete fait puisqu'on a deja fait le calcul de cette variable
-
-!  IVAR0 = 0 (indique pour la periodicite de rotation que la variable
-!     n'est pas la vitesse ni Rij)
-
+!
     ivar0 = 0
-
-!    SANS PRISE EN COMPTE DE LA PRESSION HYDROSTATIQUE
-
     iphydp = 0
-
+!
     call grdcel                                                   &
     !==========
   ( idbia0 , idbra0 ,                                             &
@@ -539,7 +491,7 @@ if(nummai.eq.-1) then
     w2(1,1) , w2(1,2) , w2(1,3) ,                                 &
     rdevel , rtuser , ra     )
 
-!       B = rot A
+!       B = rot A (B = curl A)
 
     do iloc = 1, ncelps
       iel = lstcel(iloc)
@@ -548,7 +500,7 @@ if(nummai.eq.-1) then
       tracel(iloc+2*ncelps) = tracel(iloc+2*ncelps) + w1(iel,1)
     enddo
 
-!    Sur Az
+!    Az component
 
     ivar = isca(ipotva(3))
     iclimv = iclrtp(ivar,icoef)
@@ -561,19 +513,10 @@ if(nummai.eq.-1) then
     epsrgp = epsrgr(ivar)
     climgp = climgr(ivar)
     extrap = extrag(ivar)
-
-! En periodique et parallele, echange avant calcul du gradient
-!     Cela a deja ete fait puisqu'on a deja fait le calcul de cette variable
-
-!  IVAR0 = 0 (indique pour la periodicite de rotation que la variable
-!     n'est pas la vitesse ni Rij)
-
+!
     ivar0 = 0
-
-!    SANS PRISE EN COMPTE DE LA PRESSION HYDROSTATIQUE
-
-    iphydp = 0
-
+   iphydp = 0
+!
     call grdcel                                                   &
     !==========
   ( idbia0 , idbra0 ,                                             &
@@ -593,7 +536,7 @@ if(nummai.eq.-1) then
     w2(1,1) , w2(1,2) , w2(1,3) ,                                 &
     rdevel , rtuser , ra     )
 
-!       B = rot A
+!       B = rot A (B = curl A)
 
     do iloc = 1, ncelps
       iel = lstcel(iloc)
@@ -601,10 +544,7 @@ if(nummai.eq.-1) then
       tracel(iloc+ncelps)   = tracel(iloc+ncelps)   - w1(iel,1)
       tracel(iloc+2*ncelps) = tracel(iloc+2*ncelps) + zero
     enddo
-
-!         La variable est d�finie sur le tableau de travail. On
-!         a deja utilise l'indirection via LSTCEL (donc IVARPR = 0),
-!         et les valeurs sont non entrelacees (IENTLA = 0)
+!
     ientla = 0
     ivarpr = 0
 
@@ -616,7 +556,7 @@ if(nummai.eq.-1) then
 
 
 !===============================================================================
-! 4.   Module et Argument du potentiel si IELJOU = 4
+! 4.   Calculation of Module and Argument of the complex potential if IELJOU = 4
 !===============================================================================
 
   if (ippmod(ieljou).eq.4) then
@@ -687,4 +627,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/users/elec/useli1.f90 b/users/elec/useli1.f90
index 93a4904..d76ea46 100644
--- a/users/elec/useli1.f90
+++ b/users/elec/useli1.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,35 +28,38 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine useli1
+subroutine useli1
 !================
 
 
 !===============================================================================
-!  FONCTION  :
-!  ---------
-
-!         INIT DES OPTIONS DES VARIABLES POUR
-!              LE MODULE ELECTRIQUE
-!   EN COMPLEMENT DE CE QUI A DEJA ETE FAIT DANS USINI1
-
+!  Purpose  :
+!  -------
+!          User subroutines for input of calculation parameters,
+!       and to initialize variables used for specific electric models,
+!
+!
+!                 by addition of what is done in  USINI1
+!
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
+!                  ! i  ! <-- !                                                !
+!                  ! r  ! --> !                                                !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
+!
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!    Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -79,67 +82,62 @@ integer          ipp, iesp , idimve
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0. This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     If a file from the GUI is used, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
 !===============================================================================
 
 if(1.eq.1) then
   write(nfecra,9000)
   call csexit (1)
 endif
-
- 9000 format(                                                           &
-'@                                                            ',/,&
+!
+ 9000 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DE L''ENTREE DES DONNEES         ',/,&
-'@    =========                                               ',/,&
-'@                      MODULE ELECTRIQUE                     ',/,&
-'@                                                            ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR useli1 DOIT ETRE COMPLETE',/,&
-'@                                                            ',/,&
-'@     Ce sous-programme utilisateur permet de definir les    ',/,&
-'@       options generales. Il est indispensable.             ',/,&
-'@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
-'@                                                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in data input',/,                          &
+'@    =======',/,                                                 &
+'@     The user subroutine ''useli1'' must be completed',/, &
+'@     for electric module',/,                                    &
+'@',/,                                                            &
+'@  The calculation will not be run.',/,                          &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
+'@',/)
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 
 !===============================================================================
-! 1. VARIABLES TRANSPORTEES
+! 1. SOLVED VARIABLES
 !===============================================================================
 
-!  Sortie chrono, suivi listing, sortie histo
-!     Si l'on n'affecte pas les tableaux suivants,
-!     les valeurs par defaut seront utilisees
-
-!       ICHRVR( ) = sortie chono (oui 1/non 0)
-!       ILISVR( ) = suivi listing (oui 1/non 0)
-!       IHISVR( ) = sortie historique (nombre de sondes et numeros)
-!       si IHISVR(.,1)  = -1 sortie sur toutes les sondes definies
-!                            dans usini1
-
-
-! --> Variables communes aux versions electriques
-
-! ---- Enthalpie
+!  Chronological output, logging in listing, history output
+!       if we do not assign the following array values,
+!       default values will be used!
+!
+!     ichrvr( ) = chonological output (yes 1/no 0)
+!     ilisvr( ) = logging in listing (yes 1/no 0)
+!     ihisvr( ) = history output (number of probes and their numbers)
+!     if ihisvr(.,1)  = -1, output for all probes
+!
+! --> Current variables for electric modules
+
+! ---- Enthalpy
 ipp = ipprtp(isca(ihm))
 ichrvr(ipp)  = 1
 ilisvr(ipp)  = 1
 ihisvr(ipp,1)= -1
 
-! ---- Potentiel reel
+! ---- Real component of the electrical potential
 ipp = ipprtp(isca(ipotr))
 ichrvr(ipp)  = 1
 ilisvr(ipp)  = 1
 ihisvr(ipp,1)= -1
 
-!---- Fractions massiques des constituants
+!---- Mass fraction of the different constituants of the phase
 if ( ngazg .gt. 1 ) then
   do iesp = 1, ngazg-1
     ipp = ipprtp(isca(iycoel(iesp)))
@@ -149,8 +147,8 @@ if ( ngazg .gt. 1 ) then
   enddo
 endif
 
-! --> Version effet Joule
-
+! --> Specific variables for Joule effect for direct conduction
+!     Imaginary component of electrical potential
 if ( ippmod(ieljou).eq.2 .or. ippmod(ieljou).eq.4) then
   ipp = ipprtp(isca(ipoti))
   ichrvr(ipp)  = 1
@@ -158,8 +156,8 @@ if ( ippmod(ieljou).eq.2 .or. ippmod(ieljou).eq.4) then
   ihisvr(ipp,1)= -1
 endif
 
-! --> Version arc electrique 3D
-
+! --> Specific variables for electric arc in 3D
+!     vector potential components
 if ( ippmod(ielarc).ge.2 ) then
   do idimve = 1, ndimve
     ipp = ipprtp(isca(ipotva(idimve)))
@@ -169,11 +167,11 @@ if ( ippmod(ielarc).ge.2 ) then
   enddo
 endif
 
-! --> Version conduction ionique
-!     indisponible dans la version presente
+! --> Ionic conduction module
+!     Not available in the present version of the code
 
 !===============================================================================
-! 2. VARIABLES ALGEBRIQUES OU D'ETAT
+! 2. Algebric or state variables
 !===============================================================================
 
 ! ---- Temperature
@@ -182,19 +180,19 @@ ichrvr(ipp)  = 1
 ilisvr(ipp)  = 1
 ihisvr(ipp,1)= -1
 
-! ---- Conductivite electrique
+! ---- Electric conductivity
 ipp = ipppro(ipproc(ivisls(ipotr)))
 ichrvr(ipp)  = 1
 ilisvr(ipp)  = 1
 ihisvr(ipp,1)= -1
 
-! ---- Puissance volumique dissipee par effet Joule
+! ---- Joule effect Power
 ipp = ipppro(ipproc(iefjou) )
 ichrvr(ipp)  = 1
 ilisvr(ipp)  = 1
 ihisvr(ipp,1)= -1
 
-! ---- densite de courant reelle
+! ---- Real component of the current density
 do idimve = 1, ndimve
   ipp = ipppro(ipproc(idjr(idimve)) )
   ichrvr(ipp)  = 1
@@ -202,7 +200,7 @@ do idimve = 1, ndimve
   ihisvr(ipp,1)= -1
 enddo
 
-! ---- densite de courant imaginaire
+! ---- Imaginary component of the current density
 if ( ippmod(ieljou).eq.4 ) then
   do idimve = 1, ndimve
     ipp = ipppro(ipproc(idji(idimve)) )
@@ -214,7 +212,7 @@ endif
 
 if ( ippmod(ielarc).ge.1 ) then
 
-! ---- Forces electromagnetiques de Laplace
+! ---- Electromagnetic Forces (Laplace forces)
   do idimve = 1, ndimve
     ipp = ipppro(ipproc(ilapla(idimve)) )
     ichrvr(ipp)  = 1
@@ -222,7 +220,7 @@ if ( ippmod(ielarc).ge.1 ) then
     ihisvr(ipp,1)= -1
   enddo
 
-! ---- Coefficient d'absorption ou TS radiatif
+! ---- Absorption oefficient  or Radiative sources term
   if ( ixkabe.gt.0 ) then
     ipp = ipppro(ipproc(idrad) )
     ichrvr(ipp)  = 1
@@ -231,7 +229,7 @@ if ( ippmod(ielarc).ge.1 ) then
   endif
 endif
 
-! ---- Charge electrique volumique
+! ---- Electric charge (volumic)
 if ( ippmod(ielion).ge.1 ) then
   ipp = ipppro(ipproc(iqelec) )
   ichrvr(ipp)  = 1
@@ -241,27 +239,26 @@ endif
 
 
 !===============================================================================
-! 3. OPTIONS DE CALCUL
+! 3. Calculation options
 !===============================================================================
 
-! --> Coefficient de relaxation de la masse volumique
+! --> Relaxation coefficient for mass density
 !      RHO(n+1) = SRROM * RHO(n) + (1-SRROM) * RHO(n+1)
 srrom = 0.d0
 
-! --> Recalage des variables electriques (joule ou arc electrique)
-!      IELCOR = 0 : pas de correction
-!      IELCOR = 1 : correction
+! --> "Electric variables" scaling (Joule effect or electric arc version)
+!      IELCOR = 0 : NO Correction
+!      IELCOR = 1 : CORRECTION
 ielcor = 0
 
-!     Intensite de courant imposee (arc electrique) en Ampere
-!             et Puissance imposee (effet Joule/verre) en Watt
-!       ces valeurs doivent etre positives
-!       (et en general elles sont strictement positives)
+!     Imposed current intensity (electric arc ) in Amp
+!        and Imposed Power (Joule effect for glass melting applications) in Watt
+!       These values have to be positive
+!
 couimp = 0.d0
 puisim = 0.d0
 
-!     Differentiel de potentiel initiale
-!       la valeur doit etre strictement positive
+!     Initial Potential Difference (positive value)
 dpot = 0.d0
 
 
@@ -270,4 +267,4 @@ dpot = 0.d0
 !----
 
 return
-end
+end subroutine
diff --git a/users/elec/useliv.f90 b/users/elec/useliv.f90
index 6b8c194..e0797cf 100644
--- a/users/elec/useliv.f90
+++ b/users/elec/useliv.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,12 +44,11 @@ subroutine useliv &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! Purpose :
 ! --------
 
-! INITIALISATION DES VARIABLES DE CALCUL
-!    POUR LA PHYSIQUE PARTICULIERE : COMBUSTION CP
-!    PENDANT DE USINIV.F
+! variables initialization for specific electric module :
+!    the same as USINIV.F for main variables
 
 ! Cette routine est appelee en debut de calcul (suite ou non)
 !     avant le debut de la boucle en temps
@@ -60,11 +59,10 @@ subroutine useliv &
 
 ! On a repris a titre d'exemple dans cette routine utilisateur
 !     l'initialisation choisie par defaut.
+!
 
-
-
-! Les proprietes physiques sont accessibles dans le tableau
-!     PROPCE (prop au centre), PROPFA (aux faces internes),
+! Thermodynamic properties and transport coefficients are in
+!     PROPCE (at the center of the cells), PROPFA (for internal faces),
 !     PROPFB (prop aux faces de bord)
 !     Ainsi,
 !      PROPCE(IEL,IPPROC(IROM  (IPHAS))) designe ROM   (IEL ,IPHAS)
@@ -77,32 +75,20 @@ subroutine useliv &
 !      PROPFB(IFAC,IPPROB(IROM  (IPHAS))) designe ROMB  (IFAC,IPHAS)
 !      PROPFB(IFAC,IPPROB(IFLUMA(IVAR ))) designe FLUMAB(IFAC,IVAR)
 
-! LA MODIFICATION DES PROPRIETES PHYSIQUES (ROM, VISCL, VISCLS, CP)
-!     SE FERA EN STANDARD DANS LE SOUS PROGRAMME PPPHYV
-!     ET PAS ICI
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! Thermodynamic properties and transport coefficients modification
+!  (ROM, VISCL, VISCLS, CP) will be done by default in  PPPHYV
+!     and not here
+
+
+! Cells identification
+! ====================
+
+! Cells may be identified using the 'getcel' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
+
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
 !    nom           !type!mode !                   role                         !
@@ -231,7 +217,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel, mode, iphas
@@ -244,19 +230,22 @@ double precision tinit, hinit, coefe(ngazem)
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     If a file from the GUI is used, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
 !===============================================================================
-
-!     En Joule, on s'arrete (il faut etre sur que la loi H T est la bonne)
+!
+! For Joule heating by direct conduction, it stoppes
+!   you have tot be sure that the enthalpy function H(T) is the right one
+!
 if ( ippmod(ieljou).ge.1 ) then
 
   write(nfecra,9010)
   call csexit (1)
 
-!     En Arc on continue car on a des valeurs par defaut admissibles
-!       (en particulier, une enthalpie tiree du fichier de donnees)
+! For electric arc, we continue because the value are given by defauft
+!       (H(T) is given from the data file dp_ELE)
 elseif(ippmod(ielarc).ge.1) then
 
   if(ntcabs.eq.1) then
@@ -271,54 +260,55 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A LA DEFINITION DES PROP. PHYSIQUES   ',/,&
+'@ @@ CAUTION : Stop in the definition of Thermal properties  ',/,&
 '@    =========                                               ',/,&
-'@                      MODULE ELECTRIQUE                     ',/,&
+'@                      for Electric module                   ',/,&
 '@                                                            ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uselph DOIT ETRE COMPLETE',/,&
+'@     The user routine uselph has to be completed            ',/,&
 '@                                                            ',/,&
-'@     Ce sous-programme utilisateur permet de definir les    ',/,&
-'@       proprietes physiques. Il est indispensable.          ',/,&
+'@     This user routine is used to define thermal properties ',/,&
+'@     It is unavoidable.                                     ',/,&
 '@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@  The calculation will not be run.                          ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
  9011 format(/,                                                   &
-' Module arc electrique: proprietes physiques lues sur fichier',/)
+' ELECTRIC ARC MODULE : THERMAL PROPERTIES ARE READ IN A FILE',/)
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 0. IMPRESSION DE CONTROLE
+! 0. Control output
 !===============================================================================
 
 write(nfecra,9001)
 
 !===============================================================================
-! 1.  INITIALISATION VARIABLES LOCALES
+! 1.  Local variables initialization
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 2. INITIALISATION DES INCONNUES : EXEMPLES
-!      UNIQUEMENT SI ON NE FAIT PAS UNE SUITE
+! 2. Initialization : examples
+!      only at the beginning of the calculation
 !===============================================================================
 
 if ( isuite.eq.0 ) then
 
   iphas = 1
 
-! --> Enthalpie = H(T0) ou 0
-
-!     En arc electrique, on initialise tout le domaine de calcul
-!       a T0 avec la 1ere espece
-!     En Joule, on initialise l'enthalpie a zero, et il faudra
-!       que l'utilisateur intervienne, avec sa loi T->H ou une tabulation.
+! --> Enthalpy = H(T0) ou 0
 
-!   -- Calculs de HINIT
+!     For electric arc,
+!     for the whole compution domain enthalpy is set to H(T0) of the 1st constituant of the gas
+!
+!     For Joule jeating by direct conduction,
+!     enthalpy is set to zero, and the user will enter his H(T) function tabulation.
+!
+!   --  HINIT calculations
 
   if ( ippmod(ielarc).ge.1 ) then
     mode = -1
@@ -336,14 +326,14 @@ if ( isuite.eq.0 ) then
     call usthht(mode,hinit,tinit)
   endif
 
-!    -- Valeurs de l'enthalpie
+!    -- Entahlpy value
 
   do iel = 1, ncel
     rtp(iel,isca(ihm)) = hinit
   enddo
 
 
-! --> Fractions massiques = 1 ou 0
+! --> Mass fraction  = 1 ou 0
 
   if ( ngazg .gt. 1 ) then
     do iel = 1, ncel
@@ -357,21 +347,21 @@ if ( isuite.eq.0 ) then
   endif
 
 
-! --> Potentiels Electrique = 0
+! --> Electric potentials = 0
 
-!     -- Potentiel Reel
+!     -- Real Component
   do iel = 1, ncel
     rtp(iel,isca(ipotr)) = 0.d0
   enddo
 
-!     -- Potentiel Imaginaire (Joule)
+!     -- Imaginary (for Joule heating by direct conduction)
   if ( ippmod(ieljou).eq.2 .or. ippmod(ieljou).eq.4 ) then
     do iel = 1, ncel
       rtp(iel,isca(ipoti)) = 0.d0
     enddo
   endif
 
-!     -- Potentiel vecteur (arc elec. 3D)
+!     -- Vector potential (3D electric arc 3D)
   if ( ippmod(ielarc).ge.2 ) then
     do idimve = 1, ndimve
       do iel = 1, ncel
@@ -387,12 +377,12 @@ endif
 !----
 
  9001 format(/,                                                   &
-'                       MODULE ELECTRIQUE                     ',/,&
-'  useliv : Initialisation des variables par l''utilisateur   ',/,&
+'                       ELECTRIC MODULE                       ',/,&
+'  useliv : variables initialization by user                   ',/,&
 '                                                             '  )
 
 !----
 ! FIN
 !----
 return
-end
+end subroutine
diff --git a/users/elec/uselph.f90 b/users/elec/uselph.f90
index 5adeb01..db5917e 100644
--- a/users/elec/uselph.f90
+++ b/users/elec/uselph.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -104,126 +104,98 @@ subroutine uselph &
 !   precedent (sauf au premier pas de temps, ou les tableaux
 !   ITYPFB et ITRIFB n'ont pas ete renseignes)
 
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
 
 ! Il est conseille de ne garder dans ce sous programme que
 !    le strict necessaire.
 
 
+! Cells identification
+! ====================
 
+! Cells may be identified using the 'getcel' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
+
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
 ! nphmx            ! e  ! <-- ! nphsmx                                         !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           ! i  ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! ibrom            ! te ! <-- ! indicateur de remplissage de romb              !
 !   (nphmx   )     !    !     !                                                !
 ! izfppp           ! te ! <-- ! numero de zone de la face de bord              !
 ! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! w1...8(ncelet    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -267,7 +239,7 @@ double precision w1(ncelet),w2(ncelet),w3(ncelet),w4(ncelet)
 double precision w5(ncelet),w6(ncelet),w7(ncelet),w8(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel   , iphas
@@ -599,4 +571,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/users/elec/uselrc.f90 b/users/elec/uselrc.f90
index 8c83386..420e483 100644
--- a/users/elec/uselrc.f90
+++ b/users/elec/uselrc.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -60,96 +60,81 @@ subroutine uselrc &
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
 ! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! itypsm           ! te ! <-- ! type de source de masse pour les               !
 ! (ncesmp,nvar)    !    !     !  variables (cf. ustsma)                        !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
 ! smacel           ! tr ! <-- ! valeur des variables associee a la             !
 ! (ncesmp,*   )    !    !     !  source de masse                               !
 !                  !    !     !  pour ivar=ipr, smacel=flux de masse           !
 ! viscf(nfac)      ! tr ! --- ! tableau de travail    faces internes           !
 ! viscb(nfabor     ! tr ! --- ! tableau de travail    faces de bord            !
 ! w1..9(ncelet     ! tr ! --- ! tableau de travail    cellules                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!-------------------------------------------------------------------------------
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -198,7 +183,7 @@ double precision w4(ncelet), w5(ncelet), w6(ncelet)
 double precision w7(ncelet), w8(ncelet), w9(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel    , ifac   , iutile
@@ -208,7 +193,7 @@ integer          ipdcrp , idimve
 double precision somje , coepoa , coefav , coepot
 double precision emax  , aiex   , amex
 double precision rayo  , econs  , z1     , z2   , posi
-double precision elcou , dtj    , dtjm   , delhsh , cdtj , cpmx
+double precision dtj   , dtjm   , delhsh , cdtj , cpmx
 double precision xelec , yelec  , zelec
 
 !===============================================================================
@@ -772,4 +757,4 @@ endif
 !----
 
 return
-end
+end subroutine
diff --git a/users/elec/usetcl.f90 b/users/elec/usetcl.f90
index a8c475f..2f1b4b1 100644
--- a/users/elec/usetcl.f90
+++ b/users/elec/usetcl.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,464 +47,137 @@ subroutine usetcl &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! Purpose  :
 ! --------
 
-!    ROUTINE UTILISATEUR POUR PHYSIQUE PARTICULIERE
-!                MODULE ELECTRIQUE
-!   (Effet Joule, Arc Electrique, Conduction ionique)
-!    REMPLISSAGE DU TABLEAU DE CONDITIONS AUX LIMITES
-!    (ICODCL,RCODCL) POUR LES VARIABLES INCONNUES
-!    PENDANT DE USCLIM.F
+!    User routine for extended physic
+!    Electric module
+!    Allocation of boundary conditions for varaibles unknown during usclim
 
 
 
-!    CE SOUS PROGRAMME UTILISATEUR EST OBLIGATOIRE
+!    This user subroutine is compulsory
 !    =============================================
 
 
-
-! INTRODUCTION
+! Introduction
 ! ============
 
-! On donne ici les conditions aux limites par face de bord.
+! Here one defines boundary conditions on a per-face basis.
+
+! Boundary faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
+
+! Boundary condition types
+! ========================
 
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
-
-
-
-! TYPE DE CONDITIONS AUX LIMITES
-! ==============================
-
-! On peut affecter les conditions aux limites de deux manieres.
-
-
-!    Pour les conditions "standard" :
-!    --------------------------------
-
-!     (entree, sortie libre, paroi, symetrie), on donne un code
-!     stocke dans le tableau ITYPFB (dimensionne au nombre de
-!     faces de bord,nombre de phases). Ce code sera ensuite
-!     utilise par un sous-programme non utilisateur pour affecter
-!     les conditions correspondantes (les scalaires, en
-!     particulier, recevront alors les conditions de la phase a
-!     laquelle ils sont associes). Ainsi :
-
-!     Code      |  Type de bord
-!     -------------------------
-!      IENTRE   |   Entree
-!      ISOLIB   |   Sortie libre
-!      ISYMET   |   Symetrie
-!      IPAROI   |   Paroi (lisse)
-!      IPARUG   |   Paroi rugueuse
-
-!     Les entiers IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!     sont affectes par ailleurs (include param.h). Leur valeur
-!     est superieure ou egale a 1 et
-!         inferieure ou egale a NTYPMX (valeur fixee dans paramx.h)
-
-
-
-!     En outre, il faut donner certaines valeurs :
-
-
-!     - Entree (plus precisement entree/sortie a debit impose, car le debit
-!               peut etre impose sortant) :
-
-!       -> Conditions de Dirichlet sur les variables
-!         autres que la pression obligatoire si le flux est entrant,
-!         optionnelle si le flux est sortant (le code affecte flux nul
-!         si aucun Dirichlet n'est specifie) ; ainsi
-!         en face IFAC, sur la variable IVAR : RCODCL(IFAC,IVAR,1)
-
-
-!     - Paroi lisse : (= solide impermeable, avec frottement lisse)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 5
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
-!                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-
-!     - Paroi rugueuse : (= solide impermeable, avec frottement rugueux)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Valeur de la hauteur de rugosite dynamique a specifier dans
-!                       RCODCL(IFAC,IU,3) (valeur pour IV et IW non utilisee)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi rugueuse s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 6
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!                       RCODCL(IFAC,IVAR,3) = Hauteur de rugosite thermique
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
-!                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-!     - Symetrie (= paroi impermeable avec glissement) :
-
-!       -> Rien a preciser
-
-
-!     - Sortie libre (plus precisement entree/sortie libre a pression imposee)
-
-!       -> Rien a preciser pour la pression et la vitesse
-!          Pour les scalaires et grandeurs turbulentes, une valeur de Dirichlet
-!            peut etre specifiee de maniere optionnelle. Le comportement est le
-!            suivant :
-!              * la pression est toujours traitee en Dirichlet
-!              * si flux de masse entrant :
-!                  on retient la vitesse a l'infini
-!                  condition de Dirichlet pour les scalaires et grandeurs
-!                    turbulentes (ou flux nul si l'utilisateur n'a pas
-!                    specifie de Dirichlet)
-!                 si flux de masse sortant :
-!                    on impose un flux nul sur la vitesse, les scalaires et
-!                    les grandeurs turbulentes
-
-!       Noter que la pression sera recalee a P0
-!           sur la premiere face de sortie libre trouvee
-
-
-!    Pour les conditions "non standard" :
-!    ------------------------------------
-
-!     Autres que (entree, sortie libre, paroi, symetrie), on donne
-!      - d'une part, pour chaque face :
-!        -> une valeur de ITYPFB admissible
-!           ie superieure ou egale a 1 et inferieure ou egale a
-!           NTYPMX (voir sa valeur dans paramx.h).
-!           Les valeurs predefinies dans paramx.h
-!           IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG sont dans cet
-!           intervalle et il est preferable de ne pas affecter
-!           inconsidrement et par hasard a ITYPFB la valeur
-!           d'un de ces entiers. Pour eviter cela, on peut
-!           utiliser IINDEF si l'on souhaite eviter de verifier
-!           les valeurs dans paramx.h. IINDEF est une valeur
-!           admissible a laquelle n'est attachee aucune condition
-!           limite predefinie.
-!           Noter que le tableau ITYPFB est
-!           reinitialise a chaque pas de temps a la valeur
-!           non admissible 0. Si on oublie de modifier ITYPFB pour
-!           une face, le code s'arretera.
-
-!      - et d'autre part pour chaque face et chaque variable :
-!        -> un code     ICODCL(IFAC,IVAR)
-!        -> trois reels RCODCL(IFAC,IVAR,1)
-!                       RCODCL(IFAC,IVAR,2)
-!                       RCODCL(IFAC,IVAR,3)
-!     La valeur de ICODCL est prise parmi les suivantes :
-!       1 : Dirichlet      (utilisable pour toute variable)
-!       3 : Neumann        (utilisable pour toute variable)
-!       4 : Symetrie       (utilisable uniquement pour la vitesse et
-!                                   les composantes du tenseur Rij)
-!       5 : Paroi lisse    (utilisable pour toute variable sauf la
-!                                                         pression)
-!       6 : Paroi rugueuse (utilisable pour toute variable sauf la
-!                                                         pression)
-!       9 : Sortie libre   (utilisable uniquement pour la vitesse)
-!     Les valeurs des 3 reels RCODCL sont les suivantes
-!      RCODCL(IFAC,IVAR,1) :
-!         Dirichlet sur la variable        si ICODCL(IFAC,IVAR)=  1
-!         valeur en paroi (defilmnt, temp) si ICODCL(IFAC,IVAR)=  5
-!         La dimension de RCODCL(IFAC,IVAR,1) est celle de la
-!           variable resolue : ex U (vitesse en m/s),
-!                                 T (temperature en degres)
-!                                 H (enthalpie en J/kg)
-!                                 F (scalaire passif en -)
-!      RCODCL(IFAC,IVAR,2) :
-!         coefficient d'echange "exterieur" (entre la valeur
-!                          imposee et la valeur au bord du domaine)
-!                          RINFIN = infini par defaut
-!         Pour les vitesses U,             en kg/(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =            (VISCL+VISCT) / D
-!         Pour la  pression P,             en  s/m          :
-!           RCODCL(IFAC,IVAR,2) =                       DT / D
-!         Pour les temperatures T,         en Watt/(m2 degres) :
-!           RCODCL(IFAC,IVAR,2) = CP*(VISCLS+VISCT/SIGMAS) / D
-!         Pour les enthalpies H,           en kg /(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!              (D a la dimension d'une distance en m)
-
-!      RCODCL(IFAC,IVAR,3) si ICODCL(IFAC,IVAR)<>6 :
-!        Densite de flux (< 0 si gain, n normale orientee vers l'exterieur)
-!                         si ICODCL(IFAC,IVAR)= 3
-!         Pour les vitesses U,             en kg/(m s2) = J :
-!           RCODCL(IFAC,IVAR,3) =           -(VISCL+VISCT) * (GRAD U).n
-!         Pour la  pression P,             en kg/(m2 s)     :
-!           RCODCL(IFAC,IVAR,3) =                      -DT * (GRAD P).n
-!         Pour les temperatures T,         en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =-CP*(VISCLS+VISCT/SIGMAS) * (GRAD T).n
-!         Pour les enthalpies H,           en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD H).n
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD F).n
-
-!      RCODCL(IFAC,IVAR,3) SI ICODCL(IFAC,IVAR)=6 :
-!        Rugosites de la loi rugueuse
-!         Pour les vitesses U, rugosite dynamique
-!           RCODCL(IFAC,IVAR,3) = RUGD
-!         Pour les autres scalaires, rugosite thermique
-!           RCODCL(IFAC,IVAR,3) = RUGT
-
-
-!      Noter bien que si l'utilisateur affecte une valeur a ITYPFB
-!       parmi     IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!       et qu'il ne modifie pas ICODCL (valeur nulle par defaut),
-!       c'est ITYPFB qui imposera la condition limite.
-
-!      Par contre, si l'utilisateur impose
-!        ICODCL(IFAC,IVAR) (non nul),
-!        ce sont alors les valeurs de RCODCL qu'il aura fournies
-!        qui sont retenues pour la face et la variable consideree
-!        (s'il ne precise pas RCODCL, ce sont les valeurs
-!        par defaut qui sont retenues pour la face et
-!        la variable consideree soit :
-!                                 RCODCL(IFAC,IVAR,1) = 0.D0
-!                                 RCODCL(IFAC,IVAR,2) = RINFIN
-!                                 RCODCL(IFAC,IVAR,3) = 0.D0)
-!        En particulier, on peut par exemple
-!        -> donner ITYPFB(IFAC,IPHAS) = IPAROI
-!        qui impose les conditions de paroi par defaut pour toutes
-!        les variables sur la face IFAC,
-!        -> et preciser EN OUTRE pour la variable IVAR sur cette
-!        face IFAC des conditions paarticulieres en imposant
-!        ICODCL(IFAC,IVAR) et les 3 RCODCL.
-
-
-!      L'utilisateur peut egalement affecter a ITYPFB une valeur
-!       non egale a IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG, IINDEF
-!       mais superieure ou egale a 1 et inferieure ou egale a
-!       NTYPMX (voir les valeurs dans param.h) pour reperer
-!       des groupes de couleurs dans d'autres sous programmes
-!       qui lui seraient propres et ou ITYPFB serait disponible.
-!       Dans ce cas cependant, il faudra
-!       imposer les conditions limites en donnant des valeurs a
-!       ICODCL et aux trois RCODCL (puisque la valeur de ITYPFB
-!       ne sera pas predefinie dans le code).
-
-
-! REGLES DE COHERENCE
-! ===================
-
-!       Quelques regles de coherence entre les codes ICODCL
-!         des variables pour les conditions non standard :
-
-!           Les codes des vitesses doivent etre identiques
-!           Les codes des Rij      doivent etre identiques
-!           Si code (vitesse ou Rij) = 4
-!             il faut code (vitesse et Rij) = 4
-!           Si code (vitesse ou turbulence) = 5
-!             il faut code (vitesse et turbulence) = 5
-!           Si code (vitesse ou turbulence) = 6
-!             il faut code (vitesse et turbulence) = 6
-!           Si code scalaire (hormis pression ou fluctuations) = 5
-!             il faut code vitesse = 5
-!           Si code scalaire (hormis pression ou fluctuations) = 6
-!             il faut code vitesse = 6
-
-
-! REMARQUES
-! ==========
-
-!       Attention : pour imposer un flux (non nul) sur les Rij,
-!                   la viscosite a prendre en compte est VISCL
-!                   meme si VISCT existe (VISCT=RHO CMU K2/EPSILON)
-
-
-!       On dispose du tableau de tri des faces de bord au pas
-!           de temps precedent (sauf au premier pas de temps, ou
-!           ITRIFB n'a pas ete renseigne).
-!       Le tableau du type des faces de bord ITYPFB a ete
-!           reinitialise avant d'entrer dans le sous programme.
-
-
-
-!       Noter comment acceder a certaines variables :
-
-! Valeurs aux cellules
-!               Soit        IEL = IFABOR(IFAC)
-
-! * Masse vol                       phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IROM (IPHAS)))
-! * Viscosite moleculaire dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCL(IPHAS)))
-! * Viscosite turbulente  dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCT(IPHAS)))
-! * Chaleur specifique              phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(ICP   (IPHAS)))
-! * Diffusivite lambda           scalaire ISCAL, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISLS(ISCAL)))
-
-! Valeurs aux faces de bord
-
-! * Masse vol                      phase IPHAS, face de bord IFAC :
-!                  PROPFB(IFAC,IPPROB(IROM (IPHAS)))
-! * Flux de masse relatif a la variable  IVAR , face de bord IFAC :
-!      (i.e. le flux de masse servant a la convection de IVAR)
-!                  PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))
-! * Pour les autres grandeurs              a la face de bord IFAC :
-!      prendre pour approximation la valeur dans la cellule  IEL
-!      adjacente i.e. comme plus haut avec IEL = IFABOR(IFAC).
+! Boundary conditions setup for standard variables (pressure, velocity,
+! turbulence, scalars) is described precisely in the 'usclim' subroutine.
+
+! Detailed explanation will be found in the theory guide.
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! --> ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! izfppp           ! te ! --> ! numero de zone de la face de bord              !
-! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2 ou                !
-!                  !    !     !  hauteur de rugosite (m) si icodcl=6           !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! tab de trav                                    !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
+! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -554,7 +227,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac  , ii     , iphas , iel
@@ -580,19 +253,16 @@ idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 2.  REMPLISSAGE DU TABLEAU DES CONDITIONS LIMITES
-!       ON BOUCLE SUR LES FACES DE BORD
-!         ON DETERMINE LA FAMILLE ET SES PROPRIETES
-!           ON IMPOSE LA CONDITION LIMITE
-
-!          IMPOSER ICI LES CONDITIONS LIMITES SUR LES FACES DE BORD
-
+! 2.  Allocation of Boundary Conditions
+!       Loop on boundary faces
+!       Allocation of family tyoe and properties
+!       Allocation of boundary conditions
 !===============================================================================
 
-! 2.1 - Calcul des intensites de courant sur chaque electrode
+! 2.1 - Computation of intensity (A/m2) for each electrode
 !       -----------------------------------------------------
 
-!   Mise a zero
+!   Pre - initialisation
 
 do i= 1,nbelec
   sir(i) = 0.d0
@@ -611,7 +281,7 @@ if(ntcabs.lt.(ntpabs+2)) then
   enddo
 endif
 
-!     Boucle sur les faces de bord selectionnees
+!     Loop on selected boundary faces
 
 iphas = 1
 
@@ -649,10 +319,10 @@ do i=1,nbelec
 enddo
 
 
-! 2.2 - Definitions des CL sur les tensions de chaque bornes des transfo
+! 2.2 - Definition of Voltage on each termin of transformers
 !       ----------------------------------------------------------------
 
-!  2.2.1 Calcul des intensites de courant sur chaque borne des transfo
+!  2.2.1 Computation of Intensity on each termin of transformers
 
 do i=1,nbelec
   sirb(ielect(i),ielecb(i)) = 0.d0
@@ -672,11 +342,11 @@ do i=1,nbelec
   endif
 enddo
 
-!  2.2.2 Tensions sur chaque bornes des transfo
+!  2.2.2 RVoltage on each termin
 
 do ntf=1,nbtrf
 
-!      Primaire et Secondaire en Triangle
+!      Primary and Secondary in Triangle
 
   if (ibrpr(ntf) .eq. 0 .and. ibrsec(ntf) .eq. 0 ) then
 
@@ -706,7 +376,8 @@ do ntf=1,nbtrf
   endif
 enddo
 
-!  2.2.3 Intensite de courant totale par transfo
+!  2.2.3 Total intensity for a transformer
+!         (zero valued WHEN Offset established)
 
 do ntf=1,nbtrf
   sirt(ntf) = 0.d0
@@ -724,7 +395,7 @@ do i=1,nbelec
   endif
 enddo
 
-!  2.2.4 Prise en compte des Offset
+!  2.2.4 Take in account of Offset
 
 capaeq = 3.d0
 
@@ -735,7 +406,7 @@ do ntf=1,nbtrf
   endif
 enddo
 
-! Transfo de reference ===> Offset nul
+! A reference transformer is assumed to have an Offset zero valued
 
 if ( ntfref .gt. 0 ) then
   uroff(ntfref) = 0.d0
@@ -751,7 +422,7 @@ do ntf=1,nbtrf
   enddo
 enddo
 
-! Affichage des UROFF
+! Print of UROFF (real part of offset potential)
 
 write(nfecra,1500)
 do ntf=1,nbtrf
@@ -759,10 +430,10 @@ do ntf=1,nbtrf
 enddo
 write(nfecra,1501)
 
-!  2.2.5 Prise en compte des CL
+!  2.2.5 Take in account of Boundary Conditions
 
 
-!     Boucle sur les faces de bord selectionnees
+!     Loop on selected Boundary Faces
 
 iphas = 1
 
@@ -782,10 +453,10 @@ do i=1,nbelec
 
     itypfb(ifac,iphas) = iparoi
 
-!     - Numero de zone (choix du numero de l'arc)
+!     - Zone number
     izone = i
 
-!      - Reperage de la zone a laquelle appartient la face
+!      - Allocation of zone number
     izfppp(ifac) = izone
 
     if ( ielect(i) .ne. 0 ) then
@@ -814,8 +485,8 @@ do i=1,nbelec
 
 enddo
 
-! 3 - Verification dans le cas ou pas de transfo de referenc qu'il existe
-!     une paroi avec potentielle nul
+! 3 - Test, if not any reference transformer
+!      a piece of wall may be at ground.
 
 if ( ntfref .eq. 0 ) then
 
@@ -859,22 +530,22 @@ endif
 ! FORMATS
 !----
 
- 1000 format(1X,' ERREUR VERSION JOULE : ',/,                     &
-       1X,' ====================   ',/,                     &
-      10X,' Vous n''avez pas donne de transfo de r�f�rence',/,    &
-      10X,' et vous n''avez pas de CL a potentiel nul dans le',   &
-          ' domaine')
- 1500 format(/,2X,' ** INFORMATIONS SUR LES DIFFERENTS TRANSFO'/, &
-         2X,'    ---------------------------------------'/,/,     &
-         1X,'      ---------------------------------',/,    &
-         1X,'      Numero du Transfo        UROFF    ',/,   &
+ 1000 format(1X,' ERROR in JOULE : '                          ,/, &
+       1X,' ====================   '                          ,/, &
+      10X,' Lack of reference : choose a transformer for wich',/, &
+      10X,' offset is assumed zero or a face at ground on the',/, &
+          ' boundary')
+ 1500 format(/,2X,' ** INFORMATIONS ON TRANSFOMERS           ',/, &
+         2X,'    ---------------------------------------'/    ,/, &
+         1X,'      ---------------------------------'         ,/, &
+         1X,'      Number of Transfo        UROFF    '        ,/, &
          1X,'      ---------------------------------')
  1501 format(1X,'      ---------------------------------')
  2000 format(10x,i6,12x,e12.5)
  3000 format(i7)
 
 !----
-! FIN
+! END
 !----
 
-end
+end subroutine
diff --git a/users/fuel/usfucl.f90 b/users/fuel/usfucl.f90
index 798fdac..73f63bd 100644
--- a/users/fuel/usfucl.f90
+++ b/users/fuel/usfucl.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -47,459 +47,487 @@ subroutine usfucl &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! PURPOSE  :
 ! --------
 
-!    ROUTINE UTILISATEUR POUR PHYSIQUE PARTICULIERE
-!                COMBUSTION FUEL
-!    REMPLISSAGE DU TABLEAU DE CONDITIONS AUX LIMITES
-!    (ICODCL,RCODCL) POUR LES VARIABLES INCONNUES
-!    PENDANT DE USCLIM.F
+!    USER SUBROUTINE for extended physic
+!                Combsution of heavy Fuel oil
+!    Allocation of boundary conditions (ICODCL, RCODCL)
+!    for variables unknowns during USCLIM
 
 
-
-
-
-! INTRODUCTION
+! Introduction
 ! ============
 
-! On donne ici les conditions aux limites par face de bord.
+! Here we define boundary conditions on a per-face basis.
 
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
+! Boundary faces may be identified using the 'getfbr' subroutine.
 
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
+!  getfbr(string, nelts, eltlst) :
+!  - string is a user-supplied character string containing
+!    selection criteria;
+!  - nelts is set by the subroutine. It is an integer value
+!    corresponding to the number of boundary faces verifying the
+!    selection criteria;
+!  - lstelt is set by the subroutine. It is an integer array of
+!    size nelts containing the list of boundary faces verifying
+!    the selection criteria.
 
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.C
+!  string may contain:
+!  - references to colors (ex.: 1, 8, 26, ...
+!  - references to groups (ex.: inlet, group1, ...)
+!  - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!  These criteria may be combined using logical operators
+!  ('and', 'or') and parentheses.
+!  Example: '1 and (group2 or group3) and y < 1' will select boundary
+!  faces of color 1, belonging to groups 'group2' or 'group3' and
+!  with face center coordinate y less than 1.
 
 
-! TYPE DE CONDITIONS AUX LIMITES
-! ==============================
 
-! On peut affecter les conditions aux limites de deux manieres.
+! Boundary condition types
+! ========================
 
+! Boundary conditions may be assigned in two ways.
 
-!    Pour les conditions "standard" :
-!    --------------------------------
 
-!     (entree, sortie libre, paroi, symetrie), on donne un code
-!     stocke dans le tableau ITYPFB (dimensionne au nombre de
-!     faces de bord,nombre de phases). Ce code sera ensuite
-!     utilise par un sous-programme non utilisateur pour affecter
-!     les conditions correspondantes (les scalaires, en
-!     particulier, recevront alors les conditions de la phase a
-!     laquelle ils sont associes). Ainsi :
+!    For "standard" boundary conditions:
+!    -----------------------------------
 
-!     Code      |  Type de bord
-!     -------------------------
-!      IENTRE   |   Entree
-!      ISOLIB   |   Sortie libre
-!      ISYMET   |   Symetrie
-!      IPAROI   |   Paroi (lisse)
-!      IPARUG   |   Paroi rugueuse
+!     (inlet, free outlet, wall, symmetry), we define a code
+!     in the 'itypfb' array (of dimensions number of boundary faces,
+!     number of phases). This code will then be used by a non-user
+!     subroutine to assign the following conditions (scalars in
+!     particular will receive the conditions of the phase to which
+!     they are assigned). Thus:
 
-!     Les entiers IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!     sont affectes par ailleurs (include param.h). Leur valeur
-!     est superieure ou egale a 1 et
-!         inferieure ou egale a NTYPMX (valeur fixee dans paramx.h)
+!     Code      |  Boundary type
+!     --------------------------
+!      ientre   |   Inlet
+!      isolib   |   Free outlet
+!      isymet   |   Symmetry
+!      iparoi   |   Wall (smooth)
+!      iparug   |   Rough wall
 
+!     Integers ientre, isolib, isymet, iparoi, iparug
+!     are defined elsewhere (param.h). Their value is greater than
+!     or equal to 1 and less than or equal to ntypmx
+!     (value fixed in paramx.h)
 
 
-!     En outre, il faut donner certaines valeurs :
+!     In addition, some values must be defined:
 
 
-!     - Entree (plus precisement entree/sortie a debit impose, car le debit
-!               peut etre impose sortant) :
+!     - Inlet (more precisely, inlet/outlet with prescribed flow, as
+!              the flow may be prescribed as an outflow):
 
-!       -> Conditions de Dirichlet sur les variables
-!         autres que la pression obligatoire si le flux est entrant,
-!         optionnelle si le flux est sortant (le code affecte flux nul
-!         si aucun Dirichlet n'est specifie) ; ainsi
-!         en face IFAC, sur la variable IVAR : RCODCL(IFAC,IVAR,1)
+!       -> Dirichlet conditions on variables
+!         other than pressure are mandatory if the flow is incoming,
+!         optional if the flow is outgoing (the code assigns 0 flux
+!         if no Dirichlet is specified); thus,
+!         at face 'ifac', for the variable 'ivar': rcodcl(ifac, ivar, 1)
 
 
-!     - Paroi lisse : (= solide impermeable, avec frottement lisse)
+!     - Smooth wall: (= impermeable solid, with smooth friction)
 
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 5
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
+!       -> Velocity value for sliding wall if applicable
+!         at face ifac, rcodcl(ifac, iu, 1)
+!                       rcodcl(ifac, iv, 1)
+!                       rcodcl(ifac, iw, 1)
+!       -> Specific code and prescribed temperature value
+!         at wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 5
+!                       rcodcl(ifac, ivar, 1) = prescribed temperature
+!       -> Specific code and prescribed flux value
+!         at wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 3
+!                       rcodcl(ifac, ivar, 3) = prescribed flux
 !                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-
-!     - Paroi rugueuse : (= solide impermeable, avec frottement rugueux)
-
-!       -> Valeur de la vitesse de paroi defilante s'il y a lieu
-!         en face IFAC, RCODCL(IFAC,IU,1)
-!                       RCODCL(IFAC,IV,1)
-!                       RCODCL(IFAC,IW,1)
-!       -> Valeur de la hauteur de rugosite dynamique a specifier dans
-!                       RCODCL(IFAC,IU,3) (valeur pour IV et IW non utilisee)
-!       -> Code specifique et valeur de la temperature imposee
-!         en paroi rugueuse s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 6
-!                       RCODCL(IFAC,IVAR,1) = Temperature imposee
-!                       RCODCL(IFAC,IVAR,3) = Hauteur de rugosite thermique
-!       -> Code specifique et valeur du flux imposee
-!         en paroi s'il y a lieu :
-!         en face IFAC, ICODCL(IFAC,IVAR)   = 3
-!                       RCODCL(IFAC,IVAR,3) = Flux impose
+!        Note that the default condition for scalars
+!         (other than k and epsilon) is homogeneous Neumann.
+
+
+!     - Rough wall: (= impermeable solid, with rough friction)
+
+!       -> Velocity value for sliding wall if applicable
+!         at face ifac, rcodcl(ifac, iu, 1)
+!                       rcodcl(ifac, iv, 1)
+!                       rcodcl(ifac, iw, 1)
+!       -> Value of the dynamic roughness height to specify in
+!                       rcodcl(ifac, iu, 3) (value for iv et iw not used)
+!       -> Specific code and prescribed temperature value
+!         at rough wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 6
+!                       rcodcl(ifac, ivar, 1) = prescribed temperature
+!                       rcodcl(ifac, ivar, 3) = dynamic roughness height
+!       -> Specific code and prescribed flux value
+!         at rough wall, if applicable:
+!         at face ifac, icodcl(ifac, ivar)    = 3
+!                       rcodcl(ifac, ivar, 3) = prescribed flux
 !                                        =
-!        Noter que la condition par defaut pour les scalaires
-!         (hors k et epsilon) est un Neumann homogene
-
-!     - Symetrie (= paroi impermeable avec glissement) :
-
-!       -> Rien a preciser
-
-
-!     - Sortie libre (plus precisement entree/sortie libre a pression imposee)
-
-!       -> Rien a preciser pour la pression et la vitesse
-!          Pour les scalaires et grandeurs turbulentes, une valeur de Dirichlet
-!            peut etre specifiee de maniere optionnelle. Le comportement est le
-!            suivant :
-!              * la pression est toujours traitee en Dirichlet
-!              * si flux de masse entrant :
-!                  on retient la vitesse a l'infini
-!                  condition de Dirichlet pour les scalaires et grandeurs
-!                    turbulentes (ou flux nul si l'utilisateur n'a pas
-!                    specifie de Dirichlet)
-!                 si flux de masse sortant :
-!                    on impose un flux nul sur la vitesse, les scalaires et
-!                    les grandeurs turbulentes
-
-!       Noter que la pression sera recalee a P0
-!           sur la premiere face de sortie libre trouvee
-
-
-!    Pour les conditions "non standard" :
-!    ------------------------------------
-
-!     Autres que (entree, sortie libre, paroi, symetrie), on donne
-!      - d'une part, pour chaque face :
-!        -> une valeur de ITYPFB admissible
-!           ie superieure ou egale a 1 et inferieure ou egale a
-!           NTYPMX (voir sa valeur dans paramx.h).
-!           Les valeurs predefinies dans paramx.h
-!           IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG sont dans cet
-!           intervalle et il est preferable de ne pas affecter
-!           inconsidrement et par hasard a ITYPFB la valeur
-!           d'un de ces entiers. Pour eviter cela, on peut
-!           utiliser IINDEF si l'on souhaite eviter de verifier
-!           les valeurs dans paramx.h. IINDEF est une valeur
-!           admissible a laquelle n'est attachee aucune condition
-!           limite predefinie.
-!           Noter que le tableau ITYPFB est
-!           reinitialise a chaque pas de temps a la valeur
-!           non admissible 0. Si on oublie de modifier ITYPFB pour
-!           une face, le code s'arretera.
-
-!      - et d'autre part pour chaque face et chaque variable :
-!        -> un code     ICODCL(IFAC,IVAR)
-!        -> trois reels RCODCL(IFAC,IVAR,1)
-!                       RCODCL(IFAC,IVAR,2)
-!                       RCODCL(IFAC,IVAR,3)
-!     La valeur de ICODCL est prise parmi les suivantes :
-!       1 : Dirichlet      (utilisable pour toute variable)
-!       3 : Neumann        (utilisable pour toute variable)
-!       4 : Symetrie       (utilisable uniquement pour la vitesse et
-!                                   les composantes du tenseur Rij)
-!       5 : Paroi lisse    (utilisable pour toute variable sauf la
-!                                                         pression)
-!       6 : Paroi rugueuse (utilisable pour toute variable sauf la
-!                                                         pression)
-!       9 : Sortie libre   (utilisable uniquement pour la vitesse)
-!     Les valeurs des 3 reels RCODCL sont les suivantes
-!      RCODCL(IFAC,IVAR,1) :
-!         Dirichlet sur la variable        si ICODCL(IFAC,IVAR)=  1
-!         valeur en paroi (defilmnt, temp) si ICODCL(IFAC,IVAR)=  5
-!         La dimension de RCODCL(IFAC,IVAR,1) est celle de la
-!           variable resolue : ex U (vitesse en m/s),
-!                                 T (temperature en degres)
-!                                 H (enthalpie en J/kg)
-!                                 F (scalaire passif en -)
-!      RCODCL(IFAC,IVAR,2) :
-!         coefficient d'echange "exterieur" (entre la valeur
-!                          imposee et la valeur au bord du domaine)
-!                          RINFIN = infini par defaut
-!         Pour les vitesses U,             en kg/(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =            (VISCL+VISCT) / D
-!         Pour la  pression P,             en  s/m          :
-!           RCODCL(IFAC,IVAR,2) =                       DT / D
-!         Pour les temperatures T,         en Watt/(m2 degres) :
-!           RCODCL(IFAC,IVAR,2) = CP*(VISCLS+VISCT/SIGMAS) / D
-!         Pour les enthalpies H,           en kg /(m2 s) :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,2) =    (VISCLS+VISCT/SIGMAS) / D
-!              (D a la dimension d'une distance en m)
-
-!      RCODCL(IFAC,IVAR,3) si ICODCL(IFAC,IVAR)<>6 :
-!        Densite de flux (< 0 si gain, n normale orientee vers l'exterieur)
-!                         si ICODCL(IFAC,IVAR)= 3
-!         Pour les vitesses U,             en kg/(m s2) = J :
-!           RCODCL(IFAC,IVAR,3) =           -(VISCL+VISCT) * (GRAD U).n
-!         Pour la  pression P,             en kg/(m2 s)     :
-!           RCODCL(IFAC,IVAR,3) =                      -DT * (GRAD P).n
-!         Pour les temperatures T,         en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =-CP*(VISCLS+VISCT/SIGMAS) * (GRAD T).n
-!         Pour les enthalpies H,           en Watt/m2       :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD H).n
-!         Pour les autres scalaires F      en :
-!           RCODCL(IFAC,IVAR,3) =   -(VISCLS+VISCT/SIGMAS) * (GRAD F).n
-
-!      RCODCL(IFAC,IVAR,3) SI ICODCL(IFAC,IVAR)=6 :
-!        Rugosites de la loi rugueuse
-!         Pour les vitesses U, rugosite dynamique
-!           RCODCL(IFAC,IVAR,3) = RUGD
-!         Pour les autres scalaires, rugosite thermique
-!           RCODCL(IFAC,IVAR,3) = RUGT
-
-
-!      Noter bien que si l'utilisateur affecte une valeur a ITYPFB
-!       parmi     IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG
-!       et qu'il ne modifie pas ICODCL (valeur nulle par defaut),
-!       c'est ITYPFB qui imposera la condition limite.
-
-!      Par contre, si l'utilisateur impose
-!        ICODCL(IFAC,IVAR) (non nul),
-!        ce sont alors les valeurs de RCODCL qu'il aura fournies
-!        qui sont retenues pour la face et la variable consideree
-!        (s'il ne precise pas RCODCL, ce sont les valeurs
-!        par defaut qui sont retenues pour la face et
-!        la variable consideree soit :
-!                                 RCODCL(IFAC,IVAR,1) = 0.D0
-!                                 RCODCL(IFAC,IVAR,2) = RINFIN
-!                                 RCODCL(IFAC,IVAR,3) = 0.D0)
-!        En particulier, on peut par exemple
-!        -> donner ITYPFB(IFAC,IPHAS) = IPAROI
-!        qui impose les conditions de paroi par defaut pour toutes
-!        les variables sur la face IFAC,
-!        -> et preciser EN OUTRE pour la variable IVAR sur cette
-!        face IFAC des conditions paarticulieres en imposant
-!        ICODCL(IFAC,IVAR) et les 3 RCODCL.
-
-
-!      L'utilisateur peut egalement affecter a ITYPFB une valeur
-!       non egale a IENTRE, ISOLIB, ISYMET, IPAROI, IPARUG, IINDEF
-!       mais superieure ou egale a 1 et inferieure ou egale a
-!       NTYPMX (voir les valeurs dans param.h) pour reperer
-!       des groupes de couleurs dans d'autres sous programmes
-!       qui lui seraient propres et ou ITYPFB serait disponible.
-!       Dans ce cas cependant, il faudra
-!       imposer les conditions limites en donnant des valeurs a
-!       ICODCL et aux trois RCODCL (puisque la valeur de ITYPFB
-!       ne sera pas predefinie dans le code).
-
-
-! REGLES DE COHERENCE
-! ===================
-
-!       Quelques regles de coherence entre les codes ICODCL
-!         des variables pour les conditions non standard :
-
-!           Les codes des vitesses doivent etre identiques
-!           Les codes des Rij      doivent etre identiques
-!           Si code (vitesse ou Rij) = 4
-!             il faut code (vitesse et Rij) = 4
-!           Si code (vitesse ou turbulence) = 5
-!             il faut code (vitesse et turbulence) = 5
-!           Si code (vitesse ou turbulence) = 6
-!             il faut code (vitesse et turbulence) = 6
-!           Si code scalaire (hormis pression ou fluctuations) = 5
-!             il faut code vitesse = 5
-!           Si code scalaire (hormis pression ou fluctuations) = 6
-!             il faut code vitesse = 6
-
-
-! REMARQUES
-! ==========
-
-!       Attention : pour imposer un flux (non nul) sur les Rij,
-!                   la viscosite a prendre en compte est VISCL
-!                   meme si VISCT existe (VISCT=RHO CMU K2/EPSILON)
-
-
-!       On dispose du tableau de tri des faces de bord au pas
-!           de temps precedent (sauf au premier pas de temps, ou
-!           ITRIFB n'a pas ete renseigne).
-!       Le tableau du type des faces de bord ITYPFB a ete
-!           reinitialise avant d'entrer dans le sous programme.
-
-
-
-!       Noter comment acceder a certaines variables :
-
-! Valeurs aux cellules
-!               Soit        IEL = IFABOR(IFAC)
-
-! * Masse vol                       phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IROM (IPHAS)))
-! * Viscosite moleculaire dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCL(IPHAS)))
-! * Viscosite turbulente  dynamique phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISCT(IPHAS)))
-! * Chaleur specifique              phase IPHAS, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(ICP   (IPHAS)))
-! * Diffusivite lambda           scalaire ISCAL, cellule      IEL  :
-!                  PROPCE(IEL ,IPPROC(IVISLS(ISCAL)))
-
-! Valeurs aux faces de bord
-
-! * Masse vol                      phase IPHAS, face de bord IFAC :
-!                  PROPFB(IFAC,IPPROB(IROM (IPHAS)))
-! * Flux de masse relatif a la variable  IVAR , face de bord IFAC :
-!      (i.e. le flux de masse servant a la convection de IVAR)
-!                  PROPFB(IFAC,IPPROB(IFLUMA(IVAR )))
-! * Pour les autres grandeurs              a la face de bord IFAC :
-!      prendre pour approximation la valeur dans la cellule  IEL
-!      adjacente i.e. comme plus haut avec IEL = IFABOR(IFAC).
+!        Note that the default condition for scalars
+!         (other than k and epsilon) is homogeneous Neumann.
+
+!     - Symmetry (= impermeable frictionless wall):
+
+!       -> Nothing to specify
+
+
+!     - Free outlet (more precisely free inlet/outlet with prescribed pressure)
+
+!       -> Nothing to prescribe for pressure and velocity
+!          For scalars and turbulent values, a Dirichlet value may optionally
+!            be specified. The behavior is as follows:
+!              * pressure is always handled as a Dirichlet condition
+!              * if the mass flow is inflowing:
+!                  we retain the velocity at infinity
+!                  Dirichlet condition for scalars and turbulent values
+!                    (or zero flux if the user has not specified a
+!                    Dirichlet value)
+!                if the mass flow is outflowing:
+!                  we prescribe zero flux on the velocity, the scalars,
+!                  and turbulent values
+
+!       Note that the pressure will be reset to P0
+!           on the first free outlet face found
+
+
+!    For "non-standard" conditions:
+!    ------------------------------
+
+!     Other than (inlet, free outlet, wall, symmetry), we define
+!      - on one hand, for each face:
+!        -> an admissible 'itypfb' value
+!           (i.e. greater than or equal to 1 and less than or equal to
+!            ntypmx; see its value in paramx.h).
+!           The values predefined in paramx.h:
+!           'ientre', 'isolib', 'isymet', 'iparoi', 'iparug' are in
+!           this range, and it is preferable not to assign one of these
+!           integers to 'itypfb' randomly or in an inconsiderate manner.
+!           To avoid this, we may use 'iindef' if we wish to avoid
+!           checking values in paramx.h. 'iindef' is an admissible
+!           value to which no predefined boundary condition is attached.
+!           Note that the 'itypfb' array is reinitialized at each time
+!           step to the non-admissible value of 0. If we forget to
+!           modify 'typfb' for a given face, the code will stop.
+
+!      - and on the other hand, for each face and each variable:
+!        -> a code             icodcl(ifac, ivar)
+!        -> three real values  rcodcl(ifac, ivar, 1)
+!                              rcodcl(ifac, ivar, 2)
+!                              rcodcl(ifac, ivar, 3)
+!     The value of 'icodcl' is taken from the following:
+!       1: Dirichlet      (usable for any variable)
+!       3: Neumann        (usable for any variable)
+!       4: Symmetry       (usable only for the velocity and
+!                          components of the Rij tensor)
+!       5: Smooth wall    (usable for any variable except for pressure)
+!       6: Rough wall     (usable for any variable except for pressure)
+!       9: Free outlet    (usable only for velocity)
+!     The values of the 3 'rcodcl' components are
+!      rcodcl(ifac, ivar, 1):
+!         Dirichlet for the variable          if icodcl(ifac, ivar) =  1
+!         wall value (sliding velocity, temp) if icodcl(ifac, ivar) =  5
+!         The dimension of rcodcl(ifac, ivar, 1) is that of the
+!           resolved variable: ex U (velocity in m/s),
+!                                 T (temperature in degrees)
+!                                 H (enthalpy in J/kg)
+!                                 F (passive scalar in -)
+!      rcodcl(ifac, ivar, 2):
+!         "exterior" exchange coefficient (between the prescribed value
+!                          and the value at the domain boundary)
+!                          rinfin = infinite by default
+!         For velocities U,                in kg/(m2 s):
+!           rcodcl(ifac, ivar, 2) =          (viscl+visct) / d
+!         For the pressure P,              in  s/m:
+!           rcodcl(ifac, ivar, 2) =                     dt / d
+!         For temperatures T,              in Watt/(m2 degres):
+!           rcodcl(ifac, ivar, 2) = Cp*(viscls+visct/sigmas) / d
+!         For enthalpies H,                in kg /(m2 s):
+!           rcodcl(ifac, ivar, 2) =    (viscls+visct/sigmas) / d
+!         For other scalars F              in:
+!           rcodcl(ifac, ivar, 2) =    (viscls+visct/sigmas) / d
+!              (d has the dimension of a distance in m)
+!
+!      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) <> 6:
+!        Flux density (< 0 if gain, n outwards-facing normal)
+!                         if icodcl(ifac, ivar)= 3
+!         For velocities U,                in kg/(m s2) = J:
+!           rcodcl(ifac, ivar, 3) =         -(viscl+visct) * (grad U).n
+!         For pressure P,                  en kg/(m2 s):
+!           rcodcl(ifac, ivar, 3) =                    -dt * (grad P).n
+!         For temperatures T,              in Watt/m2:
+!           rcodcl(ifac, ivar, 3) = -Cp*(viscls+visct/sigmas) * (grad T).n
+!         For enthalpies H,                in Watt/m2:
+!           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad H).n
+!         For other scalars F in :
+!           rcodcl(ifac, ivar, 3) = -(viscls+visct/sigmas) * (grad F).n
+
+!      rcodcl(ifac, ivar, 3) if icodcl(ifac, ivar) = 6:
+!        Roughness for the rough wall law
+!         For velocities U, dynamic roughness
+!           rcodcl(ifac, ivar, 3) = rugd
+!         For other scalars, thermal roughness
+!           rcodcl(ifac, ivar, 3) = rugt
+
+
+!      Note that if the user assigns a value to itypfb equal to
+!       ientre, isolib, isymet, iparoi, or iparug
+!       and does not modify icodcl (zero value by default),
+!       itypfb will define the boundary condition type.
+
+!      To the contrary, if the user prescribes
+!        icodcl(ifac, ivar) (nonzero),
+!        the values assigned to rcodcl will be used for the considered
+!        face and variable (if rcodcl values are not set, the default
+!        values will be used for the face and variable, so:
+!                                 rcodcl(ifac, ivar, 1) = 0.d0
+!                                 rcodcl(ifac, ivar, 2) = rinfin
+!                                 rcodcl(ifac, ivar, 3) = 0.d0)
+!        Especially, we may have for example:
+!        -> set itypfb(ifac, iphas) = iparoi
+!        which prescribes default wall conditions for all variables at
+!        face ifac,
+!        -> and define IN ADDITION for variable ivar on this face
+!        specific conditions by specifying
+!        icodcl(ifac, ivar) and the 3 rcodcl values.
+
+
+!      The user may also assign to itypfb a value not equal to
+!       ientre, isolib, isymet, iparoi, iparug, iindef
+!       but greater than or equal to 1 and less than or equal to
+!       ntypmx (see values in param.h) to distinguish
+!       groups or colors in other subroutines which are specific
+!       to the case and in which itypfb is accessible.
+!       In this case though it will be necessary to
+!       prescribe boundary conditions by assigning values to
+!       icodcl and to the 3 rcodcl fields (as the value of itypfb
+!       will not be predefined in the code).
+
+
+! Consistency rules
+! =================
+
+!       A few consistency rules between 'icodcl' codes for
+!         variables with non-standard boundary conditions:
+
+!           Codes for velocity components must be identical
+!           Codes for Rij components must be identical
+!           If code (velocity or Rij) = 4
+!             we must have code (velocity and Rij) = 4
+!           If code (velocity or turbulence) = 5
+!             we must have code (velocity and turbulence) = 5
+!           If code (velocity or turbulence) = 6
+!             we must have code (velocity and turbulence) = 6
+!           If scalar code (except pressure or fluctuations) = 5
+!             we must have velocity code = 5
+!           If scalar code (except pressure or fluctuations) = 6
+!             we must have velocity code = 6
+
+
+! Remarks
+! =======
+
+!       Caution: to prescribe a flux (nonzero) to Rij,
+!                the viscosity to take into account is viscl
+!                even if visct exists (visct=rho cmu k2/epsilon)
+
+!       We have the ordering array for boundary faces from the
+!           previous time step (except for the fist time step,
+!           where 'itrifb' has not been set yet).
+!       The array of boundary face types 'itypfb' has been
+!           reset before entering the subroutine.
+
+
+!       Note how to access some variables:
+
+! Cell values
+!               Let         iel = ifabor(ifac)
+
+! * Density                         phase iphas, cell iel:
+!                  propce(iel, ipproc(irom(iphas)))
+! * Dynamic molecular viscosity     phase iphas, cell iel:
+!                  propce(iel, ipproc(iviscl(iphas)))
+! * Turbulent viscosity   dynamique phase iphas, cell iel:
+!                  propce(iel, ipproc(ivisct(iphas)))
+! * Specific heat                   phase iphas, cell iel:
+!                  propce(iel, ipproc(icp(iphasl))
+! * Diffusivity: lambda          scalaire iscal, cell iel:
+!                  propce(iel, ipproc(ivisls(iscal)))
+
+! Boundary face values
+
+! * Density                        phase iphas, boundary face ifac :
+!                  propfb(ifac, ipprob(irom(iphas)))
+! * Mass flow relative to variable ivar, boundary face ifac:
+!      (i.e. the mass flow used for convecting ivar)
+!                  propfb(ifac, pprob(ifluma(ivar )))
+! * For other values                  at boundary face ifac:
+!      take as an approximation the value in the adjacent cell iel
+!      i.e. as above with iel = ifabor(ifac).
 
 !-------------------------------------------------------------------------------
+!   All cells can be identified by using the subroutine 'getcel'.
+!    Syntax of getcel:
+!     getcel(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+
+!       string may contain:
+!       - references to colors (ex.: 1, 8, 26, ...
+!       - references to groups (ex.: inlet, group1, ...)
+!       - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!       These criteria may be combined using logical operators
+!       ('and', 'or') and parentheses.
+!       Example: '1 and (group2 or group3) and y < 1' will select boundary
+!       faces of color 1, belonging to groups 'group2' or 'group3' and
+!       with face center coordinate y less than 1.
+!
+!   All boundary faces may be identified using the 'getfbr' subroutine.
+!    Syntax of getfbr:
+!     getfbr(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
+!
+!   All internam faces may be identified using the 'getfac' subroutine.
+!    Syntax of getfac:
+!     getfac(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! --> ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! --> ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! izfppp           ! te ! --> ! numero de zone de la face de bord              !
-! (nfabor)         !    !     !  pour le module phys. part.                    !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2 ou                !
-!                  !    !     !  hauteur de rugosite (m) si icodcl=6           !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! w1,2,3,4,5,6     ! tr ! --- ! tableaux de travail                            !
-!  (ncelet         !    !     !  (calcul du gradient de pression)              !
-! coefu            ! tr ! --- ! tab de trav                                    !
-!  (nfabor,3)      !    !     !  (calcul du gradient de pression)              !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! tab de trav                                    !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
+! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
-
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common blocks
 !===============================================================================
 
 include "ihmpre.h"
@@ -555,7 +583,7 @@ double precision w4(ncelet),w5(ncelet),w6(ncelet)
 double precision coefu(nfabor,ndim)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! LOCAL VARIABLES
 
 
 integer          idebia, idebra
@@ -571,9 +599,8 @@ double precision xkent, xeent
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  THIS TEST CERTIFY THIS VERY ROUINE IS USED
+!     IN PLACE OF LIBRARY'S ONE
 !===============================================================================
 
   if(1.eq.1) then
@@ -586,13 +613,13 @@ double precision xkent, xeent
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DE L''ENTREE DES COND. LIM.      ',/,&
+'@ @@ Beware    : Stop during Boundary Conditions Allocation  ',/,&
 '@    =========                                               ',/,&
 '@    FUEL                                                    ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uscpcl DOIT ETRE COMPLETE',/,&
+'@     User subroutine USFUCL must be completed               ',/, &
 '@                                                            ',/,&
 '@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@  Computation will be stopped                               ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
@@ -609,32 +636,24 @@ idebia = idbia0
 idebra = idbra0
 
 d2s3 = 2.d0/3.d0
-
 !===============================================================================
-! 2.  REMPLISSAGE DU TABLEAU DES CONDITIONS LIMITES
-!       ON BOUCLE SUR LES FACES DE BORD
-!         ON DETERMINE LA FAMILLE ET SES PROPRIETES
-!           ON IMPOSE LA CONDITION LIMITE
-
-!          IMPOSER ICI LES CONDITIONS LIMITES SUR LES FACES DE BORD
-
-!          INTERVENTION UTLISATEUR
-
+! 2.  ALLOCATION OF BOUNDARY CONDITIONS VECTOR
+!       LOOP ON BOUNDARY FACE
+!         FAMILY AND PROPERTIES ARE DETERMINED
+!         BOUNDARY CONDITION ALLOCATED
+!
+!     BOUNDARY CONDITIONS ON BONDARY FACE HAVE TO BE ALLOCATED HERE
+!
+!     USER'S WORK TO DO
+!
 !===============================================================================
 
-!   Pour chaque type de condition relative aux physiques particulieres
-!       on affecte un numero de zone de maniere a pouvoir donner les
-!       conditions aux limites par zone physique et non par face de maillage
-!       Un numero de zone est un entier arbitraire strictement positif
-!         et inferieur ou egal a NOZPPM (dont la valeur est fixee en
-!         parametre dans ppppar.h)
+!  Each kind of condition for extended physic is allocated with a number
+!  IZONE ( 0<IZONE<= NOZPPM ; NOZPPM allocated in ppppar.h)
 
 iphas = 1
 
-!      ELEMENT ADJACENT A LA FACE DE BORD
-
-! ---- Facette de type entree correspondant a une entree d'air
-!        Par exemple : Air secondaire ou Air tertiaire
+! ---- The 12 color is a pure air inlet
 
 CALL GETFBR('12',NLELT,LSTELT)
 !==========
@@ -643,58 +662,42 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!   Type de condition aux limites pour les variables standard
+!   kind of boundary condition for standard variables
   itypfb(ifac,iphas) = ientre
 
-!   Numero de zone (choix du numero de couleur par exemple)
+!   Zone number allocation
   izone = 1
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Zone number storage
   izfppp(ifac) = izone
 
-! ------ Pour ces facettes d'entree , on est a debit impose
+! ------ This inlet have a fixed mass flux
 
   ientat(izone) = 1
   iqimp(izone)  = 1
-!     - Debit en kg/s pour l'air
+!     - Air mass flow rate kg/s
   qimpat(izone) = 1.46d-03
-!     - Temperature en K pour l'air
+!     - Air inlet temperature K
   timpat(izone) = 400.d0 + tkelvi
-!     - Debit nul de fuel dans l'entree d'air
+!     - Fuel mass flow rate kg/s
   qimpfl(izone) = 0.d0
 
-! ------ On impose en couleur 12 une entree a debit impose
-!        L'utilisateur donne donc ici uniquement
-!          la direction du vecteur vitesse
-
+! ----- The 12 color is a fixed mass flow rate inlet
+!        user gives only the speed vector direction
+!        (spedd vector norm is irrelevent)
+!
   rcodcl(ifac,iu(iphas),1) = 0.d0
   rcodcl(ifac,iv(iphas),1) = 0.d0
   rcodcl(ifac,iw(iphas),1) = 5.d0
 
-! ------ Traitement de la turbulence
-
-!        La turbulence est calculee par defaut si ICALKE different de 0
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference adaptes a l'entree courante si ICALKE = 1
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference et de l'intensite turvulente
-!            adaptes a l'entree courante si ICALKE = 2
-
-!        Choix pour le calcul automatique ICALKE = 1 ou 2
+!   Boundary conditions of turbulence
   icalke(izone) = 1
-!        Saisie des donnees
-  dh(izone)     = 0.1d0
-  xintur(izone) = 0.1d0
-
-! Exemple de cas ou ICALKE(IZONE) = 0 : DEBUT
-!    Eliminer ces lignes pour la clarte si on a fait le choix ICALKE(IZONE) = 1
+!
+!    - If ICALKE = 0 the boundary conditions of turbulence at
+!      the inlet are calculated as follows:
 
   if(icalke(izone).eq.0) then
 
-!         Calcul de k et epsilon en entree (XKENT et XEENT) a partir
-!           l'intensite turbulente et de lois standards en conduite
-!           circulaire (leur initialisation est inutile mais plus
-!           propre)
     uref2 = rcodcl(ifac,iu(iphas),1)**2                           &
            +rcodcl(ifac,iv(iphas),1)**2                           &
            +rcodcl(ifac,iw(iphas),1)**2
@@ -704,10 +707,9 @@ do ilelt = 1, nlelt
 
     call keenin                                                   &
     !==========
-        ( uref2, xintur(izone), dh(izone), cmu, xkappa,           &
-          xkent, xeent )
+      ( uref2, xintur(izone), dh(izone), cmu, xkappa,             &
+        xkent, xeent )
 
-!     ITYTUR est un indicateur qui vaut ITURB/10
     if    (itytur(iphas).eq.2) then
 
       rcodcl(ifac,ik(iphas),1)  = xkent
@@ -723,14 +725,14 @@ do ilelt = 1, nlelt
       rcodcl(ifac,ir23(iphas),1) = 0.d0
       rcodcl(ifac,iep(iphas),1)  = xeent
 
-    elseif(iturb(iphas).eq.50) then
+    elseif (iturb(iphas).eq.50) then
 
       rcodcl(ifac,ik(iphas),1)   = xkent
       rcodcl(ifac,iep(iphas),1)  = xeent
       rcodcl(ifac,iphi(iphas),1) = d2s3
       rcodcl(ifac,ifb(iphas),1)  = 0.d0
 
-    elseif(iturb(iphas).eq.60) then
+    elseif (iturb(iphas).eq.60) then
 
       rcodcl(ifac,ik(iphas),1)   = xkent
       rcodcl(ifac,iomg(iphas),1) = xeent/cmu/xkent
@@ -738,17 +740,20 @@ do ilelt = 1, nlelt
     endif
 
   endif
+!
+!    - If ICALKE = 1 the boundary conditions of turbulence at
+!      the inlet refer to both, a hydraulic diameter and a
+!      reference velocity given in usini1.f90.
+!
+  dh(izone)     = 0.032d0
+!
+!    - If ICALKE = 2 the boundary conditions of turbulence at
+!      the inlet refer to a turbulence intensity.
+!
+  xintur(izone) = 0.d0
+
+! ------ Treatment of user's scalars
 
-! Exemple de cas ou ICALKE(IZONE) = 0 : FIN
-
-! ------ Traitement des scalaires physiques particulieres
-!        Ils sont traites automatiquement
-
-
-! ------ Traitement des scalaires utilisateurs
-
-! Exemple : On traite les scalaires rattaches a la phase courante : DEBUT
-!     Eliminer ces lignes pour la clarte s'il n'y en a pas
   if ( (nscal-nscapp).gt.0 ) then
     do ii = 1, (nscal-nscapp)
       if(iphsca(ii).eq.iphas) then
@@ -759,9 +764,7 @@ do ilelt = 1, nlelt
 
 enddo
 
-
-! ---- Facette de type entree correspondant a une entree d'air + Fuel
-!        (Air Primaire + Fuel)
+! ---- Inlet of both primary Air and Fuel
 
 CALL GETFBR('11',NLELT,LSTELT)
 !==========
@@ -770,61 +773,108 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!   Type de condition aux limites pour les variables standard
+!   kind of boundary condition for standard variables
   itypfb(ifac,iphas) = ientre
 
-!   Numero de zone (choix du numero de couleur par exemple)
+!   Zone number allocation
   izone = 2
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Zone number storage
   izfppp(ifac) = izone
 
-! ------ Pour ces facettes d'entree , on est a debit impose
+! ------ This inlet have a fixed mass flux
 
   ientfl(izone) = 1
   iqimp(izone)  = 1
-!     - Debit en kg/s pour l'air
+!     - Air mass flow rate in kg/s
   qimpat(izone) = 1.46d-03
-!     - Temperature en K pour l'air
+!     - Air Temperature at inlet in K
   timpat(izone) = 800.d0  + tkelvi
 
-!     - Debit en kg/s pour le fuel
+!     - Fuel mass flow rate in kg/s
   qimpfl(izone) = 1.46d-04/360.d0
 
-!     - Distribution en masse en % pour le fuel
-!       relative a la classe ICLAFU (1 < ICLA < NCLAFU )
+!     - PERCENTAGE mass fraction of each granulometric class
+!       ICLAFU (1 < ICLAFU < NCLAFU )
   iclafu = 1
   distfu(izone,iclafu) = 100.d0
 
-!     - Temperature en K pour le fuel
+!     - Fuel Temperature at inlet in K
   timpfl(izone) = 100.d0  + tkelvi
 
-! ------ On impose en couleur 11 une entree a debit impose
-!        L'utilisateur donne donc ici uniquement
-!          la direction du vecteur vitesse
+! ----- The 11 color is a fixed mass flow rate inlet
+!        user gives only the speed vector direction
+!        (spedd vector norm is irrelevent)
+!
 
   rcodcl(ifac,iu(iphas),1) = 0.d0
   rcodcl(ifac,iv(iphas),1) = 0.d0
   rcodcl(ifac,iw(iphas),1) = 5.d0
 
-! ------ Traitement de la turbulence
+!   Boundary conditions of turbulence
+  icalke(izone) = 1
+!
+!    - If ICALKE = 0 the boundary conditions of turbulence at
+!      the inlet are calculated as follows:
 
-!        La turbulence est calculee par defaut si ICALKE different de 0
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference adaptes a l'entree courante si ICALKE = 1
-!          - soit a partir du diametre hydraulique, d'une vitesse
-!            de reference et de l'intensite turvulente
-!            adaptes a l'entree courante si ICALKE = 2
+  if(icalke(izone).eq.0) then
 
-!        Choix pour le calcul automatique ICALKE = 1 ou 2
-  icalke(izone) = 1
-!        Saisie des donnees
-  dh(izone)     = 0.1d0
-  xintur(izone) = 0.1d0
+    uref2 = rcodcl(ifac,iu(iphas),1)**2                           &
+           +rcodcl(ifac,iv(iphas),1)**2                           &
+           +rcodcl(ifac,iw(iphas),1)**2
+    uref2 = max(uref2,1.d-12)
+    xkent  = epzero
+    xeent  = epzero
 
+    call keenin                                                   &
+    !==========
+      ( uref2, xintur(izone), dh(izone), cmu, xkappa,             &
+        xkent, xeent )
+
+    if    (itytur(iphas).eq.2) then
+
+      rcodcl(ifac,ik(iphas),1)  = xkent
+      rcodcl(ifac,iep(iphas),1) = xeent
+
+    elseif(itytur(iphas).eq.3) then
+
+      rcodcl(ifac,ir11(iphas),1) = d2s3*xkent
+      rcodcl(ifac,ir22(iphas),1) = d2s3*xkent
+      rcodcl(ifac,ir33(iphas),1) = d2s3*xkent
+      rcodcl(ifac,ir12(iphas),1) = 0.d0
+      rcodcl(ifac,ir13(iphas),1) = 0.d0
+      rcodcl(ifac,ir23(iphas),1) = 0.d0
+      rcodcl(ifac,iep(iphas),1)  = xeent
+
+    elseif (iturb(iphas).eq.50) then
+
+      rcodcl(ifac,ik(iphas),1)   = xkent
+      rcodcl(ifac,iep(iphas),1)  = xeent
+      rcodcl(ifac,iphi(iphas),1) = d2s3
+      rcodcl(ifac,ifb(iphas),1)  = 0.d0
+
+    elseif (iturb(iphas).eq.60) then
+
+      rcodcl(ifac,ik(iphas),1)   = xkent
+      rcodcl(ifac,iomg(iphas),1) = xeent/cmu/xkent
+
+    endif
+
+  endif
+!
+!    - If ICALKE = 1 the boundary conditions of turbulence at
+!      the inlet refer to both, a hydraulic diameter and a
+!      reference velocity given in usini1.f90.
+!
+  dh(izone)     = 0.032d0
+!
+!    - If ICALKE = 2 the boundary conditions of turbulence at
+!      the inlet refer to a turbulence intensity.
+!
+  xintur(izone) = 0.d0
 enddo
 
-! --- On impose en couleur 15 une paroi laterale
+! --- Color 15 is a wall
 
 CALL GETFBR('15',NLELT,LSTELT)
 !==========
@@ -833,23 +883,23 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          PAROI : DEBIT NUL (FLUX NUL POUR LA PRESSION)
-!                  FROTTEMENT POUR LES VITESSES (+GRANDEURS TURB)
-!                  FLUX NUL SUR LES SCALAIRES
+!          WALL  : nul mass flow rate (nul pressure flux)
+!                  rubbing for speed (and turbulence)
+!                  nul scalar fluxes
 
-!   Type de condition aux limites pour les variables standard
+!   kind of boundary condition for standard variables
   itypfb(ifac,iphas)   = iparoi
 
 
-!   Numero de zone (choix du numero de couleur par exemple)
+!   Zone number allocation
   izone = 3
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Zone number storage
   izfppp(ifac) = izone
 
 enddo
 
-! --- On impose en couleur 19 une sortie
+! --- Color 19 is an outlet
 
 CALL GETFBR('19',NLELT,LSTELT)
 !==========
@@ -858,22 +908,21 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          SORTIE : FLUX NUL VITESSE ET TEMPERATURE, PRESSION IMPOSEE
-!            Noter que la pression sera recalee a P0
-!                sur la premiere face de sortie de type 9 (ISOLIB)
+!          OUTLET : nul fluxes for speed and scalar
+!                   pressure fixed
 
-!   Type de condition aux limites pour les variables standard
+!   kind of boundary condition for standard variables
     itypfb(ifac,iphas)   = isolib
 
-!   Numero de zone (choix du numero de couleur par exemple)
+!   Zone number allocation
     izone = 4
 
-!      - Reperage de la zone a laquelle appartient la face
+!   Zone number storage
     izfppp(ifac) = izone
 
   enddo
 
-! --- On impose en couleur 14 ou 4 une symetrie
+! --- 14 and 4 are symetry
 
 CALL GETFBR('14 or 4',NLELT,LSTELT)
 !==========
@@ -882,23 +931,23 @@ do ilelt = 1, nlelt
 
   ifac = lstelt(ilelt)
 
-!          SYMETRIES
+!          SYMETRY
 
-!   Type de condition aux limites pour les variables standard
+!   kind of boundary condition for standard variables
   itypfb(ifac,iphas)   = isymet
 
-!   Numero de zone (choix du numero de couleur par exemple)
+!   Zone number allocation
   izone = 5
 
-!    - Reperage de la zone a laquelle appartient la face
+!   Zone number storage
   izfppp(ifac) = izone
 
 enddo
 
 
 !----
-! FIN
+! END
 !----
 
 return
-end
+end subroutine
diff --git a/users/fuel/usfui1.f90 b/users/fuel/usfui1.f90
index 92d0e25..388abec 100644
--- a/users/fuel/usfui1.f90
+++ b/users/fuel/usfui1.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,30 +28,27 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine usfui1
+subroutine usfui1
 !================
 
 !===============================================================================
-!  FONCTION  :
+!  PURPOSE   :
 !  ---------
 
-!  ROUTINE UTILISATEUR POUR ENTREE DES PARAMETRES DE CALCUL
-!  RELATIFS A LA COMBUSTION DU FUEL
+!  USER ROUTINE FOR ALLOCATE COMPUTATION PARAMETERS DEALING WITH FUEL
 !    (COMMONS)
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
-
 implicit none
 
 !===============================================================================
@@ -83,9 +80,8 @@ integer          jpp , icla
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  THIS TEST CERTIFY THIS VERY ROUINE IS USED
+!     IN PLACE OF LIBRARY'S ONE
 !===============================================================================
 
 if(1.eq.1) then
@@ -97,12 +93,12 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES               ',/,&
+'@ @@ Beware : Stop during DATA Inlet                         ',/,&
 '@    =========                                               ',/,&
-'@     MODULE COMBUSTION FUEL :                               ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR usfui1 DOIT ETRE COMPLETE',/,&
+'@     Heavy Fuel Oil Combustion                              ',/,&
+'@     user subroutine USFUI1 must be completed               ',/, &
 '@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@  Computation will be stopped                               ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
@@ -110,46 +106,44 @@ endif
 !===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
-
 !===============================================================================
-! 1. VARIABLES TRANSPORTEES
+! 1. TRANSPORTED VARIABLES
 !===============================================================================
 
-!  Sortie chrono, suivi listing, sortie histo
-!     Si l'on n'affecte pas les tableaux suivants,
-!     les valeurs par defaut seront utilisees
+! OUTLET chrono, listing, and histo
+!     if below vector are not allocated, default values will be used
+
+!       ICHRVR( ) =  chono outlet (Yes 1/No  0)
+!       ILISVR( ) =  listing outlet (Yes 1/No  0)
+!       IHISVR( ) =  histo outlet (number of roiqu and number)
+!       if IHISVR(.,1)  = -1 every probes defined in usini1
 
-!       ICHRVR( ) = sortie chono (oui 1/non 0)
-!       ILISVR( ) = suivi listing (oui 1/non 0)
-!       IHISVR( ) = sortie historique (nombre de sondes et numeros)
-!       si IHISVR(.,1)  = -1 sortie sur toutes les sondes definies
-!                            dans usini1
 
+! --> Variables for the mix (carrying gas and coal particles)
 
-! --> Variables propres a la suspension gaz - particules
+!      - Enthalpy
 
-!      - Enthalpie de la suspension
 jpp = ipprtp(isca(ihm))
 ichrvr(jpp)  = 1
 ilisvr(jpp)  = 1
 ihisvr(jpp,1)= -1
 
-! --> Variables propres a la phase dispersee
+! --> Variables for droplets
 
 do icla = 1, nclafu
-!       - Fraction massique de Fuel
+!       - Fuel mass fraction
   jpp = ipprtp(isca(iyfol(icla)))
   ichrvr(jpp)  = 1
   ilisvr(jpp)  = 1
   ihisvr(jpp,1)= -1
 
-!       - Nb de particules par kg de melange
+!       - Number of droplets in mix (1/kg)
   jpp = ipprtp(isca(ing(icla)))
   ichrvr(jpp)  = 1
   ilisvr(jpp)  = 1
   ihisvr(jpp,1)= -1
 
-!       - Enthalpie du Fuel
+!       - Fuel enthalpy (J/kg)
   jpp = ipprtp(isca(ihlf(icla)))
   ichrvr(jpp)  = 1
   ilisvr(jpp)  = 1
@@ -157,22 +151,22 @@ do icla = 1, nclafu
 enddo
 
 
-! --> Variables propres a la phase continue
+! --> Variables for carrying gas
 
-!       - Moyenne de F1 (vapeur )
+!       - Mean of 1 mixture fraction (fuel vapor)
 jpp = ipprtp(isca(ifvap))
 ichrvr(jpp)  = 1
 ilisvr(jpp)  = 1
 ihisvr(jpp,1)= -1
 
-!     - Moyenne du F3 (representatif du C libere sous forme de CO
-!       lors de la combustion heterogene)
+!     - Mean of 3 mixture fraction
+!       (carbon from heterogeneous oxidation of char)
 jpp = ipprtp(isca(ifhtf))
 ichrvr(jpp)  = 1
 ilisvr(jpp)  = 1
 ihisvr(jpp,1)= -1
 
-!     - Variance associe au traceur 4 (air)
+!     - Variance of 4 mixture fraction (air)
 jpp = ipprtp(isca(if4p2m))
 ichrvr(jpp)  = 1
 ilisvr(jpp)  = 1
@@ -187,7 +181,7 @@ if ( ieqco2 .ge. 1 ) then
   ihisvr(jpp,1)= -1
 endif
 
-!     - HCN et NO
+!     - HCN and NO
 
 if ( ieqnox .eq. 1 ) then
   jpp = ipprtp(isca(iyhcn))
@@ -205,118 +199,119 @@ if ( ieqnox .eq. 1 ) then
 endif
 
 !===============================================================================
-! 2. VARIABLES ALGEBRIQUES OU D'ETAT
+! 2. State variables
 !===============================================================================
 
-!  Sortie chrono, suivi listing, sortie histo
-!     Si l'on n'affecte pas les tableaux suivants,
-!     les valeurs par defaut seront utilisees
+! OUTLET chrono, listing, and histo
+!     if below vector are not allocated, default values will be used
 
-!       ICHRVR( ) = sortie chono (oui 1/non 0)
-!       ILISVR( ) = suivi listing (oui 1/non 0)
-!       IHISVR( ) = sortie historique (nombre de sondes et numeros)
-!       si IHISVR(.,1)  = -1 sortie sur toutes les sondes definies
-!                            dans usini1
+!       ICHRVR( ) =  chono outlet (Yes 1/No  0)
+!       ILISVR( ) =  listing outlet (Yes 1/No  0)
+!       IHISVR( ) =  histo outlet (number of roiqu and number)
+!       if IHISVR(.,1)  = -1 every probes defined in usini1
 
-! --> Variables algebriques propres a la suspension gaz - particules
 
-!     - Masse molaire du melange gazeux
+! --> Variables for the mix (carrying gas and coal particles)
+
+
+!     - Mean Molar Mass of gases in kg
 jpp = ipppro(ipproc(immel))
 ichrvr(jpp)   = 0
 ilisvr(jpp)   = 0
 ihisvr(jpp,1) = -1
 
-! --> Variables algebriques propres a la phase dispersee
+! --> Variables for droplets
 
 do icla = 1, nclafu
-!       - Temperature des gouttes
+!       - Droplets' Temperature in K
   jpp = ipppro(ipproc(itemp3(icla)))
   ichrvr(jpp)   = 1
   ilisvr(jpp)   = 1
   ihisvr(jpp,1) = -1
 
-!       - Masse volumique des gouttes
+!       - Droplet's Density in kg/m3
   jpp = ipppro(ipproc(irom3(icla)))
   ichrvr(jpp)   = 1
   ilisvr(jpp)   = 1
   ihisvr(jpp,1) = -1
 
-!       - Diametre des gouttes
+!       - Droplet's Diameter
   jpp = ipppro(ipproc(idiam3(icla)))
   ichrvr(jpp)   = 1
   ilisvr(jpp)   = 1
   ihisvr(jpp,1) = -1
 
-!       - Transfert d'energie par convection-diffusion
+!       - Heat flux (between gases and ICLA class droplets)
   jpp = ipppro(ipproc(ih1hlf(icla)))
   ichrvr(jpp)   = 0
   ilisvr(jpp)   = 0
   ihisvr(jpp,1) = -1
 
-!       - Transfert de masse du a l'evaporation (s-1) < 0
+!       - Evaporation mass flow rate (s-1) < 0
   jpp = ipppro(ipproc(igmeva(icla)))
   ichrvr(jpp)   = 0
   ilisvr(jpp)   = 0
   ihisvr(jpp,1) = -1
 
-!       - Transfert de masse du a la combustion heterogene
+!       - Char combsution mass flow rate
   jpp = ipppro(ipproc(igmhtf(icla)))
   ichrvr(jpp)   = 0
   ilisvr(jpp)   = 0
   ihisvr(jpp,1) = -1
 enddo
 
-! --> Variables algebriques propres a la phase continue
+! --> State variables for carrying gas
 
-!     - Temperature du melange gazeux
+!     - Temperature for gases only (not mixed with droplets)
 jpp = ipppro(ipproc(itemp1))
 ichrvr(jpp)   = 1
 ilisvr(jpp)   = 1
 ihisvr(jpp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du FOV
+!      - Mass fraction of fuel vapor
+!          (relative to pure gases : not mixed with droplets ..)
 jpp = ipppro(ipproc(iym1(ifov)))
 ichrvr(jpp)   = 1
 ilisvr(jpp)   = 1
 ihisvr(jpp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du CO
+!     - Mass fraction of CO ( pure gases)
 jpp = ipppro(ipproc(iym1(ico)))
 ichrvr(jpp)   = 1
 ilisvr(jpp)   = 1
 ihisvr(jpp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du O2
+!     - Mass fraction of O2 ( same)
 jpp = ipppro(ipproc(iym1(io2)))
 ichrvr(jpp)   = 1
 ilisvr(jpp)   = 1
 ihisvr(jpp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du CO2
+!     - Mass fraction of CO2
 jpp = ipppro(ipproc(iym1(ico2)))
 ichrvr(jpp)   = 1
 ilisvr(jpp)   = 1
 ihisvr(jpp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du H2O
+!     - Mass fraction of H2O
 jpp = ipppro(ipproc(iym1(ih2o)))
 ichrvr(jpp)   = 1
 ilisvr(jpp)   = 1
 ihisvr(jpp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du N2
+!     - Mass fraction of N2
 jpp = ipppro(ipproc(iym1(in2)))
 ichrvr(jpp)   = 1
 ilisvr(jpp)   = 1
 ihisvr(jpp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du H2S
+!     - Mass fraction of H2S (exhaust form of sulphur during evaporation)
 jpp = ipppro(ipproc(iym1(ih2s)))
 ichrvr(jpp)   = 1
 ilisvr(jpp)   = 1
 ihisvr(jpp,1) = -1
 
-!     - Fraction massique (dans le melange gazeux) du SO2
+!     - mass fraction of SO2 (final form of sulphur)
 jpp = ipppro(ipproc(iym1(iso2)))
 ichrvr(jpp)   = 1
 ilisvr(jpp)   = 1
@@ -338,29 +333,30 @@ if ( ieqnox .eq. 1 ) then
   ihisvr(jpp,1) = -1
 endif
 
+
 !===============================================================================
-! 3. OPTIONS DE CALCUL
+! 3. Computation OPTION
 !===============================================================================
 
-! --- Coefficient de relaxation de la masse volumique
+! --- Relaxation for density (Advisable when starting combustion computation)
+!                            (Forbidden for unstationnary computation)
 !      RHO(n+1) = SRROM * RHO(n) + (1-SRROM) * RHO(n+1)
 
-srrom = 0.8d0
+srrom = 0.95d0
 
 
 !===============================================================================
-! 4. CONSTANTES PHYSIQUES
+! 4. Physical constants
 !===============================================================================
 
-! ---> Viscosite laminaire associee au scalaire enthalpie
-!       DIFTL0 (diffusivite dynamique en kg/(m s))
+! ---  Laminar viscosity for enthalpy (dynamical diffusivity) kg/(m.s)
 diftl0 = 4.25d-5
 
 
 !----
-! FIN
+! END
 !----
 
 return
 
-end
+end subroutine
diff --git a/users/fuel/usfuiv.f90 b/users/fuel/usfuiv.f90
index 0f3d027..19b264f 100644
--- a/users/fuel/usfuiv.f90
+++ b/users/fuel/usfuiv.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -44,146 +44,191 @@ subroutine usfuiv &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! PURPOSE  :
 ! --------
 
-! INITIALISATION DES VARIABLES DE CALCUL
-!    POUR LA PHYSIQUE PARTICULIERE : COMBUSTION FUEL
-!    PENDANT DE USINIV.F
-
-! Cette routine est appelee en debut de calcul (suite ou non)
-!     avant le debut de la boucle en temps
-
-! Elle permet d'INITIALISER ou de MODIFIER (pour les calculs suite)
-!     les variables de calcul (inconnues transportees),
-!     la valeur du pas de temps,
-
-! On a repris a titre d'exemple dans cette routine utilisateur
-!     l'initialisation choisie par defaut.
-
-
-
-! Les proprietes physiques sont accessibles dans le tableau
-!     PROPCE (prop au centre), PROPFA (aux faces internes),
-!     PROPFB (prop aux faces de bord)
-!     Ainsi,
-!      PROPCE(IEL,IPPROC(IROM  (IPHAS))) designe ROM   (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISCL(IPHAS))) designe VISCL (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(ICP   (IPHAS))) designe CP    (IEL ,IPHAS)
-!      PROPCE(IEL,IPPROC(IVISLS(ISCAL))) designe VISLS (IEL ,ISCAL)
-
-!      PROPFA(IFAC,IPPROF(IFLUMA(IVAR ))) designe FLUMAS(IFAC,IVAR)
-
-!      PROPFB(IFAC,IPPROB(IROM  (IPHAS))) designe ROMB  (IFAC,IPHAS)
-!      PROPFB(IFAC,IPPROB(IFLUMA(IVAR ))) designe FLUMAB(IFAC,IVAR)
-
-! LA MODIFICATION DES PROPRIETES PHYSIQUES (ROM, VISCL, VISCLS, CP)
-!     SE FERA EN STANDARD DANS LE SOUS PROGRAMME PPPHYV
-!     ET PAS ICI
-
-! L'identification des cellules concernees peut s'appuyer sur la
-! commande GETCEL.
-
-!  GETCEL(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de cellules trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des cellules trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les cellules de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+! INITIALISATION OF TRANSPORTED VARIABLES
+!    EXTENDED PHYSICS : Heavy Fuel Oil Combustion
+!    similar to  USINIV.F
+!
+! This routine is called at the beginning of every computation
+!  (new or continuation) before the time loop
+!
+! This routine initialize or modify (if continuation)
+!  values of transported variables and of the time step
+!
+! The exemple is ... default value
+
+!
+! Physical properties are stored in PROPCE(cell center)
+!  PROPFA(inner face) and PROPFB(boundary face)
+!  e.g.
+!  PROPCE(IEL, IPPROC(IROM  (IPHAS))) is ROM(IEL,IPHAS) mean density kg/m3
+!  PROPFA(IFAC,IPPROF(IFLUMA(IVAR ))) is FLUMAS(IFAC,IVAR) convective flux
+!                                                        of variable IVAR
+!  PROPFB(......                      .................................
+!
+! Physical properties (ROM, VISCL, CP ...) are computed in PPPHYV
+!  not to be modified here
+!
+
+!   All cells can be identified by using the subroutine 'getcel'.
+!    Syntax of getcel:
+!     getcel(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+
+!       string may contain:
+!       - references to colors (ex.: 1, 8, 26, ...
+!       - references to groups (ex.: inlet, group1, ...)
+!       - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!       These criteria may be combined using logical operators
+!       ('and', 'or') and parentheses.
+!       Example: '1 and (group2 or group3) and y < 1' will select boundary
+!       faces of color 1, belonging to groups 'group2' or 'group3' and
+!       with face center coordinate y less than 1.
+!
+!   All boundary faces may be identified using the 'getfbr' subroutine.
+!    Syntax of getfbr:
+!     getfbr(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
+!
+!   All internam faces may be identified using the 'getfac' subroutine.
+!    Syntax of getfac:
+!     getfac(string, nelts, eltlst) :
+!     - string is a user-supplied character string containing
+!       selection criteria;
+!     - nelts is set by the subroutine. It is an integer value
+!       corresponding to the number of boundary faces verifying the
+!       selection criteria;
+!     - lstelt is set by the subroutine. It is an integer array of
+!       size nelts containing the list of boundary faces verifying
+!       the selection criteria.
+!
+!     string may contain:
+!     - references to colors (ex.: 1, 8, 26, ...
+!     - references to groups (ex.: inlet, group1, ...)
+!     - geometric criteria (ex. x < 0.1, y >= 0.25, ...)
+!
+!     These criteria may be combined using logical operators
+!     ('and', 'or') and parentheses.
 
+!-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! valeur du pas de temps                         !
-! rtp              ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa coefb      ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfac(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! --> ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! itrifb(nfabor    ! ia ! <-- ! indirection for boundary faces ordering)       !
+!  (nfabor, nphas) !    !     !                                                !
+! itypfb           ! ia ! --> ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(1) = Dirichlet value                    !
+!                  !    !     ! rcodcl(2) = exterior exchange coefficient      !
+!                  !    !     !  (infinite if no exchange)                     !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2 or                !
+!                  !    !     !  roughness height (m) if icodcl=6              !
+!                  !    !     ! for velocities           ( vistl+visct)*gradu  !
+!                  !    !     ! for pressure                         dt*gradp  !
+!                  !    !     ! for scalars    cp*(viscls+visct/sigmas)*gradt  !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !  (computation of pressure gradient)            !
+! coefu            ! ra ! --- ! tab de trav                                    !
+!  (nfabor, 3)     !    !     !  (computation of pressure gradient)            !
+! rdevel(nrdeve)   ! ra ! <-> ! tab reel complementaire developemt             !
+! rdevel(nideve)   ! ra ! <-- ! real work array for temporary developpement    !
+! rtuser(nituse    ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
@@ -235,7 +280,7 @@ double precision coefa(nfabor,*), coefb(nfabor,*)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! LOCAL VARIABLES
 
 integer          idebia, idebra
 integer          iel, ige, mode, iphas, icla
@@ -256,13 +301,13 @@ if(1.eq.1) return
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 0. IMPRESSION DE CONTROLE
+! 0. CONTROL PRINT
 !===============================================================================
 
 write(nfecra,9001)
 
 !===============================================================================
-! 1.  INITIALISATION VARIABLES LOCALES
+! 1.  LOCAL VARIABLES INITIALISATION
 !===============================================================================
 
 idebia = idbia0
@@ -271,15 +316,15 @@ idebra = idbra0
 d2s3 = 2.d0/3.d0
 
 !===============================================================================
-! 2. INITIALISATION DES INCONNUES :
-!      UNIQUEMENT SI ON NE FAIT PAS UNE SUITE
+! 2. INITIALISATION OF TRANSPORTED VARIABLES
+!      RONLY IF THE COMPUTATION IS NOT A CONTINUATION
 !===============================================================================
 
 if ( isuite.eq.0 ) then
 
   iphas = 1
 
-! --> Initialisation de k et epsilon (exemple)
+! --> Initialisation of k and epsilon (exemple)
 
   xkent = 1.d-10
   xeent = 1.d-10
@@ -323,15 +368,15 @@ if ( isuite.eq.0 ) then
 
   endif
 
-! --> On initialise tout le domaine de calcul avec de l'air a TINITK
+! --> All the computation domain is initialised with air at TINITK
 !                   ================================================
 
-! ---- Calculs de H1INIT et H2INIT
+! ---- Computation of H1INIT and  H2INIT
 
   t1init = t0(iphas)
   t2init = t0(iphas)
 
-! ------ Variables de transport relatives a la phase solide
+! ------ Transported variables for droplets
 
   h2init = h02fol +  cp2fol*(t2init-trefth)
 
@@ -343,7 +388,7 @@ if ( isuite.eq.0 ) then
     enddo
   enddo
 
-! ------ Variables de transport relatives au melange
+! ------ Transported variables for the mix (droplets and carrying gases)
 
   do ige = 1, ngazem
     coefe(ige) = zero
@@ -359,8 +404,8 @@ if ( isuite.eq.0 ) then
     rtp(iel,isca(ihm)) = h1init
   enddo
 
-! ------ Variables de transport relatives au melange gazeux
-!        (scalaires passifs et variances associees)
+! ------ Transported variables for gaseous mixture
+!        (passive scalars, variance, reactive species)
 
   do iel = 1, ncel
     rtp(iel,isca(ifvap )) = zero
@@ -383,13 +428,13 @@ endif
 ! FORMATS
 !----
 
- 9001 format(                                                           &
+ 9001 format(                                                     &
 '                                                             ',/,&
-'  usfuiv : Initialisation des variables par l''utilisateur   ',/,&
+'  usfuiv : Variables Initialisation for FUel by the USer     ',/,&
 '                                                             ',/)
 
 !----
-! FIN
+! END
 !----
 return
-end
+end subroutine
diff --git a/users/lagr/uslabo.f90 b/users/lagr/uslabo.f90
index 5a59169..332452b 100644
--- a/users/lagr/uslabo.f90
+++ b/users/lagr/uslabo.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,200 +50,187 @@ subroutine uslabo &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
-!   -------------------------------------
-
-!  SOUS-PROGRAMME UTILISATEUR (INTERVENTION NON OBLIGATOIRE)
-
-!  SOUS-PROGRAMME UTILISATEUR DE GESTION DU COMPORTEMENT
-!    DES PARTICULES A UNE INTERACTION PARTICULE/FRONTIERE
-!    ET D'ENREGISTREMENT DES STATISTIQUES AUX FRONTIERES.
-
-!  L'UTILISATEUR N'A PAS A MODIFIER LE PRESENT SOUS-PROGRAMME DANS
-!    LES CONDITIONS D'UTILISATION STANDARD. DANS LE CAS OU IL
-!    SOUHAITE AVOIR DES INTERACTIONS NON PREVU, IL DOIT INTERVENIR
-!    DANS LES RUBRIQUES NUMERO 8 et 10.
-
-!  Gestion de l'interaction particule/face de frontiere
-!    en fonction des informations donnees par l'utilisateur
-!    (valeur de IUSCLB par zone) dans la routine USLAG2.
-
-!  En fonction du nom stocke dans IUSCLB et affecte
-!    a la face de bord KFACE, on donne le type de comportement
-!    des particules.
-
-!  En standard, on a :
-
-!    IUSCLB conditions au bord pour les particules
-!    = IENTRL -> zone d'injection de particules
-!    = ISORTL -> sortie du domaine
-!    = IREBOL -> rebond des particules
-!    = IDEPO1 -> deposition definitive
-!    = IDEPO2 -> deposition definitive mais la particule reste en
-!                memoire (utile si IENSI2 = 1 uniquement)
-!    = IDEPO3 -> deposition et remise en suspension possible
-!                suivant les condition de l'ecoulement
-!    = IENCRL -> encrassement (Charbon uniquement IPHYLA = 2)
-
-
-!  De plus, si on souhaite un autre type d'interaction non prevue
-!    pour zone de faces de bord, dans USLAG2 on affecte dans
-!    IUSCLB(KZONE) un des noms suivants :
-
-!               JBORD1, JBORD2, JBORD3, JBORD4, JBORD5
-
-!    et dans cette routine on code le comportement
-!    des particules pour cette zone frontiere.
-
-!  ATTENTION : en debut de routine la variable ISUIVI est
-!   initialisee a une valeur aberrante et DOIT etre modifiee
-!   avant la fin de la routine.
-!   Les vitesses de la particule et du fluide vu doivent etre
-!   modifiees en fonction de l'interaction via les tableaux
-!   VITPAR et VITFLU, elles NE DOIVENT PAS etre modifiees
-!   via ETTP et ETTPA dans ce sous-programme.
-
-!  Regle de modification de ISUIVI :
-!  =================================
-! 1) Mettre ISUIVI = 0 si la particule ne doit pas etre
-!    suivi dans le maillage apres l'interaction de sa trajectoire
-!    et de la face de bord (ex : IENTRL, ISORTL, IDEPO1, IDEPO2).
-
-! 2) mettre ISUIVI = 1 pour continuer a suivre la particule
-!    dans le maillage apres son interaction (ex : IREBOL, IDEPO3).
-!    On peut tres bien avoir ISUIVI = 0 ou ISUIVI = 1 pour un type
-!    d'interaction en fonction de comportement de la particule
-!    (ex : IENCRL).
-
-! REMARQUE : Lorsqu'il y a interaction, les calculs de la vitesse
-! ^^^^^^^^   de la particule et de la vitesse du fluide vu sont
-!            forcement a l'ordre 1 (meme si on est a l'ordre 2
-!            par ailleurs).
+! Purpose:
+! --------
+!
+! User subroutine of the Lagrangian particle-tracking module:
+! -----------------------------------------------------------
+!
+! User subroutine (non-mandatory intervention)
+!
+! User subroutine managing the particle behavior during an interaction between
+! a particle and a boundary and recording the boundary statistics.
+!
+! The user does not need to modify this subroutine in the case of a standard use.
+! If he wishes to treat non-standard user-defined interactions, he needs to intervene
+! in sections 8 and 10.
+!
+! The interaction between a particle and a boundary face is treated with respect
+! to the information given by the user (value of iusclb per zone) in the subroutine uslag2.
+!
+! Given the name stored in iusclb and associated to the boundary face kface, the type
+! of particle behavior is defined. For a standard use, the value of iusclb can be either:
+!
+! * ientrl: for a zone where particles are injected into the domain (particle-inlet zone).
+! * isortl: for a zone where particle are getting out of the domain (particle-outlet zone).
+! * irebol: condition of elastic rebound.
+! * idepo1: definitive deposition of the particles; the particle is removed from the calculation
+! * idepo2: definitive deposition of the particles; the particle is kept in the calculation
+!           (useful only if iensi2 = 1)
+! * idepo3: deposition and resuspension possible depending on the flow conditions.
+! * iencrl: fouling only for coal particles (iphyla = 2)
+!
+! Besides, if one wishes to add another kind of non-standard interaction for a zone of
+! boundary faces, one must give (in uslag2) in iusclb(kzone) one of the following names:
+!
+
+!       JBORD1, JBORD2, JBORD3, JBORD4, JBORD5
+!
+! And, in the present routine uslabo, the user has to program the behavior of the particles
+! for this boundary zone.
+!
+! CAUTION: At the beginning of the routine, the variable isuivi is initialized with an
+! absurd value and MUST be modified before the end of the routine.
+!
+! The velocities of the the particle and the flow seen must be modified with respect to
+! the interactions through the use of the arrays vitpar and vitflu, and MUST NOT be modified
+! directly in the ETTP and ETTPA arrays in this routine.
+!
+! Rule to modify the isuivi parameter:
+! ====================================
+!
+! 1) Set isuivi to 0 if the particle must not be followed in the mesh after its
+!    interaction with a boundary face (ex: ientrl, isortl, idepo1, idepo2)
+
+! 2) Set isuivi to 1 if the particle must be followed in the mesh after its
+!    interaction with a boundary face (ex: idepo3)
+
+! Remark: During an interaction, the computations of the velocities of the particle
+! ------  and of the flow seen are first-order (even if the calculation is second-order
+!         elsewhere in the domain)
+
+
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndnod           ! e  ! <-- ! dim. connectivite cellules->faces              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
-! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
-! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! kface            ! e  ! <-- ! numero de la face d'interaction                !
-! nbpt             ! e  ! <-- ! numero de la particule traitee                 !
-! isuivi           ! e  ! --> ! indicateur de suivi de la particule            !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndnod           ! i  ! <-- ! dim connectivity cell->faces                   !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+!                  !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! maximum number of particles allowed            !
+! nvp              ! i  ! <-- ! number of particle variables                   !
+! nvp1             ! i  ! <-- ! nvp minus position, fluid and part. velocities !
+! nvep             ! i  ! <-- ! number of particle properties (integer)        !
+! nivep            ! i  ! <-- ! number of particle properties (integer)        !
+! ntersl           ! i  ! <-- ! number of source terms of return coupling      !
+! nvlsta           ! i  ! <-- ! nb of Lagrangian statistical variables         !
+! nvisbr           ! i  ! <-- ! number of boundary statistics                  !
+! kface            ! i  ! <-- ! number of the interaction face                 !
+! nbpt             ! i  ! <-- ! number of the treated particle                 !
+! isuivi           ! i  ! <-- ! flag to follow (or not) the particle           !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel           ! ia ! <-- ! interior faces -> cells connectivity           !
 ! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
+! ifabor           ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
+! ifmfbr           ! ia ! <-- ! boundary face family numbers                   !
 ! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
+! ifmcel           ! ia ! <-- ! cell family numbers                            !
 ! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
 !  (nfml,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac                      !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
+! ipnfac           ! ia ! <-- ! interior faces -> vertices index (optional)    !
+!   (lndfac)       !    !     !                                                !
+! nodfac           ! ia ! <-- ! interior faces -> vertices list (optional)     !
 !   (nfac+1)       !    !     !                                                !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr                      !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
+! ipnfbr           ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+!   (lndfbr)       !    !     !                                                !
+! nodfbr           ! ia ! <-- ! boundary faces -> vertices list  (optional)    !
 !   (nfabor+1)     !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
+! itypfb(nfabor    ! ia ! <-- ! type of the boundary faces                     !
 !  nphas)          !    !     !                                                !
-! itrifb(nfabor    ! te ! <-- ! tab d'indirection pour tri des faces           !
+! itrifb(nfabor    ! ia ! <-- ! indirection array for the sorting of the faces !
 !   nphas)         !    !     !                                                !
-! ifrlag           ! te ! <-- ! numero de zone de la face de bord              !
-!   (nfabor)       !    !     !  pour le module lagrangien                     !
-! itepa            ! te ! --> ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! indep            ! te ! --> ! pour chaque particule :                        !
-!   (nbpmax)       !    !     !   numero de la cellule de depart               !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! ifrlag           ! ia ! <-- ! number of the boundary face                    !
+!   (nfabor)       !    !     ! for the Lagrangian module                      !
+! itepa            ! ra ! <-- ! particle information (integer)                 !
+! (nbpmax,nivep    !    !     !                                                !
+! indep            ! ia ! --> ! for each cell, number of the departure cell    !
+!   (nbpmax)       !    !     !                                                !
+! idevel(nideve    ! ia ! <-- ! dev. complementary integer array               !
+! ituser(nituse    ! ia ! <-- ! user complementary integer array               !
+! ia(*)            ! ia ! --- ! macro array of integers                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! surfbn(nfabor    ! tr ! <-- ! surface des faces de bord                      !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant et prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape precedente              !
-! tepa             ! tr ! <-- ! info particulaires (reels)                     !
-! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! parbor(nfabor    ! tr ! <-- ! cumul des statistiques aux frontieres          !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! surfbn(nfabor    ! ra ! <-- ! area of the boundary faces                     !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! transported variables at cell centers          !
+! (ncelet,*)       !    !     ! (current and previous time step)               !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! coefa, coefb     ! ra ! <-- ! boundary conditions at the boundary faces      !
+!  (nfabor,*)      !    !     !                                                !
+! ettp             ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the current time step         !
+! ettpa            ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the previous time step        !
+! tepa             ! ra ! <-- ! particle information (real) (statis. weight..) !
+! (nbpmax,nvep)    !    !     !                                                !
+! parbor(nfabor    ! ra ! <-- ! cumulation of the boundary statistics          !
 !    nvisbr)       !    !     !                                                !
-! vitpar           ! tr ! <-- ! vitesse particule pour le traitement           !
-!   (nbpmax,3)     !    !     !   interactions particules/frontieres           !
-! vitflu           ! tr ! <-- ! vitesse fluide vu pour le traitement           !
-!   (nbpmax,3)     !    !     !   interactions particules/frontieres           !
-! auxl(nbpmax,3    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! vitpar           ! ra ! <-- ! part. velocity for the treatment of the        !
+!   (nbpmax,3)     !    !     ! particle/wall interactions                     !
+! vitflu           ! ra ! <-- ! flow velocity for the treatment of the         !
+!   (nbpmax,3)     !    !     ! particle/wall interactions                     !
+! auxl(nbpmax,3    ! ra ! --- ! work array                                     !
+! rdevel(nrdeve    ! ra ! <-- ! Development complementary real array           !
+! rtuser(nrtuse    ! ra ! <-- ! Complementary user real array                  !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -301,7 +288,7 @@ double precision vitpar(nbpmax,3) , vitflu(nbpmax,3)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ip , nfin , kzone , n1 , icha, iok
@@ -320,27 +307,27 @@ double precision uxn   , vyn    , wzn
 !===============================================================================
 
 !===============================================================================
-! 0.  GESTION MEMOIRE
+! 0.  Memory management
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 1. Traitement en fonction du type de frontiere
+! 1. Treatment with respect to the type of boundary
 !===============================================================================
 
 iok = 0
 
-!--> numero de la particule traitee
+!--> number of the treated particle
 
 ip = nbpt
 
-!--> Zone de la face de bord a traitee
+!--> Zone of the boundary face to be treated
 
 kzone = ifrlag(kface)
 
-!-->normale normee sortante de la face KFACE
+!--> Normalized normale getting out from the face KFACE
 
 aa = 1.d0 / surfbn(kface)
 xnn = surfbo(1,kface) * aa
@@ -348,21 +335,19 @@ ynn = surfbo(2,kface) * aa
 znn = surfbo(3,kface) * aa
 
 !===============================================================================
-! 2. Recherche du point d'intersection entre la face de bord et
-!    le rayon. Les coordonnees sont stockees dans XK YK ZK
+! 2. Search of the intersection point between the boundary face and the ray.
+! The coordinates are stored in XK YK ZK
 !===============================================================================
 
-! Petit rappel de geometrie 3D :
-! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-!            1)  equation d'un plan de normal (a,b,c) :
-!                a*x + b*y + c*z + d = 0
-!            2)  equation d'une droite qui passe par P et Q :
+!
+!            1)  Equation of a plan, of which normal vector has coordinates (a,b,c):
+!            2)  Equation of a line that contains points P and Q:
 !                x = XP + (XQ-XP) * AA
 !                y = YP + (YQ-YP) * AA
 !                z = ZP + (ZQ-ZP) * AA
-!                ou AA est un parametre qui varie dans l'ensemble des reels
+!                where AA is a parameter that varies in the real ensemble.
 
-!-->on determine le vecteur PQ
+!-->We determine the vector PQ:
 
 xp = ettpa(ip,jxp)
 yp = ettpa(ip,jyp)
@@ -376,13 +361,13 @@ xpq = xq - xp
 ypq = yq - yp
 zpq = zq - zp
 
-!-->si la particule n'a pas bougee ( si elle est deposee
-!   sur la face de bord), elle n'est pas traitee.
+!-->if the particle has not moved (if it is deposited on the boundary face),
+!   it is not treated anymore
 
 if (xpq.eq.0.d0 .and. ypq.eq.0.d0 .and. zpq.eq.0.d0) return
 
-!-->a partir de l'equation du plan de la face et de l'equation
-!   parametre du rayon, on determine le parametre du point d'intersection
+!--> From the equation of the plan of the face and the parametric equation
+!    of the ray, the intersection point is determined
 
 aa = xpq * surfbo(1,kface)                                        &
    + ypq * surfbo(2,kface)                                        &
@@ -406,16 +391,17 @@ aa =                                                              &
      - surfbo(3,kface) * zp )                                     &
      / aa
 
-!-->on reporte ce parametre dans l'equation de la droite du rayon pour
-!   avoir le point d'intersection (XK YK ZK)
+!--> The aa parameter is injected into the equation of the right of the ray to
+! get the intersection point of coordinates (XK YK ZK)
+
 
 xk = xp + xpq * aa
 yk = yp + ypq * aa
 zk = zp + zpq * aa
 
 !===============================================================================
-! 3. Depart de la particule du domaine de calcul,
-!    ou deposition de la particule sur la frontiere
+! 3. Departure of the particle from the calculation domain
+!    or deposition on a boundary
 !===============================================================================
 
 if ( iusclb(kzone).eq.isortl .or.                                 &
@@ -425,41 +411,41 @@ if ( iusclb(kzone).eq.isortl .or.                                 &
   isuivi = 0
   itepa(ip,jisor) = 0
 
-!      mise a jour du debit
+!      update of the flow
 
   deblag(kzone) = deblag(kzone)-tepa(ip,jrpoi)*ettp(ip,jmp)
 
-!--> La particule sort mais pour la visualisation ensight, on la place
-!    correctement au point d'intersection.
-!    Possibilite que le numero IP soit reutilise pour une autre
-!    particule a entrer.
+!--> The particle gets out, but for the Ensight visualization,
+!    it is placed correctly at the intersection point
+!
+!
 
   ettp(ip,jxp) = xk
   ettp(ip,jyp) = yk
   ettp(ip,jzp) = zk
 
 !===============================================================================
-! 4. Deposition de la particule, celle-ci reste en memoire
+! 4. Deposition of the particle, which remains in memory
 !===============================================================================
 
 else if (iusclb(kzone).eq.idepo2) then
 
-!--> La particule ne sort pas, elle n'est plus traitee,
-!    mais toujours visualisee. Le numero IP n'est pas reutilisable.
+!--> The particle does not get out of the domain, it is not treated any more
+!    but can still be visualized. The IP number is not reusable.
 
-    isuivi = 0
-    itepa(ip,jisor) = -itepa(ip,jisor)
+  isuivi = 0
+  itepa(ip,jisor) = -itepa(ip,jisor)
   ettp(ip,jxp) = xk
   ettp(ip,jyp) = yk
   ettp(ip,jzp) = zk
 
   do n1 = 1,3
-    vitpar(ip,n1) = 0.d0
-    vitflu(ip,n1) = 0.d0
+     vitpar(ip,n1) = 0.d0
+     vitflu(ip,n1) = 0.d0
   enddo
 
 !===============================================================================
-! 5. Deposition de la particule, la remise en suspension est possible
+! 5. Deposition of the particle, the resuspension is possible
 !===============================================================================
 
 else if (iusclb(kzone).eq.idepo3) then
@@ -479,14 +465,14 @@ else if (iusclb(kzone).eq.idepo3) then
   enddo
 
 !===============================================================================
-! 6. Deposition de la particule avec force d'attachement,
-!    vitesse conservee et re-entrainement possible
+! 6. Deposition of the particle with attachment force,
+!    the velocity is conserved, and reentrainment is possible
 !===============================================================================
 
 else if (iusclb(kzone).eq.idepfa) then
 
 
-! Calcul du critere
+! Calculation of the criterion
 
   uxn = ettp(ip,jup)*xnn
   vyn = ettp(ip,jvp)*ynn
@@ -520,8 +506,8 @@ else if (iusclb(kzone).eq.idepfa) then
     ettp(ip,jyp) = ettpa(ip,jyp)
     ettp(ip,jzp) = ettpa(ip,jzp)
 
-!-->changement de la vitesse de la particule au point d'arrive
-!   (comme pour une rebond elastique)
+!-->Modification of the particle velocity at the impaction point
+!   (like an elastic rebound)
 
     aa = abs(( vitpar(ip,1)*xnn                                   &
               +vitpar(ip,2)*ynn                                   &
@@ -531,8 +517,7 @@ else if (iusclb(kzone).eq.idepfa) then
     vitpar(ip,2) = vitpar(ip,2) - aa*ynn
     vitpar(ip,3) = vitpar(ip,3) - aa*znn
 
-!-->Annule  la vitesse du fluide vu au point d'arrive
-!   (comme pour une rebond elastique)
+!--> FIXME: (the flow velocity must not be cancelled)
 
     aa = abs( (vitflu(ip,1)*xnn                                   &
              + vitflu(ip,2)*ynn                                   &
@@ -544,7 +529,7 @@ else if (iusclb(kzone).eq.idepfa) then
   endif
 
 !===============================================================================
-! 7. Rebond elastique de la particule sur la frontiere
+! 7. Elastic rebound of the particle on the boundary
 !===============================================================================
 
 else if (iusclb(kzone).eq.irebol) then
@@ -552,7 +537,7 @@ else if (iusclb(kzone).eq.irebol) then
   isuivi = 1
   itepa(ip,jisor) = ifabor(kface)
 
-!-->changement du point de depart
+!-->Modification of the starting point
 
   ettpa(ip,jxp) = xk
   ettpa(ip,jyp) = yk
@@ -569,10 +554,9 @@ else if (iusclb(kzone).eq.irebol) then
          ettpa  , tepa   , ra)
     endif
 
-!-->changement du point d'arrive
-!   (la valeur absolue est pour eviter les p. scalaires
-!    negatifs impossibles qui interviennent avec des erreurs d'arrondi
-!    machines)
+!-->Modification of the arrival point
+!   (the absolute value is intended to avoid the negative scalar products
+!  that may occur due to computer round-off error
 
     aa = 2.d0 * abs( (xq-xk)*xnn + (yq-yk)*ynn + (zq-zk)*znn )
 
@@ -580,7 +564,7 @@ else if (iusclb(kzone).eq.irebol) then
   ettp(ip,jyp) = yq - aa*ynn
   ettp(ip,jzp) = zq - aa*znn
 
-!-->changement de la vitesse de la particule au point d'arrive
+!--> Modification of the particle velocity at the arrival point
 
 
   aa = abs( (vitpar(ip,1)*xnn                                     &
@@ -591,7 +575,7 @@ else if (iusclb(kzone).eq.irebol) then
   vitpar(ip,2) = vitpar(ip,2) - aa*ynn
   vitpar(ip,3) = vitpar(ip,3) - aa*znn
 
-!-->changement de la vitesse du fluide vu au point d'arrive
+!--> Modification of the velocity of the flow seen at the arrival point
 
   aa = abs( (vitflu(ip,1)*xnn                                     &
           +  vitflu(ip,2)*ynn                                     &
@@ -602,15 +586,15 @@ else if (iusclb(kzone).eq.irebol) then
   vitflu(ip,3) = vitflu(ip,3) - aa*znn
 
 !===============================================================================
-! 8. Encrassement des grains de charbon
+! 8. Fouling of coal particles
 !===============================================================================
 
 else if (iusclb(kzone).eq.iencrl) then
 
-!--> Encrassement de la particules si ses proprietes le permettent
-!    et en fonction d'une probabilite
-!      ICI c'est si Tp     > TPENC
-!                si VISCP  > VISCREF
+!--> Fouling of the particle, if its properties make it possible
+!    and with respect to a probability
+!      ICI if  Tp     > TPENC
+!          if  VISCP  > VISCREF
 
   icha = itepa(ip,jinch)
 
@@ -626,35 +610,36 @@ else if (iusclb(kzone).eq.iencrl) then
         trap = 1.d0-visref(icha) / viscp
       endif
 
-!  Si VISCP <= VISREF ===> 100% de chance d'encrasser
-!  Si VISCP  > VISREF ===> probabilte TRAP = 1-VISREF/VISCP
-!                          d'encrasser
-!                     ===> On encrasse si VNORL est compris
-!                          entre TRAP et 1.
+!  If VISCP <= VISREF ===> Probability of fouling equal to 1
+!  If VISCP  > VISREF ===> Probability equal to TRAP = 1-VISREF/VISCP
+!
+!                     ===> Fouling if VNORL is between
+!                          TRAP et 1.
 
       if ( viscp.le.visref(icha) .or.                             &
          (viscp.gt.visref(icha) .and. vnorl(1).ge.trap) ) then
 
-! La calcul de la masse de grains de charbon encrasses est faite plus bas.
+! The computation of the mass of coal particles fouled is carried out
+! in a following section
 
-        npencr = npencr + 1
-        isuivi = 0
-        itepa(ip,jisor)  =  0
-      ettp(ip,jxp) = xk
-      ettp(ip,jyp) = yk
-      ettp(ip,jzp) = zk
+         npencr = npencr + 1
+         isuivi = 0
+         itepa(ip,jisor)  =  0
+         ettp(ip,jxp) = xk
+         ettp(ip,jyp) = yk
+         ettp(ip,jzp) = zk
 
       endif
     endif
 
-!--> Si pas encrassement alors rebond elastique
+!--> if there is no fouling, then it is an elastic rebound
 
     if ( itepa(ip,jisor).ne.0 ) then
 
       isuivi = 1
       itepa(ip,jisor) = ifabor(kface)
 
-!-->changement du point de depart
+!--> Modification of the departure point
 
     ettpa(ip,jxp) = xk
     ettpa(ip,jyp) = yk
@@ -671,7 +656,7 @@ else if (iusclb(kzone).eq.iencrl) then
          ettpa  , tepa   , ra)
       endif
 
-!-->changement du point d'arrive
+!--> Modification of the arrival point
 
       aa = 2.d0 * abs((xq-xk)*xnn + (yq-yk)*ynn + (zq-zk)*znn)
 
@@ -683,7 +668,7 @@ else if (iusclb(kzone).eq.iencrl) then
 
   if (itepa(ip,jisor).gt.0) then
 
-!-->changement de la vitesse de la particule au point d'arrive
+!--> Modification of the particle velocity at the arrival point
 
 
     aa = abs( (vitpar(ip,1)*xnn                                   &
@@ -694,7 +679,7 @@ else if (iusclb(kzone).eq.iencrl) then
     vitpar(ip,2) = vitpar(ip,2) - aa*ynn
     vitpar(ip,3) = vitpar(ip,3) - aa*znn
 
-!-->changement de la vitesse du fluide vu au point d'arrive
+!--> Modification of the velocity of the flow seen at the arrival point
 
     aa = abs( (vitflu(ip,1)*xnn                                   &
             +  vitflu(ip,2)*ynn                                   &
@@ -707,32 +692,32 @@ else if (iusclb(kzone).eq.iencrl) then
     endif
 
 !===============================================================================
-! 9. Interaction utilisateur numero 1 : JBORD1
+! 9. User-defined interaction number 1 : JBORD1
 !===============================================================================
 
-!  ON PEUT FAIRE DE MEME AVEC JBORD2, JBORD3, JBORD4 et JBORD5
-!    On ne donnne l'exemple que pour JBORD1
+!  The following procedure is also valid for JBORD2, JBORD3, JBORD4 et JBORD5
+!  The example is given only for JBORD1
 
-!     On regarde si on est dans la zone cherchee
+!     We first check if we are in the zone of interest:
 !      ELSE IF (IUSCLB(KZONE).EQ.JBORD1) THEN
 
-!       si on doit continuer a suivre la particule
+!     if we need to keep on following the particle
 !         ISUIVI = 0 OU 1
 
-!       l'element de maillage concerne
+!     the mesh element of interest
 !         ITEPA(IP,JISOR) =
 
-!       on change la localisation de depart de la particule
+!     modification of the arrival point
 !         ETTP(IP,JXP) =
 !         ETTP(IP,JYP) =
 !         ETTP(IP,JZP) =
 
-!       la vitesse de la particule au point d'arrivee
+!     modification of the particle velocity at the arrival point
 !         VITPAR(IP,1) =
 !         VITPAR(IP,2) =
 !         VITPAR(IP,3) =
 
-!       la vitesse du fluide vu au point d'arrivee
+!      modification of the velocity of the flow seen at the arrival point
 !         VITFLU(IP,1) =
 !         VITFLU(IP,2) =
 !         VITFLU(IP,3) =
@@ -740,20 +725,17 @@ else if (iusclb(kzone).eq.iencrl) then
 
 else if (iusclb(kzone).eq.jbord1                                  &
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
-!    en standard, sans intervention de l'utilisateur,
-!      on ne souhaite pas passer ici
-!    mais on desire
-!      que le test IUSCLB(KZONE).EQ.JBORD1 soit dans le us* exemple
-!      que le source ci-dessous soit compile pour verifier
-!         qu'il n y a pas d'erreur
+!    For a standard use, without intervention of the user,
+!    we do not wish to go through this part but we want the
+!    test  IUSCLB(KZONE).EQ.JBORD1 to be in the us* example
+!    and the following source code to be compiled to check for errors
          .and.(0.eq.1)                                            &
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
                                 ) then
 
 !     ----------------------------------------------------
-!     EXEMPLE 1 : LA PARTICULE A UNE CHANCE SUR DEUX (TRAP)
-!                 DE SE DEPOSER DEFINITIVEMENT A LA PAROI
-!                 OU DE REBONDIR VERS L'ECOULEMENT.
+!     Example 1: The particle has 50% probality to definitely deposit
+!                 and 50% to bounce back to the flow
 !     ----------------------------------------------------
 
 
@@ -774,13 +756,13 @@ else if (iusclb(kzone).eq.jbord1                                  &
       isuivi = 1
       itepa(ip,jisor) = ifabor(kface)
 
-!-->changement du point de depart
+!-->Modification of the departure point
 
       ettpa(ip,jxp) = xk
       ettpa(ip,jyp) = yk
       ettpa(ip,jzp) = zk
 
-!-->changement du point d'arrive
+!-->Modification of the arrival point
 
       aa = 2.d0 * abs((xq-xk)*xnn + (yq-yk)*ynn + (zq-zk)*znn)
 
@@ -790,13 +772,12 @@ else if (iusclb(kzone).eq.jbord1                                  &
 
     endif
 
-!-->Inutile de traiter les particule ITEPA(IP,JISOR)=0 car
-!   Elle vont etre eliminees de la listes des particules.
+!-->No need to treat the particles with ITEPA(IP,JISOR)=0 because
+!   they will be removed from the particle list
 
     if (itepa(ip,jisor).gt.0) then
 
-!-->changement de la vitesse de la particule au point d'arrive
-
+!-->Modification of the particle velocity at the arrival point
 
       aa = abs( (vitpar(ip,1)*xnn                                 &
               +  vitpar(ip,2)*ynn                                 &
@@ -806,7 +787,7 @@ else if (iusclb(kzone).eq.jbord1                                  &
       vitpar(ip,2) = vitpar(ip,2) - aa*ynn
       vitpar(ip,3) = vitpar(ip,3) - aa*znn
 
-!-->changement de la vitesse du fluide vu au point d'arrive
+!-->Modification of the velocity of the flow seen at the arrival point
 
       aa = abs( (vitflu(ip,1)*xnn                                 &
               +  vitflu(ip,2)*ynn                                 &
@@ -820,7 +801,7 @@ else if (iusclb(kzone).eq.jbord1                                  &
 
 
 !===============================================================================
-! 10. Verification et sortie si erreur
+! 10. Verification and exit if error
 !===============================================================================
 
 else
@@ -834,36 +815,35 @@ if (iok.ne.0) then
 endif
 
 !===============================================================================
-! 11. Enregistrement de l'interaction particule-frontiere s'il y a lieu
+! 11. Recording of the particle/boundary interaction if needed
 !===============================================================================
 
-!     L'enregistrement des statistiques parietales debute des que
-!     l'indicateur est a IENSI3 = 1. Cependant tant que le numero
-!     de l'iteration Lagrangienne absolue est inferieur a NSTBOR,
-!     ou que l'ecoulement est instationnaire (ISTTIO = 0), alors
-!     le tableau PARBOR est remis a zero avant d'entrer dans ce
-!     sous-programme.
+! The recording of wall statistics start as soon as the parameter IENSI3
+! is set to 1. However, as long as the absolute number of the Lagrangian iteration
+! is inferior to NSTBOR, or if the flow is unsteady  (ISTTIO = 0); the array PARBOR
+! is reset to 0 before entering this surboutine.
 
-!     NPSTF   : nombre d'iterations de calcul de stat aux frontieres
-!               stationnaires
+! NPSTF :  number of iteractions of computation of statistics
+!          at the unsteady boundaries
 
-!     NPSTFT  : nombre d'iterations total des stats iaux frontieres
-!               depuis le du calcul, partie instationnaire comprise
-!               (a utiliser que pour les affichages listing)
+! NPSTFT : total number of statistics at the boundaries since the
+!          beginning of the computation, included the unsteady part
+!         (to be used only for the listing post-processing).
+!
 
-!     TSTATP  : Temps physique d'enregistrement des statistiques
-!               des interactions particules/frontiere stationnaires,
-!               si instatinnaire alors contient DTP le dernier
-!               pas de temps Lagrangien
+! TSTATP : physical duration of the recording of the statistics
+!          of the interactions between the particles and the stationary boundaries,
+!          if unsteady then it is equal DTP the last Lagrangian time step.
+!
 
-!     Avant impression dans le listing, ou sortie pour le
-!     post-processing, on applique aux statistiques sur les frontieres
-!     une moyenne en fonction des infos fournies dans USLAG1 de la
-!     maniere suivante :
+!
+!
+!
+!
 
 
 
-!     CES LIGNES NE SONT DONNEES QU'A TITRE INDICATIF
+!    The following lines are only indications:
 
 
 !     DO IVAR = 1,NVISBR
@@ -895,8 +875,8 @@ endif
 
 if ( iensi3.eq.1 ) then
 
-!--> exemple de types d'interaction sur lesquels on souhaite
-!    enregistrer des informations
+!--> Example of types of interactions about which we want to
+!    record information
 
   if ( iusclb(kzone).eq.irebol .or.                               &
        iusclb(kzone).eq.idepo1 .or.                               &
@@ -940,7 +920,7 @@ if ( iensi3.eq.1 ) then
       enddo
     endif
 
-!--> Cas particulier de la masse de grains de charbon encrasses
+!--> Particular case of the mass of fouled coal
 
   else if ( iusclb(kzone).eq.iencrl .and. isuivi.eq.0 ) then
 
@@ -968,15 +948,15 @@ endif
 
 
 !===============================================================================
-! Archives. Je laisse cette partie au cas ou...
-!           Creation d'un repere local associe a la face frontiere
+! Archives. This part is left here as it may be useful..
+!           Creation of a local referential associated to a boundary face
 !===============================================================================
 
-! Le repere local (T1,T2,N) est construit de facon a ce que N soit
-! la normale normee de la face et que T1 et T2 appartiennent a la face
+! The local referential (T1,T2,N) is built so that N is
+! the normalized normal of the face, and that T1 and T2 belong to the face
 
-!-->1. Je connais les vecteurs N et PK, je definis T1 tel que
-!      T1 = PK vectoriel N
+!-->1. I know N and PK, I define  T1 so that
+!      T1 = PK *  N (cross product)
 
 !     XPK = XK - ETTPA(IP,JXP)
 !     YPK = YK - ETTPA(IP,JYP)
@@ -991,7 +971,7 @@ endif
 !     YT1 = YT1 / AA
 !     ZT1 = ZT1 / AA
 
-!-->2. Maintenant je peux construire T2 = - T1 vectoriel N
+!-->2. Now I can define T2 = - T1 * N
 
 !     XT2 = YT1*ZNN - ZT1*YNN
 !     YT2 = ZT1*XNN - XT1*ZNN
@@ -1003,22 +983,22 @@ endif
 !     ZT2 = -ZT2 / AA
 
 !--------
-! FORMATS
+! Formats
 !--------
 
  9010 format(                                                           &
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''EXECUTION DU MODULE LAGRANGIEN   ',/,&
+'@ @@ ATTENTION : STOP IN THE EXECUTION OF THE LAGRANGIAN MODULE   ',/,&
 '@    =========   (USLABO)                                    ',/,&
 '@                                                            ',/,&
-'@  La normale d''une face de frontiere est perpendiculaire   ',/,&
-'@   a un rayon PQ : impossible                               ',/,&
+'@  the normal of a boundary face is perpendicular to   ',/,&
+'@   a PQ ray : impossible                               ',/,&
 '@                                                            ',/,&
-'@  La particle ',I10,' est ELIMINEE                          ',/,&
+'@  The particle ',I10,' is ELIMINATED                          ',/,&
 '@                                                            ',/,&
-'@  Contacter l''equipe de developpement.                     ',/,&
+'@  Please contact the development team.                     ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
@@ -1027,22 +1007,22 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''EXECUTION DU MODULE LAGRANGIEN   ',/,&
+'@ @@ ATTENTION : STOP IN THE EXECUTION OF THE LAGRANGIAN MODULE  ',/,&
 '@    =========   (USLABO)                                    ',/,&
 '@                                                            ',/,&
-'@  Le type de condition aux limites IUSCLB                   ',/,&
-'@    n''est pas renseigne pour la frontiere NB = ',I10        ,/,&
+'@  The type of boundary condition IUSCLB                   ',/,&
+'@    is not defined for the boundary NB = ',I10        ,/,&
 '@                                                            ',/,&
-'@  Le calcul ne peut etre execute.                           ',/,&
+'@  The calculation cannot be run.                           ',/,&
 '@                                                            ',/,&
-'@  Verifier USLAG2 et USLABO.                                ',/,&
+'@  Please check USLAG2 and USLABO.                                ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
 
 !----
-! FIN
+! End
 !----
 
 return
-end
+end subroutine
diff --git a/users/lagr/usladp.f90 b/users/lagr/usladp.f90
index d1878b1..75fbb7d 100644
--- a/users/lagr/usladp.f90
+++ b/users/lagr/usladp.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,119 +50,119 @@ subroutine usladp &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! Purpose:
 ! ----------
 
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
+!   Subroutine of the Lagrangian particle-tracking module :
 !   -------------------------------------
 
-!    SOUS-PROGRAMME UTILISATEUR (INTERVENTION NON OBLIGATOIRE)
+!    User subroutine (non-mandatory intervention)
 
-!    POUR CHAQUE PARTICULE :
-!      - CALCUL DE LA DISTANCE A LA PAROI
-!      - CALCUL DE LA NORMALE A LA PAROI
+!    For each particle :
+!      - Computation of the wall-normal distance
+!      - Computation of the normal to the wall
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
-! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
-! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! itepa            ! te ! <-- ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! ibord            ! te ! --> ! si nordre=2, contient le numero de la          !
-!   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+!                  !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! maximum number of particles allowed            !
+! nvp              ! i  ! <-- ! number of particle variables                   !
+! nvp1             ! i  ! <-- ! nvp minus position, fluid and part. velocities !
+! nvep             ! i  ! <-- ! number of particle properties (integer)        !
+! nivep            ! i  ! <-- ! number of particle properties (integer)        !
+! ntersl           ! i  ! <-- ! number of source terms of return coupling      !
+! nvlsta           ! i  ! <-- ! nb of Lagrangian statistical variables         !
+! nvisbr           ! i  ! <-- ! number of boundary statistics                  !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! itepa            ! ia ! <-- ! particle information (integers)                !
+! (nbpmax,nivep    !    !     !                                                !
+! ibord            ! ia ! --> ! if nordre=2, contains the number               !
+!   (nbpmax)       !    !     ! of the boundary face of part./wall interaction !
+! idevel(nideve    ! ia ! <-- ! complementary dev. array of integers           !
+! ituser(nituse    ! ia ! <-- ! complementary user array of integers           !
+! ia(*)            ! ia ! <-- ! macro array of integers                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape precedente              !
-! tepa             ! tr ! <-- ! info particulaires (reels)                     !
-! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! statis           ! tr ! <-- ! cumul pour les moyennes des                    !
-!(ncelet,nvlsta    !    !     !    statistiques volumiques                     !
-! taup(nbpmax)     ! tr ! <-- ! temps caracteristique dynamique                !
-! tlag(nbpmax)     ! tr ! <-- ! temps caracteristique fluide                   !
-! piil(nbpmax,3    ! tr ! <-- ! terme dans l'integration des eds up            !
-! tsup(nbpmax,3    ! tr ! <-- ! prediction 1er sous-pas pour                   !
-!                  !    !     !   la vitesse des particules                    !
-! tsuf(nbpmax,3    ! tr ! <-- ! prediction 1er sous-pas pour                   !
-!                  !    !     !   la vitesse du fluide vu                      !
-! bx(nbpmax,3,2    ! tr ! <-- ! caracteristiques de la turbulence              !
-! tsfext(nbpmax    ! tr ! <-- ! infos pour le couplage retour                  !
-! vagaus           ! tr ! <-- ! variables aleatoires gaussiennes               !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! transported variables at the current           !
+! (ncelet,*)       !    !     ! and previous time step                         !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! ettp             ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the current time step         !
+! ettpa            ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the previous time step        !
+! tepa             ! ra ! <-- ! particle information (real) (statis. weight..) !
+! (nbpmax,nvep)    !    !     !                                                !
+! statis           ! ra ! <-- ! cumul for the averages of the volume stats.    !
+!(ncelet,nvlsta    !    !     !                                                !
+! taup(nbpmax)     ! ra ! <-- ! particle relaxation time                       !
+! tlag(nbpmax)     ! ra ! <-- ! relaxation time for the flow                   !
+! piil(nbpmax,3    ! ra ! <-- ! term in the sede integration                   !
+! tsup(nbpmax,3    ! ra ! <-- ! prediction 1st substep                         !
+!                  !    !     ! for the particle velocity                      !
+! tsuf(nbpmax,3    ! ra ! <-- ! prediction 1st substep                         !
+!                  !    !     ! for the velocity of the flow seen              !
+! bx(nbpmax,3,2    ! ra ! <-- ! characteristics of the turbulence              !
+! tsfext(nbpmax    ! ra ! <-- ! infos for the return coupling                  !
+! vagaus           ! ra ! <-- ! Gaussian random variables                      !
 !(nbpmax,nvgaus    !    !     !                                                !
-! gradpr(ncel,3    ! tr ! <-- ! gradient de pression                           !
-! gradvf(ncel,3    ! tr ! <-- ! gradient de la vitesse du fluide               !
-! romp             ! tr ! --- ! masse volumique des particules                 !
-! fextla           ! tr ! --> ! champ de forces exterieur                      !
-!(ncelet,3)        !    !     !    utilisateur (m/s2)                          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! gradpr(ncel,3    ! ra ! <-- ! pressure gradient                              !
+! gradvf(ncel,3    ! ra ! <-- ! flow-velocity gradient                         !
+! romp             ! ra ! --- ! particle densite                               !
+! fextla           ! ra ! --> ! exterior force field                           !
+!(ncelet,3)        !    !     !                                                !
+! rdevel(nrdeve    ! ra ! <-- ! dev. complementary array of reals              !
+! rtuser(nrtuse    ! ra ! <-- ! user complementary array of reals              !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 
 !===============================================================================
 
+
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -215,12 +215,12 @@ double precision romp(nbpmax)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ip
 
-! VARIABLES LOCALES UTILISATEUR
+! User local variables
 
 double precision xnorm
 
@@ -236,28 +236,28 @@ if(1.eq.1) return
 !===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 !===============================================================================
-! 0.  GESTION MEMOIRE
+! 0.  Memory management
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 1. EXEMPLE
+! 1. Example
 !===============================================================================
 
-!   Cet exemple est desactive
+!   This example is unactivated
 
 if (1.eq.0) then
 
   do ip = 1,nbpart
 
-! Comme exemple on prend pour toutes les particules
-!       Distance a la paroi : le rayon
-!       Nomale              : suivant le rayon en supposant
-!                             la conduite suivant Z
-!                 Attention on prend la convention Saturne,
-!                 la normale est oriente du fluide vers l'exterieur
+! Example : for every paricle, we take as
+!      - Wall-normal distance: the radius of the duct
+!      - Normal: with respect to the radius, by supposing
+!                the duct along the Z-axis. Be careful, the
+!                convention of Code_Saturne is respected, with
+!                the normal oriented from the fluid towards the outside of the domain
 
 
     dppar(ip)  = 0.00631942286d0                                  &
@@ -273,7 +273,7 @@ if (1.eq.0) then
   enddo
 
 !==============================================================================
-! CONTROLE : NE PAS MODIFIER
+! Control: do not modify
 !==============================================================================
 
   do ip = 1,nbpart
@@ -287,12 +287,12 @@ if (1.eq.0) then
 endif
 
 !--------
-! FORMATS
+! Formats
 !--------
 
 
 !----
-! FIN
+! End
 !----
 
-end
+end subroutine
diff --git a/users/lagr/uslaed.f90 b/users/lagr/uslaed.f90
index cba1eb2..a1fdf93 100644
--- a/users/lagr/uslaed.f90
+++ b/users/lagr/uslaed.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,136 +46,131 @@ subroutine uslaed &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! Purpose :
 ! ----------
 
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
+!   Subroutine of the Lagrangian particle-tracking module :
 !   -------------------------------------
 
-!     SOUS-PROGRAMME UTILISATEUR (INTERVENTION NON OBLIGATOIRE)
+!     User subroutine (non-mandatory intervention)
 
-!     INTEGRATION DES EDS POUR LES VARIABLES UTILISATEUR
-!       PAR DEFAUT LES VARIABLES SONT CONSTANTES
+!     Integration of the sde for the user-defined variables.
+!     The variables are constant by default.
 
 
 !                                         d T       T - PIP
-!     LES EDS DOIVENT ETRE DE LA FORME : ----- = - ---------
+!     The sde must be of the form:       ----- = - ---------
 !                                         d t         Tca
 
 
-!     T : IIIIeme VARIABLE UTILISATEUR QUI EST REPEREE POUR LA
-!         PARTICULE IP PAR :
+!     T : IIIIeme user-defined variable, given for the ip particle by
 !            T = ETTP(IP,JVLS(IIII))
 !            T = ETTPA(IP,JVLS(IIII))
 
-!     Tca : TEMPS CARACTERISTIQUE DE L'EDS
-!              A DONNER DANS LE TABLEAU    AUXL1
-
-!     PIP : COEFFICIENT DE L'EDS ("PSEUDO SECOND MEMBRE")
-!              A DONNER DANS LE TABLEAU    AUXL2
-
-!              SI LE SCHEMA CHOISI EST D'ORDRE 1 (NORDRE=1)
-!              ALORS AU 1ER ET SEUL PASSAGE PIP S'EXPRIME
-!              EN FONCTION DE DES GRANDEURS DU PAS DE TEMPS
-!              PRECEDENT ETTPA
-
-!              SI LE SCHEMA CHOISI EST D'ORDRE 2 (NORDRE=2)
-!              ALORS AU 1ER PASSAGE (NOR=1) PIP S'EXPRIME
-!              EN FONCTION DE DES GRANDEURS DU PAS DE TEMPS
-!              PRECEDENT ETTPA, ET AU 2E PASSAGE (NOR=2)
-!              PIP S'EXPRIME EN FONCTION DE DES GRANDEURS
-!              DU PAS DE TEMPS COURANT ETTP
-
+!     Tca : Characteristic time for the sde
+!           to be prescribed in the array auxl1
+
+!     PIP : Coefficient of the sde (pseudo right member)
+!           to be prescribed in the array auxl2
+!
+!           If the chosen scheme is first order (nordre=1)
+!           then, at the first and only passage pip is expressed
+!           as a function of the quantities of the previous time step contained in ettpa
+!
+!           If the chosen scheme is second order (nordre=2)
+!           then, at the first passage (nor=1) pip is expressed as
+!           a function of the quantities of the previous time step contained in ettpa,
+!           and at the second passage (nor=2) pip is expressed as
+!           a function of the quantities of the current time step contained in ettp
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
-! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
-! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! itepa            ! te ! <-- ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! ibord            ! te ! <-- ! contient le numero de la                       !
-!   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! maximum number of particles allowed            !
+! nvp              ! i  ! <-- ! number of particle variables                   !
+! nvp1             ! i  ! <-- ! nvp minus position, fluid and part. velocities !
+! nvep             ! i  ! <-- ! number of particle properties (integer)        !
+! nivep            ! i  ! <-- ! number of particle properties (integer)        !
+! ntersl           ! i  ! <-- ! number of source terms of return coupling      !
+! nvlsta           ! i  ! <-- ! nb of Lagrangian statistical variables         !
+! nvisbr           ! i  ! <-- ! number of boundary statistics                  !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! itepa            ! ia ! <-- ! particle information (integers)                !
+! (nbpmax,nivep    !    !     !                                                !
+! ibord            ! ia ! <-- ! number of the boundary face of part./wall      !
+!   (nbpmax)       !    !     ! interaction                                    !
+! idevel(nideve    ! ia ! <-- ! complementary dev. array of integers           !
+! ituser(nituse    ! ia ! <-- ! complementary user array of integers           !
+! ia(*)            ! ia ! --- ! macro array of integers                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp              ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape precedente              !
-! tepa             ! tr ! <-- ! info particulaires (reels)                     !
-! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! taup(nbpmax)     ! tr ! <-- ! temps caracteristique dynamique                !
-! tlag(nbpmax)     ! tr ! <-- ! temps caracteristique fluide                   !
-! tempct           ! tr ! <-- ! temps caracteristique thermique et             !
-!  (nbpmax,2)      !    !     !   ts implicite de couplage retour              !
-! tsvar            ! tr ! <-- ! prediction 1er sous-pas pour la                !
-! (nbpmax,nvp1)    !    !     !   variable ivar, utilise pour la               !
-!                  !    !     !   correction au 2eme sous-pas                  !
-! auxl1(nbpmax)    ! tr ! --- ! tableau de travail                             !
-! auxl2(nbpmax)    ! tr ! --- ! tableau de travail                             !
-! auxl3(nbpmax)    ! tr ! --- ! tableau de travail                             !
-! w1..w3(ncelet    ! tr ! --- ! tableaux de travail                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp              ! ra ! <-- ! transported variables at the current           !
+! (ncelet,*)       !    !     ! and previous time step                         !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! ettp             ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the current time step         !
+! ettpa            ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the previous time step        !
+! tepa             ! ra ! <-- ! particle information (real) (statis. weight..) !
+! (nbpmax,nvep)    !    !     !                                                !
+! taup(nbpmax)     ! ra ! <-- ! particle relaxation time                       !
+! tlag(nbpmax)     ! ra ! <-- ! relaxation time for the flow                   !
+! tempct           ! ra ! <-- ! characteristic thermal time and                !
+!  (nbpmax,2)      !    !     ! implicit source term of return coupling        !
+! tsvar            ! ra ! <-- ! prediction 1st substep for the ivar variable,  !
+! (nbpmax,nvp1)    !    !     ! used for the correction at the 2nd substep     !
+!                  !    !     !                                                !
+! auxl1(nbpmax)    ! ra ! ---   work array                                     !
+! auxl2(nbpmax)    ! ra ! --- ! work array                                     !
+! auxl3(nbpmax)    ! ra ! --- ! work array                                     !
+! w1..w3(ncelet    ! ra ! --- ! work arrays                                    !
+! rdevel(nrdeve    ! ra ! <-- ! dev complementary array of reals               !
+! rtuser(nrtuse    ! ra ! <-- ! user complementary array of reals              !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -218,7 +213,7 @@ double precision w1(ncelet) ,  w2(ncelet) ,  w3(ncelet)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          npt , iel , iiii , ipl , iphas
@@ -228,14 +223,14 @@ integer          npt , iel , iiii , ipl , iphas
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     If a file from the GUI is used, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
 !===============================================================================
 
-! On ne rentre en effet dans ce sous programme que si on a defini des
-!   variables supplementaires dans uslag1 ; il faut donc necessairement
-!   dire comment on les resout (non?).
+! We enter this subroutine only if additional variables have been defined in
+! uslag1; we must then necessarily define how they are solved.
 
 
 if(1.eq.1) then
@@ -247,28 +242,28 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET DANS LE MODULE LAGRANGIEN             ',/,&
+'@ @@ CAUTION: STOP IN THE LAGRANGIAN MODULE                  ',/,&
 '@    =========                                               ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uslaed DOIT ETRE COMPLETE',/,&
+'@     THE USER SUBROUTINE uslaed MUST BE FILLED              ',/,&
 '@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@  The calculation will not be run                           ',/,&
 '@                                                            ',/,&
-'@  Des variables supplementaires ont ete declarees dans      ',/,&
+'@  Additional variables have been declared in                ',/,&
 '@    uslag1 (NVLS=)                                          ',/,&
-'@  Le sous-programme uslaed doit etre complete pour preciser ',/,&
-'@    l''equation differentielle stochastique a resoudre.     ',/,&
+'@  The subroutine uslaed must be filled to precise           ',/, &
+'@    the stochastic differential equation to be solved       ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
 
 
-! FIXME : TODO ecrire un exemple utilisateur
+! FIXME : TODO write a user example
 
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 1.  INITIALISATIONS
+! 1.  Initializations
 !===============================================================================
 
 idebia = idbia0
@@ -277,14 +272,14 @@ idebra = idbra0
 iphas = ilphas
 
 !===============================================================================
-! 2. TEMPS CARACTERISTIQUE DE L'EDS COURANTE
+! 2. Characteristic time of the current sde
 !===============================================================================
 
-! Boucle sur les variables supplementaires
+! Loop on the additional variables
 
 do iiii = 1,nvls
 
-!      Numero dans ETTP de la variable traitee
+!      Number of the treated variable in ettp
 
   ipl = jvls(iiii)
 
@@ -294,20 +289,20 @@ do iiii = 1,nvls
 
       iel = itepa(npt,jisor)
 
-!     Temps caracteristique Tca de l'equation differentielle
-!     Cet exemple doit etre adapte au cas traite
+!     Characteristic time tca of the differential equation
+!     This example must be adapted to the case
 
       auxl1(npt) = 1.d0
 
-!     Prediction au premier sous pas
-!     Cet exemple doit etre adapte au cas traite
+!     Prediction at the first substep
+!     This example must be adapted to the case
 
       if (nor.eq.1) then
         auxl2(npt) = ettpa(npt,ipl)
       else
 
-!     Correction au deuxieme sous pas
-!     Cet exemple doit etre adapte au cas traite
+!     Correction at the second substep
+!     This example must be adapted to the case
 
         auxl2(npt) = ettp(npt,ipl)
       endif
@@ -316,7 +311,7 @@ do iiii = 1,nvls
   enddo
 
 !===============================================================================
-! 3. INTEGRATION DE LA VARIABLE IPL
+! 3. Integration of the variable ipl
 !===============================================================================
 
   call lagitg                                                     &
@@ -331,7 +326,7 @@ enddo
 !===============================================================================
 
 !----
-! FIN
+! End
 !----
 
-end
+end subroutine
diff --git a/users/lagr/uslaen.f90 b/users/lagr/uslaen.f90
index 051fd6b..88afdb6 100644
--- a/users/lagr/uslaen.f90
+++ b/users/lagr/uslaen.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,124 +46,122 @@ subroutine uslaen &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! Purpose:
 ! --------
 
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
-!   -------------------------------------
+!   Subroutine of the Lagrangian particle-tracking module :
+!   -------------------------------------------------------
 
-!    SOUS-PROGRAMME UTILISATEUR (INTERVENTION NON OBLIGATOIRE)
+!    User subroutine (non-mandatory intervention)
 
-!    POUR LES ECRITURES LISTING ET LE POST-PROCESSING :
-!    MOYENNE DES VARIABLES STATISTIQUES VOLUMIQUES LAGRANGIENNES
-!    INTERVENTIONS UTILISATEUR POSSIBLES
+!    For the writing of the listing and the post-processing:
+!    Average of the Lagrangian volume statistical variables
+!    Possible intervention of the user.
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nvlsta           ! e  ! <-- ! nombre de variables stat. lagrangien           !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+!                  !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nvlsta           ! i  ! <-- ! nb of Lagrangian statistical variables         !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel           ! ia ! <-- ! interior faces -> cells connectivity           !
 ! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
+! ifabor           ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
+! ifmfbr           ! ia ! <-- ! boundary face family numbers                   !
 ! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
+! ifmcel           ! ia ! <-- ! cell family numbers                            !
 ! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
 !  (nfml,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac                      !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
+! ipnfac           ! ia ! <-- ! interior faces -> vertices index (optional)    !
+!   (lndfac)       !    !     !                                                !
+! nodfac           ! ia ! <-- ! interior faces -> vertices list (optional)     !
 !   (nfac+1)       !    !     !                                                !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr                      !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
+! ipnfbr           ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+!   (lndfbr)       !    !     !                                                !
+! nodfbr           ! ia ! <-- ! boundary faces -> vertices list  (optional)    !
 !   (nfabor+1)     !    !     !                                                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ivarl            !  e ! <-- ! num de la stat (entre 1 et nvlsta)             !
-! ivarl1           !  e ! <-- ! num de la stat globale+groupe                  !
-!                  !    !     !   (moyenne ou variance)                        !
-! ivarlm           !  e ! <-- ! num de la moyenne stat globale+groupe          !
-! iflu             !  e ! <-- ! 0 : moyenne de la stat ivarl/ivarl1            !
-!                  !    !     ! 1 : variance de la stat ivarl/ivarl1           !
-! ilpd1            !  e ! <-- ! "pointeur" sur le poids stat globale           !
-!                  !    !     !    ou sur le poids stat d'un groupe            !
-! icla             !  e ! <-- !   0 : statistique globale                      !
-                   !    ! <-- ! !=0 : statistique pour le groupe icla          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! idevel(nideve    ! ia ! <-- ! complementary dev. array of integers           !
+! ituser(nituse    ! ia ! <-- ! complementary user array of integers           !
+! ivarl            !  i ! <-- ! number of the stat (between 1 and nvlsta)      !
+! ivarl1           !  i ! <-- ! number of the global stat + group              !
+!                  !    !     ! (average or variance)                          !
+! ivarlm           !  i ! <-- ! number of the stat mean + group                !
+! iflu             !  i ! <-- ! 0: mean of the stat ivarl/ivarl1               !
+!                  !    !     ! 1: variance of the stat ivarl/ivarl1           !
+! ilpd1            !  i ! <-- ! "pointer" to global statistical wqeight        !
+!                  !    !     !                                                !
+! icla             !  i ! <-- ! 0: global statistic                            !
+                   !    ! <-- ! !=0: stat for the icla group                   !
+! ia(*)            ! ia ! --- ! macro array of integers                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
+! volume           ! ra ! <-- ! cell volumes                                   !
 ! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! statis(ncelet    ! tr ! <-- ! cumul des statistiques volumiques              !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! transported variables at cell centers          !
+! (ncelet,*)       !    !     ! at the current and previous time step          !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! coefa, coefb     ! ra ! <-- ! boundary conditions at the boundary faces      !
+!  (nfabor,*)      !    !     !                                                !
+! statis(ncelet    ! ra ! <-- ! cumulation of the volume statistics            !
 !   nvlsta)        !    !     !                                                !
-! stativ           ! tr ! <-- ! cumul pour les variances des                   !
-!(ncelet,          !    !     !    statistiques volumiques                     !
+! stativ           ! ra ! <-- ! cumulation for the variances of the            !
+!(ncelet,          !    !     ! volume statistics                              !
 !   nvlsta-1)      !    !     !                                                !
-! tracel(ncelet    ! tr ! <-- ! tab reel valeurs cellules post                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! rtuser(nrtuse    ! tr ! <-- ! tableau des statistques sur les                !
-!                  !    !     ! particules                                     !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! tracel(ncelet    ! ra ! <-- ! real array, values cells post                  !
+! rdevel(nrdeve    ! ra ! <-- ! dev. complementary array of reals              !
+! rtuser(nrtuse    ! ra ! <-- ! user complementary array of reals              !
+!                  !    !     !                                                !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
 !__________________!____!_____!________________________________________________!
 
-!__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!===============================================================================
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
+!==============================================================================
+
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -212,49 +210,49 @@ double precision stativ(ncelet,nvlsta-1)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra , iel
 double precision aa
 
 !===============================================================================
 !===============================================================================
-! 0.  PAR DEFAUT, ON CONSIDERE QUE LE SOUS PROGRAMME CI-DESSOUS CONVIENT
-!       A L'UTILISATEUR, C'EST-A-DIRE QUE LA MISE EN OEUVRE DU LAGRANGIEN
-!       DECLENCHE LA PRODUCTION DE STATISTIQUES STANDARD.
-
-!     L'UTILISATEUR N'A PAS A MODIFIER LE PRESENT SOUS-PROGRAMME DANS
-!       LES CONDITIONS D'UTILISATION STANDARD.
-!     DANS LE CAS OU IL SOUHAITE SORTIR DES STATISTIQUES NON PREVUES,
-!       IL DOIT INTERVENIR DANS LA RUBRIQUE NUMERO 2.
+! 0. By default, we consider that the subroutine below fits the user's needs;
+!    which means running the Lagrangian module triggers the production of
+!    standard statistics.
+!
+!    The user does not need to modify this subroutine in standard-use conditions.
+!    In the case where he wishes to produce non-standard statistics, he must
+!    intervene in section number 2.
+!
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 1 . ZONE DE STATISTIQUES STANDARD
+! 1 . Zone of standard statistics
 !===============================================================================
 
-!--> Cas general :
-!      Vitesse X des particules : IVARL=ILVX
-!      Vitesse Y des particules : IVARL=ILVY
-!      Vitesse Z des particules : IVARL=ILVZ
-!      Temperature des particules : IVARL=ILTP
-!      Diametre des particules : IVARL=ILDP
-!      Masse des particules : IVARL=ILMP
-!      Temperature des grains de charbon : IVARL=ILHP
-!      Masse de Charbon reactif des grains de charbon : IVARL=ILMCH
-!      Masse de Coke des grains de charbon : IVARL=ILMCK
-!      Diametre du coeur retrecissant des grains de charbon: IVARL=ILMCK
-!    sauf fraction volumique (IVARL = ILFV) et
-!    somme des poids statistiques (IVARL = ILPD)
+!--> General case:
+!     Component X of the particle velocity: ivarl=ilvx
+!     Component Y of the particle velocity: ivarl=ilvy
+!     Component Z of the particle velocity: ivarl=ilvz
+!     Particle temperature: ivarl=iltp
+!     Particle diameter: ivarl=ildp
+!     Particle mass: ivarl= ilmp
+!     Temperature of the coal particles: ivarl=ilhp
+!     Mass of reactive coal of the coal particles: ivarl= ilmch
+!     Mass of coke of the coal particles: ivarl=ilmck
+!     Diameter of the shrinking core of the coal particles: ivarl=ilmck
+!    except volume fraction (ivarl=ilfv) and sum of the statistical weights (ivarl=ilpd)
+!
 
 
 if (ivarl.ne.ilfv .and. ivarl.ne.ilpd) then
 
 
-!-----> Moyenne
+!-----> Average
 
 
   if (iflu.eq.0) then
@@ -284,11 +282,11 @@ if (ivarl.ne.ilfv .and. ivarl.ne.ilpd) then
 
   endif
 
-!--> Fraction volumique (ILFV)
+!--> Volume fraction (ilfv)
 
 else if (ivarl.eq.ilfv) then
 
-!-----> Moyenne
+!-----> Average
 
   if (iflu.eq.0) then
 
@@ -333,7 +331,7 @@ else if (ivarl.eq.ilfv) then
     enddo
   endif
 
-!--> Somme des poids statistiques
+!--> Sum of the statistical weights
 
 else if (ivarl.eq.ilpd) then
 
@@ -354,35 +352,35 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ERREUR DANS LE MODULE LAGRANGIEN (USLAEN)   ',/,&
+'@ @@ CAUTION: ERROR IN THE LAGRANGIAN MODULE (uslaen)        ',/,&
 '@    =========                                               ',/,&
-'@  IL N''EST PAS POSSIBLE DE CALCULER LA VARIANCE DU POIDS   ',/,&
-'@     STATISTIQUE                                            ',/,&
+'@  IT IS NOT POSSIBLE TO COMPUTE THE VARIANCE OF THE         ',/,&
+'@     STATISTICAL WEIGHTS                                    ',/,&
 '@                                                            ',/,&
-'@  La variance du poids statistique a ete demande            ',/,&
-'@    dans USLAEN (IVARL=',   I10,' et IFLU=',  I10,').       ',/,&
+'@  The variance of the statistical weight has been asked     ',/,&
+'@    in uslaen (ivarl=',   I10,' et iflu=',  I10,').         ',/,&
 '@                                                            ',/,&
-'@  L''appel au sous-programme USLAEN doit etre verifie.      ',/,&
+'@  The calling of the subroutine uslaen must be checked      ',/, &
 '@                                                            ',/,&
-'@  Le calcul continue.                                       ',/,&
+'@  The calculation continues.                                ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
 
 !===============================================================================
-! 2. ZONE D'INTERVENTION UTILISATEUR
+! 2. Zone of user intervention
 !===============================================================================
 
 !    --------------------------------------------------
-!    EXEMPLE 1 : STATISTIQUE CALCULEE DANS USLAST.F ET
-!                STOCKEE DANS LE TABLEAU STATIS
+!    Example 1: Statistic calculated in uslast.f90 and
+!               stored in the array statis
 !    --------------------------------------------------
 
   if (nvlsts.gt.0) then
 
     if (ivarl.eq.ilvu(1)) then
 
-!-----> Moyenne pour la concentration massique
+!-----> Average for the mass concentration
 
       if (iflu.eq.0) then
 
@@ -401,7 +399,7 @@ endif
 
       else
 
-!-----> Variance de la concentration massique
+!-----> Variance of the mass concentration
 
         do iel = 1, ncel
           if (statis(iel,ilpd1).gt.seuil) then
@@ -422,6 +420,6 @@ endif
   endif
 
 !===============================================================================
-
-
-end
+! End
+!===============================================================================
+end subroutine
diff --git a/users/lagr/uslafe.f90 b/users/lagr/uslafe.f90
index 09b7faf..ae3d863 100644
--- a/users/lagr/uslafe.f90
+++ b/users/lagr/uslafe.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -49,127 +49,124 @@ subroutine uslafe &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! Purpose:
 ! ----------
 
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
+!   Subroutine of the Lagrangian particle-tracking module:
 !   -------------------------------------
 
-!    SOUS-PROGRAMME UTILISATEUR (INTERVENTION NON OBLIGATOIRE)
+!    User subroutine (non-mandatory intervention)
 
-!    PRISE EN COMPTE SUR LES PARTICULES D'UN CHAMP DE FORCES
-!      EXTERIEUR
-!    IL DOIT ETRE DONNE EN CHAQUE CELLULE ET ETRE HOMOGENE
-!      A LA GRAVITE (M/S2)
-
-!    PAR DEFAUT LES PARTICULES SONT SOUMISES UNIQUEMENT A LA FORCE
-!      DE TRAINEE ET A LA GRAVITE (DE VALEUR GX GY GZ DONNEES DANS
-!      USINI1)
+!    Management of an external force field acting on the particles
+!    It must be prescribed in every cell and be homogeneous to gravity (m/s^2)
+!
+!    By default gravity and drag force are the only forces acting on the particles
+!    (the gravity components gx gy gz are assigned in usini1)
+!
+!
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
-! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
-! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! itepa            ! te ! <-- ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! ibord            ! te ! --> ! si nordre=2, contient le numero de la          !
-!   (nbpmax)       !    !     !   face d'interaction part/frontiere            !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+!                  !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! maximum number of particles allowed            !
+! nvp              ! i  ! <-- ! number of particle variables                   !
+! nvp1             ! i  ! <-- ! nvp minus position, fluid and part. velocities !
+! nvep             ! i  ! <-- ! number of particle properties (integer)        !
+! nivep            ! i  ! <-- ! number of particle properties (integer)        !
+! ntersl           ! i  ! <-- ! number of source terms of return coupling      !
+! nvlsta           ! i  ! <-- ! nb of Lagrangian statistical variables         !
+! nvisbr           ! i  ! <-- ! number of boundary statistics                  !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! itepa            ! ia ! <-- ! particle information (integers)                !
+! (nbpmax,nivep    !    !     !                                                !
+! ibord            ! ia ! --> ! if nordre=2, contains the number of the        !
+!   (nbpmax)       !    !     ! boundary face of particle/wall interaction     !
+! idevel(nideve    ! ia ! <-- ! complementary dev. array of integers           !
+! ituser(nituse    ! ia ! <-- ! complementary user array of integers           !
+! ia(*)            ! ia ! --- ! macro array of integers                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape precedente              !
-! tepa             ! tr ! <-- ! info particulaires (reels)                     !
-! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! statis           ! tr ! <-- ! cumul pour les moyennes des                    !
-!(ncelet,nvlsta    !    !     !    statistiques volumiques                     !
-! stativ           ! tr ! <-- ! cumul pour les variances des                   !
-!(ncelet,          !    !     !    statistiques volumiques                     !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! transported variables at cell centers for      !
+! (ncelet,*)       !    !     ! the current and the previous time step         !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! ettp             ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     !                                                !
+! ettpa            ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     !                                                !
+! tepa             ! ra ! <-- ! particle information (real) (statis. weight..) !
+! (nbpmax,nvep)    !    !     !                                                !
+! statis           ! ra ! <-- ! cumul for the averages of the volume stats.    !
+!(ncelet,nvlsta    !    !     !                                                !
+! stativ           ! ra ! <-- ! cumulation for the variance of the volume      !
+!(ncelet,          !    !     ! statistics                                     !
 !   nvlsta-1)      !    !     !                                                !
-! taup(nbpmax)     ! tr ! <-- ! temps caracteristique dynamique                !
-! tlag(nbpmax)     ! tr ! <-- ! temps caracteristique fluide                   !
-! piil(nbpmax,3    ! tr ! <-- ! terme dans l'integration des eds up            !
-! tsup(nbpmax,3    ! tr ! <-- ! prediction 1er sous-pas pour                   !
-!                  !    !     !   la vitesse des particules                    !
-! tsuf(nbpmax,3    ! tr ! <-- ! prediction 1er sous-pas pour                   !
-!                  !    !     !   la vitesse du fluide vu                      !
-! bx(nbpmax,3,2    ! tr ! <-- ! caracteristiques de la turbulence              !
-! tsfext(nbpmax    ! tr ! <-- ! infos pour le couplage retour                  !
-! vagaus           ! tr ! <-- ! variables aleatoires gaussiennes               !
+! taup(nbpmax)     ! ra ! <-- ! particle relaxation time                       !
+! tlag(nbpmax)     ! ra ! <-- ! relaxation time for the flow                   !
+! piil(nbpmax,3    ! ra ! <-- ! term in the integration of the sde             !
+! tsup(nbpmax,3    ! ra ! <-- ! prediction 1st substep for                     !
+!                  !    !     ! the velocity of the particles                  !
+! tsuf(nbpmax,3    ! ra ! <-- ! prediction 1st substep for                     !
+!                  !    !     ! the velocity of the flow seen                  !
+! bx(nbpmax,3,2    ! ra ! <-- ! characteristics of the turbulence              !
+! tsfext(nbpmax    ! ra ! <-- ! infos for the return coupling                  !
+! vagaus           ! ra ! <-- ! Gaussian random variables                      !
 !(nbpmax,nvgaus    !    !     !                                                !
-! gradpr(ncel,3    ! tr ! <-- ! gradient de pression                           !
-! gradvf(ncel,3    ! tr ! <-- ! gradient de la vitesse du fluide               !
-! romp             ! tr ! --- ! masse volumique des particules                 !
-! fextla           ! tr ! --> ! champ de forces exterieur                      !
-!(ncelet,3)        !    !     !    utilisateur (m/s2)                          !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! gradpr(ncel,3    ! ra ! <-- ! pressure gradient                              !
+! gradvf(ncel,3    ! ra ! <-- ! gradient of the flow velocity                  !
+! romp             ! ra ! --- ! particle density                               !
+! fextla           ! ra ! --> ! user external force field (m/s²)               !
+!(ncelet,3)        !    !     !                                                !
+! rdevel(nrdeve    ! ra ! <-- ! dev. complementary array of reals              !
+! rtuser(nrtuse    ! ra ! <-- ! user complementary array of reals              !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -222,7 +219,7 @@ double precision fextla(nbpmax,3)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ip
@@ -236,20 +233,26 @@ integer          ip
 if(1.eq.1) return
 
 !===============================================================================
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     If a file from the GUI is used, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
+!===============================================================================
+!===============================================================================
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 0.  GESTION MEMOIRE
+! 0. Memory management
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 1. EXEMPLE
+! 1. Example
 !===============================================================================
 
-!   Cet exemple est desactive
+!   This example is unactivated
 
 if (1.eq.0) then
 
@@ -268,12 +271,12 @@ endif
 !==============================================================================
 
 !--------
-! FORMATS
+! Formats
 !--------
 
 
 !----
-! FIN
+! End
 !----
 
-end
+end subroutine
diff --git a/users/lagr/uslag1.f90 b/users/lagr/uslag1.f90
index fbd3d21..79e0193 100644
--- a/users/lagr/uslag1.f90
+++ b/users/lagr/uslag1.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -31,38 +31,31 @@
 subroutine uslag1
 !================
 
-
-
 !===============================================================================
-!  FONCTION  :
-!  ---------
+! Purpose:
+! -------
 
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
-!   -------------------------------------
+!    User subroutine of the Lagrangian particle-tracking module:
 
-!       SOUS-PROGRAMME UTILISATEUR (INTERVENTION OBLIGATOIRE)
-
-!       ROUTINE UTILISATEUR D'INITIALISATION DE CERTAINS PARAMETRES
-!       DU MODULE LAGRANGIEN. ILS CONCERNENT LES MODELES PHYSIQUES,
-!       NUMERIQUES, ET LES OPTIONS DE POSTPROCESSING.
+!    User subroutine for input of calculation parameters (Fortran commons).
+!    This parameters concern physical, numerical and post-processing options.
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -74,7 +67,7 @@ include "ihmpre.h"
 
 !===============================================================================
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          ii , ipv , icha
 double precision sio2 , al2o3 , fe2o3 , cao
@@ -83,9 +76,10 @@ double precision sio2 , al2o3 , fe2o3 , cao
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     If a file from the GUI is used, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
 !===============================================================================
 
 if (iihmpr.eq.1) then
@@ -98,178 +92,132 @@ endif
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 1. ENCLENCHEMENT ET TYPE D'UTILISATION MODULE LAGRANGIEN
+! 1. Particle-tracking mode
 !===============================================================================
 
-!     IILAGR = 0 : PAS DE CALCUL LAGRANGIEN (PAR DEFAUT)
+!     IILAGR = 0 : no particle tracking (default)
 
-!            = 1 : DIPHASIQUE LAGRANGIEN SANS COUPLAGE RETOUR
+!            = 1 : particle-tracking one-way coupling
 
-!            = 2 : DIPHASIQUE LAGRANGIEN AVEC COUPLAGE RETOUR
-!                  ATTENTION, LE COUPLAGE RETOUR N'EST PRIS EN
-!                  COMPTE QUE POUR LA PHASE CONTINUE NUMERO 1
-!                  (on peut choisir de coupler la dynamique,
-!                   la thermique et la masse independamment)
+!            = 2 : particle-tracking two-way coupling
 
-!            = 3 : DIPHASIQUE LAGRANGIEN SUR CHAMPS FIGES
-!                  (cette option necessite une suite de calcul de la
-!                   phase continue ISUITE = 1 ; les champs figes sont
-!                   la totalite des champs euleriens, cette option
-!                   n'est donc pas redondante avec celle du mot-cle
-!                   ICCVFG qui permet un calul sur champs de
-!                   vitesse et turbulents figes ; lorsque IILAGR = 3,
-!                   on impose automatiquement ICCVFG = 1)
+!            = 3 : particle tracking on frozen field
+!                  (this option requires a calculation restart ISUITE=1,
+!                   all Eulerian fields are frozen (pressure, velocities,
+!                   scalars). This option is stronger than ICCVFG)
 
 iilagr = 1
 
 !===============================================================================
-! 2. SUITES LAGRANGIENNES
+! 2. Particle-tracking calculation restart
 !===============================================================================
 
-!     ISUILA = 0 : PAS DE SUITE LAGRANGIENNE (PAR DEFAUT)
-!            = 1 : SUITE LAGRANGIENNE
-!                  (cette option necessite une suite de calcul de la
-!                   phase continue ISUITE = 1)
+!     ISUILA = 0 : no restart (default)
+!            = 1 : restart (this value requires a restart on the continuous
+!                  phase too, i.e. ISUITE = 1)
 
 isuila = 0
 
-!     SUITE DE CALCUL SUR DES STATISTIQUES VOLUMIQUES ET AUX FRONTIERES,
-!     AINSI QUE LES TERMES SOURCES DE COUPLAGE RETOUR
-!     (UTILE SI ISUILA = 1)
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Restart on volume and boundary statistics, and two-way coupling terms
+!     (useful if ISUILA = 1)
+!     (defaul off: 0 ; on: 1)
 
 if (isuila.eq.1) isuist = 0
 
 !===============================================================================
-! 3. MODELES PHYSIQUES LIES AUX PARTICULES
+! 3. Particle tracking: specific models
 !===============================================================================
 
-!     IPHYLA = 0 : PUREMENT DYNAMIQUE (PAR DEFAUT)
-!            = 1 : EQUATIONS SUR Temperature (en degres Celsius),
-!                  Diametre et Masse
-!            = 2 : CHARBON (Les particules  sont des grains de
-!                  charbon pulverise. Cette option n'est disponible que
-!                  si la phase porteuse represente une flamme de charbon
-!                  pulverise.)
+!     IPHYLA = 0 : only transport modeling (default)
+!            = 1 : equation on temperature (in Celsius degrees), diameter or mass
+!            = 2 : pulverized coal combustion (only available if the continuous
+!                   phase is a flame of pulverized coal)
 
 iphyla = 0
 
 
-! 3.1 OPTION POUR EQUATION SUR TP, DP et MP (UNIQUEMENT SI IPHYLA = 1)
-
+! 3.1  equation on temperature, diameter or mass
 
 if (iphyla.eq.1) then
 
-!      EQUATION SUR LE DIAMETRE
-!      (DEFAUT NON : 0 ; OUI : 1)
+!      equation on diameter
+!      (default off: 0 ; on: 1)
 
   idpvar = 0
 
-!      EQUATION SUR LA TEMPERATURE
-!      (DEFAUT NON : 0 ; OUI : 1)
-!      Cette option impose l'existance d'une variable thermique
-!      sur la phase continue (physique paticuliere ou non).
-!      La variable resolue est la temperature en degres Celsius.
+!      equation on temperature (in Celsius degrees)
+!      (default off: 0 ; on: 1)
+!      This option requires a thermal scalar for the continuous phase.
 
   itpvar = 0
 
-!      EQUATION SUR LA MASSE
-!      (DEFAUT NON : 0 ; OUI : 1)
+!      equation on mass
+!      (default off: 0 ; on: 1)
 
   impvar = 0
 
 endif
 
-!     * Dans le cas ou une equation sur la temperature des particules
-!       est enclenchee entre deux suites de calcul (IPHYLA= 1 et ITPVAR= 1)
-!       il faut fournir une temperature (en degres Celsius) et une
-!       chaleur massique (J/kg/K) d'initialisation des particules
-!       deja presentes dans le domaine de calcul.
-
-if (isuila.eq.1 .and. iphyla.eq.1 .and. itpvar.eq.1) then
-  tpart = 700.d0
-  cppart = 5200.d0
-endif
-
-! 3.2 OPTIONS POUR l'ENCRASSEMENT (CHARBON UNIQUEMENT i.e. IPHYLA = 2)
+! 3.2 coal fouling
 
+!     Reference internal reports EDF/R&D: HI-81/00/030/A and HI-81/01/033/A
 
-!     RAPPORTS EDF/R&D DE REFERENCE : HI-81/00/030/A
-!                                     HI-81/01/033/A
-
-!     D'une maniere generale, un calcul d'encrassement est effectue
-!     en deux etapes : 1) on realise un calcul "classique" de chaudiere
-!     a charbon pulverise par une approche homogene ; 2) on fait un
-!     calcul Lagrangien de grains de charbon sur les champs
-!     figes du calcul precedent. L'option d'encrassement est donc
-!     utilise en "post-processing" sur un calcul charbon pulverise
-!     homogene.
-
-
-!     On utilise la probabilite qu'une particule a la temperature Tp
-!     colle sur sa surface d'impact. Cette probabilite est le rapport
-!     d'une viscosite critique sur la viscosite des cendres.
+!     Evaluation of the probability for a particle to stick to a wall.
+!     This probability is the ratio of a critical viscosity on the
+!     viscosity of coal ashes
 
 !              VISREF
-!     P(Tp) = --------   pour VISCEN >= VISREF
+!     P(Tp) = --------   for VISCEN >= VISREF
 !              VISCEN
 
-!           = 1 sinon
+!           = 1 otherwise
 
-!     Pour evaluer la viscosite des cendres VISCEN, on utilise
-!     l'expression de J.D. Watt et T.Fereday (J.Inst.Fuel-Vol42-p99)
+!     The expression of J.D. Watt and T.Fereday (J.Inst.Fuel-Vol42-p99)
+!     is used to evaluate the viscosity of the ashes
 
 !                         ENC1 * 1.0D+7
 !     Log  (10*VISCEN) = --------------- + ENC2
 !        10                            2
-!                        (Tp(�C) - 150)
-
-!     La viscosite critique VISREF est donn�e par la litterature et
-!     peut varier entre 8 Pa.set 1.D7 Pa.s           !
-!     En general on prend 1.0D+4 Pa.s...
-
+!                        (Tp(�C) - 150)
 
+!     In literature, the range of the critical viscosity VISREF is between
+!     8 Pa.s and 1.D7 Pa.s  For general purpose 1.0D+4 Pa.s is chosen
 
 if (iphyla.eq.2) then
 
-!       IENCRA = 0 pas d'encrassement (PAR DEFAUT)
-!              = 1 encrassement
+!       IENCRA = 0 no fouling (default)
+!              = 1 fouling
 
-!       * Il faut preciser les frontieres du domaine sur lesquelles
-!         les grains de charbon peuvent s'encrasser (voir USLAG2).
-!       * Le traitement de l'encrassement se deroule dans USLABO.
-!       * Pour visualiser la cartographie de la masse de particules
-!         encrassees, il faut que IENSI3 = 1 et que IENCBD = 1
-!         (voir la rubrique 10.2 du present sous-programme).
+!       * In uslag2.f90, the boundary on which the fouling can occur must be given
+!       * The fouling is treated in uslabo.f90
+!       * Post-processing:  IENSI3 = 1 and IENCBD = 1 (10.2)
 
   iencra = 0
 
-!     DEFINITION DES CRITERES D'ENCRASSEMENT POUR LES DIFFERENTS CHARBONS
-!     ATTENTION A BIEN LES DEFINIR POUR CHACUN DES NCHARB CHARBONS INJECTES
-!                                       ======
+!     Example of definition of fouling criteria for each coal
 
-!     Premier charbon ICHA = 1
+! first (and single) coal ICHA = 1
 
   icha = 1
 
-!       TPRENC : TEMPERATURE SEUIL EN DESSOUS DE LAQUELLE LES GRAINS
-!                DE CHARBON NE S'ENCRASSENT PAS (en degres Celsius)
+!       TPRENC : threshold temperature below which no fouling occurs
+!                (in Celsius degrees)
 
   tprenc(icha) = 600.d0
 
-!       VISREF : VISCOSITE CRITIQUE (en Pa.s)
+!       VISREF : critical viscosity (Pa.s)
 
   visref(icha) = 10000.d0
 
-!    > Exemple de composition de charbon en matieres minerales :
-!       (avec SiO2 + Al2O3 + Fe2O3 + CaO + MgO = 100% en masse)
+!    > coal composition in mineral matters:
+!       (with  SiO2 + Al2O3 + Fe2O3 + CaO + MgO = 100% in mass)
 
   sio2   =  36.0d0
   al2o3  =  20.8d0
   fe2o3  =   4.9d0
   cao    =  13.3d0
 
-!       ENC1 et ENC2 : COEFFICIENTS DE L'EXPRESSION DE Watt et Fereday
+!       ENC1 and ENC2 : coefficients in Watt and Fereday expression
 
   enc1(icha) = 0.00835d0 * sio2 + 0.00601d0 * al2o3 - 0.109d0
 
@@ -279,185 +227,157 @@ if (iphyla.eq.2) then
 endif
 
 !===============================================================================
-! 4. NOMBRE DE PARTICULES DU DOMAINE
+! 4. Number of particles allowed simultaneously inside the computational domain
 !===============================================================================
 
-!     NOMBRE DE PARTICULES MAXIMAL AUTORISE DANS LE DOMAINE
-!     (PAR DEFAUT : NBPMAX = 1000)
-!     * Attention, la m�moire est r�serv�e en cons�quence, et le nombre
-!       max de particules traitees au cours d'une iteration Lagrangienne
-!       est limite a NBPMAX.
-!     * L'ordre de grandeur de NBPMAX doit etre evalue au mieux lors
-!       d'injection a frequence non nulle en tenant compte :
-!       - de la quantite de particules injectees (nombre par classe ou
-!         en fonction du debit massique)
-!       - de nombre de particules clonees ou detruites par la
-!         technique de reduction de variance (IROULE = 1 ou IROULE =2)
+!     default: NBPMAX = 1000
+!     * Warning, memory is allocated with NBPMAX
 
 nbpmax = 1000
 
 !===============================================================================
-! 5. OPTIONS SUR LE TRAITEMENT DE LA PHASE DISPERSEE
+! 5. Calculation features for the dispersed phases
 !===============================================================================
 
 
-! 5.1 VARIABLES SUPPLEMENTAIRES LIEES AUX PARTICULES
-! --------------------------------------------------
-
-!     * ces variables supplementaires sont stokees dans les tableaux
-!       ETTP et ETTPA,
-!     * on renseigne ici le nombre NVLS de variables supplementaires,
-!     * la limite superieure de ce nombre est NUSVAR = 10
-!       (fixee dans lagpar.h),
-!     * on accede aux variables supplementaires dans ETTP et ETTPA
-!       en utilisant le pointeur JVLS de la maniere suivante :
+! 5.1 Additional variables
+! ------------------------
 
-!               etape courante -> ETTP(NBPT,JVLS(NVUS))
-!               etape precedente -> ETTPA(NBPT,JVLS(NVUS))
+!     * these additional variables are stored in ETTP and ETTPA arrays
+!     * NVLS is the number of additional variables
+!     * the upper limit is NUSVAR = 10 (fixed in block common lagpar.h)
+!     * one access to additional variables in ETTP ETTPA using the pointer JVLS:
 
-!           NBPT est le numero de la particule traitee
-!             (entier compris entre 1 et NBPART),
-!           NVUS est le numero de la variable supplementaire
-!             (entier compris entre 1 et NVLS),
-!     * l'integration des Equations Differentielles Stochastiques
-!       associees a ces nouvelles variables necessite une intervention
-!       dans le sous-programme utilisateur USLAED.
+!               current step  -> ETTP(NBPT,JVLS(NVUS))
+!               previous step -> ETTPA(NBPT,JVLS(NVUS))
 
+!           NBPT is the number of the considered particle
+!             (integer between 1 and NBPART),
+!           NVUS is the number of the additional variable
+!             (integer between 1 and NVLS),
+!     * the integration of the associated differential stochastic equation
+!       requires a user intervention in uslaed.f90 subroutine
 
 nvls = 0
 
 
-! 5.2 CARACTERE STATIONNAIRE DE L'ECOULEMENT DE LA PHASE CONTINUE
+! 5.2 Stationary or unsteady continuous phase
 
+!     * if stationary: ISTTIO = 1
+!     * if unsteady: ISTTIO = 0
+!     * if IILAGR = 3 then ISTTIO = 1
 
-!     * si calcul stationnaire   : ISTTIO = 1
-!     * si calcul instationnaire : ISTTIO = 0
-!     * Lorsque les champs de la phase porteuse sont figes (IILAGR = 3)
-!       l'indicateur est force en stationnaire (ISTTIO = 1), sinon
-!       l'utilisateur doit le renseigner en prenant en compte la nature
-!       de l'ecoulement de la phase continue.
-
-!     REMARQUE : si ISTTIO = 0, les moyennes statistiques calculees
-!                sont REMISE A ZERO a chaque iteration Lagrangienne.
+!     Remark: if ISTTIO = 0, then the statistical averages are RESET
+!             at each lagrangian iteration
 
 if (iilagr.ne.3) isttio = 0
 
-
-! 5.3 COUPLAGE RETOUR : INFLUENCE DE LA PHASE DISPERSEE SUR LA PHASE
-!     CONTINUE (UTILE UNIQUEMENT SI IILAGR = 2)
-!     ATTENTION : LE COUPLAGE RETOUR N'EST PRIS EN COMPTE QUE POUR
-!                 LA PHASE CONTINUE NUMERO 1
-
+! 5.3 Two-way coupling: (IILAGR = 2)
 
 if (iilagr.eq.2) then
 
-!     * Nombre d'iterations Lagrangiennes absolues (i.e. suites comprises)
-!       a partir duquel une moyenne en temps des termes sources de
-!       couplage retour est calculee.
-!     * Utile si CALCUL STATIONNAIRE, i.e. si ISTTIO = 1.
-!     * Si le nombre d'iterations Lagrangiennes absolues est strictement
-!       inferieur a NSTITS, les termes sources transmis sont
-!       instationnaires (i.e. ils sont REMIS A ZERO a chaque iteration
-!       Lagrangienne).
-!     * La valeur minimale admissible pour NSTITS est 1.
+!     * number of absolute lagrangian iteration (i.e. with restart)
+!       from which a time average for two-way coupling source terms is
+!       computed (stationary source terms)
+!     * if the Lagrangian iteration is lower than NSTITS, source terms are
+!       unstationary: they are reset at each lagrangian iteration
+!     * useful only if ISTTIO = 1.
+!     * the min value for NSTITS is 1
 
   nstits = 1
 
-!     COUPLAGE RETOUR SUR LA DYNAMIQUE (Vitesse + Turbulence)
-!     (DEFAUT NON : 0 ; OUI : 1)
-!     (UTILE UNIQUEMENT SI ICCVFG = 0)
+!     two-way coupling for dynamic (velocities and turbulent scalars)
+!     (default off: 0 ; on: 1)
+!     (useful if ICCVFG = 0)
 
   ltsdyn = 0
 
-!     COUPLAGE RETOUR SUR LA MASSE (SI IPHYLA = 1 ET IMPVAR = 1)
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     two-way coupling for mass (if IPHYLA = 1 and IMPVAR = 1)
+!     (default off: 0 ; on: 1)
 
   if(iphyla.eq.1 .and. (impvar.eq.1 .or. idpvar.eq.1)) ltsmas = 0
 
-!     COUPLAGE RETOUR SUR LA THERMIQUE (SI IPHYLA = 1 ET ITPVAR = 1) OU
-!     LES VARIABLES CHARBON (SI IPHYLA = 2)
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     two-way coupling for thermal scalar (if IPHYLA = 1 and IMPVAR = 1, or IPHYLA = 2)
+!     or for coal variables (if IPHYLA = 2)
+!     (default off: 0 ; on: 1)
 
   if((iphyla.eq.1 .and. itpvar.eq.1) .or. iphyla.eq.2) ltsthe = 0
 
 endif
 
 
-! 5.4 CALCUL DES STATISTIQUES VOLUMIQUES
-! --------------------------------------
+! 5.4 Volume statistics
+! ---------------------
 
-!   5.4.1 PARAMETRES GENERAUX
+!   5.4.1 Generic parameters
 !   ~~~~~~~~~~~~~~~~~~~~~~~~~
 
-!     CALCUL DES STATISTIQUES VOLUMIQUES
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Calculation of the volume statistics
+!     (default off: 0 ; on: 1)
 
 istala = 0
 
 
 if (istala.eq.1) then
 
-!     SEUIL POUR LA PRISE EN COMPTE DES STATISTIQUES VOLUMIQUES
-!     * La valeur de SEUIL est un poids statistique.
-!     * Chaque cellule du maillage contient une certaine
-!       quantite de particules en terme de poids statistique
-!       (somme des poids statistiques de toutes les particules
-!       contenues dans la cellule) ;
-!       SEUIL est la valeur minimale a partir de laquelle la
-!       contribution en poids statistique d'une cellule n'est
-!       plus prise en compte dans le modele complet de dispersion
-!       turbulente, dans la resolution de l'equation de poisson
-!       de correction des vitesses moyennes, et dans les sorties
-!       listing et post-processing
-!     (DEFAUT : SEUIL = 0.D0)
+! Threshold for the management of volume statistics
+! -------------------------------------------------
+!  * the value of the seuil variable is a statistical weight.
+!  * each cell of the mesh contains a statistical weight
+!    (sum of the statistical weights of all the particles
+!     located in the cell); seuil is the minimal value from
+!    which the contribution in statistical weight of a particle
+!    is not taken into account anymore in the full model
+!    of turbulent dispersion, in the resolution of the
+!    Poisson equation of correction of the mean velocities, and
+!    in the writing of the listing and post-processing.
+!
 
   seuil = 0.d0
 
-!     CALCUL DES STATISTIQUES VOLUMIQUES A PARTIR DE L'ITERATION
-!     LAGRANGIENNE ABSOLUE
-!     * IDSTNT est un nombre d'iterations Lagrangiennes absolues
-!       (i.e. suites comprises).
-!     (DEFAUT : IDSTNT = 1)
+! Calculation of the volume statistics from the absolute number
+! of Lagrangian iterations
+! * idstnt is a  absolute number of Lagrangian iterations
+!   (i.e. including calculation restarts)
+
 
   idstnt = 1
 
-!     CALCUL STATIONNAIRE DES STATISTIQUES VOLUMIQUES A PARTIR DE
-!     L'ITERATION LAGRANGIENNE ABSOLUE NSTIST
-!     * NSTIST est un nombre d'iterations Lagrangiennes absolues
-!       (i.e. suites comprises) a partir du quel les statistiques sont
-!       moyennees en temps.
-!     * Utile si CALCUL STATIONNAIRE, i.e. si ISTTIO = 1.
-!     * Si le nombre d'iterations Lagrangiennes absolues est strictement
-!       inferieur a NSTIST, les statistiques sont instationnaires
-!       (i.e. elles sont REMISES A ZERO a chaque iteration
-!       Lagrangienne).
-!     (DEFAUT : NSTIST = IDSTNT)
+! Stationary calculation from the absolute Lagrangian iteration nstist
+! *  nstist is a  absolute number of Lagrangian iterations
+!   (i.e. including calculation restarts) from which the statistics
+!    are averaged in time.
+! *  useful if the calculation is stationary (isttio=1)
+! *  if the number of Lagrangian iterations is lower than nstits, the transmitted
+!    source terms are unsteady (i.e. they are reset to zero ar each Lagrangian iteration)
+! *  the minimal value acceptable for nstist is 1.
 
   nstist = idstnt
 
 
-!   5.4.2 NOMBRE DE VARIABLES STATISTIQUES VOLUMIQUES,
-!         NOM DES VARIABLES POUR AFFICHAGE
+!   5.4.2 Number of volume statistical variables,
+!         Name of the variables for display
 !   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-!    NOMLAG : nom de la moyenne
-!    NOMLAV : nom de la variance
-!    IHSLAG : sortie des enregistrements sur les capteurs definis
-!             dans USINI1
+!    NOMLAG: name of the mean
+!    NOMLAV: name of the variance
+!    ihslag: Output to the probes defined in usini1
+!
 
-!    * ATTENTION : respecter l'ordre d'apparition des statistiques.
+!    * CAUTION: respect the apparition order of the statistics
 
-!    * Attention ces noms sont utlises pour retrouver les informations
-!      dans le fichier suite de calcul ; donc si un nom est modifie
-!      entre deux calculs, la statistique concernee est perdue.
+!    * Be careful, these names are used to retrieve information
+!      in the calculation-restart file; therefore if a name is modified
+!      between two calculations; the associated statistics is lost.
 
-!    * A priori, l'utilisateur n'intervient que dans les rubriques 4) et 6)
 
-!   1) Par defaut, statistiques TOUJOURS calculees :
-!         Moyenne et variance des composantes de la vitesse
-!         Moyenne et variance du taux de presence
-!            (i    .e. concentration volumique)
-!         Moyenne et variance du temps de s�jour
+!    * A priori the user intervenes only in sections 4 and 6
+
+!   1) By default the always-computed statistics are:
+!       - Mean and variance of the velocity components
+!       - Mean and variance of the volume fraction (i. e. volume concentration)
+!       - Mean and variance of the residence time
+
 
   ipv  =  1
   NOMLAG(IPV)  = 'MoVitPtX'
@@ -484,10 +404,10 @@ if (istala.eq.1) then
   NOMLAV(IPV)  = 'VaTpsSej'
   ihslag(ipv)  = 2
 
-!   2) Physiques pariculieres (IPHYLA = 1) suivant les options choisies:
-!         Moyenne et variance de la temperature
-!         Moyenne et variance du diametre
-!         Moyenne et variance de la masse
+!   2) Specific models (iphla = 1) following the chosen options:
+!         Mean and variance of the temperature
+!         Mean and variance of the diameter
+!         Mean and variance of the mass
 
   if (iphyla.eq.1) then
 
@@ -512,11 +432,11 @@ if (istala.eq.1) then
 
   else if (iphyla.eq.2) then
 
-!   3) Charbon pulverise (IPHYLA = 2) :
-!         Moyenne et variance de la temperature
-!         Moyenne et variance de la masse de charbon reactif
-!         Moyenne et variance de la masse de coke
-!         Moyenne et variance du diametre du coeur retrecissant
+!   3) Pulverized coal (iphyla = 2) :
+!         Mean and variance of the temperature
+!         Mean and variance of the mass of reactive coal
+!         Mean and variance of the mass of coke
+!         Mean and variance of the diameter of the shrinking core
 
     ipv  = ipv  + 1
     NOMLAG(IPV) = 'MoTempPt'
@@ -540,16 +460,17 @@ if (istala.eq.1) then
 
   endif
 
-!   4) VARIABLES STATISTIQUES VOLUMIQUES SUPPLEMENTAIRES :
-!       * Si l'utilisateur souhaite des calculs de statistiques
-!         autres que ceux fournis en standard, il doit
-!         1) donner leur nombre NVLSTS,  2) renseigner leur nom,
-!         3) renseigner IHSLAG
-!         et 4) intervenir dans les sous-programmes utilisateur
-!         USLAST.F et USLAEN.F pour programmer ses nouvelles
-!         statistiques (voir les exemples).
-!       * Nombre maximal de statistiques supplementaires : 20
-!         (sinon changer le parametre NUSSTA dans l'include lagpar.h)
+!   4) Additional volume statistical variables
+!      ---------------------------------------
+!     * If the user wishes other statistic calculations
+!       than the standard ones, he must 1) prescribe
+!       their number nvlsts, 2) prescribe their names,
+!       3) prescribe ihslag and 4) intervene in the
+!       user subroutines uslast and uslaen to implement
+!       his new statistics (see the given examples)
+!     * Default maximal number of additional statistics: 20.
+!       (Otherwise, modify the nussta parameter is the
+!       include file lagpar.h)
 
   nvlsts = 0
 
@@ -563,25 +484,25 @@ if (istala.eq.1) then
     ipv = ipv + nvlsts
   endif
 
-!   5) Par defaut, statistique TOUJOURS calculee :
-!         Somme du poids statistiques associ� aux particules
-!            (i    .e. nombre de particules par cellules)
+!   5) By default an always-calculated statistic is the
+!      sum of the statistical weights associated to the particles
+!      (i.e. the number of particles per cell)
 
   ipv  = ipv  + 1
   NOMLAG(IPV)  = 'SomPoids'
   ihslag(ipv)  = 1
 
-!   6) STATISTIQUES PAR GROUPE :
-!       * Si l'utilisateur souhaite des calculs de statistiques
-!         par groupe de particule (par defaut aucune statistique par groupe),
-!         il doit :
-!         1) donner NBCLST le nombre de groupe (limite a 100)
-!         2) preciser dans USLAG2 le groupe auquel appartient chaque particule
-!              a l'aide du tableau IUSLAG
-
-!      * ATTENTION : NBCLST ne peut pas etre change lors d'une suite de
-!        calcul (ISUILA=1) meme si le calcul des statistiques n'est pas
-!        encore enclenche (ISTALA=0)
+!   6) Statistics per group:
+!     ----------------------
+!     * if the user wishes to calculate statistics per group of particles
+!       (by default there is no statistics of this kind), he must:
+!      1) prescribe nbclst the number of groups (limited to 100)
+!      2) assign in uslag2 the group to which belongs each particle
+!         through the iuslag array.
+!
+!     * Be careful, nbclst cannot be modified during a calculation restart
+!       (isuila=1); even if the calculation of the statistics is not triggered yet
+!       (istala=0).
 
   nbclst = 0
 
@@ -589,436 +510,400 @@ endif
 
 
 !===============================================================================
-! 6. OPTIONS SUR L'ENTREE DES PARTICULES
+! 6. Option concerning particle inlet
 !===============================================================================
 
-!     INJECTION EN CONTINUE DES PARTICLES PENDANT LE PAS DE TEMPS
-!     (ET PAS UNIQUEMENT AU DEBUT DU PAS DE TEMPS, CETTE OPTION
-!      EVITE LES PAQUETS DE PARTICULES EN FACE LES ZONES D'INJECTION)
-!     (DEFAUT NON : 0 ; OUI : 1)
+!    Continous particle injection during the time step
+!    (and not only at the beginning the time step; this option
+!     makes it possible to avoid bunches of particles in the vicinity
+!     of the inlet zones)
+!     (default off: 0 ; on: 1)
 
 injcon = 0
 
 
 !===============================================================================
-! 7. TECHNIQUE DE REDUCTION DE VARIANCE : CLONAGE/FUSION DES PARTICULES
+! 7. Technic of variance reduction: cloning/fusion of the particles
 !===============================================================================
 
-!     UTILISATION DE LA ROULETTE RUSSE
-!                    DEFAUT NON : 0
-!                           OUI : 1 sans calcul de Y+
-!                                 2 avec calcul de Y+
+!     Use of the Russian roulette
+!                    default off : 0
+!                            on  : 1 without Y+ calculation
+!                                  2 with Y+ calculation
 iroule = 0
 
 
 !===============================================================================
-! 8. OPTIONS SUR LE TRAITEMENT NUMERIQUE DE LA PHASE DISPERSEE
+! 8. Options concerning the numerical treatment of the dispersed phase
 !===============================================================================
 
-!     ORDRE D'INTEGRATION DES EQUATIONS DIFFERENTIELLES STOCHASTIQUES
-!     PAR DEFAUT 2 (VALEURS ADMISSIBLES : 1 OU 2)
-
-!       NORDRE = 1 : INTEGRATION DES EDS PAR UN SCHEMA D'ORDRE 1
-!       NORDRE = 2 : INTEGRATION DES EDS PAR UN SCHEMA D'ORDRE 2
+! Integration order of the stochastic differential equations
+! (default 2; acceptable values 1 or 2)
+!
 
 nordre = 2
 
 
-!     RESOLUTION DE L'EQUATION DE POISSON POUR LES VITESSE MOYENNES
-!     DES PARTICULES ET CORRECTION DES VITESSES INSTANTANNEES
-!     DES PARTICULES
-!      = 0 : pas de correction des vitesses (VALEUR PAR DEFAUT)
-!      = 1 : correction des vitesses instantanees
+! Resolution of the Poisson equation for the particle mean velocity
+! and correction of the particle instantaneous velocity
+!      = 0: not correction of the velocities (default values)
+!      = 1: correction of the instantaneous velocities
 
-!     ATTENTION : OPTION STRICTEMENT DEVELOPPEUR, LAISSEZ LA VALEUR PAR
-!     =========   DEFAUT           !
+!     CAUTION: OPTION STRICTLY FOR DEVELOPERS; PLEASE LEAVE THE DEFAULT VALUE FOR A
+!     ========= STANDARD USE OF THE CODE.           !
 
 ilapoi = 0
 
 
 !===============================================================================
-! 9. OPTIONS SUR LE TRAITEMENT DE LA DISPERSION TURBULENTE
+! 9. Options concerning the treatment of the dispersed phase
 !===============================================================================
 
-!     ATTENTION : DANS CETTE VERSION, LA DISPERSION TURBULENTE NE
-!     ^^^^^^^^^^  FONCTIONNE QUE SI LA PHASE CONTINUE EST CALCULEE
-!                 AVEC UN MODELE k-eps OU Rij-eps
-
+!     CAUTION: In this version, the turbulent dispersion works only if
+!     -------  the continuous phase is calculated with a k-eps or a Rij-eps model
 
-!-->  PRISE EN COMPTE DE LA DISPERSION TURBULENTE
-!     (DEFAUT OUI : 1 ; NON : 0)
+!-->  Activation of the turbulent dispersion
+!     (default on: 1 ; off: 0)
 
 idistu = 1
 
 
-!-->  DISPERSION TURBULENTE IMPOSEE A CELLE DU FLUIDE
+!-->  Turbulent dispersion imposed to the fluid one.
 
-!     SI ACTIF, ALORS LA DISPERSION TURBULENTE DES PARTICULES EST CELLE
-!     DES PARTICULES FLUIDES. ON SE PLACE DONC DANS UN CAS DE DIFFUSION
-!     TURBULENTE (ON SUPRIME LES EFFETS DE CROISEMENT DE
-!     TRAJECTOIRES). SI LES PARTICULES SIMULEES ONT LA MASSE
-!     VOLUMIQUE DU FLUIDE ALORS, ON SIMULE LE DEPLACEMENT DE
-!     PARTICULES FLUIDES LAGRANGIENNES.
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     If activated, then particle turbulent dispersion is
+!     equal to the fluid-particle one. The crossing-trajectory effects
+!     are suppressed ; it is then a case of turbulent diffusion. If the
+!     simulated particle density is equal to the fluid density, then
+!     we are simulating the displacement of fluid particles.
+!     (default off: 0 ; on: 1)
 
 idiffl = 0
 
-!     MODCPL :
-!          = 0 pour le modele incomplet (VALEUR PAR DEFAUT)
-!          > 0 pour le modele complet, est egal au numero de l'iteration
-!          Lagrangienne absolue (i.e. suites comprises) a partir de
-!          laquelle mise le modele complet est active
-!          MODCPL ne doit pas etre inferieur a IDSTNT
+!     modcpl :
+!          = 0 for the incomplete model (default value)
+!          > 0 for the full model, is equal the absolute number
+!              of Lagrangian iterations from which the full model is activated
+!              modcpl must not be lower than idstnt
+
 
 modcpl = 0
 
-!     IDIRLA  =1 ou 2 ou 3 : 1ere, 2eme ou 3eme direction
-!       du modele complet. Correspond � la direction principale
-!       de l'�coulement. Permet de calculer un echelle de temps
-!       Lagrangienne non isotrope.
-!       (DEFAUT IDIRLA = 1)
+!     idirla (=1 or 2 or 3) : 1st, 2nd or 3rd direction
+!     of the full model. Corresponds to the main direction
+!     of the flow. Allow to calculate a non-isotropic Lagrangian timescale
+!     (default idirla=1)
 
 if (modcpl.gt.0) idirla = 1
 
 
 !===============================================================================
-! 10. OPTIONS SUR LE TRAITEMENT DES FORCES PARTICULIERES
+! 10. Options concerning the treatment of specific forces
 !===============================================================================
 
-!--> ACTIVATION DES FORCES :
+!--> Activation of the following forces:
 
-!      - de Van der Waals
-!      - Electrostatiques
+!      - van der Waals forces
+!      - electrostatic forces
 
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     (default off: 0 ; on: 1)
 
-!     ATTENTION : OPTION DEVELOPPEUR UNIQUEMENT
+!     CAUTION: OPTION FOR DEVELOPERS ONLY
 !     =========
 
 ladlvo = 0
 
-!-->  Constante pour les forces de Van der Waals
-
-!    Constante d'Hamaker Particule/Eau/substrat :
+!-->  Constants for the van der Waals forces
+!     --------------------------------------
+!    Hamaker constant for the particle/fluid/substrate system:
 
 cstham = 6.d-20
 
-!-->  Constante pour les forces Electrostatiques
+!-->  Constants for the elecstrostatic forces
+!    ----------------------------------------
 
-!    Constante de Faradet (C/mol)
+!    Faraday constant (C/mol)
 
 cstfar = 9.648d4
 
-!    Constante dielectrique du vide :
+!    Vacuum permittivity:
 
 epsvid = 8.854d-12
 
-!    Constante dielectrique de l'eau
+!    Dielectric constant of the fluid (example: water at 293 K)
 
 epseau = 80.10d0
 
-!    Potentiel solide 1 (Volt)
+!    Electrokinetic potential of the first solid (Volt)
 
 phi1 = 50.d-3
 
-!    Potentiel solide 2 (Volt)
+!    Electrokinetic potential of the second solid (Volt)
 
 phi2 = -50.d-3
 
-!    FORCE IONIQUE (mol/l)
+!    Ionic force (mol/l)
 
 fion = 1.d-2
 
-!    DISTANCE DE COUPURE
-!      dans la litterature elle est egale � : 1.58D-10
-!                                        ou   1.65D-10
+!    Cut-off distance (in the literature, it is equal to: 1.58D-10
+!                      or 1.65D-10)
 
 dcoup = 1.58d-10
 
-!    DENSITE DE CHARGE
+!    Charge density
 
 sigch = 0.d0
 
-!   Distance minimum entre la particule et la paroi
+!    Minimal distance between particle and wall
 
 dparmn = 1.d-10
 
 
 !===============================================================================
-! 11. ACTIVATION DU MOUVEMENT BROWNIEN
+! 11. Activation of Brownian motion
 !===============================================================================
 
 
-!--> ACTIVATION DU MOUVEMENT BROWNIEN :
+!--> Activation of Brownian motion:
 
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     (default off: 0 ; on: 1)
 
-!     ATTENTION : OPTION DEVELOPPEUR UNIQUEMENT
+!     CAUTION: OPTION FOR DEVELOPERS ONLY
 !     =========
 
 lamvbr = 0
 
 
 !===============================================================================
-! 12. POST-PROCESSING
+! 12. Post-processing
 !===============================================================================
 
-! 12.1 POST-PROCESSING DES TRAJECTOIRES ET DEPLACEMENTS PARTICULAIRES
+! 12.1 Post-processing of the trajectories and particle displacements
 
 
-!     ATTENTION : COUTEUX EN TEMPS DE CALCUL
+!     CAUTION: COMPUTIONALLY EXPENSIVE
 !     ^^^^^^^^^^
 
-!   12.1.1 PARAMETRES GENERAUX
+!   12.1.1 Generic parameters
 !   ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-!     MODE TRAJECTOIRES
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Trajectory mode
+!     (default off: 0 ; on: 1)
 
 iensi1 = 0
 
-!     MODE DEPLACEMENTS PARTICULAIRES
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Particle-displacement mode
+!     (default off: 0 ; on: 1)
 
 iensi2 = 0
 
 
-!     NOMBRE DE PARTICULES A VISUALISER MAXIMUM=NLISTE
-!     (PAR DEFAUT NBVIS = NLISTE)
-!     ATTENTION : NBVIS NE DOIT NI ETRE SUPERIEUR A NBPMAX
-!                 NI A NLISTE (parametre fixe a 500 dans lagpar.h)
+!     Maximal number of particles to visualize = nliste
+!     (default nbvis=nliste)
+!     Be careful, nbvis must not be greater than nbpmax nor nliste
+!     (parameter equal to 500 in lagpar.h)
 
 nbvis = nliste
 
-!     PERIODE   D'AQUISITION DES DONNEES A VISUALISER
-!     (PAR DEFAUT NVISLA = 1)
+!     Acquisition period of the data to visualize
+!     (default nvisla = 1)
 
 nvisla = 1
 
-!     LISTE contient les numeros des particules que l'on souhaite
-!     visualiser
-!     (PAR DEFAUT LISTE(...) = -1, AUCUNE PARTICULE A VISUALISER)
-!     ATTENTION : si le numero est negatif, il n'y a pas de visualisation.
-
-!   > EXEMPLE 1 :
-!     je veux voir les NBVIS 1eres
+!     The liste array contains the numbers of particles that we want to
+!     visualize (by default liste(...) = -1, no particle to visualize)
+!     Be careful, if the number is negative, there is no visualization)
+!
+!     Example 1: the user wants to track the first nbvis
 
 do ii = 1, nbvis
   liste(ii) = ii
 enddo
 
-!   > EXEMPLE 2 :
-!     je veux voir la 3 5 67 23 1 76 35 36 ...etc..
-
-!     LISTE(1) = 3
-!     LISTE(2) = 5
-!     LISTE(3) = 67
-!     LISTE(4) = 23
-!     LISTE(5) = 1
-!     LISTE(6) = 76
-!     LISTE(7) = 35
-!     LISTE(8) = 36
+!   > Example 2:
+!     I want to track 3 5 67 23 1 76 35 36 ...etc..
+
+!     liste(1) = 3
+!     liste(2) = 5
+!     liste(3) = 67
+!     liste(4) = 23
+!     liste(5) = 1
+!     liste(6) = 76
+!     liste(7) = 35
+!     liste(8) = 36
 !     ...etc...
 
-!   > REMARQUE : les trous, les repetitions dans le tableau LISTE seront
-!                suprimes, et les numeros seront ranges par ordre
-!                croissant.
+!   > Remark: the holes, the repetitions of the liste array will be deleted,
+!             and the numbers will be sorted in increasing order
+!
+!
 
-!   12.1.2 VARIABLES A VISUALISER SUR LES TRAJECTOIRES OU LES PARTICULES
+!   12.1.2 Variables to visualize on the trajectories or the particles
 !   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-!     VARIABLE : VITESSE DU FLUIDE VU
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Variable: velocity of the flow seen
+!     (default off: 0 ; on: 1)
 
 ivisv1  = 0
 
-!     VARIABLE : VITESSE DE LA PARTICULE
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Variable: particle velocity
+!     (default off: 0 ; on: 1)
 
 ivisv2  = 0
 
-!     VARIABLE : TEMPS DE SEJOUR
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Variable: residence time
+!     (default off: 0 ; on: 1)
 
 ivistp  = 0
 
-!     VARIABLE : DIAMETRE
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Variable: diameter
+!     (default off: 0 ; on: 1)
 
 ivisdm  = 0
 
-!     VARIABLE : TEMPERATURE
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Variable: temperature
+!     (default off: 0 ; on: 1)
 if (iphyla.eq.1 .and. itpvar.eq.1) iviste  = 0
 
-!     VARIABLE : MASSE
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Variable: mass
+!     (default off: 0 ; on: 1)
 
 ivismp  = 0
 
 
 if (iphyla.eq.2) then
 
-!       VARIABLE CHARBON : TEMPERATURE EN DEGRES CELSIUS
-!       (DEFAUT NON : 0 ; OUI : 1)
+!       Variable coal: temperature in Celsius degrees
+!       (default off: 0 ; on: 1)
 
   ivishp = 0
 
-!       VARIABLE CHARBON : DIAMETRE DU COEUR RETRECISSANT
-!       (DEFAUT NON : 0 ; OUI : 1)
+!       Variable coal: diameter of the shrinking core
+!       (default off: 0 ; on: 1)
 
   ivisdk  = 0
 
-!       VARIABLE CHARBON : MASSE DE CHARBON REACTIF
-!       (DEFAUT NON : 0 ; OUI : 1)
+!       Variable coal: mass of reactive coal
+!       (default off: 0 ; on: 1)
 
   ivisch  = 0
 
-!       VARIABLE CHARBON : MASSE DE COKE
-!       (DEFAUT NON : 0 ; OUI : 1)
+!       Variable coal: mass of coke
+!       (default off: 0 ; on: 1)
 
   ivisck  = 0
 
 endif
 
 
-! 12.2 STATISTIQUES AUX FRONTIERES : VISUALISATION DES
-!      INTERACTIONS PARTICULES/FRONTIERES
+! 12.2 Boundary statistics: visualization of the particle/boundaries interactions
 ! ------------------------------------------------
 
-!   12.2.1 PARAMETRES GENERAUX
+!   12.2.1 Generic parameters
 !   ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-!     MODE INTERACTION PARTICULES/FRONTIERES
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Particle/boundary interaction mode
+!     (default off: 0 ; on: 1)
 
 iensi3 = 0
 
-!     CALCUL STATIONNAIRE DES STATISTIQUES AUX FRONTIERES A PARTIR DE
-!     L'ITERATION LAGRANGIENNE ABSOLUE NSTBOR
-!     * NSTBOR est un nombre d'iterations Lagrangiennes absolues
-!       (i.e. suites comprises) a partir duquel les statistiques sont
-!       moyennees (en temps ou par nombre d'interactions).
-!     * Utile si CALCUL STATIONNAIRE, i.e. si ISTTIO = 1.
-!     * Si le nombre d'iterations Lagrangiennes absolues est strictement
-!       inferieur a NSTBOR, les statistiques sont instationnaires
-!       (i.e. elles sont REMISES A ZERO a chaque iteration
-!       Lagrangienne).
-!     * La valeur minimale admissible pour NSTBOR est 1.
-!     (DEFAUT : NSTBOR = 1)
+!    Stationary calculation of the boundary statistics from
+!    the absolute Lagrangian iteration nstbor.
+!     * nstbor is the absolute number of Lagrangian iterations
+!       (i.e. including restarts) from which the statistics are averaged
+!       (in time or by number of interactions)
+!     * useful if the calculation is stationary (isttio=1)
+!     * if the absolute number of Lagrangian iterations is inferior to
+!       nstbor, the statistics are unsteady (i.e. they are reset to zero at each
+!       Lagrangian iteration)
 
 nstbor = 1
 
-!     SEUILF POUR LA PRISE EN COMPTE DES STATISTIQUES AUX FRONTIERES
-!     * La valeur de SEUILF est un poids statistique.
-!     * Chaque face du maillage a subi un certain nombre d'interactions
-!       avec des particules en terme de poids statistique
-!       (somme des poids statistiques de toutes les particules
-!       qui ont interagi avec la face de bord) ;
-!       SEUILF est la valeur minimale a partir de laquelle la
-!       contribution en terme statistique d'une face n'est
-!       plus prise en compte dans les sorties listing
-!       et post-processing.
-!     (DEFAUT : SEUILF = 0.D0)
+!   seuilf for the management of the boundary statistics
+!    * the value of seuilf is a statistical weight
+!    * Each boundary face has undergone a number of particle interactions
+!      in term of statistical weight (sum of the statistical weights of all
+!      the particles that interacted with the boundary face); seuilf is the
+!      minimal value from which the contribution of a face (in statistical terms)
+!      is not taken into account anymore in the writing of the listing and
+!      post-processing.
 
 seuilf = 0.d0
 
 
-!   12.2.2 INFORMATIONS A ENREGISTRER
+!   12.2.2 Information to be recorded
 !   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-!    * Un certain nombre d'informations succeptibles d'interesser
-!      l'utilisateur sont d'ores et deja ecrites dans le sous-programme
-!      USLABO. Pour les activer il faut mettre le mot-cle correspondant
-!      a 1 ci-dessous.
-!    * La selection des types d'interaction (IREBOL, IDEPO1,... voir
-!      le sous-programme USLAG2) qu'enclenchent l'enregistrement
-!      des informations est faite dans USLABO. La selection par defaut
-!      doit etre validee ou modifiee par l'utilisateur.
-!    * Par defaut, dans un meme enregistrement, on place les informations
-!      demandees pour toutes les interactions particules/frontieres
-!      selectionnees. Modifier ce comportement necessite une
-!      intervention dans le sous-programme utilisateur USLABO.
-!    * La statistique aux frontieres :
-!      "NOMBRE D'INTERACTIONS PARTICULES/FRONTIERES" doit etre
-!      selectionnee obligatoirement pour utiliser la moyenne
-!      particulaire IMOYBR(...) = 2.
-
-
-!     NOMBRE D'INTERACTIONS PARTICULES/FRONTIERES
-!     (DEFAUT NON : 0 ; OUI : 1)
+!
+!   * Some information that may interest the user are already written
+!     in the uslabo subroutine. To activate them, the user has to set below
+!     the corresponding keyword to 1.
+!   * The selection of the interaction modes (irebol, idepo1... see the uslabo subroutine)
+!     that triggers the recording of the information is carried out in uslabo. The default
+!     selection must be validated or modified by the user.
+!   * By default the asked information for all the particle/wall interactions are written
+!     in the same recording. Modifying this behavior can me performed by an intervention
+!     in the uslabo subroutine.
+!   * The boundary statistic 'number of particle/boundary interactions' must be
+!     selected to activate the particle average imoybr(...) = 2
+
+!     Number of particle/boundary interactions
+!     (default off: 0 ; on: 1)
 inbrbd = 1
 
-!     FLUX DE MASSE PARTICULAIRE LIE AUX INTERACTIONS
-!     PARTICULES/FRONTIERES
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Particle mass flux associated to particle/boundary interactions
+!     (default off: 0 ; on: 1)
 iflmbd = 1
 
-!     ANGLE ENTRE LA VITESSE DE LA PARTICULE
-!     ET LE PLAN DE LA FACE FRONTIERE
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Angle between particle velocity and the plan of the boundary face
+!     (default off: 0 ; on: 1)
 iangbd = 0
 
-!     NORME DE LA VITESSE DE LA PARTICULE AU MOMENT
-!     DE SON INTERACTION AVEC LA FACE FRONTIERE
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Norm of particle velocity during the interation with the boundary face
+!     (default off: 0 ; on: 1)
 ivitbd = 0
 
-!     MASSE DE GRAINS DE CHARBON ENCRASSES
-!     (DEFAUT NON : 0 ; OUI : 1)
+!     Mass of fouled coal particles
+!     (default off: 0 ; on: 1)
  if (iphyla.eq.2 .and. iencra.eq.1) iencbd = 0
 
-!     INFORMATIONS UTILISATEUR SUPPLEMENTAIRES A ENREGISTREES
-!     (PAR EXEMPLE TAUX D'EROSION, TEMPERATURE...)
-!     * ces enregistrements supplementaires sont stokees dans
-!       le tableau PARBOR,
-!     * on renseigne ici le nombre NUSBOR d'enregistrements
-!       supplementaires,
-!     * la limite supperieure de ce nombre est NUSBRD = 10
-!       (fixee dans lagpar.h),
-!     * voir un exemple de code d'un enregistrement supplementaire
-!       dans le sous-programme USLABO.
+!     Additional user information to be recorded
+!     ------------------------------------------
+!     (for instance, erosion rate, temperature..)
+!    * these additional recordings are stored in the parbor array
+!    * here we prescribe the nusbor number of additional recordings
+!    * the max value of this number is nusbrd=10 (in lagpar.h)
+!    * see an example of code of an additional recording in the
+!      uslabo subroutine.
 
 nusbor = 0
 
 
-!   12.2.3 NOM DES ENREGISTREMENTS POUR AFFICHAGE,
-!          MOYENNE EN TEMPS OU MOYENNE PARTICULAIRE
-!          DES STATISTIQUES AUX FRONTIERES
+!   12.2.3 Name of the recordings for display,
+!          Average in time of particle average
+!          of the boundary statistics
 !   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-!    * A priori l'utilisateur n'intervient que dans les infos
-!      utilisateur supplementaires a enregistrer : il doit
-!      donner le nom de l'enregistrement ainsi que le type
-!      de moyenne que l'on souhaite lui appliquer pour les affichages
-!      listing et en fin de calcul pour le post-processing.
-
-!    * ATTENTION ce nom est utilise pour retrouver les informations
-!      dans le fichier suite de calcul, si un nom est modifie
-!      entre deux calculs, le resultat concerne n'est pas relu
-!      (et est donc perdu).
-
-!    * La moyenne appliquee est donnee par l'intermediaire du
-!      tableau IMOYBR :
-!       - si IMOYBR(IUSB(II)) = 0 -> pas de moyenne appliquee
-!       - si IMOYBR(IUSB(II)) = 1 -> on applique une moyenne temporelle,
-!               c'est a dire que la statistique est divisee par le
-!               dernier pas de temps dans le cas d'un enregistrement
-!               instationnaire, ou stationnaire mais avec un nombre
-!               d'iterations inferieur a NSTBOR ; ou que la statistique
-!               est divisee par le temps d'enregistrement
-!               stationnaire dans le cas stationnaire.
-!       - si IMOYBR(IUSB(II)) = 2 -> on applique une moyenne
-!               particulaire, c'est a dire qu'on divise la statistique
-!               par le nombre d'interactions particules/frontieres
-!               enregistrees (en terme de poids statistique)
-!               dans PARBOR(NFABOR,INBR) (cf. USLABO).
-!               Pour utiliser cette moyenne il faut que INBRBD=1.
-!    * Les sauvegardes dans le fichier suite de calcul sont faites
-!      sans application de cette moyenne.
-!    * La moyenne est appliquee si le nombre d'interactions (en poids
-!      statistique) de la face de bord consideree est strictement
-!      superieur a SEUILF, sinon la moyenne est mise a zero.
+!    * A priori the user intervenes only in the additional user information
+!      to be recorded: he must prescribe the name of the recording as well as
+!      the type of average that he wishes to apply to it for the writing
+!      of the listing and the post-processing.
+
+!    * Be careful, these names are used to retrieve information
+!      in the calculation-restart file; therefore if a name is modified
+!      between two calculations; the associated statistic is lost.
+!
+!    * The applied average is prescribed through the imoybr array:
+!      - if imoybr(iusb(ii)) = 0 -> no average applied
+!      - if imoybr(iusb(ii)) = 1 -> a time average is applied, i.e. the
+!       statistic is divided by the last time step in the case of an unsteady calculation
+!       of a stationary calculation with a number of iterations lower than nstbor ; or that
+!       the statistic is divided by the recording time in the case of a stationary calculation.
+!      -if imoybr(iusb(ii)) = 2 -> a particle average is applied, i.e. the statistic is divided
+!       by the number of recorded particle/boundary interactions (in terms of statistical weight)
+!       dans parbor(nfabor,inbr) (cf uslabo). To use this average, inbrbd must be set to 1.
+!    * The back-ups in the restart file are performed without applying this average.
+!    * The average is applied if the number of interactions (in statistical weight) of the boundary
+!      face considered is greater than seuilf ; otherwise this average is set to zero.
 
 ipv = 0
 
@@ -1071,9 +956,9 @@ if (iensi3.eq.1) then
 endif
 
 !===============================================================================
-! 13. LISTING LAGRANGIEN
+! 13. Lagrangian listing
 !===============================================================================
-! Periode de sortie du listing lagrangien
+! Lagrangian period for the writing of the Lagrangian listing
 
 ntlal = 1
 
@@ -1081,4 +966,4 @@ ntlal = 1
 
 return
 
-end
+end subroutine
diff --git a/users/lagr/uslag2.f90 b/users/lagr/uslag2.f90
index 12393d3..ce2291e 100644
--- a/users/lagr/uslag2.f90
+++ b/users/lagr/uslag2.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-subroutine uslag2                                                 &
+subroutine uslag2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -49,151 +49,132 @@ subroutine uslag2                                                 &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! Purpose:
 ! ----------
 
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
+!   Subroutine of the Lagrangian particle-tracking module:
 !   -------------------------------------
 
-!    SOUS-PROGRAMME UTILISATEUR (INTERVENTION OBLIGATOIRE)
-
-!    ROUTINE UTILISATEUR POUR LES CONDITIONS AUX LIMITES RELATIVES
-!      AUX PARTICULES (ENTREE ET TRAITEMENT AUX AUTRES BORDS)
-
-
-! IDENTIFICATION DES FACES DE BORD
-! ================================
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+!    User subroutine (Mandatory intervention)
+
+!    User subroutine for the boundary conditions associated to the particles
+!    (inlet and treatment of the other boundaries)
+
+
+! Boundary faces identification
+! =============================
+
+! Boundary faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
-! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
-! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-!                  !    !     ! le module lagrangien                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+!                  !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! maximum number of particles allowed            !
+! nvp              ! i  ! <-- ! number of particle variables                   !
+! nvp1             ! i  ! <-- ! nvp minus position, fluid and part. velocities !
+! nvep             ! i  ! <-- ! number of particle properties (integer)        !
+! nivep            ! i  ! <-- ! number of particle properties (integer)        !
+! ntersl           ! i  ! <-- ! number of source terms of return coupling      !
+! nvlsta           ! i  ! <-- ! nb of Lagrangian statistical variables         !
+! nvisbr           ! i  ! <-- ! number of boundary statistics                  !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+!                  !    !     !                                                !
+! ifacel           ! ia ! <-- ! interior faces -> cells connectivity           !
 ! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
+! ifabor           ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
+! ifmfbr           ! ia ! <-- ! boundary face family numbers                   !
 ! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
+! ifmcel           ! ia ! <-- ! cell family numbers                            !
 ! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
 !  (nfml,nprfml    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac                      !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
+! maxelt           !  i ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac           ! ia ! <-- ! interior faces -> vertices index (optional)    !
+!   (lndfac)       !    !     !                                                !
+! nodfac           ! ia ! <-- ! interior faces -> vertices list (optional)     !
 !   (nfac+1)       !    !     !                                                !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr                      !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
+! ipnfbr           ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+!   (lndfbr)       !    !     !                                                !
+! nodfbr           ! ia ! <-- ! boundary faces -> vertices list  (optional)    !
 !   (nfabor+1)     !    !     !                                                !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
+! itrifb(nfabor    ! ia ! <-- ! indirection for the sorting of the             !
+!  nphas      )    !    !     ! boundary faces                                 !
+! itypfb(nfabor    ! ia ! <-- ! type of the boundary faces                     !
 !  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! ifrlag(nfabor    ! te ! --> ! type des faces de bord lagrangien              !
-! itepa            ! te ! <-- ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! ifrlag(nfabor    ! ia ! --> ! type of the Lagrangian boundary faces          !
+! itepa            ! ia ! <-- ! particle information (integers)                !
+! (nbpmax,nivep    !    !     !                                                !
+! idevel(nideve    ! ia ! <-- ! complementary dev. array of integers           !
+! ituser(nituse    ! ia ! --- ! complementary user array of integers           !
+! ia(*)            ! ia ! <-- ! macro array of integers                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
+! volume           ! ra ! <-- ! cell volumes                                   !
 ! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant prec)                     !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! tepa             ! tr ! <-- ! info particulaires (reels)                     !
-! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtpa             ! ra ! <-- ! transported variables at the previous          !
+! (ncelet,*)       !    !     ! time step                                      !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! coefa, coefb     ! ra ! <-- ! boundary conditions at the boundary faces      !
+!  (nfabor,*)      !    !     !                                                !
+! ettp             ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the current time step         !
+! tepa             ! ra ! <-- ! particle information (real) (statis. weight..) !
+! (nbpmax,nvep)    !    !     !                                                !
+! rdevel(nrdeve    ! ra ! <-- ! dev. complementary array of reals              !
+! rtuser(nrtuse    ! ra ! <-- ! user complementary array of reals              !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -245,7 +226,7 @@ double precision ettp(nbpmax,nvp) , tepa(nbpmax,nvep)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ifac , izone, nbclas, iclas
@@ -275,12 +256,12 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET LORS DE L''ENTREE DES COND. LIM.      ',/,&
-'@    =========                                               ',/,&
-'@     MODULE LAGRANGIEN :                                    ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uslag2 DOIT ETRE COMPLETE',/,&
+'@ @@ CAUTION: STOP AT THE ENTRANCE OF THE BOUNDARY           ',/,&
+'@    ========                                                ',/,&
+'@     CONDITIONS OF THE LAGRANGIAN MODULE:                   ',/,&
+'@     THE USER SUBROUTINE uslag2 MUST BE FILLED              ',/,&
 '@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@  The calculation will not be run                           ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
@@ -289,46 +270,44 @@ endif
 
 
 !===============================================================================
-! 1.  GESTION MEMOIRE
+! 1.  Memory management
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 2. INITIALISATION
+! 2. Initialization
 !===============================================================================
 
 pis6 = pi / 6.d0
 
 !===============================================================================
-! 3. CONSTRUCTION DES ZONES FRONTIERE
+! 3. Construction of the boundary zones
 !===============================================================================
 
 
-!     DEFINITION DES ZONES FRONTIERES
-
-!     Pour le module Lagrangien, l'utilisateur definit NFRLAG zones
-!       frontieres a partir de la couleur des faces de bord, plus
-!       generalement de leurs proprietes (couleurs, groupes...),
-!       ou des conditions aux limites fixees dans usclim
-!       ou meme de leur coordonnees. Pour ce faire, on renseigne
-!       le tableau IFRLAG(NFABOR) qui donne pour
-!       chaque face de bord IFAC le numero de la zone a laquelle elle
-!       appartient IFRLAG(IFAC).
-!     Attention : il est indispensable que TOUTES les faces aient ete
-!       affectees a une zone.
-!     Le numero des zones (donc les valeurs de IFRLAG(IFAC)) est
-!       arbitrairement choisi par l'utilisateur, mais doit etre un
-!       entier strictement positif et inferieur ou egal a NFLAGM
-!       (valeur fixee en parametre dans lagpar.h).
-!     On affecte ensuite a chaque zone un type ITYLAG qui sera utilise
-!       pour imposer des conditions aux limites globales.
-
+!     Definition of the boundary zones
+!     --------------------------------
+
+!     For the Lagrangian module, the user defines nfrlag boundary zones
+!     from the color of the boundary faces, or more generally from their properties
+!     (colors, groups..) or from the boundary conditions prescribed in usclim, or
+!     even from their coordinates. To do that, we fill the ifrlag(nfabor) array
+!     which gives for every boundary face the number of the zone to which it belongs ifrlag(ifac)
+!
+!     Be careful, all the boundary faces must have been affected.
+!
+!     The number of the zones (thus the values of ifrlag(ifac)) is arbitrarily
+!     chosen by the user, but must be a positive integer and inferior or equal to
+!     nflagm (parameter prescribed in lagpar.h).
+!
+!     Afterwards, we assign to every zone a type named itylag that will be used
+!     to impose global boundary conditions.
 
 izone = -1
 
-! ---> Premiere zone, numerotee IZONE = 1 ( = couleur 10)
+! ---> First zone numbered izone=1 ( = color 10)
 CALL GETFBR('10',NLELT,LSTELT)
 !==========
 
@@ -341,7 +320,7 @@ do ilelt = 1, nlelt
 
 enddo
 
-! ---> Deuxieme zone, numerotee IZONE = 2 ( = partie des couleur 4)
+! ---> Second zone numbered izone=2 ( = part of color 4)
 CALL GETFBR('4 and Y < 1.0',NLELT,LSTELT)
 !==========
 
@@ -354,7 +333,7 @@ do ilelt = 1, nlelt
 
 enddo
 
-! ---> Troisieme zone, numerotee IZONE = 4 ( = entree phase 1)
+! ---> Third zone numbered izone=3 ( = inlet phase 1)
 do ifac = 1, nfabor
   if(itypfb(ifac,1).eq.ientre) then
     izone        = 4
@@ -362,7 +341,7 @@ do ifac = 1, nfabor
   endif
 enddo
 
-! ---> Nieme zone, numerotee IZONE = 5 ( = couleur 3)
+! ---> Nth zone numbered izone=5 (= color 3)
 CALL GETFBR('3',NLELT,LSTELT)
 !==========
 
@@ -377,138 +356,138 @@ enddo
 
 
 !===============================================================================
-! 4. INJECTION PAR CLASSES DE PARTICULES DANS LE DOMAINE DE CALCUL
+! 4. Injection per particle class into the calculation domain
 !===============================================================================
 
-!   POUR DONNER LES INFORMATIONS SUR LES CLASSES DE PARTICULES,
-!   ON PROCEDE EN DEUX ETAPES :
+!   TO PROVIDE INFORMATION ABOUT THE PARTICLE CLASSES,
+!   WE FOLLOW A TWO-STEP PROCEDURE:
 
-!   1) TOUT D'ABORD, ON RENSEIGNE LE NOMBRE DE CLASSES DE PARTICULES
-!      PAR ZONE FRONTIERE : IUSNCL (ce nombre est nul par defaut)
+!   1) FIRST, THE NUMBER OF PARTICLE CLASSES IS PRESCRIBED
+!      FOR EACH BOUNDARY ZONE: IUSNCL (by default, this parameter is equal to zero)
 
-!   2) ENSUITE PAR ZONE DE COULEUR ET PAR CLASSE,
-!      ON DONNE LES CARACTERISTIQUES D'ENTREE ET
-!      LES CARACTERISTIQUE PHYSIQUES DES PARTICULES
+!   2) AFTERWARDS, FOR EACH ZONE AND FOR EACH CLASS, WE PRESCRIBE
+!      THE PHYSICAL PROPERTIES OF THE PARTICLES
+!
 
 
 
 
-! --> Nombre de classes de particules entrantes
-!   On renseigne ici le nombre de classes pour toutes les zones
-!     identifiees precedemment.
-!   Par defaut le nombre de classes de particules est nul.
-!   Le nombre max de classes est NCLAGM donne dans lagpar
+! --> Number of particle classes entering the domain
+!   We assign here the number of classes for each zone previously identified.
+!
+!   This number is zero by default.
+!   The maximal number of classes is nclagm (defined in lagpar.h)
 
-! ---> Premiere zone, numerotee IZONE = 1 : 1 classe injectee
+! ---> First zone numbered izone = 1: 1 class injected
 izone     = 1
 nbclas    = 1
 iusncl(izone) = nbclas
 
-! ---> Deuxieme zone, numerotee IZONE = 2 : 0 classe injectee
+! ---> Second zone numbered izone = 2: 0 class injected
 izone     = 2
 nbclas    = 0
 iusncl(izone) = nbclas
 
-! ---> Troisieme zone, numerotee IZONE = 4 : 0 classe injectee
+! ---> Third zone numbered izone = 4 : 0 class injected
 izone     = 4
 nbclas    = 0
 iusncl(izone) = nbclas
 
-! ---> Nieme zone,     numerotee IZONE = 5 : 0 classe injectee
+! ---> Zone numbered izone = 5 : 0 class injected
 izone     = 5
 nbclas    = 0
 iusncl(izone) = nbclas
 
 
-! --> Pour chaque classe de particules associee a une zone,
-!     il faut fournir des informations.
+! --> For every class associated with a zone,
+!     we give the followong information.
 
 
-!     IUSNCL nbr de classes par zones
-!     IUSCLB conditions au bord pour les particules
-!     = IENTRL -> zone d'injection de particules
-!     = ISORTL -> sortie du domaine
-!     = IREBOL -> rebond des particules
-!     = IDEPO1 -> deposition definitive
-!     = IDEPO2 -> deposition definitive mais la particule reste en
-!                 memoire (utile si IENSI2 = 1 uniquement)
-!     = IDEPO3 -> deposition et remise en suspension possible
-!                 suivant les condition de l'ecoulement
-!     = IDEPFA -> deposition de la particule avec force d'attachement,
-!                 vitesse conservee et re-entrainement possible
-!                 (Possible si LADLVO = 1 )
-!     = IENCRL -> encrassement (Charbon uniquement IPHYLA = 2)
-!     = JBORD1 -> interaction part/frontiere utilisateur (cf. USLABO)
-!     = JBORD2 -> interaction part/frontiere utilisateur (cf. USLABO)
-!     = JBORD3 -> interaction part/frontiere utilisateur (cf. USLABO)
-!     = JBORD4 -> interaction part/frontiere utilisateur (cf. USLABO)
-!     = JBORD5 -> interaction part/frontiere utilisateur (cf. USLABO)
+!     iusncl number of classes per zone
+!     iusclb boundary conditions for the particles
+!     = ientrl -> zone of particle inlet
+!     = isortl -> particle outlet
+!     = irebol -> rebound of the particles
+!     = idepo1 -> definitive deposition
+!     = idepo2 -> definitive deposition, but the particle remains in memory
+!                 (useful only if iensi2 = 1)
+!     = idepo3 -> deposition and resuspension possible
+!                 following the conditions of the flow
+!     = idepfa -> deposition of the particle with attachment force,
+!                 the velocity is conserved, and resuspension is possible
+!                 (Possible if ladlvo = 1 )
+!     = iencrl -> fouling (coal only iphyla = 2)
+!     = jbord1 -> user-defined particle/boundary interaction (cf. uslabo)
+!     = jbord2 -> user-defined particle/boundary interaction (cf. uslabo)
+!     = jbord3 -> user-defined particle/boundary interaction (cf. uslabo)
+!     = jbord4 -> user-defined particle/boundary interaction (cf. uslabo)
+!     = jbord5 -> user-defined particle/boundary interaction (cf. uslabo)
 
 
 
-!     Tableau IUSLAG :
+!     Array iuslag :
 !     ================
-!        IJNBP : nbr de part par classe et zones
-!        IJFRE : frequence d'injection, si la frequence est nulle alors
-!                  il y a injection uniquement a la 1ere iteration absolue
-!        ICLST : numero de groupe auquel appartient la particule
-!                 (uniquement si on souhaite des statistiques par groupe)
-!        IJUVW : type de condition vitesse
-!                  = -1 vitesse fluide imposee
-!                  =  0 vitesse imposee selon la direction normale a la face
-!                        de bord et de norme RUSLAG(ICLAS,IZONE,IUNO)
-!                  =  1 vitesse imposee : on donne RUSLAG(ICLAS,IZONE,IUPT)
-!                                                  RUSLAG(ICLAS,IZONE,IVPT)
-!                                                  RUSLAG(ICLAS,IZONE,IWPT)
-!                  =  2 profil utilisateur
-!        IJPRTP : type de condition temperature
-!                  =  1 temperature imposee : on donne RUSLAG(ICLAS,IZONE,ITPT)
-!                  =  2 profil utilisateur
-!        IJPRDP : type de condition diametre
-!                  =  1 vitesse imposee : on donne RUSLAG(ICLAS,IZONE,IDPT)
-!                                                  RUSLAG(ICLAS,IZONE,IVDPT)
-!                  =  2 profil utilisateur
-!        INUCHL : numero du charbon de la particule (uniquement si IPHYLA=2)
-
-!     Tableau RUSLAG :
-!     ================
-!        IUNO  : norme de la vitesse (m/s)
-!        IUPT  : U par classe et zones (m/s)
-!        IVPT  : V par classe et zones (m/s)
-!        IWPT  : W par classe et zones (m/s)
-!        IDEBT : debit massique (kg/s)
-!        IPOIT : poids statistique (nombre d'echantillons) associe
-!                  a la particule (il est calcule automatiquement pour
-!                  respecter un debit massique ce dernier est fournis)
-
-!        En fonction de la physique
-!          IDPT   : diametre (m)
-!          IVDPT  : ecart-type du diametre (m)
-!          ITPT   : temperature en degres Celsius (Pas d'enthalpie)
-!          ICPT   : chaleur specifique (J/kg/K)
-!          IEPSI  : emissivite (si =0 alors aucun effet radiatif n'est pris en compte)
-!          IROPT  : masse volumique (kg/m3)
-
-!          Si Charbon (IPHYLA=2)
-!            IHPT  : temperature en degres Celsius (Pas d'enthalpie)
-!            IMCHT : masse de charbon reactif (kg)
-!            IMCKT : masse de coke (kg)
-
-
-! ---> Premiere zone, numerotee IZONE = 1 (NBCLAS classes)
-!        IUSCLB : adherence de la particule a une face de paroi
-!        IJNBP  : 10 particules par classe,
-!        IJFRE  : injection tous les 2 pas de temps
-!        IJUVW, IUPT, IVPT, IWPT : vitesse imposee a 1.1D0, 0.0D0, 0.0D0
-!        ICPT   : cp de 10000
-!        ITPT   : temperature de 25 degres Celsius
-!        IDPT   : diametre de 50.E-6 m
-!        IEPSI  : emissivite a 0.7
-!        IVDPT  : diametre constant ==> Ecart-type nul
-!        IROPT  : masse volumique
-!        IPOIT  : poids statistique (nombre de particules physiques
-!                 represente par une particule-echantillon statistique)
-!        IDEBT  : debit massique
+!        ijnbp : number of particles per class and per zone
+!        ijfre : injection frequency. If ijfre = 0, then the injection
+!                occurs only at the first absolute iteration.
+!        iclst : number of the group to which the particle belongs
+!                (only if one wishes to calculate statistics per group)
+!        ijuvw : type of condition on the velocity
+!                  = -1 imposed flow velocity
+!                  =  0 imposed velocity along the normal direction of the
+!                      boundary face, with norm equal to RUSLAG(ICLAS,IZONE,IUNO)
+!                  =  1 imposed velocity: we prescribe   RUSLAG(ICLAS,IZONE,IUPT)
+!                                                        RUSLAG(ICLAS,IZONE,IVPT)
+!                                                        RUSLAG(ICLAS,IZONE,IWPT)
+!                  =  2 user-defined profile
+!        ijprtp : type of temperature condition
+!                  =  1 imposed temperature: we prescribe RUSLAG(ICLAS,IZONE,ITPT)
+!                  =  2 user-defined profile
+!        ijprdp : type of diameter condition
+!                  =  1 imposed diameter: we prescribe  RUSLAG(ICLAS,IZONE,IDPT)
+!                                                       RUSLAG(ICLAS,IZONE,IVDPT)
+!                  =  2 user-defined profile
+!        inuchl : number of the coal of the particle (only if iphyla = 2)
+
+!     Array ruslag :
+!     ===============
+!        iuno  : Norm of the velocity (m/s)
+!        iupt  : Velocity along the X axis, for each class and for each zone (m/s)
+!        ivpt  : Velocity along the Y axis, for each class and for each zone (m/s)
+!        iwpt  : Velocity along the Z axis, for each class and for each zone (m/s)
+!        idebt : Mass flow rate (kg/s)
+!        ipoit : Statistical weight (number of samples) associated
+!                to the particle (automatically computed to respect a mass
+!                flow rate if it is defined)
+
+!        Physical characteristics:
+!          idpt   : diameter (m)
+!          ivdpt  : standard deviation of the diameter (m)
+!          itpt   : temperature in Celsius degress (no enthalpy)
+!          icpt   : specific heat (J/kg/K)
+!          iepsi  : emissivity (if =0 then no radiative effect is taken into account)
+!          iropt  : density (kg/m3)
+
+!         If coal (iphyla=2)
+!            ihpt  : temperature in Celsius degress (no enthalpy)
+!            imcht : mass of reactive coal (kg)
+!            imckt : masse of coke (kg)
+
+
+! ---> EXAMPLE : First zone, numbered IZONE = 1 (NBCLAS classes)
+!        IUSCLB : adherence of the particle to a boundary face
+!        IJNBP  : 10 particles for each class,
+!        IJFRE  : injection every other time step
+!        IJUVW, IUPT, IVPT, IWPT : imposed velocity on 1.1D0, 0.0D0, 0.0D0
+!        ICPT   : cp equal to 10000
+!        ITPT   : temperature equal to 25 Celsius degress
+!        IDPT   : diameter equal to 50.E-6 m
+!        IEPSI  : emissivity equal to 0.7
+!        IVDPT  : constant diameter ==> standard deviation null
+!        IROPT  : density
+!        IPOIT  : statistical weight (number of physical particles
+!                 represented by one statistical particle)
+!        IDEBT  : mass flow rate
 
 
 izone     = 1
@@ -527,28 +506,27 @@ do iclas  = 1, nbclas
   ruslag (iclas,izone,iupt)  = 1.1d0
   ruslag (iclas,izone,ivpt)  = 0.0d0
   ruslag (iclas,izone,iwpt)  = 0.0d0
-
   iuslag (iclas,izone,ijprpd)= 1
   ruslag (iclas,izone,ipoit) = 1.d0
   ruslag (iclas,izone,idebt) = 0.d0
 
-!    Si physique simple
+!    if the physics is " simple"
 
   if ( iphyla.eq.0 .or. iphyla.eq.1 ) then
 
-!        Diametre et ecart-type du diametre
+!        Mean value and standard deviation of the diameter
 
     iuslag (iclas,izone,ijprdp)= 1
     ruslag (iclas,izone,idpt)  = 50.d-6
     ruslag (iclas,izone,ivdpt) = 0.d0
 
-!        Masse Volumique
+!        Density
 
     ruslag(iclas,izone,iropt) = 2500.d0
 
     if ( iphyla.eq.1 ) then
 
-!        Temperature et Cp
+!        Temperature and Cp
 
       if ( itpvar.eq.1 ) then
         iuslag (iclas,izone,ijprtp) = 1
@@ -560,52 +538,49 @@ do iclas  = 1, nbclas
 
     endif
 
-!    Charbon
+!    Coal
 
   else if ( iphyla.eq.2 ) then
 
-!    ATTENTION : 1) Pour transporter et bruler des particules de
-!                   charbon en Lagrangien, une physique particuliere
-!                   liee au charbon pulverise doit etre active pour
-!                   la phase porteuse.
-
-!                2) Les proprietes physiques des grains de charbon
-!                   sont connus a partir du fichier de thermochimie :
-!                                      dp_FCP.
-
-!                3) Pour la classe Lagrangienne courante ICLAS, et pour
-!                   la zone frontiere NB courante, on donne aux grains
-!                   de charbon les proprietes du charbon ICHA de classe
-!                   ICLAS lu dans le fichier dp_FCP.
-
-!                4) ICHA : numero du Charbon compris entre 1 et NCHARB
-!                   defini dans le fichier dp_FCP par l'utilisateur.
-!                   (NCHARB = NCHARM = 3 au maximum)
+!    CAUTION :   1) To transport and burn coal particles with the Lagrangian
+!                   module, a specific physics for the dispersed phase must
+!                   be activated for the carrier phase.
+!
+!                2) The physical properties of the coal particles are known
+!                   from the thermo-chemical file: dp_FCP
+!
+!                3) For the current phase ICLAS, and for the current boundary zone
+!                   NB, we assign to the coal particles the properties of the coal ICHA
+!                   of the icha class taken from the file dp_FCP.
+!
+!                4) icha : number of the coal between 1 and ncharb defined by the user
+!                   in the file dp_FCP.
+!
 
 
     icha = ichcor(iclas)
     temp = 800.d0
 
-!        Numero du charbon
+!        Number of the coal
 
     iuslag(iclas,izone,inuchl) = icha
 
-!        Temperature et Cp
+!        Temperature and Cp
 
     ruslag(iclas,izone,ihpt) = temp
     ruslag(iclas,izone,icpt) = cp2ch(icha)
 
-!        Diametre et son ecart-type (nul)
+!        Mean value and standard deviation of the diameter
 
     ruslag (iclas,izone,idpt)  = diam20(iclas)
     ruslag (iclas,izone,ivdpt) = 0.d0
 
-!        Masse Volumique
+!        Density
 
     ruslag(iclas,izone,iropt) =  rho0ch(icha)
 
-!        Masse de charbon actif et
-!        Masse de Coke (nulle si le charbon n'a jamais brule)
+!        Mass of reactive coal and
+!        mass of coke (null if the coal has never burnt)
 
     mp0 = pis6 * ( ruslag(iclas,izone,idpt)**3 )                  &
                * ruslag(iclas,izone,iropt)
@@ -616,29 +591,25 @@ do iclas  = 1, nbclas
 
 enddo
 
-! ---> Deuxieme zone, numerotee IZONE = 2 (NBCLAS classes)
-!        IUSCLB : rebond de la particule
+! ---> Second zone, numbered izone = 2
+!        IUSCLB : rebound of the particle
 
 izone     = 2
 iusclb (izone)         =  irebol
 
 
-izone     = 4
-iusclb (izone)         =  irebol
-
-
-! de meme pour les autres zones ...
+! same procedure for the other zones...
 
 !===============================================================================
 
 !--------
-! FORMATS
+! Formats
 !--------
 
 !----
-! FIN
+! End
 !----
 
 return
 
-end
+end subroutine
diff --git a/users/lagr/uslain.f90 b/users/lagr/uslain.f90
index 14de085..9304904 100644
--- a/users/lagr/uslain.f90
+++ b/users/lagr/uslain.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,135 +50,133 @@ subroutine uslain &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
-!   -------------------------------------
-
-!    SOUS-PROGRAMME UTILISATEUR (INTERVENTION NON OBLIGATOIRE)
-
-!    ROUTINE UTILISATEUR POUR LES CONDITIONS AUX LIMITES RELATIVES
-!      AUX PARTICULES (ENTREE ET TRAITEMENT AUX AUTRES BORDS)
-
-!    CE SOUS-PROGRAMME EST APPELE
-!      APRES INITIALISATION DES TABLEAUX ETTP TEPA ET ITEPA
-!      POUR LES NOUVELLES PARTICULES AFIN DE LES MODIFIER POUR
-!      INJECTER DES PROFILS DE PARTICULES.
-
+! Purpose:
+! --------
+!
+! User subroutine of the Lagrangian particle-tracking module:
+! -----------------------------------------
+!
+! User subroutine (non-mandatory intervention)
+
+! User subroutine for the boundary conditions for the particles
+! (inlet and treatment for the other boundaries)
+!
+! This routine is called after the initialization of the
+! ettp, tepa and itepa arrays for the new particles in order to modify them
+! to inject new particle profiles.
+!
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
-! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
-! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nptnew           ! e  ! <-- ! nombre total de nouvelles particules           !
-!                  !    !     ! pour toutes les zones d'injection              !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-!                  !    !     ! le module lagrangien                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+!                  !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! maximum number of particles allowed            !
+! nvp              ! i  ! <-- ! number of particle variables                   !
+! nvp1             ! i  ! <-- ! nvp minus position, fluid and part. velocities !
+! nvep             ! i  ! <-- ! number of particle properties (integer)        !
+! nivep            ! i  ! <-- ! number of particle properties (integer)        !
+! ntersl           ! i  ! <-- ! number of source terms of return coupling      !
+! nvlsta           ! i  ! <-- ! nb of Lagrangian statistical variables         !
+! nvisbr           ! i  ! <-- ! number of boundary statistics                  !
+! nptnew           ! i  ! <-- ! total number of new particles for all the      !
+!                  !    !     ! injection zones                                !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+!                  !    !     !                                                !
+! ifacel           ! ia ! <-- ! interior faces -> cells connectivity           !
 ! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
+! ifabor           ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
+! ifmfbr           ! ia ! <-- ! boundary face family numbers                   !
 ! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
+! ifmcel           ! ia ! <-- ! cell family numbers                            !
 ! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
 !  (nfml,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac                      !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
+! ipnfac           ! ia ! <-- ! interior faces -> vertices index (optional)    !
+!   (lndfac)       !    !     !                                                !
+! nodfac           ! ia ! <-- ! interior faces -> vertices list (optional)     !
 !   (nfac+1)       !    !     !                                                !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr                      !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
+! ipnfbr           ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+!   (lndfbr)       !    !     !                                                !
+! nodfbr           ! ia ! <-- ! boundary faces -> vertices list  (optional)    !
 !   (nfabor+1)     !    !     !                                                !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
+! itrifb(nfabor    ! ia ! <-- ! indirection for the sorting of the boundary    !
+!  nphas      )    !    !     ! faces                                          !
+! itypfb(nfabor    ! ia ! <-- ! type of the boundary faces                     !
 !  nphas      )    !    !     !                                                !
-! ifrlag(nfabor    ! te ! --> ! type des faces de bord lagrangien              !
-! itepa            ! te ! <-- ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! injfac(nptnew    ! te ! <-- ! numero de la face de bord d'injection          !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! ifrlag(nfabor    ! ia ! --> ! type of the Lagrangian boundary faces          !
+! itepa            ! ia ! <-- ! particle information (integers)                !
+! (nbpmax,nivep    !    !     !                                                !
+! injfac(nptnew    ! ia ! <-- ! number of the injection boundary face          !
+! idevel(nideve    ! ia ! <-- ! complementary dev. array of integers           !
+! ituser(nituse    ! ia ! <-- ! complementary user array of integers           !
+! ia(*)            ! ia ! --- ! macro array of integers                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
+! volume           ! ra ! <-- ! cell volumes                                   !
 ! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant prec)                     !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! tepa             ! tr ! <-- ! info particulaires (reels)                     !
-! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! vagaus           ! tr ! --> ! variables aleatoires gaussiennes               !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtpa             ! ra ! <-- ! transported variables at the previous timestep !
+! (ncelet,*)       !    !     !                                                !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! coefa, coefb     ! ra ! <-- ! boundary conditions at the boundary faces      !
+!  (nfabor,*)      !    !     !                                                !
+! ettp             ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the current time step         !
+! tepa             ! ra ! <-- ! particle information (real) (statis. weight..) !
+! (nbpmax,nvep)    !    !     !                                                !
+! vagaus           ! ra ! --> ! Gaussian random variables                      !
 !(nbpmax,nvgaus    !    !     !                                                !
-! w1..w3(ncelet    ! tr ! --- ! tableaux de travail                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1..w3(ncelet    ! ra ! --- ! work arrays                                    !
+! rdevel(nrdeve    ! ra ! <-- ! dev. complementary array of reals              !
+! rtuser(nrtuse    ! ra ! <-- ! user complementary array of reals              !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!  Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -232,14 +230,14 @@ double precision w1(ncelet) ,  w2(ncelet) ,  w3(ncelet)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iclas , izone , ifac
 integer          ii , ip , npt , npar1 , npar2, ipnorm
 
-! VARIABLES LOCALES UTILISATEUR
-!     (VGAUSS est dimensionne a 3, mais 2 suffirait ici)
+! User-defined local variables
+! (the dimension of vgauss is 3, but 2 would be sufficient here)
 
 double precision vgauss(3)
 
@@ -249,7 +247,7 @@ double precision vgauss(3)
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
 
-!     Par defaut on ne les modifie pas.
+!     By default, we do not modify them
 
 if(1.eq.1) return
 
@@ -259,64 +257,63 @@ if(1.eq.1) return
 if (nbpnew.eq.0) return
 
 !===============================================================================
-! 1. GESTION MEMOIRE
+! 1. Memory management
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 2. INITIALISATIONS
+! 2. Initializations
 !===============================================================================
 
 
 
 !===============================================================================
-! 3. MODIFICATION DES DONNEES PARTICULAIRES DES NOUVELLES PARTICULES
-!    (PROFILS D'INJECTION, REPLACEMENT DU POINT D'INJECTION,
-!     MODIFICATION DES POIDS STATISTIQUES, CORRECTION DU DIAMETRE
-!     SI OPTION ECART-TYPE ACTIVEE...)
+! 3. Modification of properties of the new particles (injection profiles,
+!    position of the injection point, statistical
+!    weights, correction of the diameter if the standard-deviation option
+!    is activated.)
 !===============================================================================
 
-!       LES MODIFICATIONS DES DONNEES PARTICULAIRES
-!       INTERVIENNENT APRES TOUTES LES INITIALISATIONS LIEES
-!       A L'INJECTION DES NOUVELLES PARTICULES, MAIS AVANT LE
-!       TRAITEMENT DE L'INJECTION CONTINUE (IL EST DONC POSSIBLE
-!       D'IMPOSER UN PROFIL D'INJECTION AVEC OPTION D'INJECTION
-!       CONTINUE).
+!    These modifications occur after all the initializations related to
+!    the particle injection, but before the treatment of the continuous
+!    injection: it is thus possible to impose an injection profile with
+!    the continous-injection option.
+!
 
-!   reinitialisation du compteur de nouvelles particules
+!   reinitialization of the counter of the new particles
 npt = nbpart
 
-!     pour chaque zone de bord:
+!   for each boundary zone:
 do ii = 1,nfrlag
   izone = ilflag(ii)
 
-!       pour chaque classe :
+!       for each class:
   do iclas = 1, iusncl(izone)
 
-!         si de nouvelles particules doivent entrer :
+!         if new particles must enter the domain:
     if (mod(ntcabs,iuslag(iclas,izone,ijfre)).eq.0) then
 
       do ip = npt+1 , npt+iuslag(iclas,izone,ijnbp)
 
-!         NUMERO DE LA FACE DE BORD D'INJECTION D'ORIGINE
+!         number of the original boundary face of injection
 
       ifac = injfac(ip)
-
-!         EXEMPLE DE MODIFICATION DES VITESSES D'INJECTION
-!           EN FONCTION DE LA POSITION D'INJECTION
-
-!     Appeler par exemple votre propre sous-programme
-!       qui fournirait les trois composantes de la vitesse instantanee
-!       ETTP(IP,JUP),ETTP(IP,JVP),ETTP(IP,JWP)
-!       en fonction de ETTP(IP,JZP) (interpolation par exemple)
-!     Plus simplement on peut aussi imaginer de fournir les trois
-!       composantes de la vitesse instantanee, sous la forme d'une
-!       valeur moyenne (prise arbitrairement egale a (2,0,0) m/s ici)
-!       et d'une valeur fluctuante calculee a partir d'une fluctuation
-!       (prise arbitrairement egale a 0,2 m/s ici pour les composantes
-!       1 et 3) :
+!
+!-----------------------------------------------------------
+!        EXAMPLE OF MODIFICATION OF THE INJECTION VELOCITY
+!        WITH RESPECT TO THE INJECTION POSITION
+!-----------------------------------------------------------
+!    For instance, the user can call his own subroutine that provides
+!    the three components of the instantaneous velocities ettp(ip,jup)
+!    ettp(ip,jvp) and  ettp(ip,jwp) with respect to  ettp(ip,jzp)
+!    (through interpolation for instance). More simply, the user can provide
+!    the three components of the instantaneous velocities, under the form
+!    of a mean value (taken arbitrarily here equal to (2,0,0) m/s) added
+!    to a fluctuating value (equal here to 0,2 m/s for the 1st and 3rd components)
+!
+!
         ipnorm = 2
         call normalen(ipnorm,vgauss)
         ettp(ip,jup) = 2.d0 + vgauss(1) * 0.2d0
@@ -333,30 +330,24 @@ do ii = 1,nfrlag
 enddo
 
 !===============================================================================
-! 4. SIMULATION DES VITESSES TURBULENTES FLUIDES INSTANTANNEES VUES
-!    PAR LES PARTICULES SOLIDES LE LONG DE LEUR TRAJECTOIRE.
+! 4. SIMULATION OF THE INSTANTANEOUS TURBULENT FLUID FLOW VELOCITIES SEEN
+!    BY THE SOLID PARTICLES ALONG THEIR TRAJECTORIES.
 !===============================================================================
-
-!    En entrant dans ce sous-programme, les tableaux :
-!         ETTP(IP,JUF)
-!         ETTP(IP,JVF)
-!         ETTP(IP,JWF)
-!      contiennent les composantes de la vitesse instantanee
-!      (partie fluctuante + partie moyenne) du fluide vu
-!      par les particules.
-
-!    Lorsque la vitesse du fluide vu est modifiee ci-dessus,
-!      le plus souvent l'utilisateur n'en connait que
-!      la partie moyenne. Dans certaines configurations d'ecoulement
-!      et d'injection des particules, il peut parfois s'averer
-!      necessaire d'en reconstruire la partie turbulente.
-!      C'est l'objet de l'appel au sous-programme suivant.
-
-!    Attention : il ne faut reconstruire cette composante turbulente
-!      que sur les vitesses du fluide vu modifiees.
-
-!    La reconstruction est desactivee ici et doit etre adaptee au
-!      cas traite.
+!
+! Entering this subroutine, the ettp(ip,juf) ettp(ip,jvf) and ettp(ip,jwf) arrays
+! are filled with the components of the instantaneous velocity (fluctuation + mean value)
+! seen by the particles
+!
+! When the velocity of the flow is modified just above, most of the time
+! the user knows only the mean value. In some flow configurations and some
+! injection conditions, it may be necessary to reconstruct the fluctuating part.
+! That is why the following routine is called.
+!
+! Caution: this turbulent component must be reconstructed only on the modified
+! velocities of the flow seen.
+!
+! The reconstruction is unactivated here and must be adapted to the case.
+!
 
 if ( 1.eq.0 ) then
 
@@ -382,13 +373,13 @@ endif
 !===============================================================================
 
 !--------
-! FORMATS
+! Formats
 !--------
 
 !----
-! FIN
+! End
 !----
 
 return
 
-end
+end subroutine
diff --git a/users/lagr/uslapr.f90 b/users/lagr/uslapr.f90
index dc165f8..027fc13 100644
--- a/users/lagr/uslapr.f90
+++ b/users/lagr/uslapr.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -52,146 +52,142 @@ subroutine uslapr &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
+! Purpose:
 ! ----------
 
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
+!   Subroutine of the Lagrangian particle-tracking module:
 !   -------------------------------------
 
-!    SOUS-PROGRAMME UTILISATEUR
-
-!    ROUTINE UTILISATEUR POUR LES CONDITIONS AUX LIMITES RELATIVES
-!      AUX PARTICULES (ENTREE ET TRAITEMENT AUX AUTRES BORDS)
-!         PERMET D'IMPOSER LES VALEURS DE
-!           - VITESSE
-!           - DIAMETRE
-!           - TEMPERATURE
-!         POUR LA PARTICULE TRAITER
-!    SI IDVAR = 0 ===> ON RECUPERE LE TAUX DE PRESENCE
-!    SI IDVAR = 1 ===> ON RECUPERE LES 3 COMPOSANTES DE LA VITESSE
-!    SI IDVAR = 2 ===> ON RECUPERE LE DIAMETRE
-!    SI IDVAR = 3 ===> ON RECUPERE LA TEMPERATURE
+!   User subroutine for the boundary conditions associated to
+!   the particles (inlet and treatment of the other boundaries)
+!
+!   It allows to impose the values of the velocity, the diameter
+!   and the temperature for the treated particle.
+!
+!   if idvar = 0 ==> the volume fraction is retrieved
+!   if idvar = 1 ==> the 3 components of the velocity are retrieved
+!   if idvar = 2 ==> the diameter is retrieved
+!   if idvar = 3 ==> the temperature is retrieved
 
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! idvar            ! e  ! <-- ! type de la(es) valeur(s) a calculer            !
-! iepart           ! e  ! <-- ! numero de la cellule de la particule           !
-! izone            ! e  ! <-- ! numero de la zone de la particule              !
-! iclass           ! e  ! <-- ! numero de la classe de la particule            !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
-! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
-! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-!                  !    !     ! le module lagrangien                           !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! idvar            ! i  ! <-- ! type of the value(s) ta calculate              !
+! iepart           ! i  ! <-- ! number of the particle cell                    !
+! izone            ! i  ! <-- ! number of the particle zone                    !
+! iclass           ! i  ! <-- ! number of the particle class                   !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+!                  !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! maximum number of particles allowed            !
+! nvp              ! i  ! <-- ! number of particle variables                   !
+! nvp1             ! i  ! <-- ! nvp minus position, fluid and part. velocities !
+! nvep             ! i  ! <-- ! number of particle properties (integer)        !
+! nivep            ! i  ! <-- ! number of particle properties (integer)        !
+! ntersl           ! i  ! <-- ! number of source terms of return coupling      !
+! nvlsta           ! i  ! <-- ! nb of Lagrangian statistical variables         !
+! nvisbr           ! i  ! <-- ! number of boundary statistics                  !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+!                  !    !     !                                                !
+! ifacel           ! ia ! <-- ! interior faces -> cells connectivity           !
 ! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
+! ifabor           ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
+! ifmfbr           ! ia ! <-- ! boundary face family numbers                   !
 ! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
+! ifmcel           ! ia ! <-- ! cell family numbers                            !
 ! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
 !  (nfml,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac                      !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
+! ipnfac           ! ia ! <-- ! interior faces -> vertices index (optional)    !
+!   (lndfac)       !    !     !                                                !
+! nodfac           ! ia ! <-- ! interior faces -> vertices list (optional)     !
 !   (nfac+1)       !    !     !                                                !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr                      !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
+! ipnfbr           ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+!   (lndfbr)       !    !     !                                                !
+! nodfbr           ! ia ! <-- ! boundary faces -> vertices list  (optional)    !
 !   (nfabor+1)     !    !     !                                                !
-! itrifb(nfabor    ! te ! <-- ! indirection pour tri des faces de brd          !
-!  nphas      )    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
+! itrifb(nfabor    ! ia ! <-- ! indirection for the sorting of the             !
+!  nphas      )    !    !     ! boundary faces                                 !
+! itypfb(nfabor    ! ia ! <-- ! type of the boundary faces                     !
 !  nphas      )    !    !     !                                                !
-! ifrlag(nfabor    ! te ! --> ! type des faces de bord lagrangien              !
-! itepa            ! te ! <-- ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xpart            !  r ! <-- ! coordonnees x de la particule                  !
-! ypart            !  r ! <-- ! coordonnees y de la particule                  !
-! zpart            !  r ! <-- ! coordonnees z de la particule                  !
-! tvpart           !  r !  <- ! valeur du taux de presence                     !
-! upart            !  r !  <- ! coordonnees x de la vitesse particule          !
-! vpart            !  r !  <- ! coordonnees y de la vitesse particule          !
-! zpart            !  r !  <- ! coordonnees z de la vitesse particule          !
-! dpart            !  r !  <- ! diametre de la particule                       !
-! dpart            !  r !  <- ! temperature de la particule                    !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! ifrlag(nfabor    ! ia ! --> ! type of the Lagrangian boundary faces          !
+! itepa            ! ia ! <-- ! particle information (integers)                !
+! (nbpmax,nivep    !    !     !                                                !
+! idevel(nideve    ! ia ! <-- ! complementary dev. array of integers           !
+! ituser(nituse    ! ia ! <-- ! complementary user array of integers           !
+! ia(*)            ! ia ! --- ! macro array of integers                        !
+! xxpart           !  r ! <-- ! x-coordinate of the particle                   !
+! yypart           !  r ! <-- ! y-coordinate of the particle                   !
+! zzpart           !  r ! <-- ! z-coordinate of the particle                   !
+! tvpart           !  r ! <-- ! value of the volume fraction                   !
+! uupart           !  r ! <-- ! x-component of particle velocity               !
+! vvpart           !  r ! <-- ! y-component of particle velocity               !
+! wwpart           !  r ! <-- ! z-component of particle velocity               !
+! ddpart           !  r ! <-- ! particle diameter                              !
+! ttpart           !  r ! <-- ! particle temperature                           !                                         !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
+! volume           ! ra ! <-- ! cell volumes                                   !
 ! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant prec)                     !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! tepa             ! tr ! <-- ! info particulaires (reels)                     !
-! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtpa             ! ra ! <-- ! transported variables at the previous          !
+! (ncelet,*)       !    !     ! time step                                      !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! coefa, coefb     ! ra ! <-- ! boundary conditions at the boundary faces      !
+!  (nfabor,*)      !    !     !                                                !
+! ettp             ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the current time step         !
+! tepa             ! ra ! <-- ! particle information (real) (statis. weight..) !
+! (nbpmax,nvep)    !    !     !                                                !
+! rdevel(nrdeve    ! ra ! <-- ! dev. complementary array of reals              !
+! rtuser(nrtuse    ! ra ! <-- ! user complementary array of reals              !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -248,7 +244,7 @@ double precision ettp(nbpmax,nvp) , tepa(nbpmax,nvep)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 
@@ -257,10 +253,12 @@ double precision pis6
 !===============================================================================
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
+
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     If a file from the GUI is used, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
 !===============================================================================
 
 if(1.eq.1) then
@@ -287,20 +285,20 @@ endif
 
 
 !===============================================================================
-! 1.  GESTION MEMOIRE
+! 1. Memory management
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 2. INITIALISATION
+! 2. Initialization
 !===============================================================================
 
 pis6 = pi / 6.d0
 
 !===============================================================================
-! 3. PROFIL POUR LE TAUX DE PRESENCE
+! 3. Profile for the volume fraction
 !===============================================================================
 
 if (idvar .eq. 0) then
@@ -310,7 +308,7 @@ if (idvar .eq. 0) then
 endif
 
 !===============================================================================
-! 4. PROFIL POUR LA VITESSE
+! 4. Velocity profile
 !===============================================================================
 
 if (idvar .eq. 1) then
@@ -322,7 +320,7 @@ if (idvar .eq. 1) then
 endif
 
 !===============================================================================
-! 5. PROFIL POUR LE DIAMETRE
+! 5. Diameter profile
 !===============================================================================
 
 if (idvar .eq. 2) then
@@ -333,7 +331,7 @@ endif
 
 
 !===============================================================================
-! 6. PROFIL POUR LA TEMPERATURE
+! 6. Temperature profile
 !===============================================================================
 
 if (idvar .eq. 3) then
@@ -345,13 +343,13 @@ endif
 !===============================================================================
 
 !--------
-! FORMATS
+! Formats
 !--------
 
 !----
-! FIN
+! End
 !----
 
 return
 
-end
+end subroutine
diff --git a/users/lagr/uslaru.f90 b/users/lagr/uslaru.f90
index 8414669..60561c5 100644
--- a/users/lagr/uslaru.f90
+++ b/users/lagr/uslaru.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -51,129 +51,128 @@ subroutine uslaru &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
+! Purpose:
+! --------
+!
+! User subroutine of the Lagrangian particle-tracking module:
+! -----------------------------------------
+!
+! User subroutine (non-mandatory intervention)
 
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
-!   -------------------------------------
-
-!    SOUS-PROGRAMME UTILISATEUR (INTERVENTION NON OBLIGATOIRE)
-
-!    Calcul de la fonction d'importance pour la Roulette Russe
+! Calculation of the function of significance for the Russian roulette
 
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
-! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
-! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+!                  !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! maximum number of particles allowed            !
+! nvp              ! i  ! <-- ! number of particle variables                   !
+! nvp1             ! i  ! <-- ! nvp minus position, fluid and part. velocities !
+! nvep             ! i  ! <-- ! number of particle properties (integer)        !
+! nivep            ! i  ! <-- ! number of particle properties (integer)        !
+! ntersl           ! i  ! <-- ! number of source terms of return coupling      !
+! nvlsta           ! i  ! <-- ! nb of Lagrangian statistical variables         !
+! nvisbr           ! i  ! <-- ! number of boundary statistics                  !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel           ! ia ! <-- ! interior faces -> cells connectivity           !
 ! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
+! ifabor           ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
+! ifmfbr           ! ia ! <-- ! boundary face family numbers                   !
 ! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
+! ifmcel           ! ia ! <-- ! cell family numbers                            !
 ! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
 !  (nfml,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac                      !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
+! ipnfac           ! ia ! <-- ! interior faces -> vertices index (optional)    !
+!   (lndfac)       !    !     !                                                !
+! nodfac           ! ia ! <-- ! interior faces -> vertices list (optional)     !
 !   (nfac+1)       !    !     !                                                !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr                      !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
+! ipnfbr           ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+!   (lndfbr)       !    !     !                                                !
+! nodfbr           ! ia ! <-- ! boundary faces -> vertices list  (optional)    !
 !   (nfabor+1)     !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
+! itypfb(nfabor    ! ia ! <-- ! type of the boundary faces                     !
 !  nphas)          !    !     !                                                !
-! itrifb(nfabor    ! te ! --> ! tab d'indirection pour tri des faces           !
-!  nphas)          !    !     !                                                !
-! itepa            ! te ! <-- ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! itrifb(nfabor    ! ia ! --> ! indirection for the sorting of the             !
+!  nphas)          !    !     ! boundary faces                                 !
+! itepa            ! ia ! <-- ! particle information (integers)                !
+! (nbpmax,nivep    !    !     !                                                !
+! idevel(nideve    ! ia ! <-- ! complementary dev. array of integers           !
+! ituser(nituse    ! ia ! <-- ! complementary user array of integers           !
+! ia(*)            ! ia ! --- ! macro array of integers                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! surfbn(nfabor    ! tr ! <-- ! surface des faces de bord                      !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtpa             ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant prec)                     !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! tepa             ! tr ! <-- ! info particulaires (reels)                     !
-! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! vagaus           ! tr ! <-- ! variables aleatoires gaussiennes               !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! surfbn(nfabor    ! ra ! <-- !                                                !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtpa             ! ra ! <-- ! transported variables at cell centers for      !
+! (ncelet,*)       !    !     ! the previous timestep                          !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! coefa, coefb     ! ra ! <-- ! boundary conditions at the boundary faces      !
+!  (nfabor,*)      !    !     !                                                !
+! ettp             ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the current time step         !
+! tepa             ! ra ! <-- ! particle information (real) (statis. weight..) !
+! (nbpmax,nvep)    !    !     !                                                !
+! vagaus           ! ra ! <-- ! Gaussian random variables                      !
 !(nbpmax,nvgaus    !    !     !                                                !
-! croule(ncelet    ! tr ! --> ! fonction d'importance pour la                  !
-!                  !    !     !   roulette russe                               !
-! auxl(nbpmax,3    ! tr ! --- ! tableau de travail                             !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
-! distpa(ncelet    ! tr ! <-- ! tab des distances a la paroi                   !
-! disty(ncelet)    ! tr ! <-- ! distance y+                                    !
-! w1...w3(ncel)    ! tr ! --- ! tableau de travail                             !
+! croule(ncelet    ! ra ! --> ! function of significance for                   !
+!                  !    !     ! the Russian roulette                           !
+! auxl(nbpmax,3    ! ra ! --- !                                                !
+! rdevel(nrdeve    ! ra ! <-- ! dev. complementary array of reals              !
+! rtuser(nrtuse    ! ra ! <-- ! user complementary array of reals              !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
+! distpa(ncelet    ! ra ! <-- ! wall-normal distance arrays                    !
+! disty(ncelet)    ! ra ! <-- ! y+ distance                                    !
+! w1...w3(ncel)    ! ra ! --- ! work arrays                                    !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -225,7 +224,7 @@ double precision distpa(ncelet) , distyp(ncelet)
 double precision w1(ncelet) ,  w2(ncelet) ,  w3(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          iel
@@ -235,22 +234,18 @@ double precision zref
 
 
 !===============================================================================
-! 0.  GESTION MEMOIRE
+! 0.  Memory management
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 1. INITIALISATION PAR DEFAUT
-
-
-!        ATTENTION, CROULE N'EST PAS INITIALISE AILLEURS QUE DANS
-
-!                     LE PRESENT SOUS-PROGRAMME
-
+! 1. Default initialization
+!---------------------------
 
-!        VEILLER A CE QU'IL SOIT COMPLETE POUR TOUTES LES CELLULES
+!     Caution : the croule parameter is only initialized in this subroutine.
+!               Make sure that it is prescribed for every cell.
 
 
 !===============================================================================
@@ -261,7 +256,7 @@ enddo
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! -1.  SI L'UTILISATEUR N'INTERVIENT PAS, ON LAISSE CROULE = 1 PARTOUT
+! -1.  If the user does not intervene, croule = 1 everywhere
 !===============================================================================
 
 if(1.eq.1) then
@@ -271,21 +266,19 @@ endif
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 2. CALCUL DE LA FONCTION D'IMPORTANCE PAR L'UTILISATEUR
+! 2. Calculation of a user-defined function of significance
 !===============================================================================
 
-!   ATTENTION :  le tableau CROULE doit contenir
-!   ^^^^^^^^^    des reels strictement positifs
-!                permettant de ponderer l'importance de zones par
-!                rapport a d'autres
-!                (plus CROULE est grand, plus l'importance de la zone
-!                 est grande)
+!   CAUTION:   the croule array must be filled with positive
+!   ^^^^^^^^^  real numbers enabling to weight the importance
+!              of some zones with respect to others.
+!
+!              (the greater croule, the more important the zone)
 
-!     Par exemple, on peut decider que la zone est
-!                    d'importance d'autant plus grande qu'elle est
-!                      proche de z=zref
-!                    d'importance constante a 1E-3 autour de  zref
-!                    d'importance au moins egale a 1.D-6 (loin de zref)
+!              For instance, we can decide that the zone is as important
+!              as it is close to a position z=zref; with an importance equal
+!              to 1.e-3 near zref, and with an importance equal to 1.e-6
+!              far from zref.
 
 
 zref = 0
@@ -301,7 +294,7 @@ enddo
 !===============================================================================
 
 !----
-! FIN
+! End
 !----
 
-end
+end subroutine
diff --git a/users/lagr/uslast.f90 b/users/lagr/uslast.f90
index c3ccca7..6f6c6d0 100644
--- a/users/lagr/uslast.f90
+++ b/users/lagr/uslast.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -50,152 +50,150 @@ subroutine uslast &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
+! Purpose:
+! --------
+!
+! User subroutine of the Lagrangian particle-tracking module:
+! -----------------------------------------
+!
+! User subroutine (non-mandatory intervention)
 
-!       SOUS-PROGRAMME DU MODULE LAGRANGIEN :
-!       -----------------------------------
+! User-defined modifications on the variables at the end of the
+! Lagrangian iteration and calculation of user-defined
+! additional statistics on the particles.
+!
+! About the user-defined additional statistics, we recall that:
+!
 
-!    SOUS-PROGRAMME UTILISATEUR (INTERVENTION NON OBLIGATOIRE)
+!   isttio = 0 : unsteady Lagrangian calculation
+!          = 1 : stationary Lagrangian calculation
 
-!    MODIFICATIONS UTILSATEUR SUR LES VARIABLES EN FIN D'ITERATION
-!    LAGRANGIENNES ET CALCUL DES STATISTIQUES UTILISATEUR
-!    SUPPLEMENTAIRES SUR LES PARTICULES
+!   istala : calculation of the statistics if >= 1, else no stats
 
-!   POUR LES STATISTIQUES UTILISATEUR SUPPLEMENTAIRES,
-!   ON RAPPELLE QUE :
+!   isuist : Restart of statistics calculation if >= 1, else no stats
 
-!   ISTTIO = 0 : calcul instationnaire pour le lagrangien
-!          = 1 : calcul stationnaire   pour le lagrangien
+!   idstnt : Number of the time step for the start of the statistics calculation
 
-!   ISTALA : calcul statistiques       si  >= 1 sinon pas de stat
+!   nstist : Number of the Lagrangian iteration of the start of the stationary computation
 
-!   ISUIST : suite calcul statistiques si  >= 1 sinon pas de stat
+!   npst   : Number of iterations of the computation of the stationary statistics
 
-!   IDSTNT : Numero du pas de temps pour debut statistque
+!   npstt  : Total number of iterations of the statistics calculation since the
+!            beginning of the calculation, including the unsteady part
 
-!   NSTIST : iteration Lagrangienne du debut calcul stationnaire
-
-!   NPST   : nombre d'iterations de calcul de stat stationnaires
-
-!   NPSTT  : nombre d'iterations total des stats depuis le debut
-!            du calcul, partie instationnaire comprise
-
-!   TSTAT  : Temps physique d'enregistrement des stats volumiques
-!            stationnaires
-!            (en instationnaire TSTAT=DTP le pas de temps Lagrangien)
+!   tstat  : Physical time of the recording of the stationary volume statistics
+!            (for the unsteady part, tstat = dtp the Lagrangian time step)
+!
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! ntersl           ! e  ! <-- ! nbr termes sources de couplage retour          !
-! nvlsta           ! e  ! <-- ! nombre de var statistiques lagrangien          !
-! nvisbr           ! e  ! <-- ! nombre de statistiques aux frontieres          !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+!                  !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! maximum number of particles allowed            !
+! nvp              ! i  ! <-- ! number of particle variables                   !
+! nvp1             ! i  ! <-- ! nvp minus position, fluid and part. velocities !
+! nvep             ! i  ! <-- ! number of particle properties (integer)        !
+! nivep            ! i  ! <-- ! number of particle properties (integer)        !
+! ntersl           ! i  ! <-- ! number of source terms of return coupling      !
+! nvlsta           ! i  ! <-- ! nb of Lagrangian statistical variables         !
+! nvisbr           ! i  ! <-- ! number of boundary statistics                  !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel           ! ia ! <-- ! interior faces -> cells connectivity           !
 ! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
+! ifabor           ! ia ! <-- ! boundary faces -> cells connectivity           !
 ! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
+! ifmfbr           ! ia ! <-- ! boundary face family numbers                   !
 ! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
+! ifmcel           ! ia ! <-- ! cell family numbers                            !
 ! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
 ! nfml  ,nprfml    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (nfac+1)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (lndfac)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!  (nfabor+1)      !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (lndfbr  )     !    !     !  (optionnel)                                   !
-! itepa            ! te ! <-- ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! ipnfac           ! ia ! <-- ! interior faces -> vertices index (optional)    !
+!   (nfac+1)       !    !     !                                                !
+! nodfac           ! ia ! <-- ! interior faces -> vertices list (optional)     !
+!   (lndfac)       !    !     !                                                !
+! ipnfbr           ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+!  (nfabor+1)      !    !     !                                                !
+! nodfbr           ! ia ! <-- ! boundary faces -> vertices list  (optional)    !
+!   (lndfbr  )     !    !     !                                                !
+! itepa            ! ia ! <-- ! particle information (integers)                !
+! (nbpmax,nivep    !    !     !                                                !
+! idevel(nideve    ! ia ! <-- ! complementary dev. array of integers           !
+! ituser(nituse    ! ia ! <-- ! complementary user array of integers           !
+! ia(*)            ! ia ! --- ! macro array of integers                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume(ncelet    ! tr ! <-- ! volume d'un des ncelet elements                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape precedente              !
-! tepa(nbpmax,     ! tr ! <-- ! caracteristiques des particules                !
-!       nvep)      !    !     !  aux particules (poids, ...)                   !
-! taup(nbpmax)     ! tr ! <-- ! temps caracteristique dynamique                !
-! tlag(nbpmax)     ! tr ! <-- ! temps caracteristique fluide                   !
-! tempct           ! tr ! <-- ! temps caracteristique thermique                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! transported variables at cell centers at       !
+! (ncelet,*)       !    !     ! the current and previous time step             !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! coefa, coefb     ! ra ! <-- ! boundary conditions at the boundary faces      !
+!  (nfabor,*)      !    !     !                                                !
+! ettp             ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the current time step         !
+! ettpa            ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the previous time step        !
+! tepa(nbpmax,     ! ra ! <-- ! properties of the particles (weight..)         !
+!       nvep)      !    !     !                                                !
+! taup(nbpmax)     ! ra ! <-- ! particle relaxation time                       !
+! tlag(nbpmax)     ! ra ! <-- ! relaxation time for the flow                   !
+! tempct           ! ra ! <-- ! thermal relaxation time                        !
 !  (nbpmax,2)      !    !     !                                                !
-! statis           ! tr ! <-- ! cumul pour les moyennes des                    !
-!(ncelet,nvlsta    !    !     !   statistiques volumiques                      !
-! stativ           ! tr ! <-- ! cumul pour les variances des                   !
-!(ncelet,          !    !     !    statistiques volumiques                     !
+! statis           ! ra ! <-- ! cumul. for the averages of the volume stats.   !
+!(ncelet,nvlsta    !    !     !                                                !
+! stativ           ! ra ! <-- ! cumul. for the variance of the volume stats.   !
+!(ncelet,          !    !     !                                                !
 !   nvlsta-1)      !    !     !                                                !
-! w1..w3(ncelet    ! tr ! --- ! tableaux de travail                            !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! w1..w3(ncelet    ! ra ! --- ! work arrays                                    !
+! rdevel(nrdeve    ! ra ! <-- ! dev. complementary array of reals              !
+! rtuser(nrtuse    ! ra ! <-- ! user complementary array of reals              !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -249,7 +247,7 @@ double precision w1(ncelet), w2(ncelet), w3(ncelet)
 double precision rdevel(nrdeve) , rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          ifinia, ifinra
@@ -257,7 +255,7 @@ integer          npt ,  iel , iphas
 
 integer          ivf , ivff , itabvr , iflu , icla
 
-! VARIABLES LOCALES UTILISATEUR
+! User-defined local variables
 
 integer          nxlist
 parameter       (nxlist=100)
@@ -281,8 +279,9 @@ save             debm
 
 if(istala.eq.1 .and. iplas.ge.idstnt .and. nvlsts.gt.0) then
 
-!     Si l'on passe ici, il faut que l'utilisateur complete
-!       l'exemple ci-dessous et l'adapte...
+!
+! if needed, the user must fill and adapt the following example
+!
 
   if(1.eq.1) then
     write(nfecra,9000)nvlsts
@@ -293,25 +292,25 @@ if(istala.eq.1 .and. iplas.ge.idstnt .and. nvlsts.gt.0) then
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : ARRET DANS LE MODULE LAGRANGIEN             ',/,&
+'@ @@ CAUTION: STOP IN THE LAGRANGIAN MODULE                  ',/,&
 '@    =========                                               ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR uslast DOIT ETRE COMPLETE',/,&
+'@    THE USER SUBROUTINER uslast MUST BE MODIFIED            ',/,&
 '@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@  The calculation will not be run                           ',/,&
 '@                                                            ',/,&
-'@  Des variables statistiques supplementaires ont ete        ',/,&
-'@    demandees dans uslag1 (NVLSTS=',   I10,')               ',/,&
-'@  Le sous-programme uslast doit etre complete pour preciser ',/,&
-'@    le  calcul de leur cumul.                               ',/,&
+'@  Additional statistics variables have been asked           ',/,&
+'@   in uslag1 (nvlsts =',   I10,')                           ',/,&
+'@  The subroutine uslast must be adapted to                  ',/, &
+'@  precise the computation of their cumulation.              ',/,&
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
 
 else
 
-!     On entre toujours dans ce sous programme en lagrangien,
-!       si on ne souhaite rien y faire, on sort immediatement.
-
+! During a Lagrangian calculation, we always enter this subroutine
+! if we wish to do nothing, we exit immediately
+!
   return
 
 endif
@@ -320,32 +319,29 @@ endif
 
 
 !===============================================================================
-! 0.  GESTION MEMOIRE
+! 0.  Memory management
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 1. INITIALISATION
+! 1. Initialization
 !===============================================================================
 
 iphas = ilphas
 
 !===============================================================================
-! 2 - CALCUL DES STATISTIQUES PARTICULAIRES UTILISATEURS
+! 2 - Computation of user-defined particle statistics
 !===============================================================================
 
-!   D'une facon generale, dans cette routine on realise les cumuls
-!   de la quantite dont on souhaite faire les statistiques.
-!   La moyenne et la variance sont calculees dans la routine
-!   USLAEN.F. Ce calcul est le plus souvent obtenu par division
-!   des cumuls soit par le temps du cumul stationnaire contenu dans
-!   la variable TSTAT, soit par le nombre de particules en poids
-!   statistiques. Cette division est appliquee pour chaque ecriture
-!   dans le listing et pour les sorties post-processing.
-
-!   Cet exemple est desactive et doit etre adapte au cas traite
+!   From a general point of view, we carry out in this subroutine the cumulations of
+!   the variables about which we wish to perform statistics. The mean and the
+!   variance are calculated in the routine uslaen. This computation is most often
+!   carried out by dividing the cumulations by either the stationary cumulation time
+!   in the variable tstat, either by the number of particles in statistical weight.
+!   This division is applied in each writing in the listing and in
+!   the post-processing files.
 
 if (1.eq.0) then
 
@@ -358,7 +354,7 @@ if (1.eq.0) then
       iel = itepa(npt,jisor)
 
 ! -------------------------------------------------
-! EXEMPLE 1 : Cumul pour la concentration massique
+! EXAMPLE 1: Cumulation for mass concentration
 ! -------------------------------------------------
 
       statis(iel,ilvu(1)) = statis(iel,ilvu(1))                   &
@@ -376,10 +372,10 @@ if (1.eq.0) then
 endif
 
 !===============================================================================
-! 3 - CALCUL UTILISATEUR DU DEBIT MASSIQUE DE PARTICULES SUR 4 PLANS
+! 3 - User-defined computation of the particle mass flow rate on 4 plans
 !===============================================================================
 
-!   Cet exemple est desactive et doit etre adapte au cas traite
+!  This example is unactivated and must be adapted to the case
 
 if (1.eq.0) then
 
@@ -388,9 +384,9 @@ if (1.eq.0) then
   zz(3) = 0.20d0
   zz(4) = 0.25d0
 
-!   Si on est en instationnaire, ou si le debut des stat stationnaires
-!   n'est pas encore atteint, toutes les statistiques sont remises a
-!   zero a chaque pas de temps avant d'entrer dans ce sous-programme.
+! If we are in an unsteady case, or if the beginning of the stationary stats
+! is not reached yet, all statistics are reset to zero at each time step before entering
+! this subroutine.
 
   if(isttio.eq.0 .or. npstt.le.nstist) then
     do iplan = 1,4
@@ -426,10 +422,10 @@ endif
 
 
 !===============================================================================
-! 4 - EXTRACTION DE STATISTIQUES VOLUMIQUES EN FIN DE CALCUL
+! 4 - Extraction of volume statistics at the end of the calculation
 !===============================================================================
 
-!   Cet exemple est desactive et doit etre adapte au cas traite
+!  This example is unactivated and must be adapted to the case
 
 if (1.eq.0) then
 
@@ -468,9 +464,10 @@ if (1.eq.0) then
 
     do iplan = 1,8
 
-!     Pour le fichier ci-dessous :
-!       l'utilisateur verifiera qu'il n'a pas laisse ouverte l'unite
-!       IMPUSR(1), dans un autre sous-programme utilisateur
+!  Concerning the following file:
+!  the user will check if he has not let the unit
+!  impusr(1) opened in another user subroutine.
+!
       OPEN(FILE=NAME(IPLAN),UNIT=IMPUSR(1),FORM='formatted')
 
       xyzpt(1) = zzz(iplan)
@@ -536,9 +533,9 @@ endif
 !===============================================================================
 
 !====
-! FIN
+! End
 !====
 
 return
 
-end
+end subroutine
diff --git a/users/lagr/uslatc.f90 b/users/lagr/uslatc.f90
index 658a5b1..f4a3acc 100644
--- a/users/lagr/uslatc.f90
+++ b/users/lagr/uslatc.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -46,18 +46,22 @@ subroutine uslatc &
    rdevel , rtuser , ra        )
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
-!   -------------------------------------
-
-!    SOUS-PROGRAMME UTILISATEUR (INTERVENTION NON OBLIGATOIRE)
-
-!    MODIFICATION DU CALCUL DU TEMPS DE RELAXATION THERMIQUES
-!      DES PARTICULES EN FONCTION DE LA FORMULATION CHOISIE
-!      LE CALCUL DU NUSSELT
-
+! Purpose:
+! --------
+!
+! User subroutine of the Lagrangian particle-tracking module:
+! -----------------------------------------
+!
+! User subroutine (non-mandatory intervention)
+!
+! Modification of the computation of the thermal relaxation time
+! of the particles with respect to the chosen formulation of the
+! Nusselt number.
+
+! This subroutine being called in a loop on the particle number,
+! be careful not to "load" it to heavily..
+!
+!
 
 !               m   Cp
 !                p    p
@@ -66,135 +70,133 @@ subroutine uslatc &
 !               PI d    h
 !                   p    e
 
-!     Tau  : TEMPS DE RELAXATION THERMIQUE (VALEUR A CALCULER)
+!     Tau  : Thermal relaxation time (value to be computed)
 !        c
 
-!     m    : MASSE DE LA PARTICULE
+!     m    : Particle mass
 !      p
 
-!     Cp   : CHALEUR SPECIFIQUE DE LA PARTICULE
+!     Cp   : Particle specific heat
 !       p
 
-!     d    : DIAMETRE DE LA PARTICULE
+!     d    : Particle diameter
 !      p
 
-!     h    : COEFFICIENT D'ECHANGE THERMIQUE
+!     h    : Coefficient of thermal exchange
 !      e
 
-!    LE COEFFICIENT D'ECHANGE THERMIQUE EST CALCULE A PARTIR
-!      D'UN NOMBRE DE NUSSELT, LUI MEME EVALUE PAR UNE
-!      CORRELATION (RANZ-MARSHALL EN STANDARD).
+!  The coefficient of thermal exchange is calculated from a Nusselt number,
+!  itself evaluated by a correlation (Ranz-Marshall by default)
+!
+!
 
 !            h  d
 !             e  p
 !     Nu = --------  = 2 + 0.55 Re **(0.5) Prt**(0.33)
 !           Lambda                p
 
-!     Lambda : CONDUCTIVITE THERMIQUE DE LA PHASE PORTEUSE
+!     Lambda : Thermal conductivity of the carrier field
 
-!     Re     : NOMBRE DE REYNOLDS PARTICULAIRES
+!     Re     : Particle Reynolds number
 !       p
 
-!     Prt    : NOMBRE DE PRANDTL
-
+!     Prt    : Prandtl number
 
-!    CE SOUS PROGRAMME EST APPELE DANS UNE BOUCLE SUR
-!      LES PARTICULES : ATTENTION DE NE PAS TROP LE CHARGER
+!
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! numpt            ! e  ! <-- ! numero de la particule courante                !
-! itepa            ! te ! <-- ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! te ! --- ! macro tableau entier                           !
-! rep              ! r  ! <-- ! nombre de reynolds particulaire                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+!                  !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! maximum number of particles allowed            !
+! nvp              ! i  ! <-- ! number of particle variables                   !
+! nvp1             ! i  ! <-- ! nvp minus position, fluid and part. velocities !
+! nvep             ! i  ! <-- ! number of particle properties (integer)        !
+! nivep            ! i  ! <-- ! number of particle properties (integer)        !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! numpt            ! i  ! <-- !                                                !
+! itepa            ! ia ! <-- ! particle information (integers)                !
+! (nbpmax,nivep    !    !     !                                                !
+! idevel(nideve    ! ia ! <-- ! complementary dev. array of integers           !
+! ituser(nituse    ! ia ! <-- ! complementary user array of integers           !
+! ia(*)            ! ia ! --- ! macro array of integers                        !
+! rep              ! r  ! <-- ! particle Reynolds number                       !
 !                  !    !     ! rep = uvwr * ettp(numpt,jdp) / xnul            !
-! uvwr             ! r  ! <-- ! vitesse relative de la particule               !
-!                  !    !     ! uvwr= |vit fluide vu - vit particule|          !
-! romf             ! r  ! <-- ! masse volumique du fluide a la                 !
-!                  !    !     ! position de la particule                       !
-! romp             ! r  ! <-- ! masse volumique de la particule                !
-! xnul             ! r  ! <-- ! viscosite cinematique du fluide a la           !
-!                  !    !     ! position de la particule                       !
-! xcp              ! r  ! <-- ! chaleur specifique du fluide                   !
-!                  !    !     ! a la position de la particule                  !
-! xrkl             ! r  ! <-- ! coefficient de diffusion du fluide             !
-!                  !    !     ! a la position de la particule                  !
-! tauc             ! r  ! --> ! temps de relaxation thermique                  !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! uvwr             ! r  ! <-- ! relative velocity of the particle              !
+!                  !    !     ! uvwr = |flow-seen velocity - part. velocity |  !
+! romf             ! r  ! <-- ! fluid density at  particle position            !
+!                  !    !     !                                                !
+! romp             ! r  ! <-- ! particle density                               !
+! xnul             ! r  ! <-- ! kinematic viscosity of the fluid at            !
+!                  !    !     ! particle position                              !
+! xcp              ! r  ! <-- ! specific heat of the fluid at particle         !
+!                  !    !     ! position                                       !
+! xrkl             ! r  ! <-- ! diffusion coefficient of the fluid at particle !
+!                  !    !     ! position                                       !
+! tauc             ! r  ! --> ! thermal relaxation time                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
+! volume           ! ra ! <-- ! cell volumes                                   !
 ! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp              ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape precedente              !
-! tepa             ! tr ! <-- ! info particulaires (reels)                     !
-! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp              ! ra ! <-- ! transported variables at cell centers at       !
+! (ncelet,*)       !    !     ! the current time step                          !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! ettp             ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the current time step         !
+! ettpa            ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the previous time step        !
+! tepa             ! ra ! <-- ! particle information (real) (statis. weight..) !
+! (nbpmax,nvep)    !    !     !                                                !
+! rdevel(nrdeve    ! ra ! <-- ! dev. complementary array of reals              !
+! rtuser(nrtuse    ! ra ! <-- ! user complementary array of reals              !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -240,12 +242,12 @@ double precision tepa(nbpmax,nvep)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ip
 
-! VARIABLES LOCALES UTILISATEUR
+! User-defined local variables
 
 double precision prt, fnus
 
@@ -260,24 +262,25 @@ if(1.eq.1) return
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 0.  GESTION MEMOIRE
+! 0. Memory management
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 1. INITIALISATIONS
+! 1. Initializations
 !===============================================================================
 
 ip = numpt
 
 !===============================================================================
-! 2. TEMPS DE RELAXATION THERMIQUE STANDARD
+! 2. Standard thermal relaxation time
 !===============================================================================
 
-!   Cet exemple est desactive, il donne le temps de relaxation thermique
-!   standard a titre indicatif.
+!   This example is unactivated, it gives the standard thermal relaxation time
+!   as an indication.
+
 
 if (1.eq.0) then
 
@@ -293,12 +296,12 @@ endif
 !==============================================================================
 
 !--------
-! FORMATS
+! Formats
 !--------
 
 
 !----
-! FIN
+! End
 !----
 
-end
+end subroutine
diff --git a/users/lagr/uslatp.f90 b/users/lagr/uslatp.f90
index 0b28c22..d9a80da 100644
--- a/users/lagr/uslatp.f90
+++ b/users/lagr/uslatp.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -45,19 +45,20 @@ subroutine uslatp &
    rdevel , rtuser , ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
-
-!   SOUS-PROGRAMME DU MODULE LAGRANGIEN :
-!   -------------------------------------
-
-!    SOUS-PROGRAMME UTILISATEUR (INTERVENTION NON OBLIGATOIRE)
-
-!    MODIFICATION DU CALCUL DU TEMPS DE RELAXATION DES PARTICULES
-!      EN FONCTION DE LA FORMULATION CHOISIE POUR LE COEFFICIENT
-!      DE TRAINEE
-
-
+! Purpose:
+! --------
+!
+! User subroutine of the Lagrangian particle-tracking module:
+! -----------------------------------------
+!
+! User subroutine (non-mandatory intervention)
+!
+! Modification of the calculation of the particle relaxation time
+! with respect to the chosen formulation for the drag coefficient
+
+! This subroutine being called in a loop on the particle number,
+! be careful not to "load" it too heavily..
+!
 !            rho             4 d
 !               p               p
 !      Tau = ---- --------------------------------
@@ -65,120 +66,119 @@ subroutine uslatp &
 !            rho   3 C     | U [X (t),t] - V (t) |
 !               f     drag    f  p          p
 
-!     Tau  : TEMPS DE RELAXATION PARTICULAIRE (VALEUR A CALCULER)
+!     Tau  : Particle relaxation time
 !        p
 
-!     rho  : MASSE VOLUMIQUE DU FLUIDE
+!     rho  : Particle density
 !        p
 
-!     rho  : MASSE VOLUMIQUE DE LA PARTICULE
+!     rho  : Fluid density
 !        f
 
-!     C     : COEFFICIENT DE TRAINEE
+!     C    : Drag coefficient
 !      drag
 
-!     d    : DIAMETRE DE LA PARTICULE
+!     d    : Particle diameter
 !      p
 
-!     U [X (t),t] : VITESSE INSTANTANEE DU FLUIDE VU
+!     U [X (t),t] : Instantaneous velocity of the flow seen
 !      f  p
 
-!     V (t) : VITESSE DE LA PARTICULE
+!     V (t) : Particle velocity
 !      p
 
-!    CE SOUS PROGRAMME EST APPELE DANS UNE BOUCLE SUR
-!      LES PARTICULES : ATTENTION DE NE PAS TROP LE CHARGER
+!
+!
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac                     !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr                     !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! nphas            ! e  ! <-- ! nombre de phases                               !
-! nbpmax           ! e  ! <-- ! nombre max de particulies autorise             !
-! nvp              ! e  ! <-- ! nombre de variables particulaires              !
-! nvp1             ! e  ! <-- ! nvp sans position, vfluide, vpart              !
-! nvep             ! e  ! <-- ! nombre info particulaires (reels)              !
-! nivep            ! e  ! <-- ! nombre info particulaires (entiers)            !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! numpt            ! e  ! <-- ! numero de la particule courante                !
-! itepa            ! te ! <-- ! info particulaires (entiers)                   !
-! (nbpmax,nivep    !    !     !   (cellule de la particule,...)                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! te ! --- ! macro tableau entier                           !
-! rep              ! r  ! <-- ! nombre de reynolds particulaire                !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+!                  !    !     !                                                !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! nphas            ! i  ! <-- ! number of phases                               !
+! nbpmax           ! i  ! <-- ! maximum number of particles allowed            !
+! nvp              ! i  ! <-- ! number of particle variables                   !
+! nvp1             ! i  ! <-- ! nvp minus position, fluid and part. velocities !
+! nvep             ! i  ! <-- ! number of particle properties (integer)        !
+! nivep            ! i  ! <-- ! number of particle properties (integer)        !
+! nideve nrdeve    ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse nrtuse    ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! numpt            ! i  ! <-- !                                                !
+! itepa            ! ia ! <-- ! particle information (integers)                !
+! (nbpmax,nivep    !    !     !                                                !
+! idevel(nideve    ! ia ! <-- ! complementary dev. array of integers           !
+! ituser(nituse    ! ia ! <-- ! complementary user array of integers           !
+! ia(*)            ! ia ! --- ! macro array of integers                        !
+! rep              ! r  ! <-- ! particle Reynolds number                       !
 !                  !    !     ! rep = uvwr * ettp(numpt,jdp) / xnul            !
-! uvwr             ! r  ! <-- ! vitesse relative de la particule               !
-!                  !    !     ! uvwr= |vit fluide vu - vit particule|          !
-! romf             ! r  ! <-- ! masse volumique du fluide a la                 !
-!                  !    !     ! position de la particule                       !
-! romp             ! r  ! <-- ! masse volumique de la particule                !
-! xnul             ! r  ! <-- ! viscosite cinematique du fluide a la           !
-!                  !    !     ! position de la particule                       !
-! taup             ! r  ! --> ! temps de relaxation particulaire               !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
+! uvwr             ! r  ! <-- ! particle relative velocity                     !
+!                  !    !     ! uvwr= |flow-seen velocity - part. velocity|    !
+! romf             ! r  ! <-- ! fluid density at  particle position            !
+!                  !    !     !                                                !
+! romp             ! r  ! <-- ! particle density                               !
+! xnul             ! r  ! <-- ! kinematic viscosity of the fluid at            !
+!                  !    !     ! particle position                              !
+! taup             ! r  ! --> ! particle relaxation time                       !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
 ! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
 ! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
 ! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
 ! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
 ! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds                          !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
 ! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
+! volume           ! ra ! <-- ! cell volumes                                   !
 ! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp              ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! ettp             ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape courante                !
-! ettpa            ! tr ! <-- ! tableaux des variables liees                   !
-!  (nbpmax,nvp)    !    !     !   aux particules etape precedente              !
-! tepa             ! tr ! <-- ! info particulaires (reels)                     !
-! (nbpmax,nvep)    !    !     !   (poids statistiques,...)                     !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp              ! ra ! <-- ! transported variables at cells centers         !
+! (ncelet,*)       !    !     ! at the previous time step                      !
+! propce           ! ra ! <-- ! physical properties at cell centers            !
+! (ncelet,*)       !    !     !                                                !
+! propfa           ! ra ! <-- ! physical properties at interior face centers   !
+!  (nfac,*)        !    !     !                                                !
+! propfb           ! ra ! <-- ! physical properties at boundary face centers   !
+!  (nfabor,*)      !    !     !                                                !
+! ettp             ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the current time step         !
+! ettpa            ! ra ! <-- ! array of the variables associated to           !
+!  (nbpmax,nvp)    !    !     ! the particles at the previous time step        !
+! tepa             ! ra ! <-- ! particle information (real) (statis. weight..) !
+! (nbpmax,nvep)    !    !     !                                                !
+! rdevel(nrdeve    ! ra ! <-- ! dev. complementary array of reals              !
+! rtuser(nrtuse    ! ra ! <-- ! user complementary array of reals              !
+! ra(*)            ! ra ! --- ! macro array of reals                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+!     Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -223,13 +223,13 @@ double precision tepa(nbpmax,nvep)
 double precision rdevel(nrdeve), rtuser(nrtuse)
 double precision ra(*)
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia, idebra
 integer          ip
 double precision fdr
 
-! VARIABLES LOCALES UTILISATEUR
+! User-defined local variables
 
 double precision cd1 , cd2 , d2
 double precision rec1, rec2, rec3, rec4
@@ -245,24 +245,24 @@ if(1.eq.1) return
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 0.  GESTION MEMOIRE
+! 0.  Memory management
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 1. INITIALISATIONS
+! 1. Initializations
 !===============================================================================
 
 ip = numpt
 
 !===============================================================================
-! 2. TEMPS DE RELAXATION AVEC LE COEFFICIENT DE TRAINEE STANDARD
+! 2. Relaxation time with the standard (Wen-Yu) formulation of the drag coefficient
 !===============================================================================
 
-!   Cet exemple est desactive, il donne le temps de relaxation
-!   standard a titre indicatif.
+! This example is unactivated, it gives the standard relaxation time
+! as an indication:
 
 if (1.eq.0) then
 
@@ -281,9 +281,8 @@ if (1.eq.0) then
 endif
 
 !===============================================================================
-! 3. CALCUL DU TEMPS DE RELAXATION AVEC LE COEFFICIENT DE TRAINEE DE
-!    MORSI S.A. et ALEXANDER A.J.,
-!    Journal of Fluid Mechanics Vol.55, pp 193-208 (1972)
+! 3. Computation of the relaxation time with the drag coefficient of
+!    S.A. Morsi and A.J. Alexander, J. of Fluid Mech., Vol.55, pp 193-208 (1972)
 !===============================================================================
 
 rec1 =  0.1d0
@@ -317,12 +316,12 @@ taup = romp / romf / fdr
 !==============================================================================
 
 !--------
-! FORMATS
+! Formats
 !--------
 
 
 !----
-! FIN
+! End
 !----
 
-end
+end subroutine
diff --git a/users/pprt/usppmo.f90 b/users/pprt/usppmo.f90
index 73f3b84..0c129ae 100644
--- a/users/pprt/usppmo.f90
+++ b/users/pprt/usppmo.f90
@@ -33,62 +33,53 @@ subroutine usppmo
 
 
 !===============================================================================
-!  FONCTION  :
-!  ---------
+! Purpose:
+! -------
 
-! ROUTINE UTILISATEUR
-! UTILISATION OU NON D'UNE PHYSIQUE PARTICULIERE
+!    User subroutine.
 
+!    Define the use of a specific physics amongst the following:
+!      - combustion with gaz / coal / heavy fioul oil
+!      - compressible flows
+!      - atmospheric modelling
+!      - cooling towers modelling
 
-!       UNE SEULE PHYSIQUE PARTICULIERE A LA FOIS.
+!    Only one specific physics module can be activated at once.
 
 
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
-include "numvar.h"
-include "optcal.h"
-include "cstphy.h"
-include "cstnum.h"
 include "entsor.h"
-include "pointe.h"
-include "parall.h"
-include "period.h"
+include "cstphy.h"
 include "ppppar.h"
 include "ppthch.h"
-include "coincl.h"
-include "cpincl.h"
-include "fuincl.h"
 include "ppincl.h"
 include "ppcpfu.h"
-include "atincl.h"
 
 !===============================================================================
 
-
-
-!===============================================================================
-
-
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!===============================================================================
 
 if(1.eq.1) then
   return
@@ -98,160 +89,215 @@ endif
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 
 !===============================================================================
-! 1.  DECLENCHEMENT DE L UTILISATION D'UNE PHYSIQUE PARTICULIERE
+! 1.  Choice for a specific physics
 !===============================================================================
 
+! --- cod3p: Diffusion flame with complete fast chemistry (3 points)
+! ==========
 
-! ---- COD3P Flamme de diffusion en chimie complete rapide (3 points)
-!        si = -1   modele non utilise
-!        si =  0   modele utilise dans les conditions adiabatiques
-!        si =  1   modele utilise dans les conditions permeatiques
+!        if = -1   module not activated
+!        if =  0   adiabatic model
+!        if =  1   extended model with enthalpy source term
 
 ippmod(icod3p) = -1
 
 
-!----- CODEQ Flamme de diffusion en chimie rapide vers l'equilibre
-!      ATTENTION : la version CODEQ n'EST PAS OPERATIONNELLE
-!      ==========
-!        si = -1   modele non utilise
-ippmod(icodeq) = -1
+! --- coebu: Eddy-Break Up pre-mixed flame
+! ==========
 
-
-!----- COEBU Flamme premelangee en Eddy Break Up
-!        si = -1   modele non utilise
-!        si =  0   modele utilise dans les conditions adiabatiques
-!        si =  1   modele utilise dans les conditions permeatiques (H)
-!        si =  2   conditions adiabatiques    avec transport de f
-!        si =  3   conditions permeatique (H) avec transport de f
+!        if = -1   module not activated
+!        if =  0   reference Spalding model
+!                   (adiabatic, homogeneous mixture fraction)
+!        if =  1   extended model with enthalpy source term
+!                   (homogeneous mixture fraction : perfect premix)
+!        if =  2   extended model with mixture fraction transport
+!                   (adiabatic, no variance of mixture fraction)
+!        if =  3   extended model with enthalpy and mixture fraction transport
+!                   (dilution, thermal losses, etc.)
 
 ippmod(icoebu) = -1
 
+! --- colwc: Libby-Williams pre-mixed flame
+! ==========
 
-!----- COBML premelange avec le modele Bray - Moss - Libby
-!      ATTENTION : la version COBML n'EST PAS OPERATIONNELLE
-!      ==========
-!        si = -1   modele non utilise
-ippmod(icobml) = -1
+!        if = -1   module not activated
+!        if =  0   reference two-peak model with adiabatic condition
+!        if =  1   extended two-peak model with enthapy source terms
+!        if =  2   extended three-peak model, adiabatic
+!        if =  3   extended three-peak model with enthalpy source terms
+!        if =  4   extended four-peak model, adiabatic
+!        if =  5   extended four-peak model with enthalpy source terms
 
+ippmod(icolwc) = -1
 
-!----- COLWC non parfaitement premelange Libby Williams
-!        si = -1   modele non utilise
-!        si =  0   modele a 2 pics dans les conditions adiabatiques
-!        si =  1   modele a 2 pics dans les conditions permeatiques
-!                    (suppose rayonnement)
-!        si =  2   modele a 3 pics dans les conditions adiabatiques
-!        si =  3   modele a 3 pics dans les conditions permeatiques
-!                    (suppose rayonnement)
-!        si =  4   modele a 4 pics dans les conditions adiabatiques
-!        si =  5   modele a 4 pics dans les conditions permeatiques
-!                    (suppose rayonnement)
+! --- cp3pl: Pulverized coal combustion
+! ==========
 
-ippmod(icolwc) = -1
+!        Description of granulometry
+!        Assumption of diffusion flame around particles
+!         (extension of 3-point fast chemistry "D3P")
+!        Between a mixture of gaseous fuels (volatiles matters, CO from char
+!                                            oxydation)
+!            and a mixture of oxidisers (air and water vapor)
+!        Enthalpy for both mix and solid phase are solved
 
+!        if = -1   module not activated
+!        if = 0    module activated
+!        if = 1    with drying
 
-!----- Charbon pulverise avec trois combustibles gazeux et
-!        granulometrie.
-!        CP3PL Combustible moyen local
-!        IPPMOD(ICP...) = 0 : Transport d'H2
-!        IPPMOD(ICP...) = 1 : Transport d'H2 + sechage
 ippmod(icp3pl) = -1
 
-! Prise en compte de la comb. Heterog par le CO2 : attention il
-! faut activer l'option "Equation sur le CO2"
-
-ihtco2 = 0
+! --- cpl3c: Pulverized coal with Lagrangian reciprocal approach
+! ==========
 
+!        Not recently tested... at least outdated, may be obsolete
 
-!----- Charbon pulverise couple lagrangien avec trois combustibles
-!      gazeux et granulometrie.
-!        IPPMOD(ICPL3C) =-1 : Modele non utilise
-!        IPPMOD(ICPL3C) = 0 : Transport d'H2
-!        IPPMOD(ICPL3C) = 1 : Transport d'H2 + sechage (non operationnel)
+!        if = -1   module not activated
+!        if = 0    module activated
+!        if = 1    with drying (NOT functional)
 
 ippmod(icpl3c) = -1
 
+! --- cfuel: Heavy fuel oil combustion
+! ==========
 
-!----- Combustion Fuel
-!        IPPMOD(ICFUEL) =-1 : modele non utilise
-!        IPPMOD(ICFUEL) = 0 : modele active
-
-ippmod(icfuel) = -1
+!        Progressive evaporation (temperature gap)
+!        Char residue
+!        Sulphur tracking
 
-!----- MODEL NOx : pour l'instant on le met ici mais il
-!                          faudrait le deplacer, mais ou?
-!      Valable uniquement pour le Fuel
+!        if = -1   module not activated
+!        if = 0    module activated
 
-!        IEQNOX = 1 ----> Model NOx
-
-ieqnox = 0
-
-!----- Equation sur YCO2 : pour l'instant on le met ici mais il
-!                          faudrait le deplacer, mais ou?
-!      Valable pour le charbon et pour le Fuel
+ippmod(icfuel) = -1
 
-!         IEQCO2 = 1 ----> Transport de CO2
+! --- compf: Compressible flows
+! ==========
 
-ieqco2 = 0
+!        if = -1   module not activated
+!        if = 0    module activated
 
-!----- COMPF compressible sans choc
-!      ==========
-!        si = -1   modele non utilise
-!        si = 0    modele active
 ippmod(icompf) = -1
 
-!----- VERSIONS ELECTRIQUES
-!        Equation de l'energie obligatoire --> |IPPMOD(IEL...)| >= 1
-!        + Possibilite de constituants
+! --- eljou: Joule effect
+! ==========
 
-!       ELJOU : Effet Joule
-!        IPPMOD(IELJOU) = 1 : Potentiel reel
-!        IPPMOD(IELJOU) = 2 : Potentiel complexe
-!        IPPMOD(IELJOU) = 3 : Potentiel reel     + CDL Transfo
-!        IPPMOD(IELJOU) = 4 : Potentiel complexe + CDL Transfo
+!        if = -1   module not activated
+!        if = 1    Potentiel reel
+!        if = 2    Potentiel complexe
+!        if = 3    Potentiel reel     + CDL Transfo
+!        if = 4    Potentiel complexe + CDL Transfo
 
 ippmod(ieljou) = -1
 
-!       ELARC : Arc electrique
-!        IPPMOD(IELARC) = 1 : Potentiel electrique
-!        IPPMOD(IELARC) = 2 : Potentiel electrique +
-!                             Potentiel vecteur (=>3D)
+! --- elarc: Electric arcs
+! ==========
 
-ippmod(ielarc) = -1
+!        if = -1   module not activated
+!        if = 0    electric potential
+!        if = 1    electric potential and vector potential (hence 3D modelling)
 
-!       ELION : Mobilite ionique
-!        IPPMOD(IELION) = 1 : Potentiel electrique
+ippmod(ielarc) = -1
 
-!       ATTENTION : la version ELION n'EST PAS OPERATIONNELLE
-!       ==========
+! --- atmos: Atmospheric flows
+! ==========
 
-ippmod(ielion) = -1
+!        if = -1   module not activated
+!        if = 0    standard modelling
+!        if = 1    dry atmosphere
+!        if = 2    humid atmosphere (NOT functional)
 
-!----- ATMOS ecoulements atmospheriques
-!        si = -1   modele non utilise
-!        si = 0    modele active
-!        si = 1    atmosphere seche
-!        si = 2    atmosphere humide (non operationnelle)
 ippmod(iatmos) = -1
 
-!----- Aerorefrigerants (cooling tower)
-!        si = -1   non utilise
-!        si = 0    active sans modele
-!        si = 1    active avec modele de Poppe
-!        si = 2    active avec modele de Merkel
+! --- aeros: Cooling towers
+! ==========
+
+!        if = -1   module not activated
+!        if = 0    no model (NOT functional)
+!        if = 1    Poppe's model
+!        if = 2    Merkel's model
+
 ippmod(iaeros) = -1
 
+
 !===============================================================================
-! 2.  CHOIX DU FICHIER THERMOCHIMIE DANS LE CAS DE LA COMBUSTION GAZ
+! 2.  Specific physics module not available at the moment
 !===============================================================================
 
+! WARNING: The following modules ARE NOT functional!
+! =======
+
+! --- cobml: Premix model of Bray - Moss - Libby
+! ==========
+
+!        if = -1   module not activated
+
+ippmod(icobml) = -1
+
+! --- codeq: Diffusion flame with fast equilibrium chemistry
+! ==========
 
-!-----Si INDJON=1 on utilise une tabulation ENTH-TEMP calculee par JANAF
-!     sinon, l'utilisateur doit lui m�me fournir sa propre tabulation
+!        if = -1   module not activated
+
+ippmod(icodeq) = -1
+
+! --- elion: Ionic mobility
+! ==========
+
+!        if = -1   module not activated
+!        if = 1    eletric potential
+
+ippmod(ielion) = -1
+
+
+!===============================================================================
+! 3.  Specific options related to herebefore modules
+!===============================================================================
+
+! These options are defined here at the moment, this might change in the future
+
+! --- Enthalpy-Temperature conversion law (for gas combustion modelling)
+
+!       if = 0   user-specified
+!       if = 1   tabulated by JANAF (default)
 
 indjon = 1
 
+! --- Kinetic model for NOx formation
+
+!         Only compatible with heavy fuel oil combustion
+
+!         if = 0  unused
+!         if = 1  activated
+
+ieqnox = 0
+
+! --- Kinetic model for CO <=> CO2
+
+!         Compatible with coal and heavy fuel oil combustion
+
+!         if = 0  unused (maximal conversion in turbulent model)
+!         if = 1  transport of CO2 mass fraction
+!         if = 2  transport of CO mass fraction
+
+ieqco2 = 0
+
+! --- Heteregoneous combustion by CO2
+
+!         Needs the activation of the CO2 transport equation
+!         Account for the reaction between char and CO2: C(s) + CO2 => 2 CO
+
+!         if = 0  unused
+!         if = 1  activated
+
+ihtco2 = 0
+
 !----
-! FORMATS
+! Formats
 !----
+
+!----
+! End
+!----
+
 return
-end
+end subroutine
diff --git a/users/rayt/usray1.f90 b/users/rayt/usray1.f90
index 1901c6b..31a0c0b 100644
--- a/users/rayt/usray1.f90
+++ b/users/rayt/usray1.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -85,20 +85,19 @@ subroutine usray1
 !-------------------------------------------------------------------------------
 ! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -136,15 +135,15 @@ if(1.eq.1) return
 
 ipass = ipass + 1
 
-if (ipass.eq.1 .or. ipass.eq.2) then
-
 !===============================================================================
 ! 1. UTILISATION DU MODULE DE TRANSFERTS RADIATIFS
 !===============================================================================
 
-!-->  IIRAYO = 0 : PAS DE TRANSFERTS RADIATIFS (PAR DEFAUT)
-!            = 1 : TRANSFERTS RADIATIFS, METHODE DES ORDONNEES DISCRETES
-!            = 2 : TRANSFERTS RADIATIFS, APPROXIMATION P-1
+if (ipass.eq.1 .or. ipass.eq.2) then
+
+  !-->  IIRAYO = 0 : PAS DE TRANSFERTS RADIATIFS (PAR DEFAUT)
+  !            = 1 : TRANSFERTS RADIATIFS, METHODE DES ORDONNEES DISCRETES
+  !            = 2 : TRANSFERTS RADIATIFS, APPROXIMATION P-1
 
   iirayo = 1
 
@@ -156,43 +155,43 @@ endif
 
 if (ipass.eq.2) then
 
-!-->  INDICATEUR SUITE DE CALCUL (LECTURE DU FICHIER SUITE DE RAYONNEMENT)
-!     (0      : PAS DE LECTURE D'UN FICHIER SUITE DE RAYONNEMENT
-!      1      : RELECTURE D'UN FICHIER SUITE DE RAYONNEMENT
-!      ISUITE : RELECTURE D'UN FICHIER SUITE DE RAYONNEMENT SI LE CALCUL FLUIDE EST
-!               AUSSI UNE SUITE )
+  !-->  INDICATEUR SUITE DE CALCUL (LECTURE DU FICHIER SUITE DE RAYONNEMENT)
+  !     (0      : PAS DE LECTURE D'UN FICHIER SUITE DE RAYONNEMENT
+  !      1      : RELECTURE D'UN FICHIER SUITE DE RAYONNEMENT
+  !      ISUITE : RELECTURE D'UN FICHIER SUITE DE RAYONNEMENT SI LE CALCUL FLUIDE EST
+  !               AUSSI UNE SUITE )
 
   isuird = isuite
 
-!-->  FREQUENCE DE PASSAGE DANS LE MODULE DE RAYONNEMENT
+  !-->  FREQUENCE DE PASSAGE DANS LE MODULE DE RAYONNEMENT
 
   nfreqr = 1
 
-!-->  NOMBRE DE DIRECTIONS : 32 OU 128 (UTILE UNIQUEMENT SI IIRAYO=1)
+  !-->  NOMBRE DE DIRECTIONS : 32 OU 128 (UTILE UNIQUEMENT SI IIRAYO=1)
 
   ndirec = 32
 
-!-->  INITIALISATION DU MODE DE CALCUL DU TERME SOURCE RADIATIF EXPLICITE
-!     IDIVER = 0 => CALCUL SEMI-ANALYTIQUE
-!     IDIVER = 1 => CALCUL CONSERVATIF
-!     IDIVER = 2 => CALCUL SEMI-ANALYTIQUE CORRIGE POUR ETRE CONSERVATIF
-!     (EN RAYONNEMENT TRANSPARENT, LE CHOIX EST SANS INFLUENCE)
+  !-->  INITIALISATION DU MODE DE CALCUL DU TERME SOURCE RADIATIF EXPLICITE
+  !     IDIVER = 0 => CALCUL SEMI-ANALYTIQUE
+  !     IDIVER = 1 => CALCUL CONSERVATIF
+  !     IDIVER = 2 => CALCUL SEMI-ANALYTIQUE CORRIGE POUR ETRE CONSERVATIF
+  !     (EN RAYONNEMENT TRANSPARENT, LE CHOIX EST SANS INFLUENCE)
 
   idiver = 2
 
-!--> NIVEAU D'AFFICHAGE (0,1,2) DES RENSEIGNEMENTS TEMPERATURE DE PAROI
+  !--> NIVEAU D'AFFICHAGE (0,1,2) DES RENSEIGNEMENTS TEMPERATURE DE PAROI
 
   iimpar = 1
 
-!--> NIVEAU D'AFFICHAGE (0,1,2) DES RENSEIGNEMENTS SOLVEUR
+  !--> NIVEAU D'AFFICHAGE (0,1,2) DES RENSEIGNEMENTS SOLVEUR
 
   iimlum = 0
 
-!--> SI COMBUSTION GAZ OU CHARBON : CALCUL AUTOMATIQUE
-!    DU COEFFICIENT D'ABSORPTION
+  !--> SI COMBUSTION GAZ OU CHARBON : CALCUL AUTOMATIQUE
+  !    DU COEFFICIENT D'ABSORPTION
 
-!    IMODAK = 0 : PAS DE CALCUL AUTOMATIQUE (DEFAUT)
-!           = 1 : CALCUL AUTOMATIQUE (MODELE DE MODAK)
+  !    IMODAK = 0 : PAS DE CALCUL AUTOMATIQUE (DEFAUT)
+  !           = 1 : CALCUL AUTOMATIQUE (MODELE DE MODAK)
 
   imodak = 0
 
@@ -209,13 +208,13 @@ if (ipass.eq.3) then
 !===============================================================================
 
 
-!    ICHRVR( ) = sortie chono (oui 1/non 0)
-!    ILISVR( ) = suivi listing (oui 1/non 0)
-!    IHISVR( ) = sortie historique (nombre de sondes et numeros)
-!    si IHISVR(    .,1)  = -1 sortie sur toutes les sondes definies
-!                            dans usini1
+  !    ichrvr( ) = sortie chono (oui 1/non 0)
+  !    ilisvr( ) = suivi listing (oui 1/non 0)
+  !    ihisvr( ) = sortie historique (nombre de sondes et numeros)
+  !    si ihisvr(    .,1)  = -1 sortie sur toutes les sondes definies
+  !                            dans usini1
 
-!--> LUMINENCE
+  !--> LUMINENCE
 
   ipp = ipppro(ipproc(ilumin))
   nomvar(IPP)   = 'Lumin'
@@ -223,23 +222,23 @@ if (ipass.eq.3) then
   ilisvr(ipp)   = 0
   ihisvr(ipp,1) = -1
 
-!--> VECTEUR DENSITE DE FLUX RADIATIF
+  !--> VECTEUR DENSITE DE FLUX RADIATIF
 
-!       composante x
+  !       composante x
   ipp = ipppro(ipproc(iqx))
   nomvar(IPP)   = 'Qxrad'
   ichrvr(ipp)   = 0
   ilisvr(ipp)   = 0
   ihisvr(ipp,1) = -1
 
-!       composante y
+  !       composante y
   ipp = ipppro(ipproc(iqy))
   nomvar(IPP)   = 'Qyrad'
   ichrvr(ipp)   = 0
   ilisvr(ipp)   = 0
   ihisvr(ipp,1) = -1
 
-!       composante z
+  !       composante z
   ipp = ipppro(ipproc(iqz))
   nomvar(IPP)   = 'Qzrad'
   ichrvr(ipp)   = 0
@@ -251,31 +250,31 @@ if (ipass.eq.3) then
 
     write(num,'(I1)') iphas
 
-!--> TERME SOURCE RADIATIF (ANALYTIQUE/CONSERVATIF/SEMI-ANALYTIQUE)
+    !--> TERME SOURCE RADIATIF (ANALYTIQUE/CONSERVATIF/SEMI-ANALYTIQUE)
 
     ipp = ipppro(ipproc(itsre(iphas)))
-    nomvar(IPP)   = 'Srad'//num
+    nomvar(ipp)   = 'Srad'//num
     ichrvr(ipp)   = 0
     ilisvr(ipp)   = 0
     ihisvr(ipp,1) = -1
 
-!--> PART DE L'ABSORPTION DANS LE TERME SOURCE RADIATIF
+    !--> PART DE L'ABSORPTION DANS LE TERME SOURCE RADIATIF
 
     ipp = ipppro(ipproc(iabs(iphas)))
-    nomvar(IPP)   = 'Absorp'//num
+    nomvar(ipp)   = 'Absorp'//num
     ichrvr(ipp)   = 0
     ilisvr(ipp)   = 0
     ihisvr(ipp,1) = -1
 
-!--> PART DE L'EMISSION DANS LE TERME SOURCE RADIATIF
+    !--> PART DE L'EMISSION DANS LE TERME SOURCE RADIATIF
 
     ipp = ipppro(ipproc(iemi(iphas)))
-    nomvar(IPP)   = 'Emiss'//num
+    nomvar(ipp)   = 'Emiss'//num
     ichrvr(ipp)   = 0
     ilisvr(ipp)   = 0
     ihisvr(ipp,1) = -1
 
-!--> COEFFICIENT D'ABSORPTION DU MILIEU SEMI-TRANSPARENT
+    !--> COEFFICIENT D'ABSORPTION DU MILIEU SEMI-TRANSPARENT
 
     ipp = ipppro(ipproc(icak(iphas)))
     nomvar(IPP)   = 'CoefAb_'//num
@@ -293,44 +292,44 @@ if (ipass.eq.3) then
 !    * IL FAUT METTRE LA VALEUR DE IRAYVF A 1 POUR LA VISUALISATION *
 !=======================================================================
 
-!--> TEMPERATURE DES FACES FRONTIERES DE PAROI
+  !--> TEMPERATURE DES FACES FRONTIERES DE PAROI
 
-  nbrvaf(itparp) = 'Temp_paroi'
+  nbrvaf(itparp) = 'Wall_temp'
   irayvf(itparp) = 0
 
-!--> FLUX INCIDENT RADIATIF RECU PAR LES FACES FRONTIERES DE PAROI
+  !--> FLUX INCIDENT RADIATIF RECU PAR LES FACES FRONTIERES DE PAROI
 
-  nbrvaf(iqincp) = 'Flux_incident'
+  nbrvaf(iqincp) = 'Incident_flux'
   irayvf(iqincp) = 0
 
-!--> CONDUCTIVITE THERMIQUES DES FACES FRONTIERES DE PAROIS
+  !--> CONDUCTIVITE THERMIQUES DES FACES FRONTIERES DE PAROIS
 
-  nbrvaf(ixlamp) = 'Conductivite_th'
+  nbrvaf(ixlamp) = 'Th_conductivity'
   irayvf(ixlamp) = 0
 
-!--> EPAISSEUR DES FACES FRONTIERES DE PAROIS
+  !--> EPAISSEUR DES FACES FRONTIERES DE PAROIS
 
-  nbrvaf(iepap) = 'Epaisseur'
+  nbrvaf(iepap) = 'Thickness'
   irayvf(iepap) = 0
 
-!--> EMISSIVITE DES FACES FRONTIERES DE PAROIS
+  !--> EMISSIVITE DES FACES FRONTIERES DE PAROIS
 
-  nbrvaf(iepsp) = 'Emissivite'
+  nbrvaf(iepsp) = 'Emissivity'
   irayvf(iepsp) = 0
 
-!--> FLUX NET RADIATIF AUX FACES FRONTIERES DE PAROIS
+  !--> FLUX NET RADIATIF AUX FACES FRONTIERES DE PAROIS
 
-  nbrvaf(ifnetp) = 'Flux_net'
+  nbrvaf(ifnetp) = 'Net_flux'
   irayvf(ifnetp) = 0
 
-!--> FLUX CONVECTIF AUX FACES FRONTIERES DE PAROIS
+  !--> FLUX CONVECTIF AUX FACES FRONTIERES DE PAROIS
 
   nbrvaf(ifconp) = 'Flux_convectif'
   irayvf(ifconp) = 0
 
-!--> COEFFICIENT D'ECHANGE CONVECTIF AUX FACES FRONTIERES DE PAROIS
+  !--> COEFFICIENT D'ECHANGE CONVECTIF AUX FACES FRONTIERES DE PAROIS
 
-  nbrvaf(ihconp) = 'Coef_ech_convectif'
+  nbrvaf(ihconp) = 'Convective_exch_coef'
   irayvf(ihconp) = 0
 
 !===============================================================================
@@ -339,4 +338,4 @@ endif
 
 return
 
-end
+end subroutine
diff --git a/users/rayt/usray2.f90 b/users/rayt/usray2.f90
index d9a6896..0baa5b4 100644
--- a/users/rayt/usray2.f90
+++ b/users/rayt/usray2.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine usray2                               &
+subroutine usray2 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -52,27 +52,19 @@
    ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
+! Purpose:
+! --------
 
-!   SOUS-PROGRAMME DU MODULE DE RAYONNEMENT :
-!   -----------------------------------------
+! User subroutine for input of radiative transfer parameters: boundary conditions
 
-!   CARACTERISTIQUES ET COMPORTEMENT RADIATIF DES FACES DE PAROI
+! Sketch of thermal flux in boundary wall
 
-!   Ce sous-programme est appele autant de fois qu'il y a de phases
-!   pour lesquelles il faut faire un calcul de rayonnement
-!   semi-transparent
 
-!   IPHAS contient le numero absolu de la phase concernee
-
-
-
-!  EXTERIEUR       PAROI       DOMAINE FLUIDE
+!  Outside      Inside wall       Fluid domain
 !            |               |
 !            |               |
 !            |               |
-!            | EPSP Qincid<--|<----- Qincid             [flux incident]
+!            | EPSP Qincid<--|<----- Qincid             [Incident flux]
 !            |               |
 !            | [absorption]  |
 !            |               |
@@ -89,7 +81,7 @@
 !            |     XLAMP     |   .    Hfluide
 !            |               |  .
 !            |            ...o..
-!            |          ..   | Tparop (temperature en paroi)
+!            |          ..   | Tparop (Inside wall temperature)
 !            |         .     |
 !            |       ..      |
 !            |      .        |
@@ -97,19 +89,20 @@
 !            |   .           |
 !            o...            |
 !       Textp|               |
-!            |               |
-!            |<------------->|
-!            |     EPAP      |
+!(Outside    |               |
+! wall       |<------------->|
+! temprature)|     EPAP      |
 !            |               |
 
 
-!  LE CALCUL DES TEMPERATURES EST REALISEE PAR UN BILAN DE FLUX
-!  COMME SUIT :
+!  The radiative boundary condition ios based on the calculation of
+!  a new wall temperature.
+!  This temparature is computed with a thermal flux balance:
 
 !  Q           =  Q           + (Qrayt           - Qrayt        )
 !   conduction     convection         absorption        emission
 
-!  SOIT (flux positif si sortant du domaine de calcul) :
+!  therfore:
 
 !   XLAMP
 !   -----(Tparop-Textp) =
@@ -117,173 +110,144 @@
 !                                                             4
 !         Hfluide (Tfluide-Tparop) + EPSP (QINCID - SIGMA Tparop )
 
-
-!      CORPS                        EPSP
+!  Note: in Code_Saturne the flux is positive when it is oriented
+!  from inside to outside.
+!
+!
+!      CORPS                     Emissivity
 !      ------------------------------------
-!      acier poli                   0,06
-!      acier oxyd�                  0,80
-!      aceir rugueux                0,94
-!      aluminium poli               0,04
-!      aluminium oxyd� (int�rieur)  0,09
-!      aluminium oxyd� (air humide) 0,90
-!      brique                       0,93
-!      b�ton                        0,93
-!      papier                     0,8 � 0,9
-!      eau                          0,96
-
-
-! IDENTIFICATION DES FACES DE PAROI
-! =================================
-! L'identification des faces de bord concernees se fait grace
-! a la commande GETFBR.
-
-!  GETFBR(CHAINE,NLELT,LSTELT) :
-!  - CHAINE est une chaine de caractere fournie par l'utilisateur
-!    qui donne les criteres de selection
-!  - NLTELT est renvoye par la commande. C'est un entier qui
-!    correspond au nombre de faces de bord trouveees repondant au
-!    critere
-!  - LSTELT est renvoye par la commande. C'est un tableau d'entiers
-!    de taille NLTELT donnant la liste des faces de bord trouvees
-!    repondant au critere.
-
-!  CHAINE peut etre constitue de :
-!  - references de couleurs (ex. : 1, 8, 26, ...
-!  - references de groupes (ex. : entrees, groupe1, ...)
-!  - criteres geometriques (ex. X<0.1, Y>=0.25, ...)
-!  Ces criteres peuvent etre combines par des operateurs logiques
-!  (AND et OR) et des parentheses
-!  ex. : '1 AND (groupe2 OR groupe3) AND Y<1' permettra de recuperer
-!  les faces de bord de couleur 1, appartenant aux groupes 'groupe2'
-!  ou 'groupe3' et de coordonnee Y inferieure a 1.
+!      polished steel               0,06
+!      oxidized steel               0,80
+!      steel rough                  0,94
+!      polished aluminium           0,04
+!      oxidized aluminium (inside)  0,09
+!      oxidized aluminium (wet air) 0,90
+!      brick                        0,93
+!      concrete                     0,93
+!      paper                        0,8 to 0,9
+!      water                        0,96
+
+
+! Boundary faces identification
+! =============================
+
+! Boundary faces may be identified using the 'getfbr' subroutine.
+! The syntax of this subroutine is described in the 'usclim' subroutine,
+! but a more thorough description can be found in the user guide.
+
+! Note: these usefull constants are defined
+!       TKELVI = 273.16D0
+!       SIG    = 5.6703D-8
+
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! iphas            ! e  ! <-- ! numero de la phase courante                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! maxelt           !  e ! <-- ! nb max d'elements (cell,fac,fbr)               !
-! lstelt(maxelt) te ! --- ! tableau de travail                             !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! icodcl           ! te ! <-- ! code de condition limites aux faces            !
-!  (nfabor,nvar    !    !     !  de bord                                       !
-!                  !    !     ! = 1   -> dirichlet                             !
-!                  !    !     ! = 3   -> densite de flux                       !
-!                  !    !     ! = 4   -> glissemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 5   -> frottemt et u.n=0 (vitesse)           !
-!                  !    !     ! = 6   -> rugosite et u.n=0 (vitesse)           !
-!                  !    !     ! = 9   -> entree/sortie libre (vitesse          !
-!                  !    !     !  entrante eventuelle     bloquee               !
-! izfrdp(nfabor    ! te ! --> ! numero de zone pour les faces de bord          !
-! isothp(nfabor    ! te ! --> ! liste des frontieres isothermes                !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! rcodcl           ! tr ! --> ! valeur des conditions aux limites              !
-!  (nfabor,nvar    !    !     !  aux faces de bord                             !
-!                  !    !     ! rcodcl(1) = valeur du dirichlet                !
-!                  !    !     ! rcodcl(2) = valeur du coef. d'echange          !
-!                  !    !     !  ext. (infinie si pas d'echange)               !
-!                  !    !     ! rcodcl(3) = valeur de la densite de            !
-!                  !    !     !  flux (negatif si gain) w/m2 ou                !
-!                  !    !     !  hauteur de rugosite (m) si icodcl=6           !
-!                  !    !     ! pour les vitesses (vistl+visct)*gradu          !
-!                  !    !     ! pour la pression             dt*gradp          !
-!                  !    !     ! pour les scalaires                             !
-!                  !    !     !        cp*(viscls+visct/sigmas)*gradt          !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! tparop(nfabor    ! tr ! <-- ! temperature de paroi en kelvin                 !
-! qincid(nfabor    ! tr ! <-- ! densite de flux radiatif aux bords             !
-! hfcnvp(nfabor    ! tr ! <-- ! coefficient d'echange fluide aux               !
-!                  !    !     ! faces de bord                                  !
-! flcnvp(nfabor    ! tr ! <-- ! densite de flux convectif aux faces            !
-!                  !    !     ! de bord                                        !
-! xlamp(nfabor)    ! tr ! --> ! coefficient de conductivite thermique          !
-!                  !    !     ! des facettes de paroi (w/m/k)                  !
-! epap(nfabor)     ! tr ! --> ! epaisseur des facettes de paroi (m)            !
-! epsp (nfabor)    ! tr ! --> ! emissivite des facettes de bord                !
-! textp(nfabor)    ! tr ! --> ! temperature de bord externe                    !
-!                  !    !     ! en kelvin                                      !
-! tintp(nfabor)    ! tr ! --> ! temperature de bord interne                    !
-!                  !    !     ! en kelvin                                      !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! iphas            ! i  ! <-- ! current phase number                           !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! maxelt           !  e ! <-- ! max number of cells and faces (int/boundary)   !
+! lstelt(maxelt)   ! ia ! --- ! work array                                     !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! icodcl           ! ia ! <-- ! boundary condition code                        !
+!  (nfabor, nvar)  !    !     ! = 1  -> Dirichlet                              !
+!                  !    !     ! = 2  -> flux density                           !
+!                  !    !     ! = 4  -> sliding wall and u.n=0 (velocity)      !
+!                  !    !     ! = 5  -> friction and u.n=0 (velocity)          !
+!                  !    !     ! = 6  -> roughness and u.n=0 (velocity)         !
+!                  !    !     ! = 9  -> free inlet/outlet (velocity)           !
+!                  !    !     !         inflowing possibly blocked             !
+! izfrdp(nfabor)   ! ia ! --> ! boundary faces -> zone number                  !
+! isothp(nfabor)   ! ia ! --> ! boundary face type for radative transfer       !
+!                  !    !     ! = itpimp -> Gray wall with fixed inside temp   !
+!                  !    !     ! = ipgrno -> Gray wall with fixed outside temp  !
+!                  !    !     ! = iprefl -> Reflecting wall with fixed         !
+!                  !    !     !                                  outside temp  !
+!                  !    !     ! = ifgrno -> Gray wall with fixed               !
+!                  !    !     !                               conduction flux  !
+!                  !    !     ! = ifrefl -> Reflecting wall with fixed         !
+!                  !    !     !                               conduction flux  !
+! tmin             ! r  !     ! min value of the wall temperature              !
+! tmax             ! r  !     ! max value of the wall temperature              !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! rcodcl           ! ra ! --> ! boundary condition values                      !
+!                  !    !     ! rcodcl(3) = flux density value                 !
+!                  !    !     !  (negative for gain) in w/m2                   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !                                                !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse)   ! ra ! <-- ! user-reserved real work array                  !
+! tparop(nfabor)   ! ra ! <-- ! inside current wall temperature (K)            !
+! qincid(nfabor)   ! ra ! <-- ! radiative incident flux  (W/m2)                !
+! hfcnvp(nfabor)   ! ra ! <-- ! convective exchange coefficient (W/m2/K)       !
+! flcnvp(nfabor)   ! ra ! <-- ! convective flux (W/m2)                         !
+! xlamp(nfabor)    ! ra ! --> ! conductivity (W/m/K)                           !
+! epap(nfabor)     ! ra ! --> ! thickness (m)                                  !
+! epsp(nfabor)     ! ra ! --> ! emissivity (>0)                                !
+! textp(nfabor)    ! ra ! --> ! outside temperature (K)                        !
+! tintp(nfabor)    ! ra ! --> ! initial inside temperature (K)                 !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!-------------------------------------------------------------------------------
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -299,7 +263,6 @@ include "ppppar.h"
 include "radiat.h"
 include "ihmpre.h"
 
-
 !===============================================================================
 
 ! Arguments
@@ -345,8 +308,7 @@ double precision textp(nfabor), tintp(nfabor)
 
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
-
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          ifac , ivar, iok
@@ -356,9 +318,10 @@ integer          ilelt, nlelt
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_START
 !===============================================================================
-! 0.  CE TEST PERMET A L'UTILISATEUR D'ETRE CERTAIN QUE C'EST
-!       SA VERSION DU SOUS PROGRAMME QUI EST UTILISEE
-!       ET NON CELLE DE LA BIBLIOTHEQUE
+! 0.  This test allows the user to ensure that the version of this subroutine
+!       used is that from his case definition, and not that from the library.
+!     If a file from the GUI is used, this subroutine may not be mandatory,
+!       thus the default (library reference) version returns immediately.
 !===============================================================================
 
 if (iihmpr.eq.1) then
@@ -369,205 +332,118 @@ else
   !==========
 endif
 
- 9000 format(                                                           &
-'@                                                            ',/,&
+ 9000 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES               ',/,&
-'@    =========                                               ',/,&
-'@     LE SOUS-PROGRAMME UTILISATEUR usray2 DOIT ETRE COMPLETE',/,&
-'@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in definition of boundary conditions',/,   &
+'@    =======',/,                                                 &
+'@     The user subroutine ''usray2'' must be completed.',/, &
+'@',/,                                                            &
+'@  The calculation will not be run.',/,                          &
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
-
+'@',/)
 
 ! TEST_TO_REMOVE_FOR_USE_OF_SUBROUTINE_END
 !===============================================================================
-! 0. GESTION MEMOIRE
-!       Aucune modification requise
+! 0. Initialization
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
 !===============================================================================
-! 1. NUMERO DE LA VARIABLE THERMIQUE
-
-!       Noter que TKELVI, disponible ici, contient 273.16D0
-!       Noter que SIG   , disponible ici, contient 5.6703D-8
+! 1. IVAR: number of the thermal variable
 !===============================================================================
 
-!     IVAR est le numero de la variable thermique.
-
 ivar = isca(iscalt(iphas))
 
-
 !===============================================================================
-!  2. VALEURS MIN ET MAX ADMISSIBLES POUR LA TEMPERATURE DE PAROI
-!                            (clipping)
-
-
-
-!                            EN KELVIN
-
-
-!        (quel que soit le choix fait pour la variable thermique)
-
-
-
-
-!   TMIN et TMAX sont respectivement les valeurs minimale et maximale
-!     autorisees pour les temperatures de paroi. A chaque nouveau
-!     calcul de temperature de paroi, on verifie qu'il n'y a pas
-!     depassement, sinon il y a clipping.
-
-!   L'exemple ci-dessous correspond a un clipping tres peu contraignant.
-!     (valeurs par defaut)
-
+!  2. Min and max values for the wall temperatures (clipping otherwise)
+!   TMIN and TMAX are given in Kelvin.
 !===============================================================================
 
 tmin = 0.d0
 tmax = grand + tkelvi
 
 !===============================================================================
-! 3. ZONES FRONTIERE ET PROPRIETES DES PAROIS
+! 3. Assign boundary conditions to boundary wall
 !===============================================================================
 
+!     ZONES DEFINITION
+!     ================
 
-!     DEFINITION DES ZONES FRONTIERES
-!     ===============================
-
-!     On definit des zones de faces de paroi, et on leur affecte un type.
-!       Ceci permet d'appliquer les conditions aux limites et de realiser
-!       des bilans en traitant separement les differents sous ensembles
-!       ainsi constitues (on peut ainsi connaitre par exemple le flux au
-!       travers des differentes zones definies par l'utilisateur).
-
-!     Pour chaque face de bord IFAC (pas uniquement les faces de paroi),
-!       l'utilisateur definit selon son propre choix un numero de zone
-!       frontiere IZFRDP(IFAC) a partir
-!         de la couleur des faces de bord,
-!         ou, plus generalement, de leurs proprietes (couleurs, groupes...),
-!         ou des conditions aux limites fixees dans usclim,
-!         ou meme de leur coordonnees.
-!     Attention : il est indispensable que TOUTES les faces de bord
-!       aient ete affectees a une zone.
-!     Le numero des zones (la valeur de IZFRDP(IFAC)) est
-!       arbitrairement choisi par l'utilisateur, mais doit etre un
-!       entier strictement positif et inferieur ou egal a NBZRDM
-!       (valeur fixee en parametre dans radiat.h, a ne pas modifier).
-
-
-
-!     PROPRIETES DES PAROIS
-!     =====================
+!     We define zones of wall boundary, and we assign a type.
+!       This allows to apply the boundary conditions and realize
+!       balance sheets by treating them separately for each zone.
 
+!     For each boundary face ifac (not just the faces of wall)
+!       the user defines his own choice by a number of zone
+!       IZFRDP(ifac) from color of the boundary face
+!         or more generally, their properties (color, groups ...),
+!         or boundary conditions specified in usclim,
+!         or even of their coordinates.
+!     Warning: it is essential that ALL boundary faces
+!       have been assigned to a zone.
+!     The number of zones (the value of IZFRDP(ifac)) is
+!       arbitrarily chosen by the user, but must be a
+!       positive integer and less than or equal to NBZRDM
+!       (value set in parameter radiat.h).
 
-!      ATTENTION :
-!      ---------
 
-!             L'unite des temperatures est le KELVIN
 
-!        quel que soit le choix de resolution fait par ailleurs
+!     WALL CARACTERISTICS
+!     ===================
 
+!      WARNING: the unity of the temperature is the Kelvin
+!      -------
 
+!      Mandatory data:
+!      ---------------
+!      isothp(ifac) boundary face type
+!                  = itpimp -> Gray wall with fixed inside temperature
+!                  = ipgrno -> Gray wall with fixed outside temperature
+!                  = iprefl -> Reflecting wall with fixed outside temperature
+!                  = ifgrno -> Gray wall with fixed conduction flux
+!                  = ifrefl -> Reflecting wall with fixed conduction flux
 
-!      DONNEES OBLIGATOIRES :
-!      --------------------
+!      tintp(ifac) inside wall temperature (Kelvin)
+!                  initialize tparop at the first time step.
+!                  If isothp = itpimp, the value of tparop is fixed to tintp
+!                  In the other case, tintp is only for initialization.
 
-!      ISOTHP = ITPIMP
-!                repere les facettes de paroi a temperature imposee
-!                  ("Indicateur Temperature Paroi IMPosee" ou "isotherme")
-!                  la temperature a imposer est TINTP(Kelvin)
-!             = IPGRNO ou IPREFL
-!                repere une facette de paroi dont il faut calculer
-!                  la temperature (un bilan de flux sera fait).
-!                  IPGRNO : Indicateur de Paroi GRise ou NOire (EPSP > 0)
-!                  IPREFL : Indicateur de Paroi REFLechissante (EPSP = 0)
-!             = IFGRNO ou IFREFL
-!                repere une facette de paroi pour laquelle on impose un
-!                  flux (conductif en paroi ou total sur le fluide)
-!                  IFGRNO : Indicateur de Flux en paroi GRise ou NOire
-!                  IFREFL : Indicateur de Flux en paroi REFLechissante
 
-!      TINTP = Temperature de peau interne (KELVIN)
-!               sert a l'initialisation de TPAROP en debut de calcul
-!               (lorsqu'il n'y a pas de fichier suite rayonnement)
-!                 Si ISOTHP = ITPIMP, la valeur de TPAROP est egale a
-!                   celle imposee dans TINTP a chaque pas de temps
-!                 Dans les autres cas, TINTP ne sert qu'a l'initialisation.
+!      Other data (depend of the isothp):
+!      ----------------------------------
 
+!      rcodcl = conduction flux
+!      epsp   = emissivity
+!      xlamp  = conductivity (W/m/K)
+!      epap   = thickness (m)
+!      textp  = outside temperature (K)
 
-!      RENSEIGNEMENTS COMLEMENTAIRES A FOURNIR SUIVANT ISOTHP (VOIR EXEMPLES)
-!      --------------------------------------------------------------------
 
-!      RCODCL = valeur de flux (voir USCLIM pour la definition)
-
-!      EPSP   = Emissivite aux facettes de paroi (dans l'intervalle [0;1])
-
-!      XLAMP  = Conductivite thermique des parois (W/m/K)
-!               > 0 quand il est renseigne
-
-!      EPAP   = Epaisseur des parois (m)
-!               > 0 quand il est renseigne
-
-!      TEXTP  = Temperature de peau externe en KELVIN
-!               > 0 quand il est renseigne
-
-
-
-!     EXEMPLE
+!     EXAMPLE
 !     =======
 
-!      Attention a la coherence avec USCLIM
-
-!      Dans cet EXEMPLE,
-!               -------
-
-!        Les faces de paroi (IPAROI et IPARUG), sont reparties en
-!          5 sous ensembles (zones) reperes par IFRFAC(IFAC) variant de
-!          51 a 55 (arbitraire) a chacun desquels on applique une
-!          condition (ISOTHP) differente.
-!        Les autres faces de bord (entree, sortie, sous-ensembles
-!          arbitraires sur lesquels on souhaite voir imprimer des
-!          informations) sont repartis en zones reperees
-!          par IFRFAC(IFAC), dont la valeur peut etre arbitrairement
-!          choisie (>0 et <NBZRDM+1).
-
-!        Remarque : une maniere simple (mais non generale) d'affecter
-!          rapidement des valeurs a IFRFAC est IFRFAC(IFAC) = ICOUL,
-!          ou ICOUL est la couleur de la face.
-
-
-
-
-
-
-
-
-
-
-!             DANS TOUS LES CAS, IL EST INTERDIT
-!                                       ========
-
-!                       DE MODIFIER TPAROP ou QINCID ICI.
-
-
-
-
-
-
-
-
-!    Indicateur : nombre de faces oubliees.
+!        Wall boundary faces (IPAROI and IPARUG), are devided into 5 zones
+!          located with IFRFAC(IFAC) in the range of number from 51 to 55.
+!          For each location a different radiative boundary condition is applied.
+!        For all other boundary that are not wall (i.e. inlet, oulet, symetry)
+!          the user can define arbritay new zone using the array IFRFAC(IFAC),
+!          for wich a value can be arbitrarily choosen between 1 and NBZRDM.
+!
+!     Warning: it is forbidden to modify tparop and qincid in this subroutine
+!     ========
+
+!    Indicator for forgotten faces.
 iok = 0
 
 !   -------------------------------------------------------------------
-!-->  Exemple 1 :
-!      Pour les faces PAROI de couleur 1 :
-!           Profil de temperature imposee
+!-->  Example 1:
+!       For wall boundary faces, selection criteria: color 1
+!       Gray or black wall with profil of fixed inside temperature
 !       ------------------------------------
 
 CALL GETFBR('1',NLELT,LSTELT)
@@ -579,17 +455,16 @@ do ilelt = 1, nlelt
 
   if ( itypfb(ifac,iphas).eq.iparoi ) then
 
-!      Numero de zone
+!      zone number
     izfrdp(ifac) = 51
 
-!      Type de condition : Paroi grise ou noire et
-!                          Profil de temperature imposee TINTP
+!      Type of condition: gray or black wall with fixed inside temperature
     isothp(ifac) = itpimp
 
-!      Donnees complementaires necessaires et suffisantes
-!        Emissivite
+!      Emissivity
     epsp  (ifac) = 0.1d0
-!        Temperature de paroi imposee ("Profil" simple ici = 473.16 K)
+
+!      Profil of fixed inside temperature
     tintp (ifac) = 200.d0 + tkelvi
 
   endif
@@ -597,10 +472,9 @@ do ilelt = 1, nlelt
 enddo
 
 !   -------------------------------------------------------------------
-!-->  Exemple 2 :
-!      Pour les faces PAROI RUGUEUSE de couleur 2 :
-!           Paroi grise ou noire et
-!           Profil de temperature imposee TEXTP
+!-->  Example 2 :
+!       For wall boundary faces, selection criteria: color 2
+!       Gray or black wall with fixed outside temperature TEXTP
 !       ------------------------------------
 
 CALL GETFBR('2',NLELT,LSTELT)
@@ -612,23 +486,21 @@ do ilelt = 1, nlelt
 
   if ( itypfb(ifac,iphas).eq.iparug ) then
 
-!      Numero de zone
+!      zone number
     izfrdp(ifac) = 52
 
-!      Type de condition : Paroi grise ou noire et
-!                          Profil de temperature imposee TEXTP
+!      Type of condition: gray or black wall with fixed outside temperature TEXTP
     isothp(ifac) = ipgrno
 
-!      Donnees complementaires necessaires et suffisantes
-!        Emissivite (>0)
+!        Emissivity
     epsp  (ifac) = 0.9d0
-!        Conductivite (W/m/K)
+!        Conductivity (W/m/K)
     xlamp (ifac) = 3.0d0
-!        Epaisseur    (m)
+!        Thickness    (m)
     epap  (ifac) = 0.1d0
-!        Temperature externe imposee : 473.16 K
+!        Fixed outside temperature: 473.16 K
     textp (ifac) = 200.d0 + tkelvi
-!        Temperature de paroi initiale : 473.16 K
+!        Initial inside temperature: 473.16 K
     tintp (ifac) = 200.d0 + tkelvi
 
   endif
@@ -637,9 +509,8 @@ enddo
 
 !   -------------------------------------------------------------------
 !-->  Exemple 3 :
-!      Pour les faces PAROI de couleur 3 :
-!           Paroi reflechissante (EPSP = 0) et
-!           Profil de temperature imposee TEXTP
+!       For wall boundary faces, selection criteria: color 3
+!       Reflecting wall (EPSP = 0) with fixed outside temperature TEXTP
 !       ------------------------------------
 
 CALL GETFBR('3',NLELT,LSTELT)
@@ -651,21 +522,19 @@ do ilelt = 1, nlelt
 
   if ( itypfb(ifac,iphas).eq.iparoi ) then
 
-!      Numero de zone
+!      zone number
     izfrdp(ifac) = 53
 
-!      Type de condition : Paroi reflechissante (EPSP = 0) et
-!                          Profil de temperature imposee TEXTP
+!      Type of condition: reflecting wall with fixed outside temperature TEXTP
     isothp(ifac) = iprefl
 
-!      Donnees complementaires necessaires et suffisantes
-!        Conductivite (W/m/K)
+!        Conductivity (W/m/K)
     xlamp (ifac) = 3.0d0
-!        Epaisseur    (m)
+!        Thickness    (m)
     epap  (ifac) = 0.1d0
-!        Temperature externe imposee : 473.16 K
+!        Fixed outside temperature: 473.16 K
     textp (ifac) = 200.d0 + tkelvi
-!        Temperature de paroi initiale : 473.16 K
+!        Initial inside temperature: 473.16 K
     tintp (ifac) = 200.d0 + tkelvi
 
   endif
@@ -673,23 +542,21 @@ do ilelt = 1, nlelt
 enddo
 
 !   -------------------------------------------------------------------
-!-->  Exemple 4 :
-!      Pour les faces PAROI de couleur 4 :
-!           Paroi grise ou noire et
-!           Flux de conduction impose dans la paroi
+!-->  Example 4 :
+!      For wall boundary faces which have the color 4:
+!           gray or black wall and fixed conduction flux through the wall
 
 !        XLAMP
-!        -----(Tparop-Textp) = Flux de conduction impose (W/m2)
+!        -----(Tparop-Textp) = fixed conduction flux     (W/m2)
 !        EPAP
 !                         = RODCL(IFAC,IVAR,3)
 
-!       Si le flux de conduction est nul la paroi est adiabatique
-!       Le tableau RCODCL(IFAC,IVAR,3) recoit la valeur du flux.
-!       Densite de flux (< 0 si gain pour le fluide)
-!       Reprise de USCLIM :
-!         Pour les temperatures T,         en Watt/m2       :
+!       If the conduction flux is zero then the wall is adiabatic.
+!       The array RCODCL(IFAC,IVAR,3) has the value of the flux.
+!       Flux density (< 0 if gain for the fluid)
+!         For temperatures T,    in Watt/m2:
 !            RCODCL(IFAC,IVAR,3) = CP*(VISCLS+VISCT/SIGMAS) * GRAD T
-!         Pour les enthalpies H,           en Watt/m2       :
+!         For enthalpies H,      in Watt/m2:
 !            RCODCL(IFAC,IVAR,3) =    (VISCLS+VISCT/SIGMAS) * GRAD H
 !       ------------------------------------
 
@@ -702,19 +569,17 @@ do ilelt = 1, nlelt
 
   if ( itypfb(ifac,iphas).eq.iparoi ) then
 
-!      Numero de zone
+!      zone number
     izfrdp(ifac) = 54
 
-!      Type de condition : Paroi grise ou noire et
-!                          Flux de conduction impose dans la paroi
+!      Type of condition: gray or black wall with fixed conduction flux through the wall
     isothp(ifac) = ifgrno
 
-!      Donnees complementaires necessaires et suffisantes
-!        Emissivite (>0)
+!      Emissivity
     epsp  (ifac) = 0.9d0
-!        Flux de conduction (W/m2)
+!      Conduction flux (W/m2)
     rcodcl(ifac,ivar,3) = 0.d0
-!        Temperature de paroi initiale : 473.16 K
+!      Initial inside temperature: 473.16 K
     tintp (ifac) = 200.d0 + tkelvi
 
   endif
@@ -722,26 +587,25 @@ do ilelt = 1, nlelt
 enddo
 
 !   -------------------------------------------------------------------
-!-->  Exemple 5 :
+!-->  Example 5 :
 !      Pour les faces PAROI de couleur 5 :
 !           Paroi reflechissante (EPSP = 0) et
 !           Flux de conduction impose dans la paroi
+!      For wall boundary faces which have the color 5:
+!           reflecting wall and fixed conduction flux through the wall
 
 !      Equivalent a imposer une condition de flux au fluide
 
 !        XLAMP
-!        -----(Tparop-Textp) = Flux de conduction impose ET EPSP = 0
+!        -----(Tparop-Textp) = fixed conduction flux and EPSP = 0
 !        EPAP
 !                         = RODCL(IFAC,IVAR,3)
 
-!       Si le flux de conduction est nul la paroi est adiabatique
-!       Le tableau RCODCL(IFAC,IVAR,3) contient la valeur du flux (W/m2)
-!       imposee comme condition au limite pour le fluide
-!       Densite de flux (< 0 si gain pour le fluide)
-!       Reprise de USCLIM :
-!         Pour les temperatures T,         en Watt/m2       :
+!       If the conduction flux is zero then the wall is adiabatic.
+!       Flux density (< 0 if gain for the fluid)
+!         For temperatures T,    in Watt/m2:
 !            RCODCL(IFAC,IVAR,3) = CP*(VISCLS+VISCT/SIGMAS) * GRAD T
-!         Pour les enthalpies H,           en Watt/m2       :
+!         For enthalpies H,      in Watt/m2:
 !            RCODCL(IFAC,IVAR,3) =    (VISCLS+VISCT/SIGMAS) * GRAD H
 !       ------------------------------------
 
@@ -754,58 +618,27 @@ do ilelt = 1, nlelt
 
   if ( itypfb(ifac,iphas).eq.iparoi ) then
 
-!      Numero de zone
+!      zone number
     izfrdp(ifac) = 55
 
-!      Type de condition : Paroi reflechissante (EPSP = 0) et
-!                          Flux de conduction impose dans la paroi
+!      Type of condition: reflecting wall with fixed conduction flux through the wall
     isothp(ifac) = ifrefl
 
-!      Donnees complementaires necessaires et suffisantes
-!        Flux de conduction (W/m2)
+!      Conduction flux (W/m2)
     rcodcl(ifac,ivar,3) = 0.d0
-!        Temperature de paroi initiale : 473.16 K
+!      Initial inside temperature: 473.16 K
     tintp (ifac) = 200.d0 + tkelvi
 
   endif
 
 enddo
 
-
-
-
-
-
-
-!                           ATTENTION
-
-
-
-
-
-
-
-
-
-
+!                           WARNING
 
 !   -------------------------------------------------------------------
-!-->   Pour les faces non paroi : reperage obligatoire de la zone
-!        Les informations (flux par exemple) seront donnees zone par zone
-!        et il est donc conseille de regrouper entre elles les faces
-!        de meme nature.
-
-!                             PAR SECURITE
-!                        DANS CE SOUS-PROGRAMME
-!          ON DEMANDE A L'UTILISATEUR DE REPERER TOUTES LES FACES
-!                             PAROI OU NON
-
-!        (il est indispensable d'affecter une valeur a tous les
-!            IZFRDP(IFAC), IFAC = 1, NFABOR)
-
-
-
-
+!-->   For all boundary faces that are not wall it is MANDATORY to
+!      impose a number of zone in the array izfrdp.
+!      For each zone, informations will be displayed in the listing.
 !       ------------------------------------
 
 do ifac = 1, nfabor
@@ -824,9 +657,8 @@ do ifac = 1, nfabor
 
 
 !   -------------------------------------------------------------------
-!-->  Exemple 7 :
-!      Verification que toutes les faces de paroi ont ete vues
-!       Cette precaution est souhaitable dans tous les cas.
+!-->  Example 7 :
+!      Verification that all boundary faces have been treated.
 !       ------------------------------------
 
   elseif ( itypfb(ifac,iphas).eq.iparoi .or.                      &
@@ -840,12 +672,12 @@ do ifac = 1, nfabor
 
 
 
-!     Fin de la boucle sur les faces de bord
-!     --------------------------------------
+!     End of the loop on the boundary faces
+!     -------------------------------------
 
 enddo
 
-! Stop si des faces ont ete oubliees
+! Stop if there are forgotten faces
 if(iok.ne.0) then
   call csexit (1)
   !==========
@@ -856,26 +688,25 @@ endif
 ! -------
 
 
- 1000 format(                                                           &
-'@                                                            ',/,&
+ 1000 format(                                                     &
+'@',/,                                                            &
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/,&
-'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES               ',/,&
-'@    =========                                               ',/,&
-'@     LES DONNEES RAYONNEMENT NE SONT PAS RENSEIGNEES POUR   ',/,&
-'@       LA FACE DE PAROI ',I10                                ,/,&
-'@                                                            ',/,&
-'@  Le calcul ne sera pas execute.                            ',/,&
-'@                                                            ',/,&
-'@  Verifier usray2.                                          ',/,&
+'@',/,                                                            &
+'@ @@ WARNING:    stop in definition of boundary conditions',/,   &
+'@    =======',/,                                                 &
+'@   Radiative data are missing for face: ',I10,/,                &
+'@',/,                                                            &
+'@     The user subroutine ''usray2'' must be completed.',/, &
+'@',/,                                                            &
+'@  The calculation will not be run.',/,                          &
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
-'@                                                            ',/)
+'@',/)
+
 ! ---
-! FIN
+! END
 ! ---
 
-
 return
 
-end
+end subroutine
diff --git a/users/rayt/usray3.f90 b/users/rayt/usray3.f90
index 7013377..ac793f8 100644
--- a/users/rayt/usray3.f90
+++ b/users/rayt/usray3.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine usray3                               &
+subroutine usray3 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -78,93 +78,78 @@
 !-------------------------------------------------------------------------------
 !ARGU                             ARGUMENTS
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! iphas            ! e  ! <-- ! numero de la phase courante                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! iphas            ! i  ! <-- ! phase number                                   !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
 ! izfrdp(nfabor    ! te ! <-- ! numero de zone pour les faces de bord          !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
+! idevel(nideve)   ! ia ! <-> ! integer work array for temporary development   !
+! ituser(nituse)   ! ia ! <-> ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfabor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and previous time steps)          !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
 ! ck (ncelet)      ! tr ! --> ! coefficient d'absorption du milieu             !
 !                  !    !     ! (nul si transparent)                           !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary development      !
 ! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! rtuser(nrtuse)   ! ra ! <-> ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!-------------------------------------------------------------------------------
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -217,7 +202,7 @@ double precision ck(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra , iel, ifac, iok
 double precision vv, sf, xlc, xkmin, pp
@@ -383,4 +368,4 @@ endif
 '@                                                            ',/)
 
 
-end
+end subroutine
diff --git a/users/rayt/usray4.f90 b/users/rayt/usray4.f90
index 0c78e3b..2a2d3b9 100644
--- a/users/rayt/usray4.f90
+++ b/users/rayt/usray4.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine usray4                               &
+subroutine usray4 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -49,129 +49,99 @@
    ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
+! Purpose:
+! --------
 
+! User subroutine for input of radiative transfer parameters:
 
-!   SOUS-PROGRAMME D'ACCUEIL DE LA ROUTINE USTHHT
-!   POUR LES CONVERSIONS TEMPERATURE <-> ENTHALPIE
-
-
-
-!   PRECAUTIONS D'EMPLOI :
-!   ======================
-
-!     A) L'ENTHALPIE DOIT ETRE CONVERTIE EN TEMPERATURE EN KELVIN
-!        IL FAUT ECRIRE UNE LOI DE CONVERSION :
-!        ENTHALPIE   -> TEMPERATURE (MODE =  1)
-!        POUR REMPLIR TEMPK
-
-
-!     B) SI DE PLUS ON CALCUL LES TEMPERATURES DE PAROI (ICALPA=1)
-!        ALORS IL FAUT FOURNIR UNE LOI DE CONVERSION :
-!        TEMPERATURE -> ENTHALPIE   (MODE = -1)
-!        POUR REMPLIR HPAROP
-
-!   ATTENTION : LA BONNE VALEUR DE MODE EST DONNEE EN ARGUMENT
-!   ^^^^^^^^^   ELLE NE DOIT PAS ETRE MODIFIEE PAR L'UTILISATEUR
+!   Temperature <--> enthalpy convertion
+!   Usefull if the thermal scalar is an enthalpy.
 
+!   PRECAUTIONS: ENTHALPY MUST BE CONVERTED IN KELVIN TEMPERATURE
 
+!   Warning: it is forbidden to modify MODE in this subroutine
 
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! iphas            ! e  ! <-- ! numero de la phase courante                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! mode             ! e  ! <-- ! type de conversion enthal<->tempk              !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! cofrua,cofrub    ! tr ! --> ! conditions aux limites aux                     !
-!(nfabor)          !    !     !    faces de bord pour la luminances            !
-! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! tempk(ncelet)    ! tr ! --> ! temperature en kelvin                          !
-! hparop(nfabor    ! tr ! --> ! enthalpie massique de paroi en j/kg            !
-!                  !    !     ! (en degres celsius ou kelvin)                  !
-! tparop(nfabor    ! tr ! <-- ! temperature de paroi en kelvin                 !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! iphas            ! i  ! <-- ! current phase number                           !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! mode             ! i  ! <-- ! convertion mode                                !
+!                  !    !     ! mode = 1 enthaly -> temperature                !
+!                  !    !     ! mode =-1 temperature -> enthaly                !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !                                                !
+! tparop(nfabor)   ! i  ! <-- ! temperature in kelvin for wall boundary faces  !
+! hparop(nfabor)   ! i  ! --> ! enthalpy for wall boundary faces               !
+! tempk(ncelet)    ! i  ! --> ! temperature in kelvin                          !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse)   ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!-------------------------------------------------------------------------------
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -226,7 +196,7 @@ double precision tparop(nfabor), hparop(nfabor)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra
 integer          iel , ifac , iscal
@@ -234,27 +204,19 @@ integer          iel , ifac , iscal
 !===============================================================================
 
 !===============================================================================
-! 0 - GESTION MEMOIRE
+! 1 - INITIALISATIONS GENERALES
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
-!===============================================================================
-! 1 - INITIALISATIONS GENERALES
-!===============================================================================
-
-!---> INITIALISATION DES CONSTANTES
-
 iscal = iscalt(iphas)
 
 !===============================================================================
-!  2.1 - CALCUL DE LA TEMPERATURE EN KELVIN AUX CELLULES
+!  2.1 - Tempearature in kelvin for cells
 !===============================================================================
 
-!---> CONVERSION ENTHALPIE -> TEMPERATURE (MODE =  1)
-!     AUX CELLULES FLUIDES
-!     (UTILE SI NON TRANSPARENT)
+!---> enthalpy -> temperature convertion (MODE =  1)
 !     -----------------------------------------------
 
 
@@ -268,12 +230,11 @@ endif
 
 
 !===============================================================================
-!  2.2 - CALCUL DE L'ENTHALPIE AU FACES DE BORD
+!  2.2 - Enthalpy for wall boundary faces
 !===============================================================================
 
-!---> CONVERSION TEMPERATURE -> ENTHALPIE (MODE = -1)
-!     AUX FACES DE BORD DE PAROI (ISOTHP.NE.-1) SOIT
-!                                (ITYPFB(IFAC).EQ.IPAROI OU IPARUG)
+!---> Temperature -> enthalpy (MODE = -1)
+!     -----------------------------------
 
 
 if (mode.eq.-1) then
@@ -292,8 +253,8 @@ if (mode.eq.-1) then
 endif
 
 !----
-! FIN
+! END
 !----
 
 return
-end
+end subroutine
diff --git a/users/rayt/usray5.f90 b/users/rayt/usray5.f90
index f8895ed..de58819 100644
--- a/users/rayt/usray5.f90
+++ b/users/rayt/usray5.f90
@@ -6,7 +6,7 @@
 !     This file is part of the Code_Saturne Kernel, element of the
 !     Code_Saturne CFD tool.
 
-!     Copyright (C) 1998-2008 EDF S.A., France
+!     Copyright (C) 1998-2009 EDF S.A., France
 
 !     contact: saturne-support at edf.fr
 
@@ -28,7 +28,7 @@
 
 !-------------------------------------------------------------------------------
 
-                  subroutine usray5                               &
+subroutine usray5 &
 !================
 
  ( idbia0 , idbra0 ,                                              &
@@ -49,186 +49,150 @@
    ra     )
 
 !===============================================================================
-! FONCTION :
-! ----------
+!  Purpose:
+!  --------
 
-!   SOUS-PROGRAMME DU MODULE DE RAYONNEMENT :
-!   -----------------------------------------
+! User subroutine for input of radiative transfer parameters.
 
-!   Ce sous-programme est appele 2 fois pour chaque phase IPHAS
-!   pour laquelle il faut faire un calcul de rayonnement
-!   semi-transparent.
+! This subroutine is calle twice. The first time is for boundary conditions.
+! The second time is for the net radiation flux computation.
 
 
+!  1. Fisrt call (IAPPEL = 1)
+!  ==========================
 
-!  1. PREMIER APPEL (IAPPEL = 1)
-!  =============================
+!    1.1 Boundary conditions fot the radiative intensity (DO model)
+!    --------------------------------------------------------------
 
+!       The array COFRUA store the intensity for each boundary faces,
+!         depending of the natur of the boundary (Dirichlet condition).
+!       The intensity of radiation is defined as the rate of emitted
+!         energy from unit surface area through unit solid angle.
 
+!       For example:
 
-!    1.1 Conditions aux limites pour la luminance
-!    --------------------------------------------
 
-!       Il faut completer COFRUA qui fournit la luminance au bord
-!         selon le type de frontiere (condition de Dirichlet).
-!       La luminance est la puissance surfacique par unite
-!         d'angle solide
-
-
-!       Par exemple, on a
-
-
-! 1/ Paroi grise : rayonnement isotrope.
+! 1/ Gray wall: isotropic radiation field.
 !                                    4
 !                      eps.sig.tparoi         (1-eps).qincid
 !        cofrua   =    --------------    +    --------------
 !                            pi                     pi
-!  luminance de bord   emission propre         flux reflechi.
-
-!     (eps=1 : paroi noire ; eps=0 : paroi reflechissante )
+!  wall intensity     wall emission           reflecting flux.
 
-! Pour une paroi , la luminance (i.e l'energie rayonnee par la
-! paroi ) comprend son emission propre  et l'energie reflechie.
-!  (CF LE SOUS-PROGRAMME usray2)
+!     (eps=1: black wall; eps=0: reflecting wall)
 
 
-! 2/ Milieu libre : luminance rentrante nulle
+! 2/ Free boundary: entering intensity is fixed to zero
 
 !        cofrua   =   0.D0
 
-!    (si l'utilisateur a plus d'informations, il peut ameliorer
-!     la situation)
-
+!    (if the user has more information, he can do something better)
 
 
-!    L'exemple fourni ci-apres represente les conditions "par defaut"
-!      et suffit generalement (si l'utilisateur a utilise
-!      les types standard de conditions aux limites dans usclim)
 
+!    1.2 Boundary conditions fior the P-1 model
+!    ------------------------------------------
 
 
-!    1.2 Conditions aux limites pour le modele P-1
-!    ---------------------------------------------
 
+!  2. Second call(IAPPEL = 2)
+!  ==========================
 
+!      The density of net radiation flux must calculated
+!        consistently with the boundary conditions of the intensity.
+!      The density of net flux is the balance between the radiative
+!      emiting part of a boudary face (and not the reflecting one)
+!      and the radiative absorbing part.
 
-
-!  2. DEUXIEME APPEL (IAPPEL = 2)
-!  =============================
-
-!      La densite de flux net radiatif doit etre calculee
-!        de maniere coherente avec les conditions aux limites
-!        de la luminance. La densite de flux net radiatif est
-!DONF         le bilan entre le rayonnement qu'une face de bord emet
-!        (et non pas le rayonnement qu'elle reflechit) et celui
-!        qu'elle absorbe.
-
-!      L'exemple fourni est coherent avec l'exemple fourni pour
-!        conditions aux limites sur la luminance au premier appel
-!        et suffi donc en general.
-
+!      The provided example is consistently with the proposed boundary
+!      conditions for the intensity.
 
 !-------------------------------------------------------------------------------
-!ARGU                             ARGUMENTS
+! Arguments
 !__________________.____._____.________________________________________________.
-!    nom           !type!mode !                   role                         !
+! name             !type!mode ! role                                           !
 !__________________!____!_____!________________________________________________!
-! idbia0           ! e  ! <-- ! numero de la 1ere case libre dans ia           !
-! idbra0           ! e  ! <-- ! numero de la 1ere case libre dans ra           !
-! ndim             ! e  ! <-- ! dimension de l'espace                          !
-! ncelet           ! e  ! <-- ! nombre d'elements halo compris                 !
-! ncel             ! e  ! <-- ! nombre d'elements actifs                       !
-! nfac             ! e  ! <-- ! nombre de faces internes                       !
-! nfabor           ! e  ! <-- ! nombre de faces de bord                        !
-! nfml             ! e  ! <-- ! nombre de familles d entites                   !
-! nprfml           ! e  ! <-- ! nombre de proprietese des familles             !
-! nnod             ! e  ! <-- ! nombre de sommets                              !
-! lndfac           ! e  ! <-- ! longueur du tableau nodfac (optionnel          !
-! lndfbr           ! e  ! <-- ! longueur du tableau nodfbr (optionnel          !
-! ncelbr           ! e  ! <-- ! nombre d'elements ayant au moins une           !
-!                  !    !     ! face de bord                                   !
-! nvar             ! e  ! <-- ! nombre total de variables                      !
-! nscal            ! e  ! <-- ! nombre total de scalaires                      !
-! iphas            ! e  ! <-- ! numero de la phase courante                    !
-! nideve nrdeve    ! e  ! <-- ! longueur de idevel rdevel                      !
-! nituse nrtuse    ! e  ! <-- ! longueur de ituser rtuser                      !
-! ifacel           ! te ! <-- ! elements voisins d'une face interne            !
-! (2, nfac)        !    !     !                                                !
-! ifabor           ! te ! <-- ! element  voisin  d'une face de bord            !
-! (nfabor)         !    !     !                                                !
-! ifmfbr           ! te ! <-- ! numero de famille d'une face de bord           !
-! (nfabor)         !    !     !                                                !
-! ifmcel           ! te ! <-- ! numero de famille d'une cellule                !
-! (ncelet)         !    !     !                                                !
-! iprfml           ! te ! <-- ! proprietes d'une famille                       !
-! nfml  ,nprfml    !    !     !                                                !
-! itypfb(nfabor    ! te ! <-- ! type des faces de bord                         !
-!  nphas      )    !    !     !                                                !
-! ipnfac           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfac)       !    !     !  face interne dans nodfac (optionnel)          !
-! nodfac           ! te ! <-- ! connectivite faces internes/noeuds             !
-!   (nfac+1)       !    !     !  (optionnel)                                   !
-! ipnfbr           ! te ! <-- ! position du premier noeud de chaque            !
-!   (lndfbr)       !    !     !  face de bord dans nodfbr (optionnel)          !
-! nodfbr           ! te ! <-- ! connectivite faces de bord/noeuds              !
-!   (nfabor+1)     !    !     !  (optionnel)                                   !
-! izfrdp(nfabor    ! te ! <-- ! numero de zone pour les faces de bord          !
-! idevel(nideve    ! te ! <-- ! tab entier complementaire developemt           !
-! ituser(nituse    ! te ! <-- ! tab entier complementaire utilisateur          !
-! ia(*)            ! tr ! --- ! macro tableau entier                           !
-! xyzcen           ! tr ! <-- ! point associes aux volumes de control          !
-! (ndim,ncelet     !    !     !                                                !
-! surfac           ! tr ! <-- ! vecteur surface des faces internes             !
-! (ndim,nfac)      !    !     !                                                !
-! surfbo           ! tr ! <-- ! vecteur surface des faces de bord              !
-! (ndim,nfabor)    !    !     !                                                !
-! cdgfac           ! tr ! <-- ! centre de gravite des faces internes           !
-! (ndim,nfac)      !    !     !                                                !
-! cdgfbo           ! tr ! <-- ! centre de gravite des faces de bord            !
-! (ndim,nfabor)    !    !     !                                                !
-! xyznod           ! tr ! <-- ! coordonnes des noeuds (optionnel)              !
-! (ndim,nnod)      !    !     !                                                !
-! volume           ! tr ! <-- ! volume d'un des ncelet elements                !
-! (ncelet          !    !     !                                                !
-! dt(ncelet)       ! tr ! <-- ! pas de temps                                   !
-! rtp, rtpa        ! tr ! <-- ! variables de calcul au centre des              !
-! (ncelet,*)       !    !     !    cellules (instant courant ou prec)          !
-! propce           ! tr ! <-- ! proprietes physiques au centre des             !
-! (ncelet,*)       !    !     !    cellules                                    !
-! propfa           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfac,*)        !    !     !    faces internes                              !
-! propfb           ! tr ! <-- ! proprietes physiques au centre des             !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! coefa, coefb     ! tr ! <-- ! conditions aux limites aux                     !
-!  (nfabor,*)      !    !     !    faces de bord                               !
-! cofrua,cofrub    ! tr ! --> ! conditions aux limites aux                     !
-!(nfabor)          !    !     !    faces de bord pour la luminances            !
-! w1...6(ncelet    ! tr ! --- ! tableau de travail                             !
-! tparoi(nfabor    ! tr ! <-- ! temperature de paroi en kelvin                 !
-! qincid(nfabor    ! tr ! <-- ! densite de flux radiatif aux bords             !
-! flunet(nfabor    ! tr ! --> ! densite de flux net radiatif                   !
-! ck (ncelet)      ! tr ! --> ! coefficient d'absorption du milieu             !
-!                  !    !     ! (nul si transparent)                           !
-! xlam(nfabor)     ! tr ! <-- ! coefficient de conductivite thermique          !
-!                  !    !     ! des facettes de paroi (w/m/k)                  !
-! epa (nfabor)     ! tr ! <-- ! epaisseur des facettes de paroi (m)            !
-! eps (nfabor)     ! tr ! <-- ! emissivite des facettes de bord                !
-! rdevel(nrdeve    ! tr ! <-- ! tab reel complementaire developemt             !
-! rtuser(nrtuse    ! tr ! <-- ! tab reel complementaire utilisateur            !
-! ra(*)            ! tr ! --- ! macro tableau reel                             !
+! idbia0           ! i  ! <-- ! number of first free position in ia            !
+! idbra0           ! i  ! <-- ! number of first free position in ra            !
+! ndim             ! i  ! <-- ! spatial dimension                              !
+! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
+! ncel             ! i  ! <-- ! number of cells                                !
+! nfac             ! i  ! <-- ! number of interior faces                       !
+! nfabor           ! i  ! <-- ! number of boundary faces                       !
+! nfml             ! i  ! <-- ! number of families (group classes)             !
+! nprfml           ! i  ! <-- ! number of properties per family (group class)  !
+! nnod             ! i  ! <-- ! number of vertices                             !
+! lndfac           ! i  ! <-- ! size of nodfac indexed array                   !
+! lndfbr           ! i  ! <-- ! size of nodfbr indexed array                   !
+! ncelbr           ! i  ! <-- ! number of cells with faces on boundary         !
+! nvar             ! i  ! <-- ! total number of variables                      !
+! nscal            ! i  ! <-- ! total number of scalars                        !
+! iphas            ! i  ! <-- ! current phase number                           !
+! iappel           ! i  ! <-- ! current subroutine call number                 !
+! nideve, nrdeve   ! i  ! <-- ! sizes of idevel and rdevel arrays              !
+! nituse, nrtuse   ! i  ! <-- ! sizes of ituser and rtuser arrays              !
+! ifacel(2, nfac)  ! ia ! <-- ! interior faces -> cells connectivity           !
+! ifabor(nfabor)   ! ia ! <-- ! boundary faces -> cells connectivity           !
+! ifmfbr(nfabor)   ! ia ! <-- ! boundary face family numbers                   !
+! ifmcel(ncelet)   ! ia ! <-- ! cell family numbers                            !
+! iprfml           ! ia ! <-- ! property numbers per family                    !
+!  (nfml, nprfml)  !    !     !                                                !
+! itypfb           ! ia ! <-- ! boundary face types                            !
+!  (nfabor, nphas) !    !     !                                                !
+! ipnfac(nfac+1)   ! ia ! <-- ! interior faces -> vertices index (optional)    !
+! nodfac(lndfac)   ! ia ! <-- ! interior faces -> vertices list (optional)     !
+! ipnfbr(nfabor+1) ! ia ! <-- ! boundary faces -> vertices index (optional)    !
+! nodfbr(lndfbr)   ! ia ! <-- ! boundary faces -> vertices list (optional)     !
+! izfrdp(nfabor)   ! ia ! --> ! boundary faces -> zone number                  !
+! idevel(nideve)   ! ia ! <-- ! integer work array for temporary developpement !
+! ituser(nituse    ! ia ! <-- ! user-reserved integer work array               !
+! ia(*)            ! ia ! --- ! main integer work array                        !
+! xyzcen           ! ra ! <-- ! cell centers                                   !
+!  (ndim, ncelet)  !    !     !                                                !
+! surfac           ! ra ! <-- ! interior faces surface vectors                 !
+!  (ndim, nfac)    !    !     !                                                !
+! surfbo           ! ra ! <-- ! boundary faces surface vectors                 !
+!  (ndim, nfavor)  !    !     !                                                !
+! cdgfac           ! ra ! <-- ! interior faces centers of gravity              !
+!  (ndim, nfac)    !    !     !                                                !
+! cdgfbo           ! ra ! <-- ! boundary faces centers of gravity              !
+!  (ndim, nfabor)  !    !     !                                                !
+! xyznod           ! ra ! <-- ! vertex coordinates (optional)                  !
+!  (ndim, nnod)    !    !     !                                                !
+! volume(ncelet)   ! ra ! <-- ! cell volumes                                   !
+! dt(ncelet)       ! ra ! <-- ! time step (per cell)                           !
+! rtp, rtpa        ! ra ! <-- ! calculated variables at cell centers           !
+!  (ncelet, *)     !    !     !  (at current and preceding time steps)         !
+! propce(ncelet, *)! ra ! <-- ! physical properties at cell centers            !
+! propfa(nfac, *)  ! ra ! <-- ! physical properties at interior face centers   !
+! propfb(nfabor, *)! ra ! <-- ! physical properties at boundary face centers   !
+! coefa, coefb     ! ra ! <-- ! boundary conditions                            !
+!  (nfabor, *)     !    !     !                                                !
+! cofrua, cofrub   ! ra ! --> ! boundary conditions for intensity or P-1 model !
+!  (nfabor, *)     !    !     !                                                !
+! w1,2,3,4,5,6     ! ra ! --- ! work arrays                                    !
+!  (ncelet)        !    !     !                                                !
+! tparoi(nfabor)   ! ra ! <-- ! inside current wall temperature (K)            !
+! qincid(nfabor)   ! ra ! <-- ! radiative incident flux  (W/m2)                !
+! flunet(nfabor)   ! ra ! --> ! net flux (W/m2)                                !
+! xlamp(nfabor)    ! ra ! --> ! conductivity (W/m/K)                           !
+! epap(nfabor)     ! ra ! --> ! thickness (m)                                  !
+! epsp(nfabor)     ! ra ! --> ! emissivity (>0)                                !
+! ck(ncelet)       ! ra ! <-- ! absoprtion coefficient                         !
+! rdevel(nrdeve)   ! ra ! <-> ! real work array for temporary developpement    !
+! rtuser(nituse)   ! ra ! <-- ! user-reserved real work array                  !
+! ra(*)            ! ra ! --- ! main real work array                           !
 !__________________!____!_____!________________________________________________!
 
-!     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
-!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
-!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
-!            --- tableau de travail
-!-------------------------------------------------------------------------------
+!     Type: i (integer), r (real), s (string), a (array), l (logical),
+!           and composite types (ex: ra real array)
+!     mode: <-- input, --> output, <-> modifies data, --- work array
 !===============================================================================
 
 implicit none
 
 !===============================================================================
-!     DONNEES EN COMMON
+! Common blocks
 !===============================================================================
 
 include "paramx.h"
@@ -287,7 +251,7 @@ double precision ck(ncelet)
 double precision rdevel(nrdeve), rtuser(nrtuse), ra(*)
 
 
-! VARIABLES LOCALES
+! Local variables
 
 integer          idebia , idebra , ifac, iok
 double precision unspi, xit, distbf
@@ -295,38 +259,37 @@ double precision unspi, xit, distbf
 !===============================================================================
 
 !===============================================================================
-! 0 - GESTION MEMOIRE
+! 0 - Initialization
 !===============================================================================
 
 idebia = idbia0
 idebra = idbra0
 
-! Indicateur d'arret (pour savoir si des faces ont ete oubliees)
+! Stop indicator (forgotten boundary faces)
 iok = 0
 
 unspi = 1.d0/pi
 
-!===============================================================================
-!  1. PREMIER APPEL
-!  ================
+!==============================================================================
+!  1. First call
+!  =============
 !===============================================================================
 
 if (iappel.eq.1) then
 
 
 !===============================================================================
-!  1.1 - CONDITIONS AUX LIMITES :
-!        MODELE DOM : COFRUA CONTIENT LA LUMINANCE
-!        MODELE P-1 : COFRUA ET COFRUB SONT A REMPLIR
-!      LES EXEMPLES DONNES ICI SONT LES INITIALISATIONS FAITES
-!      PAR DEFAUT ET SONT SUFFISANTES EN GENERAL
+!  1.1 - Boundary conditions:
+!        DO model: COFRUA msut be filled with the intensity
+!        P-1 model: COFRUA and COFRUB msut be filled
+!      The provided examples are sufficient in most of cases.
 !===============================================================================
 
 
 
 
-!      A - MODELE DOM
-!      ^^^^^^^^^^^^^^
+!      A - DO model
+!      ^^^^^^^^^^^^
 
 
 
@@ -335,18 +298,18 @@ if (iappel.eq.1) then
 
     do ifac = 1,nfabor
 
-!      1.1.1 - SYMETRIE :
+!      1.1.1 - Symmetry :
 !              ----------
-!          REFLEXION TOTALE DU RAYONNEMENT ( EPS=0 )
-!          -----------------------------------------
+!          Reflecting boundary conditions ( EPS=0 )
+!          ----------------------------------------
 
       if (itypfb(ifac).eq.isymet) then
 
         cofrua(ifac) = qincid(ifac) * unspi
 
 
-!      1.1.2 - PAROIS 'FLUIDES' : LUMINANCES RENTRANTES "NULLES"
-!              (ATTENTION LOGIQUE DIFFERENTE DU MODELE P-1)
+!      1.1.2 - Inlet/Outlet face: entering intensity fixed to zero
+!              (WARNING: the treatment is different from than of P-1 model)
 !          -------------------------------------------------
 
       else if (itypfb(ifac).eq.ientre                             &
@@ -355,8 +318,8 @@ if (iappel.eq.1) then
         cofrua(ifac) = epzero
 
 
-!      1.1.3. - PAROIS 'SOLIDES' DE TEMPERATURE TPAROI ET D'EMISSIVITE EPS
-!               ----------------------------------------------------------
+!      1.1.3. - Wall boundary face: calculaed intensity
+!               ---------------------------------------
 
       else if (itypfb(ifac).eq.iparoi                             &
           .or. itypfb(ifac).eq.iparug) then
@@ -366,12 +329,12 @@ if (iappel.eq.1) then
 
       else
 
-!      1.1.4 - SI DES FACES N'ONT PAS ETE TRAITEES, IL FAUT S'ARRETER
-!              ------------------------------------------------------
+!      1.1.4 - Stop if there are forgotten faces
+!              ---------------------------------
 
 !           ==============================================
 
-!             CONSERVER IMPERATIVEMENT LE TEST D'ARRET
+!             Don't skip this test
 
 !           ==============================================
 
@@ -384,8 +347,8 @@ if (iappel.eq.1) then
 
 
 
-!   B - MODELE P-1
-!   ^^^^^^^^^^^^^^
+!   B - P-1 model
+!   ^^^^^^^^^^^^^
 
 
 
@@ -395,9 +358,9 @@ if (iappel.eq.1) then
 
     do ifac = 1,nfabor
 
-!      1.1.1 - SYMETRIE ET PAROI REFLECHISSANTE (EPS = 0) :
-!              CONDITION DE FLUX NUL
-!              ------------------------------------------
+!      1.1.1 - Symmetry or reflecting wall (EPS = 0) :
+!              zero flux
+!              ----------------------------------------
 
       if (itypfb(ifac).eq.isymet     .or.                         &
          ((itypfb(ifac).eq.iparoi.or.                             &
@@ -407,9 +370,9 @@ if (iappel.eq.1) then
         cofrub(ifac) = 1.d0
 
 
-!      1.1.2 - PAROIS 'FLUIDES' : CONDITION DE FLUX NUL
-!              (ATTENTION LOGIQUE DIFFERENTE DU MODELE DOM)
-!              --------------------------------------------
+!      1.1.2 - Inlet/Outlet faces: zero flux
+!              (WARNING: the treatment is different from than of DO model)
+!              ----------------------------------------------------------
 
       else if (itypfb(ifac).eq.ientre                             &
           .or. itypfb(ifac).eq.isolib) then
@@ -418,9 +381,8 @@ if (iappel.eq.1) then
         cofrub(ifac) = 1.d0
 
 
-!      1.1.3 - PAROIS 'SOLIDES' DE TEMPERATURE TPAROI ET D'EMISSIVITE EPS
-!              (EPS NON NUL)
-!              ----------------------------------------------------------
+!      1.1.3 - Wall boundary faces
+!              -------------------
 
       else if (itypfb(ifac).eq.iparoi .or.                        &
                itypfb(ifac).eq.iparug ) then
@@ -435,12 +397,12 @@ if (iappel.eq.1) then
 
       else
 
-!      1.1.4 - SI DES FACES N'ONT PAS ETE TRAITEES, IL FAUT S'ARRETER
-!              ------------------------------------------------------
+!      1.1.4 - Stop if there are forgotten faces
+!              ---------------------------------
 
 !           ==============================================
 
-!             CONSERVER IMPERATIVEMENT LE TEST D'ARRET
+!             Don't skip this test
 
 !           ==============================================
 
@@ -459,28 +421,25 @@ if (iappel.eq.1) then
   endif
 
 !===============================================================================
-!  2 - DEUXIEME APPEL
-!  ===================
+!  2 - Second call
+!  ================
 !===============================================================================
 
 else if (iappel.eq.2) then
 
 !===============================================================================
-!  2.1 - DENSITE DE FLUNET RADIATIF AUX DIFFERENTES FRONTIERES
-!      L'EXEMPLE DONNE ICI EST L'INITIALISATION FAITE PAR DEFAUT
+!  2.1 - Net flux dendity for the boundary faces
+!      The provided examples are sufficient in most of cases.
 !===============================================================================
 
-!    DANS LE CAS OU LES CONDITIONS A LA LIMITES CI-DESSUS
-!      AURAIENT ETE MODIFIEES, IL EST NECESSAIRE DE MODIFIER
-!      LA MANIERE DONT EST CALCULE LA DENSITE DE FLUX NET RADIATIF,
-!      DE MANIERE COHERENTE.
-!    LA REGLE EST LA SUIVANTE :
-!      LA DENSITE DE FLUX NET EST UN BILAN ENTRE CE QU'UNE FACE
-!      DE BORD EMET COMME RAYONNEMENT (ET NON CE QU'ELLE REFLECHIT)
-!      ET CE QU'ELLE ABSORBE  (ORIENTATION DE LA NORMALE SORTANTE)
-!      AINSI, SI UNE PAROI CHAUFFE LE FLUIDE, FLUNET < 0
-
-
+!    If the boundary conditions given above have been modified
+!      it is necessary to change the way in which density is calculated from
+!      the net radiative flux consistently.
+!    The rule is:
+!      the density of net flux is a balance between the emitting energy from a
+!      boundary face (and not the reflecting energy) and the absorbing radiative
+!      energy. Therefore if a wall heats the fluid by radiative transfer, the
+!      net flux is negative
 
 
   do ifac = 1,nfabor
@@ -488,24 +447,23 @@ else if (iappel.eq.2) then
     if (itypfb(ifac).eq.iparoi .or.                               &
         itypfb(ifac).eq.iparug) then
 
-!      2.1.1 - PAROIS 'SOLIDES' DE TEMPERATURE TPAROI ET D'EMISSIVITE EPS
-!              ----------------------------------------------------------
+!      2.1.1 - Wall faces
+!              ----------
 
       flunet(ifac) =                                              &
       eps(ifac) *(qincid(ifac) - stephn*tparoi(ifac)**4)
 
 
-!      2.1.2 - SYMETRIE :
+!      2.1.2 - Symmetry :
 !              ----------
-!          REFLEXION TOTALE DU RAYONNEMENT ( FLUNET = 0 )
-!          ----------------------------------------------
+
     else if (itypfb(ifac).eq.isymet) then
 
       flunet(ifac)= zero
 
 
-!      2.1.3 - PAROIS 'FLUIDES'
-!              ----------------
+!      2.1.3 - Inlet/Outlet
+!              ------------
 
     else if (itypfb(ifac).eq.ientre                               &
         .or. itypfb(ifac).eq.isolib) then
@@ -521,13 +479,13 @@ else if (iappel.eq.2) then
       endif
 
 
-!      2.1.4 - SI DES FACES N'ONT PAS ETE TRAITEES, IL FAUT S'ARRETER
-!              ------------------------------------------------------
+!      2.1.4 - Stop if there are forgotten faces
+!              ---------------------------------
     else
 
 !           ==============================================
 
-!             CONSERVER IMPERATIVEMENT LE TEST D'ARRET
+!             Don't skip this test
 
 !           ==============================================
 
@@ -558,11 +516,11 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : RAYONNEMENT                                 ',/,&
-'@    =========                                               ',/,&
-'@                CONDITIONS AUX LIMITES NON RENSEIGNEES      ',/,&
+'@ @@ WARNING: Radiative transfer (usray5)                    ',/,&
+'@    ========                                                ',/,&
+'@              Boundary conditions non inquiries             ',/,&
 '@                                                            ',/,&
-'@    Face = ',I10   ,' Zone = ',I10   ,' Type = ',I10           )
+'@    Face = ',I10   ,' Zone = ',I10   ,' Nature = ',I10         )
 
  1100 format(                                                           &
 '@                                                            ',/,&
@@ -570,14 +528,14 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : RAYONNEMENT                                 ',/,&
-'@    =========                                               ',/,&
-'@    LES CONDITIONS AUX LIMITES NE SONT PAS RENSEIGNEES POUR ',/,&
-'@     CERTAINES FACES DE BORD (Phase ',I10   ,')             ',/,&
+'@ @@ WARNING: Radiative transfer (usray5)                    ',/,&
+'@    ========                                                ',/,&
+'@    Boundary conditions are unknown for some faces          ',/,&
+'@     (Phase ',I10   ,')                                     ',/,&
 '@                                                            ',/,&
-'@    Le calcul ne sera pas execute.                          ',/,&
+'@    The calculation stops.                                  ',/,&
 '@                                                            ',/,&
-'@    Verifier le codage de usray3.                           ',/,&
+'@    Please verify subroutine usray5.                        ',/, &
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
@@ -588,10 +546,11 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : RAYONNEMENT (FLUNET    NON RENSEIGNE)       ',/,&
-'@    =========                                               ',/,&
+'@ @@ WARNING: Radiative transfer (usray5)                    ',/,&
+'@    ========                                                ',/,&
+'@              Net flux calculation non inquiries            ',/,&
 '@                                                            ',/,&
-'@    Face = ',I10   ,' Zone = ',I10   ,' Type = ',I10           )
+'@    Face = ',I10   ,' Zone = ',I10   ,' Nature = ',I10         )
 
  2100 format(                                                           &
 '@                                                            ',/,&
@@ -599,18 +558,18 @@ endif
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/,&
-'@ @@ ATTENTION : RAYONNEMENT                                 ',/,&
-'@    =========                                               ',/,&
-'@    LE FLUNET    N''EST PAS RENSEIGNEE POUR CERTAINES       ',/,&
-'@        FACES DE BORD (Phase ',I10   ,')                    ',/,&
+'@ @@ WARNING: Radiative transfer (usray5)                    ',/,&
+'@    ========                                                ',/,&
+'@    Net radiation flux is unknown for some faces            ',/,&
+'@     (Phase ',I10   ,')                                     ',/,&
 '@                                                            ',/,&
-'@    Le calcul ne sera pas execute.                          ',/,&
+'@    The calculation stops.                                  ',/,&
 '@                                                            ',/,&
-'@    Verifier le codage de usray3.                           ',/,&
+'@    Please verify subroutine usray5.                        ',/, &
 '@                                                            ',/,&
 '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
 '@                                                            ',/)
 
 
 
-end
+end subroutine

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/code-saturne.git



More information about the debian-science-commits mailing list